Что нового

[Автоматизация] Вопрос по реализации WoW(API)

Pontik

Новичок
Сообщения
9
Репутация
0
Добрый день, меня очень интересует вопрос, возможно ли подключиться с помощью autoit к API WoW'а ? Как я понял нужная мне функция Dllcall ? В итоге получил нечто подобное, для определения кулдауна на что-то что находиться в первом слоте интерфейса:
Код:
$dll = "battle.net.dll" 

$cooldown= DllCall($dll, "int", "GetActionCooldown(1)","int", "duration")
MsgBox(0, "КД", $cooldown, 1)

Вот описании функции GetActionCooldown:

http://www.wowwiki.com/API_GetActionCooldown

Мне не понятно, какую dll нужно брать ? battle.net.dll (от ее базового адреса у меня сейчас работают все оффсеты) ? Нужно ли прописывать к ней полный путь ? да вобще, хотелосб бы получить какие-то коментарии по синтаксису самой команды dllcall (справку читал, наверняка что-то не так понял, как понял написал выше).

P.S. то что написано в коде не работает, все время возвращает 0.

Всем Спасибо :smile:
 

FoxTiM

Новичок
Сообщения
22
Репутация
2
Я особо в этом не шарю но вот пример поиска модулей в программе.
Пример программы!


Добавлено:
Сообщение автоматически объединено:

Или ты хочешь типо тренера на аутоите с использывания модулей?
Это в Cheat Engine
point: game.dll+2C2F38
offset hp: AB9

Код:
#include <nomadmemory.au3>
#include <MemoryModuleGetBaseAddress.au3>

$ProcessName = "Tic Trick" ; Титул окна, в моем случае Tic Trick Client
Global $ProcessID = WinGetProcess($ProcessName,"") ; Идентификатор процесса
if $ProcessID <> -1 Then 
    SetPrivilege("SeDebugPrivilege", 1) ; Устанавливаем привелегии на дебаг
    $sModule = "game.dll" ; Модуль процесса , который содержит базовый адрес
    $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule) 
        ; Функция вытаскивает базовый адрес из модуля по PID'у
	EndIf
	
	
$offset_mod = 0x2C2F38
$DllInformation = _MemoryOpen($ProcessID)

If $ProcessID = -1 Then
    MsgBox(4096, "#Error4", "Сперва запустите игру.")
    Exit
EndIf

$mem = "0x"&hex($baseADDR+$offset_mod)
$CurrentHP = _MemoryRead($mem, $DllInformation, 'ptr') ; читаем адрес из памяти

$FuncMedal1 = $CurrentHP + 0xAB9 ;offset HP
$FuncMedall1 =  (_MemoryRead($FuncMedal1, $DllInformation, 'ptr'))
$medalka1 =dec(StringTrimLeft($FuncMedall1, 2))
MsgBox(4096, "HP",$medalka1 )
 
Автор
P

Pontik

Новичок
Сообщения
9
Репутация
0
FoxTiM сказал(а):
Я особо в этом не шарю но вот пример поиска модулей в программе.
Пример программы!

Спасибо за модульспай, приду домой посмотрю какие библиотеки подгружаются к ВоВу. Что касается второго способа, то у меня сейчас как раз и сделано именно так, офсеты все я сам нашел, через Cheat Engine. Но вот допустим как найти офсет на КД спела ? или офсет на *находиться ли цель в зоне действия какого-нибудь спелла ?* Тут конечно можно найти координаты себя потом цели (причем как найти эти координаты я не понимаю) и высчитать расстояние таким способом + нужна еще координата Z которую еще и не 1 известный мне адон не показывает, Но НАМНОГО легче было бы испозовать для этого функции API IsSpellInRange, Но вот можно ли ? и если да, то как ?
 

FoxTiM

Новичок
Сообщения
22
Репутация
2
Самого мучает этот вопрос(((
http://autoit-script.ru/index.php/topic,1706.0.html
 

ven00m

Новичок
Сообщения
1
Репутация
2
Писал както уже бота для вов 2.4.3, кучу инфы перелопатил потом интерес пропал.
Остановился на том что научил его бегать по чекпоинтам. Атаку и лут делал через getpixelcolor(), findpixel() и "методом тыка" получилось очень каряво, хотя мобов уровней на 5 младше фармил нормально.
Насчет получения координатов мобов и лута как я понял надо отлавливать и расшифровывать трафик через библиотеку winpcap гдето видел в нете к ней udf. Это очень геморно но результат должен быть шикарным.
Вообще тема интересная, было бы время сам бы ченть помудрил.
Вот исходники моего "творения" если кому интересно. (звуки правдо не влезли)
 
Верх