zsqin 发表于 2013-5-9 09:35:03

[分享]天龙八部 地面包数据分析

地面包的ID必须要用二叉树遍历,以下是VB递归遍历部分源码:
3个类型区分出地面包:语言说不清,看代码:
if (lei=&H7DD458 and lei3=7 and lei2=0) then
   就是地面包
end if
lei的值(&H7DD458)和基址一样随游戏更新会改变,具体判断方法是
在野外打一个怪,有地面包掉落,看lei3=7 lei2=0时,lei的值就是判断标志
多说几句:这个判断很重要,lei3=7 and lei2=0只是怪物身上掉落的物品,那四绝庄
闫墨和庞企放出的炸弹也是属于"掉落物品",要是也去捡,不是找死吗?

    readProcessMemory hprocess, ByVal (lpBaseAddr), ByVal VarPtr(addr), 4, 0&
    readProcessMemory hprocess, ByVal (addr + &H58), ByVal VarPtr(cc), 4, 0&
    readProcessMemory hprocess, ByVal (cc + &H4), ByVal VarPtr(dd), 4, 0&
    Call VisitTNT(dd, hprocess)
Sub VisitTNT(root As Long, hprocess As Long)
   
    Dim lei2 As Long, lei1 As Long, lei As Long
    Dim cc As Long, xx As Single, dd As Long,lei3 As Long, idd As Long, yy As Single, xue As Single
    Dim left1 As Long, right1 As Long
    Dim flag1 As Byte
    readProcessMemory hprocess, ByVal (root + &H15), ByVal VarPtr(flag1), 1, 0&   
    readProcessMemory hprocess, ByVal (root + &H8), ByVal VarPtr(right1), 4, 0&
    readProcessMemory hprocess, ByVal (root + &H0), ByVal VarPtr(left1), 4, 0&
    readProcessMemory hprocess, ByVal (root + &H10), ByVal VarPtr(dd), 4, 0&    'dd =EAX+10
    If flag1 = 0 Then
               
      readProcessMemory hprocess, ByVal (dd + 0), ByVal VarPtr(lei), 4, 0&         '类型1
      readProcessMemory hprocess, ByVal (dd + &H34), ByVal VarPtr(idd), 4, 0&         'id      
            
      readProcessMemory hprocess, ByVal (dd + &H2C), ByVal VarPtr(cc), 4, 0&
      readProcessMemory hprocess, ByVal (cc + &H18), ByVal VarPtr(lei3), 4, 0&       '类型3: 3 怪和宝宝7 包 8 矿,草 11 玩家
       '-------------------------------------------------------------------------
      readProcessMemory hprocess, ByVal (dd + &H1DC), ByVal VarPtr(cc), 4, 0&
      readProcessMemory hprocess, ByVal (cc + &H4), ByVal VarPtr(cc), 4, 0&
      '------------------------------------------------------------------------
      readProcessMemory hprocess, ByVal (cc + 8), ByVal VarPtr(xue), 4, 0&          '血量
      readProcessMemory hprocess, ByVal (cc + &H4c), ByVal VarPtr(lei2), 4, 0&      '类型2 :-1 宝宝,0 包草矿,1少林 2明教 3丐帮   
      
      Call VisitTNT(left1, hprocess)      
      Call VisitTNT(right1, hprocess)
    End If   
End Sub
页: [1]
查看完整版本: [分享]天龙八部 地面包数据分析