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

> Автохилер ВоВ 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
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
cirus   Сколько времени хил откатывается? Зачем делить хп...   27.9.2016, 3:01
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

 

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