フォーム内で共通の変数の解説 |
---|
General_Declarations プロシージャ
'対象のプロセス名を格納するための変数 Dim ProcessName As String 'データ読み込み時に、アイテムを何種類持っていたか Dim ItemNumber As Long '各ステータスがメモリ上のどの場所に格納されているかを記述(外部ファイルより読み込み) Dim StatusData() As String '上記配列の上限値、添字 Dim StatusDataUpper As Long, StatusDataIndex As Long 'ゲーム中のパラメータが格納されているアドレスをセットする変数(StatusData 配列から取り出す) Dim A_name As String, A_hp As String, A_max_hp As String Dim A_str As String, A_def As String, A_luck As String, A_speed As String, A_gold As String Dim A_i1 As String, A_i2 As String, A_i3 As String, A_i4 As String, A_i5 As String |
ore_mem_data.txt の中身
NAME:419674 HP:41CDB8 MAX_HP:41CDBA STR:41CDC0 DEF:41CDC4 LUCK:41CDC8 SPEED:41CDCA GOLD:419672 ITEM1:4196AC ITEM2:4196C1 ITEM3:4196D6 ITEM4:4196EB ITEM5:419700 |
データ読み込み処理 |
---|
cmdRead_Click プロシージャ1
Private Sub cmdRead_Click() ProcessName = "OREBUST.EXE" '対象のプロセスが開かれているかを調べる 'アドレスを決め打ちしているので、あまり好ましくない処理である Dim ret As String ret = GetMemoryData(ProcessName, "419674", "1") If ret = "Process Open Error !!" Then MsgBox "対象となるゲームが起動していません!", vbOKOnly + vbExclamation, "プロセスオープンエラー" Exit Sub End If '外部ファイル(ore_mem_data.txt)から、各ステータスのあるアドレスを読み込み、配列に格納する Dim DataFileName As String If Right(App.Path, 1) = "\" Then DataFileName = App.Path & "ore_mem_data.txt" Else DataFileName = App.Path & "\ore_mem_data.txt" End If StatusData = StringArrayLoad(DataFileName) StatusDataUpper = UBound(StatusData) '各データをメモリ上から読み込み、それぞれのボタンを使用可・不可に DataGet ・ ・ ・ (以下省略) |
DataGet プロシージャ
Private Sub DataGet() '各ステータス・パラメータの値が格納されているアドレスを、配列から取得 For StatusDataIndex = 0 To StatusDataUpper Select Case GetStrL(StatusData(StatusDataIndex), ":") Case "NAME" A_name = GetStrR(StatusData(StatusDataIndex), ":") Case "HP" A_hp = GetStrR(StatusData(StatusDataIndex), ":") Case "MAX_HP" A_max_hp = GetStrR(StatusData(StatusDataIndex), ":") Case "STR" A_str = GetStrR(StatusData(StatusDataIndex), ":") Case "DEF" A_def = GetStrR(StatusData(StatusDataIndex), ":") Case "LUCK" A_luck = GetStrR(StatusData(StatusDataIndex), ":") Case "SPEED" A_speed = GetStrR(StatusData(StatusDataIndex), ":") Case "GOLD" A_gold = GetStrR(StatusData(StatusDataIndex), ":") Case "ITEM1" A_i1 = GetStrR(StatusData(StatusDataIndex), ":") Case "ITEM2" A_i2 = GetStrR(StatusData(StatusDataIndex), ":") Case "ITEM3" A_i3 = GetStrR(StatusData(StatusDataIndex), ":") Case "ITEM4" A_i4 = GetStrR(StatusData(StatusDataIndex), ":") Case "ITEM5" A_i5 = GetStrR(StatusData(StatusDataIndex), ":") Case Else End Select Next '上記で取得したアドレスを元に、各ステータスの値をメモリから取得し、表示する lblName.Caption = HexToDecOrAscii(GetMemoryData(ProcessName, A_name, "16"), "$2") txtHP.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_hp, "2"), "M") txtMaxHP.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_max_hp, "2"), "M") txtSTR.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_str, "2"), "M") txtDEF.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_def, "2"), "M") txtLUCK.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_luck, "2"), "M") txtSPEED.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_speed, "2"), "M") txtGOLD.Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_gold, "2"), "M") txtITEM(0).Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_i1, "1"), "S") txtITEM(1).Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_i2, "1"), "S") txtITEM(2).Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_i3, "1"), "S") txtITEM(3).Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_i4, "1"), "S") txtITEM(4).Text = HexToDecOrAscii(GetMemoryData(ProcessName, A_i5, "1"), "S") End Sub |
データのチェック〜書き込み処理 |
---|