Per prima cosa creiamo un nuovo progetto in VB.
File - Nuovo Progetto - Applicazione Windows Form.
Una volta fatto questo, prima di passare alla programmazione vera e propria, procuriamoci tutti i componenti che ci serviranno con le relative proprietò .
- 1 PictureBox (Name: MapON - Dimensioni 260 x 260)
- 1 ComboBox (Name: MapSelect)
- 1 Button (Name: TeleportBtn)
E' fondamentale che la dimansione della PictureBox sia settata a 260 x 260
Ora per comodità aggiungiamo un modulo dove definiremo le nostre funzioni. Per farlo : Progetto - Aggiungi modulo.
Ora andiamo sul modulo e scriviamo la funzione WriteSingle che ci servirà per scrivere nell'address della coordinata il valore che vogliamo assegnargli.
Inoltre dichiariamo 2 variabili X e Y corrispondenti al valore delle coordinate dove vorremo teletrasportarci e una variabile H a cui assegneremo il valore 1536.
In ultimo, scriviamo la funzione che ci ritornerà i value della nostra coordinata in base all'address e agli offset.
1. Module Module1
Public Declare Function WriteSingle Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Boolean
Public X as Integer
Public Y as Integer
Public H as Integer = 1536
Public Function ReturnAddy(ByVal Addybase As String, ByVal Off1 As Integer, ByVal Off2 As Integer) As String
Dim addy As String
ReadProcessMemory(processHandle, "&H" & Addybase, value, 4, Nothing)
addy = "&H" & Conversion.Hex(value + Off1)
ReadProcessMemory(processHandle, addy, value, 4, Nothing)
addy = "&H" & Conversion.Hex(value + Off2)
Return addy
End Function
2. End Module
La variabile H, altro non è che la proporzione tra la mappa di gioco e la mappa da noi posseduta.
Per facilitarvi le cose, in allegato troverete anche le mappe già proporzionate tra loro.
Fatto questo, torniamo sul nostro forum per completare il nostro hack.
Facciamo doppio click sulla ComboBox. A questo punto dobbiamo fare in modo che al cambio dell'index della ComboBox, nella PictureBox, venga visualizzata la mappa selezionata. Per fare ciò, ci viene in aiuto la funzione SELECT CASE
1. Select Case MapSelect.SelectedItem.ToString()
Case ''GIALLI VILLAGGIO 1"
MapON.ImageLocation=" PERCORSO IMMAGINE "
Case "GIALLI VILLAGGIO 2"
MapON.ImageLocation=" PERCORSO IMMAGINE "
...
...
...
...
...
2. ...
3. End Select
A questo punto, dobbiamo solo fare in modo, che al click sulla mappa che ci interessa, vengano settate la X e la Y che vogliamo avere in game.
Per fare questo, dobbiamo usare una proporzione
1. Private Sub MapON_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MapON.Click
X= Int(H* MapON.PointToClient(Control.MousePosition).X / MapON.Width)
Y= Int(H * MapON.PointToClient(Control.MousePosition).Y / MapON.Height)
2. End Sub
Questo serve a proporzionare la mappa al game e a settare la giusta X e la giusta Y all'evento click().
Non rimane altro da fare che inviare le informazioni al gioco e questo avviene al click del pulsante.
Quindi:
1. Private Sub TeleportBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TeleportBtn.Click
WriteSingle(processHandle, ReturnAddy("5F29BC", 16, 1412), Int(X.Text) * 100, 4, Nothing)
WriteSingle(processHandle, ReturnAddy("5F29BC", 16, 1416), -(Int(Y.Text) * 100), 4, Nothing)
2. End Sub
Fonti:
http://www.inforge.net/community/metin2-...c-net.html
Spero vi sia stato d'aiuto e +1 ben accetti
Download:
Qui