guys F7 push Start/Stop
is working :)
NEW BOT
is working :)
Code:
Global $Paused
HotKeySet("{F7}", "Pause")
Func Pause()
$Paused = NOT $Paused
While $Paused
Sleep (400)
WEnd
EndFunc ; => Pause()
NEW BOT
Code:
#Include <GuiListView.au3>
Dim $listview[3] = ['Belt','Slot','Delay'], $child_buf_ok = -1, $child_atk_ok = -1, $CharnameOffset = 0xA9CBB8, $run = False
GUICreate('Swsro Bot', 341, 370, @DesktopWidth/2-400/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)
Global $Paused
HotKeySet("{F7}", "Pause")
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)
$start = GUICtrlCreateButton("Start Bot", 10, 305, 150)
$stop = GUICtrlCreateButton("Stop Bot", 175, 305, 150)
CharList()
ini()
While 1
Switch GUIGetMsg()
Case -3
Exit
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
$run = True
Case $stop
$run = False
Case $char
ini()
Case Else
If $run Then bot(GUICtrlRead($char))
EndSwitch
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]
$string = StringSplit($buff_skill[$i][1], "|")
Buff($charname, $string[1], $string[2], $string[3])
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]
$string = StringSplit($attack_skill[$i][1], "|")
Skill($charname, $string[1], $string[2])
Next
EndIf
EndFunc
Func Skill($charname, $bar, $slot, $delay = 0.5)
If Not IsDeclared($charname&"skill" & $slot) Then
SendSro(GetHandle($charname), $bar)
SendSro(GetHandle($charname), $slot)
Assign($charname&"skill" & $slot, TimerInit(), 2)
ElseIf TimerDiff(Eval($charname&"skill" & $slot)) > $delay * 1000 Then
SendSro(GetHandle($charname), $bar)
SendSro(GetHandle($charname), $slot)
Assign($charname&"skill" & $slot, TimerInit(), 2)
EndIf
EndFunc
Func Buff($charname, $bar, $slot, $delay = 300)
If Not IsDeclared($charname&"buff" & $slot) Then
Sleep(2000)
SendSro(GetHandle($charname), $bar)
SendSro(GetHandle($charname), $slot)
Sleep(2000)
Assign($charname&"buff" & $slot, TimerInit(), 2)
ElseIf TimerDiff(Eval($charname&"buff" & $slot)) > $delay * 1000 Then
Sleep(2000)
SendSro(GetHandle($charname), $bar)
SendSro(GetHandle($charname), $slot)
Sleep(2000)
Assign($charname&"buff" & $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, $CharnameOffset, 'char[12]')
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, $CharnameOffset, 'char[12]')
If $name = $charname Then
memclose($mid)
Return $list[$i][1]
EndIf
memclose($mid)
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
For $i=1 To 5
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)
Next
EndFunc
Func ini()
_GUICtrlListView_DeleteAllItems($atk)
_GUICtrlListView_DeleteAllItems($buf)
If FileExists(GUICtrlRead($char)&".ini") Then
$section = IniReadSection(GUICtrlRead($char)&".ini", "atk_skill")
For $i=1 To $section[0][0]
GUICtrlCreateListViewItem($section[$i][1], $atk)
Next
$section = IniReadSection(GUICtrlRead($char)&".ini", "buf_skill")
For $i=1 To $section[0][0]
GUICtrlCreateListViewItem($section[$i][1], $buf)
Next
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 memclose($mid)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $mid)
EndFunc
Func Pause()
$Paused = NOT $Paused
While $Paused
Sleep (400)
WEnd
EndFunc ; => Pause()