Skocz do zawartości

[AutoIT] Silkroad Bot


# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Działa na zasadzie autoselect potworka oraz wysyanie Keypress, czyli możecie bocic w zminimalizowanym silku.

 

Opt("TrayMenuMode", 1)
#Include <GuiListView.au3>
Dim $listview[3] = ['Belt','Slot','Delay'], $child_buf_ok = -1, $child_atk_ok = -1,$swsroCharname = 0xA9DB98, $ecsroCharname = 0xA9DBB8, $mysroCharname = 0xA00340, $run = False, $epointer = 0xA9EE64, $spointer = 0xA9EE44, $zerkoffset = 0x7E6
Dim $m=0, $e=0, $s=0
$GUI = GUICreate('Private Server Bot', 341, 370, @DesktopWidth/2-370/2, @DesktopHeight/2-341/2, 0x100A0000)
GUICtrlCreateGroup("Character", 5, 5, 325, 45)
$char = GUICtrlCreateCombo("", 10, 20, 230, -1, 3)
GUICtrlSetFont(-1, 10)
$refresh = GUICtrlCreateButton("Refresh", 250, 19, 70, 26)

GUICtrlCreateGroup("Buffs", 5, 50, 160, 250)
$buf = GUICtrlCreateListView("Belt|Slot|Delay", 10, 65, 150, 200)
_GUICtrlListView_SetColumnWidth($buf, 2, -2)
For $i=0 To 2
    _GUICtrlListView_SetColumn($buf, $i, $listview[$i], -1, 2)
Next
$buf_add = GUICtrlCreateButton("Add", 10, 270, 70)
$buf_del = GUICtrlCreateButton("Delete", 90, 270, 70)
GUICtrlCreateGroup("Attack Skills", 170, 50, 160, 250)
$atk = GUICtrlCreateListView("Belt|Slot", 175, 65, 150, 200)
For $i=0 To 1
    _GUICtrlListView_SetColumnWidth($atk, $i, 73)
    _GUICtrlListView_SetColumn($atk, $i, $listview[$i], -1, 2)
Next
$atk_add = GUICtrlCreateButton("Add", 175, 270, 70)
$atk_del = GUICtrlCreateButton("Delete", 255, 270, 70)

$zerk = GUICtrlCreateCheckbox("Use Zerk", 10, 307)

$start = GUICtrlCreateButton("Start Bot", 75, 305, 120)
$stop = GUICtrlCreateButton("Stop Bot", 205, 305, 120)

CharList()
ini()

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case -4
            Tray()
        Case $buf_add
            $child = GUICreate("Add Buff", 100, 150, -1, -1, 0x10000000, 0x88)
            GUICtrlCreateLabel("Belt:", 5, 13)
            $child_belt = GUICtrlCreateCombo("", 45, 10, 40, -1, 3)
            GUICtrlSetData(-1, "F1|F2|F3|F4", "F1")
            GUICtrlCreateLabel("Slot:", 5, 43)
            $child_slot = GUICtrlCreateCombo("", 45, 40, 40, -1, 3)
            GUICtrlSetData(-1, "0|1|2|3|4|5|6|7|8|9", 1)
            GUICtrlCreateLabel("Delay:", 5, 73)
            $child_delay = GUICtrlCreateInput(100, 45, 70, 40)
            $child_buf_ok = GUICtrlCreateButton("OK", 5, 100, 85, 20, 1)
        Case $child_buf_ok
            GUICtrlCreateListViewItem(GUICtrlRead($child_belt)&"|"&GUICtrlRead($child_slot)&"|"&GUICtrlRead($child_delay), $buf)
            GUIDelete($child)
        Case $buf_del
            _GUICtrlListView_DeleteItemsSelected($buf)
        Case $atk_add
            $child = GUICreate("Add Attack Skill", 100, 120, -1, -1, 0x10000000, 0x88)
            GUICtrlCreateLabel("Belt:", 5, 13)
            $child_belt = GUICtrlCreateCombo("", 45, 10, 40, -1, 3)
            GUICtrlSetData(-1, "F1|F2|F3|F4", "F1")
            GUICtrlCreateLabel("Slot:", 5, 43)
            $child_slot = GUICtrlCreateCombo("", 45, 40, 40, -1, 3)
            GUICtrlSetData(-1, "0|1|2|3|4|5|6|7|8|9", 1)
            $child_atk_ok = GUICtrlCreateButton("OK", 5, 70, 85, 20, 1)
        Case $child_atk_ok
            GUICtrlCreateListViewItem(GUICtrlRead($child_belt)&"|"&GUICtrlRead($child_slot), $atk)
            GUIDelete($child)
        Case $atk_del
            _GUICtrlListView_DeleteItemsSelected($atk)
        Case $refresh
            CharList()
            ini()
        Case $start
            FileDelete(GUICtrlRead($char)&".ini")
            For $i=0 To _GUICtrlListView_GetItemCount($atk)-1
                IniWrite(GUICtrlRead($char)&".ini", "atk_skill", $i+1, _GUICtrlListView_GetItemTextString($atk, $i))
            Next
            For $i=0 To _GUICtrlListView_GetItemCount($buf)-1
                IniWrite(GUICtrlRead($char)&".ini", "buf_skill", $i+1, _GUICtrlListView_GetItemTextString($buf, $i))
            Next
            If GUICtrlRead($zerk)=1 Then
                IniWrite(GUICtrlRead($char)&".ini", "zerk", "on", "1")
            Else
                IniWrite(GUICtrlRead($char)&".ini", "zerk", "on", "0")
            EndIf
            $run = True
        Case $stop
            $run = False
        Case $char
            ini()
        Case Else
            InputCheck()
            If $run Then bot(GUICtrlRead($char))
    EndSwitch
    InputCheck()
    Switch TrayGetMsg()
        Case - 13
            Tray()
    EndSwitch
    InputCheck()
WEnd

Func bot($charname)
    $buff_skill = IniReadSection($charname&".ini", "buf_skill")
    If IsArray($buff_skill) And $buff_skill[0][0]<>0 Then
        For $i=1 To $buff_skill[0][0]
            If $run = True Then
                $string = StringSplit($buff_skill[$i][1], "|")
                Buff($charname, $string[1], $string[2], $string[3])
                InputCheck()
            EndIf
            Sleep(10)
        Next
    EndIf
    $attack_skill = IniReadSection($charname&".ini", "atk_skill")
    If IsArray($attack_skill) And $attack_skill[0][0]<>0 Then
        For $i=1 To $attack_skill[0][0]
            If $run = True Then
                $string = StringSplit($attack_skill[$i][1], "|")
                Skill($charname, $string[1], $string[2])
                InputCheck()
                Zerk()
            EndIf
            Sleep(10)
        Next
    EndIf
EndFunc

Func Skill($charname, $bar, $slot, $delay = 0.5)
    If Not IsDeclared($charname&"skill" & $bar & $slot) Then
        For $i=1 to 5
            SendSro(GetHandle($charname), $bar)
        Next
        SendSro(GetHandle($charname), $slot)
        Assign($charname&"skill" & $bar & $slot, TimerInit(), 2)
    ElseIf TimerDiff(Eval($charname&"skill" & $bar & $slot)) > $delay * 1000 Then
        For $i=1 to 5
            SendSro(GetHandle($charname), $bar)
        Next
        SendSro(GetHandle($charname), $slot)
        Assign($charname&"skill" & $bar & $slot, TimerInit(), 2)
    EndIf
EndFunc

Func Buff($charname, $bar, $slot, $delay = 300)
    If Not IsDeclared($charname&"buff" & $bar & $slot) Then
        SleepWithCheck(2000)
        For $i=1 to 5
            SendSro(GetHandle($charname), $bar)
        Next
        SendSro(GetHandle($charname), $slot)
        SleepWithCheck(2000)
        Assign($charname&"buff" & $bar & $slot, TimerInit(), 2)
    ElseIf TimerDiff(Eval($charname&"buff" & $bar & $slot)) > $delay * 1000 Then
        Assign($charname&"buff", TimerInit(), 2)
        SleepWithCheck(2000)
        For $i=1 to 5
            SendSro(GetHandle($charname), $bar)
        Next
        SendSro(GetHandle($charname), $slot)
        SleepWithCheck(2000)
        Assign($charname&"buff" & $bar & $slot, TimerInit(), 2)
    EndIf
EndFunc

Func CharList()
    $list = WinList("[CLASS:CLIENT]")
    For $i=1 To $list[0][0]
        Local $mid = memopen(WinGetProcess($list[$i][1]))
        Local $name = memread($mid, $swsroCharname, 'char[12]')
        If $name<>'' Then GUICtrlSetData($char, $name, $name)
        Local $name = memread($mid, $ecsroCharname, 'char[12]')
        If $name<>'' Then GUICtrlSetData($char, $name, $name)
        Local $name = memread($mid, $mysroCharname, 'char[12]')
        If $name<>'' And $name<>'?ŻQĆá<' And $name<>'h??=' And $name<>'Í;??ö?Ud˛' Then GUICtrlSetData($char, $name, $name)
        memclose($mid)
    Next
EndFunc

Func GetHandle($charname)
    Local $list = WinList("[CLASS:CLIENT]")
    For $i=1 To $list[0][0]
        Local $mid = memopen(WinGetProcess($list[$i][1]))
        Local $name = memread($mid, $mysroCharname, 'char[12]')
        If $name = $charname Then
            memclose($mid)
            Global $m=1
            Global $e=0
            Global $s=0
            Return $list[$i][1]
        EndIf
        Local $name = memread($mid, $swsroCharname, 'char[12]')
        If $name = $charname Then
            Global $m=0
            Global $e=0
            Global $s=1
            memclose($mid)
            Return $list[$i][1]
        EndIf
        Local $name = memread($mid, $ecsroCharname, 'char[12]')
        If $name = $charname Then
            Global $m=0
            Global $e=1
            Global $s=0
            memclose($mid)
            Return $list[$i][1]
        EndIf
        memclose($mid)
        Sleep(10)
    Next
EndFunc

Func SendSro($handle, $key)
    Switch $key
        Case "F1"
            $k = 0x70
        Case "F2"
            $k = 0x71
        Case "F3"
            $k = 0x72
        Case "F4"
            $k = 0x73
        Case Else
            $k = 0x30+$key
    EndSwitch
    DllCall("User32.dll", "int", "PostMessageA", "hwnd", $handle, "int", 0x100, "int", $k, "int", 0)
    DllCall("User32.dll", "int", "PostMessageA", "hwnd", $handle, "int", 0x101, "int", $k, "int", 0)
EndFunc

Func ini()
    _GUICtrlListView_DeleteAllItems($atk)
    _GUICtrlListView_DeleteAllItems($buf)
    If FileExists(GUICtrlRead($char)&".ini") Then
        $section = IniReadSection(GUICtrlRead($char)&".ini", "atk_skill")
        if IsArray($section) Then
            For $i=1 To $section[0][0]
                GUICtrlCreateListViewItem($section[$i][1], $atk)
            Next
        EndIf
        $section = IniReadSection(GUICtrlRead($char)&".ini", "buf_skill")
        If IsArray($section) Then
            For $i=1 To $section[0][0]
                GUICtrlCreateListViewItem($section[$i][1], $buf)
            Next
        EndIf
        If IniRead(GUICtrlRead($char)&".ini", "zerk", "on", "0") = "1" Then GUICtrlSetState($zerk, 1)
    EndIf
EndFunc

Func memopen($pid)
    Local $mid = DllCall('kernel32.dll', 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', 1, 'int', $pid)
    Return $mid[0]
EndFunc

Func memread($mid, $adress, $type = 'dword')
    Local $struct = DllStructCreate($type)
    DllCall('kernel32.dll', 'int', 'ReadProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', '')
    Return DllStructGetData($struct, 1)
EndFunc

Func memreaddynamic($mid, $pointer, $offset, $type = "dword")
    $newadress = memread($mid, $pointer) + $offset
    Return memread($mid, $newadress, $type)
EndFunc

Func memwrite($mid, $adress, $byte)
    Local $struct = DllStructCreate('byte')
    DllStructSetData($struct, 1, $byte)
    DllCall('kernel32.dll', 'int', 'WriteProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', 0)
EndFunc

Func memclose($mid)
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $mid)
EndFunc

Func Tray()
    If BitAND(WinGetState($GUI), 2) Then
        WinSetState($GUI, "", @SW_HIDE)
    Else
        WinSetState($GUI, "", @SW_SHOW)
    EndIf
EndFunc

Func IsPressed($sHexKey, $vDLL = 'user32.dll')
    Local $a_R = DllCall($vDLL, "int", "GetAsyncKeyState", "int", $sHexKey)
    If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1
    Return 0
EndFunc   ;==>_IsPressed

Func InputCheck()
    If $e=1 Then
        $CharBase = $epointer
    ElseIf $s=1 Then
        $CharBase = $spointer
    EndIf
    If WinActive(GetHandle(GUICtrlRead($char))) Then
        If IsPressed(0x74) Then
            If $run Then
                $run = False
            Else
                $run = True
            EndIf
            Do
                Sleep(1)
            Until Not IsPressed(0x74)
        EndIf
        If IsPressed(0x75) Then
            $mid = memopen(WinGetProcess(GetHandle(GUICtrlRead($char))))
            If memread($mid, $CharBase+8, 'byte') = 1 Then
                memwrite($mid, $CharBase+8, 0)
            Else
                memwrite($mid, $CharBase+8, 1)
            EndIf
            memclose($mid)
            Do
                Sleep(1)
            Until Not IsPressed(0x75)
        EndIf
        If IsPressed(0x76) Then
            $mid = memopen(WinGetProcess(GetHandle(GUICtrlRead($char))))
            If memread($mid, $CharBase+9, 'byte') = 1 Then
                memwrite($mid, $CharBase+9, 0)
            Else
                memwrite($mid, $CharBase+9, 1)
            EndIf
            memclose($mid)
            Do
                Sleep(1)
            Until Not IsPressed(0x76)
        EndIf
        If IsPressed(0x77) Then WinSetState(GetHandle(GUICtrlRead($char)), "", @SW_MINIMIZE)
    EndIf
EndFunc

Func Zerk()
    If GUICtrlRead($zerk)=1 Then
        If $e=1 Then
            $CharBase = $epointer
        ElseIf $s=1 Then
            $CharBase = $spointer
        EndIf
        Local $handle = GetHandle(GUICtrlRead($char))
        Local $mid = memopen(WinGetProcess($handle))
        Local $zerkpoints = memreaddynamic($mid, $CharBase, $zerkoffset, 'byte')
        If $zerkpoints = 5 Then
            DllCall("User32.dll", "int", "PostMessageA", "hwnd", $handle, "int", 0x100, "int", 0x09, "int", 0)
            DllCall("User32.dll", "int", "PostMessageA", "hwnd", $handle, "int", 0x101, "int", 0x09, "int", 0)
        EndIf
        memclose($mid)
    EndIf
EndFunc

Func SleepWithCheck($time)
    Assign('sleep', TimerInit(), 2)
    Do
        InputCheck()

        Switch GUIGetMsg()
            Case -3
                Exit
            Case -4
                Tray()
            Case $stop
                $run = False
        EndSwitch
        Sleep(10)
    Until TimerDiff(Eval('sleep')) > $time
EndFunc
Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności