06.按键精灵大漠内存汇编命令

在开发脚本中,我们需要对游戏中的一些功能CALL进行调用,这样便于我们对游戏中的人物进行控制,以及一些操作如果只用图色类的游戏这个可以过滤不用看。

波哥讲解游戏脚本链接

//代码开始区域
Function 发包(包长, 内容)//仅限于测试和参考例子
     空白地址="00400400"
     发包ecx = "基址"
     dm.WriteData 获取鼠标指向句柄, 空白地址,"66 FF 00 00"
     dm.WriteData 获取鼠标指向句柄, 空白地址, 内容
     dm.AsmClear
     dm.AsmAdd "mov esi, ["&发包ecx&"]" 
     dm.AsmAdd "mov ecx,[?]"  
     dm.AsmAdd "mov edx,dword ptr ds:[?]"
     dm.AsmAdd "push 00"
     dm.AsmAdd "push 0" & Hex(包长)
     dm.AsmAdd "push "&空白地址
     dm.AsmAdd "mov ebx, dword ptr [?]"
     dm.AsmAdd "push ebx"
     dm.AsmAdd "call [封包CALL]"
     dm.AsmCall 游戏句柄, 3
     dm.VirtualFreeEx  游戏句柄, 空白地址
     Call 延迟()
 End Function

Function 打开NPC(NPCID十六进制) //仅限于测试和参考例子 
     For 2
         dm.AsmClear
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?"
         dm.AsmAdd "mov eax,?"
         dm.AsmAdd "mov eax,eax"
         dm.AsmAdd "push eax"
         dm.AsmAdd  NPCID十六进制
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?
         dm.AsmAdd "mov ecx,基址"
         dm.AsmAdd "mov ecx,ecx"
         dm.AsmAdd "call NPC打开CALL"
         dm.AsmCall  游戏句柄, 3
         Call 等待()
     Next
 End Function

Function 游戏人物寻路A(寻路x, 寻路y)
     //分配一段内存 = dm.VirtualAllocEx(游戏句柄,0,50,0)
     //读取地址 = hex(分配一段内存)
     //TracePrint 读取地址
     X坐标 = dm.WriteFloat(游戏句柄 , "00400FA0", 寻路x)
     Y坐标 = dm.WriteFloat(游戏句柄 , "00400FA8", 寻路y)
     //TracePrint X坐标&Y坐标
     For 2
         dm.AsmClear
         dm.AsmAdd "mov eax,?"
         dm.AsmAdd "mov eax,eax"
         dm.AsmAdd "push 00"
         dm.AsmAdd "push 00400FA0"
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?"
         dm.AsmAdd "push ?"
         dm.AsmAdd "mov ecx,基址"
         dm.AsmAdd "mov ecx,ecx"
         dm.AsmAdd "call 寻路CALL"
         dm.AsmCall  游戏句柄, 3
         Call 等待()
     Next
     do
         寻路状态 = dm.ReadFloat( 游戏句柄 , "[基址]+偏移")
         If 寻路状态 > 0 Then 
             TracePrint "寻路中"
             Call 延迟()
         Else 
             TracePrint "已到达目的地"
             Call 延迟()
             Exit do
         End If
     loop
 End Function
 //代码结束区域