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

📄 mdlsubcall.bas

📁 武林外传外挂源代码
💻 BAS
字号:
Attribute VB_Name = "mdlSubCall"
Option Explicit

Public Sub fnUseSkill(skillid As Long, targetid As Long)
    '技能CALL
    If dwProcessId = 0 Then Exit Sub
    Dim asm As New clsASM
    With asm
        .Pushad
        .Push &HBF800000
        .Push &HBF800000
        .Push &HBF800000
        .Push targetid      '怪ID
        .Push &HFFFFFFFF
        .Push skillid       '普攻技能ID
                            'MOV ECX,ESI传进去的参数
        .Mov_ECX_DWORD_Ptr CharBaseAddr
        .Mov_EAX_DWORD_Ptr_ECX_Add &H64
        .Mov_ECX_DWORD_Ptr_EAX_Add &H160
        .Mov_EAX UseSkillCallAddr
        .Call_EAX
        .Popad
        .Ret
    End With
    asm.Run_ASM dwProcessId
End Sub

' 捡物
Public Sub PickPack(packid As Long, x As Single, y As Single)
    'Call fnPackOpen(packid)
    'Call SleepX(500)
    Call fnWalk(x, y)
    Dim hProcess As Long
    hProcess = OpenProcess(PROCESS_VM_READ, 0, dwProcessId)
    If hProcess = 0 Then Exit Sub
    Dim addr As Long
    Dim x0 As Single, y0 As Single, x1 As Single, y1 As Single
    x0 = 0: y0 = 0
    Do
        Call SleepX(100)
        ReadProcessMemory hProcess, CharBaseAddr, addr, 4, 0&
        ReadProcessMemory hProcess, addr + &H64, addr, 4, 0&
        ReadProcessMemory hProcess, addr + &H44, x1, 4, 0&
        ReadProcessMemory hProcess, addr + &H4C, y1, 4, 0&
        If x0 = x1 And y0 = y1 Then Exit Do
        x0 = x1:  y0 = y1
    Loop While True
    CloseHandle hProcess
    Call fnPackOpen(packid)
    Call SleepX(7000)   '采集中
    Call fnPackPickAll
End Sub

Private Sub fnPackOpen(packid As Long)
    '打开物品包包CALL
    If dwProcessId = 0 Then Exit Sub
    Dim asm As New clsASM
    With asm
        .Pushad
        .Push packid
        .Mov_ECX_DWORD_Ptr CharBaseAddr
        .Mov_ECX_DWORD_Ptr_ECX_Add &H64
        .Mov_ECX_DWORD_Ptr_ECX_Add &H160
        .Mov_EAX PackOpenCallAddr
        .Call_EAX
        .Popad
        .Ret
    End With
    asm.Run_ASM dwProcessId
End Sub

Private Sub fnPackPickAll()
    '全部拾取CALL,调用打开物品包包CALL后有效,否则出错
    If dwProcessId = 0 Then Exit Sub
    Dim asm As New clsASM
    With asm
        .Pushad
        .Mov_EBX PackPickAllCallAddr
        .Call_EBX
        .Popad
        .Ret
    End With
    asm.Run_ASM dwProcessId
End Sub

Public Sub fnWalk(x As Single, y As Single)
    '走路CALL
    If dwProcessId = 0 Then Exit Sub
    Dim asm As New clsASM, xl As Long, yl As Long
    Call CopyMemory(xl, x, 4)
    Call CopyMemory(yl, y, 4)
    With asm
        .Pushad
        .Push yl
        .Push xl
        .Mov_EAX_DWORD_Ptr CharBaseAddr
        .Mov_ECX_DWORD_Ptr_EAX_Add &H64
        .Mov_ECX_DWORD_Ptr_ECX_Add &H160
        .Mov_EDX_DWORD_Ptr_ECX
        .Mov_EAX WalkCallAddr
        .Call_EAX
        .Popad
        .Ret
    End With
    asm.Run_ASM dwProcessId
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -