📄 mod05readinfo.bas
字号:
ReadProcessMemory ProcessID, ByVal BaseAdr + EcxMonSel, MonSel, 4, 0 '目标的目标的ID
ReadProcessMemory ProcessID, ByVal BaseAdr + EcxMonName, TempAdr, 4, 0 '怪物名称
ReadProcessMemory ProcessID, ByVal TempAdr, ByVal VarPtr(BuffEnum(0)), 36, BuffL
MonName = Left$(BuffEnum, 36)
MonName = Trim(KillChr0(Trim(MonName)))
Erase BuffEnum
cWayX = PartX - MonX
cWayY = PartY - MonY
nDistance = Int((cWayX ^ 2 + cWayY ^ 2) ^ (1 / 2))
If MonID <> SelObjId Then
If MonKind = 6 And MonOrNpc = 0 Then
If nDistance < Val(Main.TextWar1(0).Text) Then
cDistance = CStr(Int(nDistance))
If MonSel = PartId Then
cDistance = "00|" & Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text)))
ElseIf Main.CheWar(6).Value = 1 And _
(MonSel = CDbl(Main.LabTeam2(0).ToolTipText)) Then
cDistance = "01|" & Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text)))
ElseIf Main.CheWar(6).Value = 1 And _
(MonSel = CDbl(Main.LabTeam2(2).ToolTipText) Or _
MonSel = CDbl(Main.LabTeam2(4).ToolTipText) Or _
MonSel = CDbl(Main.LabTeam2(6).ToolTipText) Or _
MonSel = CDbl(Main.LabTeam2(8).ToolTipText)) Then
cDistance = "02|" & Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text)))
ElseIf MonSel = 0 Then
cDistance = "08|" & Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text)))
Else
cDistance = "09|" & Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text)))
End If
Set itmX = Main.LVNpc(0).ListItems.Add(, , MonLevel)
itmX.SubItems(Main.LVNpc(0).ColumnHeaders("Name").SubItemIndex) = MonName
itmX.SubItems(Main.LVNpc(0).ColumnHeaders("Ran").SubItemIndex) = cDistance
itmX.SubItems(Main.LVNpc(0).ColumnHeaders("ID").SubItemIndex) = CStr(MonID)
End If
''添加到怪物类型中
IsAdd = True
For ii = 0 To Main.ListWarMon.ListCount - 1
If MonName = Trim(Mid(Main.ListWarMon.List(ii), InStr(Main.ListWarMon.List(ii), "]") + 1)) Then
'Main.ListWarMon.RemoveItem (ii)
IsAdd = False
End If
Next ii
If IsAdd Then
Main.ListWarMon.AddItem "[" & Space(4 - Len(CStr(Fix(MonX)))) & Fix(MonX) & "," & Space(4 - Len(CStr(Fix(MonY)))) & Fix(MonY) & "] " & MonName
WriteIni "Monster", "Monster", MonName, MonLevel & "," & MapID & "," & CStr(Fix(MonX)) & "," & CStr(Fix(MonY))
End If
End If
End If
If MonKind = 7 And MonOrNpc = 1 Then
cDistance = CStr(Int(nDistance))
cDistance = Right("00000" & cDistance, Len(Trim(Main.TextWar1(0).Text))) '距离
Set itmX = Main.LVNpc(1).ListItems.Add(, , cDistance)
itmX.SubItems(Main.LVNpc(1).ColumnHeaders("Name").SubItemIndex) = MonName
itmX.SubItems(Main.LVNpc(1).ColumnHeaders("X").SubItemIndex) = Int(MonX) + 1
itmX.SubItems(Main.LVNpc(1).ColumnHeaders("Y").SubItemIndex) = Int(MonY) + 1
itmX.SubItems(Main.LVNpc(1).ColumnHeaders("ID").SubItemIndex) = MonID
WriteIni "Npc", "Npc", MonName, MonID & "," & MapID & "," & CStr(Fix(MonX)) & "," & CStr(Fix(MonY))
End If
End If
'新加的下面两行
TempAdr = NextTempAdr
Loop
Next i
End If
End If
CloseHandle ProcessID
End Sub
''刷新玩家好友
Sub ReadFriend()
On Error Resume Next
Dim BaseAdr As Long, TempAdr As Long
Dim i As Integer
Dim FriendAdrB As Long, FriendNum As Long, FriendAdrF As Long, FriendMax As Long
Dim FriendName As String, FriendID As Long, FriendLine As Long, FriendLevel As Long
Dim BuffEnum(36) As Byte, BuffL As Long
Dim itmX As ListItem
ProcessID = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, hProcId)
If ProcessID Then
'玩家相关
ReadProcessMemory ProcessID, ByVal PartAdr + &H28, TempAdr, 4, 0
ReadProcessMemory ProcessID, ByVal TempAdr + EcxFriend, FriendAdrB, 4, 0
ReadProcessMemory ProcessID, ByVal FriendAdrB + &H24, FriendAdrF, 4, 0 '好友列表的首地址
ReadProcessMemory ProcessID, ByVal FriendAdrB + &H30, FriendMax, 4, 0 '好友数组最大值
ReadProcessMemory ProcessID, ByVal FriendAdrB + &H20, FriendNum, 4, 0 '好友总数量
Main.LVFriend(0).ListItems.Clear
If FriendNum > 0 Then
For i = 0 To FriendMax - 1
BaseAdr = FriendAdrF + i * 4
ReadProcessMemory ProcessID, ByVal BaseAdr, TempAdr, 4, 0
If TempAdr > 0 Then
ReadProcessMemory ProcessID, ByVal TempAdr + &H4, BaseAdr, 4, 0
ReadProcessMemory ProcessID, ByVal BaseAdr, FriendID, 4, 0 '玩家ID
ReadProcessMemory ProcessID, ByVal BaseAdr + &HC, FriendLine, 4, 0 '所在线
ReadProcessMemory ProcessID, ByVal BaseAdr + &H10, FriendLevel, 4, 0 '等级
ReadProcessMemory ProcessID, ByVal BaseAdr + &H18, TempAdr, 4, 0 '目标名称
ReadProcessMemory ProcessID, ByVal TempAdr, ByVal VarPtr(BuffEnum(0)), 36, BuffL
FriendName = Left$(BuffEnum, 36)
FriendName = Trim(KillChr0(Trim(FriendName)))
Erase BuffEnum
Set itmX = Main.LVFriend(0).ListItems.Add(, , FriendLevel)
itmX.SubItems(Main.LVFriend(0).ColumnHeaders("Name").SubItemIndex) = FriendName
itmX.SubItems(Main.LVFriend(0).ColumnHeaders("Id").SubItemIndex) = FriendID
itmX.SubItems(Main.LVFriend(0).ColumnHeaders("Line").SubItemIndex) = FriendLine
End If
Next i
End If
End If
CloseHandle ProcessID
End Sub
''遍历队伍
Sub ReadTeam()
On Error Resume Next
Dim BaseAdr As Long, TempAdr As Long
Dim TeamAdrB As Long, TeamAdrF As Long
Dim i As Integer, TeamAdr As Long
Dim TeamID As Long, TeamLevel As Long, TeamHp As Long, TeamMaxHp As Long
ProcessID = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, hProcId)
If ProcessID Then
ReadProcessMemory ProcessID, ByVal PartAdr + &H28, TempAdr, 4, 0
ReadProcessMemory ProcessID, ByVal TempAdr + EcxTeamAdr, TeamAdrB, 4, 0
If TeamAdrB <> 0 Then
ReadProcessMemory ProcessID, ByVal TeamAdrB + &H14, TeamAdrF, 4, 0 '队伍首地址
ReadProcessMemory ProcessID, ByVal TeamAdrB + &H18, TeamNum, 4, 0 '队伍当前人数
Else
TeamNum = 0
End If
If TeamNum > 0 Then
For i = 0 To TeamNum - 1
ReadProcessMemory ProcessID, ByVal TeamAdrF + i * &H4, TeamAdr, 4, 0
ReadProcessMemory ProcessID, ByVal TeamAdr + &HC, TeamID, 4, 0 'ID
ReadProcessMemory ProcessID, ByVal TeamAdr + &H10, TeamLevel, 4, 0 '等级
ReadProcessMemory ProcessID, ByVal TeamAdr + &H1C, TeamHp, 4, 0 '当前血
ReadProcessMemory ProcessID, ByVal TeamAdr + &H24, TeamMaxHp, 4, 0 '最大血
Main.FTeam1(i).Visible = True
If TeamID = PartId Then
Main.LabTeam2(i * 2).Caption = "(" & TeamLevel & "级) " & PartName
Main.LabTeam2(i * 2).ForeColor = RGB(255, 128, 0)
Else
Main.LabTeam2(i * 2).Caption = "(" & TeamLevel & "级) " & ReadFNameById(TeamID)
Main.LabTeam2(i * 2).ForeColor = &H8000000D
End If
If i = 0 Then
Main.LabTeam2(i * 2).Caption = Main.LabTeam2(i * 2).Caption & " [队长]"
End If
Main.LabTeam2(i * 2).ToolTipText = TeamID
Main.LabTeam2(i * 2 + 1).Caption = TeamHp & "/" & TeamMaxHp
Next i
End If
If TeamNum < 6 Then
For i = TeamNum To 5
Main.FTeam1(i).Visible = False
Main.LabTeam2(i * 2).ToolTipText = "9"
Next i
End If
End If
CloseHandle ProcessID
End Sub
''遍历现有BUFF
Sub ReadBuff()
On Error Resume Next
Dim BaseAdr As Long, TempAdr As Long
Dim i As Integer, BuffStat As Integer, StateNum As Long, StateAdr As Long
ProcessID = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, hProcId)
If ProcessID Then
ReadProcessMemory ProcessID, ByVal PartAdr + &H28, BaseAdr, 4, 0 '二级基址
ReadProcessMemory ProcessID, ByVal BaseAdr + &H118, StateNum, 4, 0& '人物状态最大数
ReadProcessMemory ProcessID, ByVal BaseAdr + &H114, StateAdr, 4, 0& '人物状态首地址
'状态遍历
Main.ListBuff.Clear
For i = 0 To StateNum - 1
ReadProcessMemory ProcessID, ByVal StateAdr + 2 * i, BuffStat, 2, 0&
If BuffStat <> 0 Then
Main.ListBuff.AddItem BuffStat
End If
Next
End If
CloseHandle ProcessID
End Sub
''自身任务
Sub ReadMyTask()
On Error Resume Next
Dim BaseAdr As Long, TempAdr As Long
Dim i As Integer
Dim rwShuLiangZ As Integer, rwShuLiang As Integer, rwid As Integer
Dim rwWanCheng As Integer, rwYiDa As Long
Dim BuffEnum(36) As Byte, BuffL As Long, MyTaskName As String
ProcessID = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, hProcId)
If ProcessID Then
Main.ListLuck.Clear
ReadProcessMemory ProcessID, ByVal PartAdr + &H28, TempAdr, 4, 0 '二级基址
ReadProcessMemory ProcessID, ByVal TempAdr + EcxFMyTask, TempAdr, 4, 0&
ReadProcessMemory ProcessID, ByVal TempAdr + &H8, BaseAdr, 4, 0& 'RsBase=base]+28]+a0c]+8]
ReadProcessMemory ProcessID, ByVal BaseAdr + &H0, rwShuLiangZ, 1, 0& '自身任务数量1
ReadProcessMemory ProcessID, ByVal BaseAdr + &H4, rwShuLiang, 1, 0& '自身任务数量2
For i = 0 To rwShuLiangZ - 1
ReadProcessMemory ProcessID, ByVal BaseAdr + &HAC + &H20 * i, rwid, 2, 0& '任务id
ReadProcessMemory ProcessID, ByVal BaseAdr + &HAC + &H20 * i + &H6, rwWanCheng, 1, 0& '
ReadProcessMemory ProcessID, ByVal BaseAdr + &HAC + &H20 * i + &H15, rwYiDa, 1, 0& '
ReadProcessMemory ProcessID, ByVal BaseAdr + &HAC + &H20 * i + &HD, TempAdr, 4, 0& '
ReadProcessMemory ProcessID, ByVal TempAdr + &H8, BuffEnum(0), 36, BuffL
MyTaskName = Left$(BuffEnum, 36)
MyTaskName = Trim(KillChr0(Trim(MyTaskName)))
Main.ListLuck.AddItem rwWanCheng & "|" & rwid & "|" & MyTaskName '& "|" & rwYiDa
Next i
End If
CloseHandle ProcessID
End Sub
''任务管理员任务
Sub ReadNpcTask()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -