Увеличение производительности скрипта

Ответить
Аватара пользователя
notbanned

Увеличение производительности скрипта

Сообщение notbanned »

Проблема такая - имеется скрипт, который сам нажимает кнопки, если ХП или мана меньше указанных значений, но скрипт делает это раза в 2-3 медленней чем хотелось бы (за секунду он нажимает раза 2-3) =(

Помогите решить проблему?



Код:

Код: Выделить всё

#include 
#include 
#include 
GuiCreate("Автожор", 180, 140)
$l1 = GUICtrlCreateLabel("Процесс: ", 10, 10, 100, 30)
$refresh = GUICtrlCreateButton("Обновить",110,10)
$l2 = GUICtrlCreateLabel("HP: ", 10, 40, 100, 25)
$input = GuiCtrlCreateInput("5000",10,60,60,25)
$Combo = GUICtrlCreateCombo("{F9}", 10, 85, 60, 30)
$input2 = GuiCtrlCreateInput("300",110,60,60,25)
$Combo2 = GUICtrlCreateCombo("{F8}", 110, 85, 60, 30)
$onoff = GUICtrlCreateCheckbox("Вкл",10,110);
GUICtrlCreateLabel("ver. 0.3 by ph1047", 85, 120, 100, 30)
Global $multptr = 0x82C99A
Global $mult = 0x0
Global $hpptr = 0x0
Global $hp = 0x0
Global $on = 0
Global $buf = 0
Global $pid = wingetprocess("FleeRO")
Global $hCombo = 0
If Not IsHWnd($Combo) Then $hCombo = GUICtrlGetHandle($Combo)
_SendMessage($hCombo, 0x000B)
_SendMessage($hCombo, 0x143, 0, "{F1}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F2}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F3}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F4}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F5}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F6}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F7}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F8}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F9}", 0, "wparam", "str")
_SendMessage($hCombo, 0x000B, 1)
If Not IsHWnd($Combo2) Then $hCombo = GUICtrlGetHandle($Combo2)
_SendMessage($hCombo, 0x000B)
_SendMessage($hCombo, 0x143, 0, "{F1}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F2}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F3}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F4}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F5}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F6}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F7}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F8}", 0, "wparam", "str")
_SendMessage($hCombo, 0x143, 0, "{F9}", 0, "wparam", "str")
_SendMessage($hCombo, 0x000B, 1)
If $pid == -1 Then
    GUICtrlSetData($l1,"Процесс: не найден")
Else
    GUICtrlSetData($l1,"Процесс: " & $pid)
EndIf
Global $h = _memopen($pid)
If ($h == 0x00000000) And ($pid > 0) Then
    GUICtrlSetData($l1,"Процесс: " & $pid & "; Не удается OpenProcess()")
ElseIf ($pid > 0) Then
    GUICtrlSetData($l1,"Процесс: " & $pid & "; Успешно открыт.")
    $on = 1
EndIf
; GUI MESSAGE LOOP
GuiSetState()
While 1
    $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $refresh
                $pid = wingetprocess("FleeRO")
                If $pid == -1 Then
                    GUICtrlSetData($l1,"Процесс: не найден")
                    $on = 0
                Else
                    GUICtrlSetData($l1,"Процесс: " & $pid)
                EndIf
                $h = _memopen($pid)
                If ($h == 0x00000000) And ($pid > 0) Then
                    GUICtrlSetData($l1,"Процесс: " & $pid & "; Не удается OpenProcess()")
                    $on = 0
                ElseIf ($pid > 0) Then
                    GUICtrlSetData($l1,"Процесс: " & $pid & "; Успешно открыт.")
                    $on = 1
                EndIf
        EndSelect
        If $on == 1 Then
            $mult = _MemReadDw($h, $multptr, "dword")
            $hpptr = $mult*4 + 0x7BDD3E;
            $hp = _MemReadDw($h, $hpptr, "int")
            If $hp  $buf Then
                GUICtrlSetData($l2,"HP: " & $hp)
            EndIf
            $buf = $hp
        EndIf
        If WinActive("FleeRO") And ($on == 1) And (GUICtrlRead($onoff) == 1) Then
            If $hp < Int(GUICtrlRead($input)) And $hp > Int(GUICtrlRead($input2)) Then
                Send(GUICtrlRead($Combo))
            EndIf
            If $hp < Int(GUICtrlRead($input2)) Then
                Send(GUICtrlRead($Combo2))
            EndIf
        EndIf
    ;Sleep(1)
WEnd
Аватара пользователя
Creat0R

Re: Увеличение производительности скрипта

Сообщение Creat0R »

Цитата:



Помогите решить проблему?



Проблему решить сложно без рабочего скрипта.



И ещё, а для чего нужен «_SendMessage($hCombo,....»? почему нельзя задать значения обычным способом:





Код:

Код: Выделить всё

$Combo = GUICtrlCreateCombo("", 10, 85, 60, 30)
....
$Combo2 = GUICtrlCreateCombo("", 110, 85, 60, 30)
....
GUICtrlSetData($Combo, "{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}", "{F9}")
GUICtrlSetData($Combo2, "{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}", "{F8}")
Аватара пользователя
notbanned

Re: Увеличение производительности скрипта

Сообщение notbanned »

Долго не появлялся, небыло времени :-( клавиши сделал так, как сказали. спасибо :-)



проблема со скоростью работы решилась - она была на стороне сервера.



осталось только это:

Изначально был баг - когда персонаж умирал, прога не знала об этом и продолжала тыкать на нужные кнопки все бы ничего, но каким-то образом зажимался Alt и это очень мешало. Баг исправили отключив программу если жизни
Ответить

Вернуться в «AutoIt»