Здравствуйте, гость ( Вход | Регистрация )

> Автохилер ВоВ 2.4.3, скрипт для хилинга 1-5 юнитов в пати. Хочется добиться работы с readme
Alfer
сообщение 23.9.2016, 17:12
Сообщение #1


**

Neophyte
Сообщений: 17
Регистрация: 23.9.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.128
Возраст: 32



Итак есть интерес нарисовать хилера.

Формально от 1 до 5 разных окон запущенного клиента из одной и той же папки.
Система Win7 x64.
Клиент "WoW 2.4.3 build 8606 Jul 10 2008"

Для начала беру 2 окна.
Для двух окон родился код через поиск цвета точки, что неудобно.
Код

// перед запуском скрипта прописать макросы для лечения фокуса и DD выбрать в фокус.
set #hanldewinheal 1644826 // указать хендл окна хилера
set #hanldewinDD 596864 // указать хендл окна DD
set $hppoint1 "40, 155 57344" // DD тут ткнуть Ктрл+А для указания точки срабатывания начала лечения игрока. Где-то 70-75% ХП
set $hppoint2 "39, 182 52480" // Heal тут ткнуть Ктрл+А для указания точки срабатывания начала лечения хилера. Где-то 50-70% ХП
set #tw1 0
set #gcd 1500
set #hp1 1234
set workwindow #hanldewinDD
readmem #hp1 0x24543D1C R
log #hp1
wait 40s
:check
set windowpos [1 715 [494 325 [#hanldewinheal]]]
set windowpos [69 288 [1208 753 [#hanldewinDD]]]
set workwindow #hanldewinDD
while ($hppoint1) and ($hppoint2)
if_not ($hppoint1)
goto heal_1
end_if
if_not ($hppoint2)
goto heal_2
end_if
end_while
:heal_1
set workwindow #hanldewinheal
set timer
send {num_4} #gcd
send {num_5} #gcd
set workwindow #hanldewinDD
if_not ($hppoint2)
goto heal_2
end_if
set workwindow #hanldewinDD
if ($hppoint1)
goto check
end_if
set workwindow #hanldewinheal
send {num_4} #gcd
set workwindow #hanldewinDD
if ($hppoint1)
goto check
end_if
set workwindow #hanldewinheal
send {num_4} #gcd
set workwindow #hanldewinDD
if_not ($hppoint2)
goto heal_2
end_if
set workwindow #hanldewinDD
if ($hppoint1)
goto check
end_if
set workwindow #hanldewinDD
while_not ($hppoint1)
set workwindow #hanldewinheal
send {num_6} 2000
set workwindow #hanldewinDD
if_not ($hppoint2)
goto heal_2
end_if
set workwindow #hanldewinheal
send {num_0}
if timer > 11000
set workwindow #hanldewinDD
if ($hppoint1)
goto check
end_if
goto heal_1
end_if
end_while
goto check
:heal_2
set workwindow #hanldewinheal
set timer
send {num_7} #gcd
send {num_8} #gcd
set workwindow #hanldewinDD
if_not ($hppoint1)
goto heal_1
end_if
set workwindow #hanldewinDD
if ($hppoint2)
goto check
end_if
set workwindow #hanldewinheal
send {num_7} #gcd
set workwindow #hanldewinDD
if ($hppoint2)
goto check
end_if
set workwindow #hanldewinheal
send {num_7} #gcd
set workwindow #hanldewinDD
if_not ($hppoint1)
goto heal_1
end_if
set workwindow #hanldewinDD
if ($hppoint1)
goto check
end_if
set workwindow #hanldewinDD
while_not ($hppoint2)
set workwindow #hanldewinheal
send {num_9} 2000
set workwindow #hanldewinDD
if_not ($hppoint1)
goto heal_1
end_if
set workwindow #hanldewinheal
send {num_0}
if timer > 11000
set workwindow #hanldewinDD
if ($hppoint2)
goto check
end_if
goto heal_2
end_if
end_while
goto check


Эта конструкция работает вполне сносно. Но решил углубиться в работу с памятью. Перечитал, что по-человечески нужно отталкиваться от базового адреса с цепочкой оффсетов, но пока не понял как ее отследить.

Основной алгоритм предполагается такой
пока ((ДД_ХП_актуал)\(ДД_ХП_макс) > 0.75) И ((Хил_ХП_актуал)\(Хил_ХП_МАХ) > 0.75) ждать
Иначе проверяем чьё меньше и отправляемся в процедуру его отхила.
процедура отхила ДД
процедура отхила Хила

Через ArtMoney нашёл 4 адреса(ДД хп макс и актуал, и Хил ХП макс и актуал )
Но это значение не читается в переменную
set workwindow #hanldewinDD
readmem #hp1 0x<Адресартмани> D (а Артмани тип целое 4 байта)
log #hp1
Но переменная выдает ошибку. (-1) при выводе переменной в лог

Перепробовал все возможные варианты типа данных и типа переменной всегда ошибка (-1)

Что не так подскажите куда копать в работе с памятью wow.
перечитал длинную тему про оффсеты, слазил на буржуйский форум не нашёл готовой цепочки офсетов для ХП своего и членов пати\рейда, и не нашёл механизма поиска этой цепочки. Но ведь если АртМани находит адрес памяти значит как минимум из этого адреса можно получить цифру в переменную, а вот не отдает. Подскажите куда копать ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 27.9.2016, 3:01
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26760
Пользователь №: 16.971
Возраст: 29



Сколько времени хил откатывается?
Цитата
требует долаботки для отхила двух целей одновременно

Зачем делить хп, если можно просто их сравнить?

Когда вижу goto аж плохо становится. Гораздо понятнее, если использовать gosub.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Alfer   Автохилер ВоВ 2.4.3   23.9.2016, 17:12
DarkMaster   Как раз сейчас обсуждаем с кнайтом проблему чтения...   23.9.2016, 22:06
Cockney   Чем пилот в этом плане отличается от c++?. апи то ...   24.9.2016, 0:56
DarkMaster   Апи чего? Чтения памяти другого процесса? Это не а...   24.9.2016, 12:30
Cockney   Хорошо, перефразирую. Чтение памяти вов чем-то отл...   24.9.2016, 14:57
Alfer   Можете подсказать как искать цепочки оффсетов ? И...   24.9.2016, 15:25
DarkMaster   артмани/читинжи. Либо сайтец по вову есть в виде ф...   24.9.2016, 15:27
DarkMaster   Как оказалось да. Нужны некоторые дополнительные ...   24.9.2016, 15:57
Cockney   Как оказалось да. Нужны некоторые дополнительные ...   24.9.2016, 17:17
Alfer   А еще вопрос. есть базовый адрес приложения (wow.e...   24.9.2016, 16:20
DarkMaster   Что есть базовый адрес? Адрес начала модуля? Может...   24.9.2016, 16:50
DarkMaster   В общак писать не буду схему реализации. Ни к чему...   24.9.2016, 19:45
DarkMaster   Ночная сборка b18 полный фикс.   24.9.2016, 20:14
Alfer   Спасибо, теперь память читается. А что, пилот с не...   25.9.2016, 20:13
cirus   Через плагин работает. https://forum.uokit.com/in...   25.9.2016, 20:25
Alfer   Это как ? Т.е. может нормально работать, а может...   25.9.2016, 21:07
cirus   if 10 = 10.0 log !!! end_if Услови...   25.9.2016, 21:44
Alfer   Да я их использовать и хочу. Только что-то после...   25.9.2016, 21:56
cirus   Походу баг. Можно сделать так: if #hp2 > #hph...   25.9.2016, 23:44
Alfer   Что-то не могу победить изменение переменной скрип...   26.9.2016, 16:15
Alfer   и еще вопросик. if #mark = 1 send {num_4} #gc...   26.9.2016, 16:30
Alfer   Пока что получилось победить через Свитч. По не на...   26.9.2016, 18:09
Alfer   Хде ж вы раньше были ?! ;) Перечитал мануал ...   27.9.2016, 9:35
DarkMaster   хп в процентах имхо правильно. По остальному коду ...   27.9.2016, 9:43
cirus   Это останавливает скрипт на 3 секунды. Если в это...   27.9.2016, 11:39
Alfer   Не знаю знакомы ли Вы с механикой вов, но есть т...   27.9.2016, 12:15
cirus   Не играл. Как по мне, то в большинстве случаев п...   27.9.2016, 12:43
DarkMaster   Это бывает актуально, т.к. создает своего рода AP...   27.9.2016, 17:52
Alfer   Вот так заработало так как надо. // перед запус...   28.9.2016, 12:30
DarkMaster   Хотите сделать красиво? Соберите все хендлы окон ...   28.9.2016, 18:51
Alfer   Идея интересная, но была бы актуальна, если бы не ...   29.9.2016, 10:05
Alfer   Растащил по двум скриптам. Работает быстрее, но пе...   29.9.2016, 12:12
DarkMaster   всегда работаю на нуле. Там где нужно сами проста...   29.9.2016, 14:43
DarkMaster   Как-то не заметил данный пост. Если еще актуально...   3.10.2016, 16:36
Cockney   Дать возможность резервировать пользовательские пе...   3.10.2016, 17:22
DarkMaster   что есть резервированная пользовательская переменн...   3.10.2016, 19:16
Cockney   Тоже самое что ты и написал. При запуске пилота вы...   3.10.2016, 23:25
DarkMaster   ок. Допустим. Какие приемущества над call при тако...   4.10.2016, 9:57


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 5.7.2025, 15:14
Designed by Nickostyle