|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Увеличение производительности скрипта |
|
Увеличение производительности скрипта
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Проблема такая - имеется скрипт, который сам нажимает кнопки, если ХП или мана меньше указанных значений, но скрипт делает это раза в 2-3 медленней чем хотелось бы (за секунду он нажимает раза 2-3) =(
Помогите решить проблему? #include <kernel.au3> #include <GuiConstantsEx.au3> #include <WinAPI.au3> 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 |
|
Отправлено: 10:21, 01-05-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
И ещё, а для чего нужен «_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}") |
|
------- Отправлено: 16:04, 01-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Долго не появлялся, небыло времени :-( клавиши сделал так, как сказали. спасибо :-)
проблема со скоростью работы решилась - она была на стороне сервера. осталось только это: Изначально был баг - когда персонаж умирал, прога не знала об этом и продолжала тыкать на нужные кнопки все бы ничего, но каким-то образом зажимался Alt и это очень мешало. Баг исправили отключив программу если жизни <= 0. но оказалось что это половина проблемы :-( этот же баг проявляется иногда даже если персонаж живой. Во время пвп очень мешает, хоть и легко отключается (достаточно нажать пару раз кнопку Alt) Так же интересует вопрос, возможно ли вклиниться в процесс и отправить пакет на сервер от имени процесса? не сильно в этом разбираюсь :-) |
Последний раз редактировалось notbanned, 04-05-2010 в 18:20. Отправлено: 17:41, 04-05-2010 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Увеличение производительности ноутбука | _stalone | Ноутбуки | 15 | 17-06-2009 21:50 | |
Увеличение скорости | Kiberg | Хочу все знать | 3 | 03-12-2007 02:20 | |
Увеличение производительности компьютера | grob40 | Microsoft Windows 2000/XP | 3 | 24-12-2006 11:59 | |
тестирование производительности скрипта на ПХП | Vlad Drakula | Программное обеспечение Linux и FreeBSD | 7 | 08-10-2003 18:45 |
|