⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mod05readinfo.bas

📁 这是诛仙外挂的源代码
💻 BAS
📖 第 1 页 / 共 5 页
字号:
                        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 + -