Что нового

[Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота.

Shpilivili

Йа нюб
Сообщения
17
Репутация
0
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Забел забельный..... и шшшта теперь делать???? Cheat Engine есть на русском? Или может кто подскажет аналогичные программы на русском?
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

В CE нечего переводить, там всего пара слов, но есть где-то русская версия, лучше на оф сайте глянуть, может там есть
 

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

На офф. сайте валяется, чем вы смотрите?
 

Shpilivili

Йа нюб
Сообщения
17
Репутация
0
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

gloss сказал(а):
На офф. сайте валяется, чем вы смотрите?
Да, спасибо... Прост туториал не получается русифицировать им... И я решил что он ток клиент русифицирует... А сейчас глянул - там и для обучения файл есть. Уже куда ток не распаковывал - не хотит работать. С блокнота его вообще не весело читать. Помогите :whistle: еще раз :-[
 

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Папку ru_RU из архива кидаем в C:\Program Files (x86)\Cheat Engine 6.4\languages (у вас путь может отличаться), в файле language.ini в строку PreferedLanguage= дописываем ru_RU. Должно получиться вот так PreferedLanguage=ru_RU
Запускаем CE, радуемся :beer:
 

Shpilivili

Йа нюб
Сообщения
17
Репутация
0
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

gloss сказал(а):
Папку ru_RU из архива кидаем в C:\Program Files (x86)\Cheat Engine 6.4\languages (у вас путь может отличаться), в файле language.ini в строку PreferedLanguage= дописываем ru_RU. Должно получиться вот так PreferedLanguage=ru_RU
Запускаем CE, радуемся :beer:
Ок, спс. Когда я спрограмирую 1й в мире искусственный интеллект, перед тобой в долгу не останусь.
 

ivantu

Новичок
Сообщения
8
Репутация
1
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Доброго времени, помогите новичку, не могу код запустить выдает что неизвестная функция, сильно не ругайте т.к нуб.

Вот мой код:
Код:
#RequireAdmin ; Обязательно Иначе не работае
#include <NomadMemory.au3> ; Для чтения Памяти игры
#include <GUIConstants.au3>
SetPrivilege("SeDebugPrivilege", 1)
Global $ProcessName = "Lineage II   "
Global $ProcessID = WinGetProcess($ProcessName,"")
Global $DllInformation = _MemoryOpen($ProcessID)
Global $hWnd = WinGetHandle("Lineage II   ", "")

Func GetData($Param1, $Param2="no param", $Param3="no param")
    Local $Base, $MemTemp, $DataType, $Offset[5] = ["nop", "nop", "nop", "nop", "nop"] ;Определяем массив в который можно записать до 4 массивов. Сразу же присваиваем всем ячейкам какое-нибудь значение отличное от офсета.
    ;$Base - сюда скрипт записывает необходимый базовый адрес для текущего запроса
    ;$MemTemp - тут скрипт обрабатывает данные получаемые из памяти необходимые для текущего запроса
    ;$DataType - сюда скрипт записывает тип данных необходимый для текущего запроса
    ;При обращении в эту функцию, она сперва переопределяет все значения на необходимые скрипту в данный момент и далее отправляет эти данные на обработку
    Select
        Case $Param1 = "Char" ;наша структура работы с персонажем
            Select
                Case $Param2 = "Cur HP" ;жизни персонажа. Обращение: GetData("Char", "Cur HP")
                    $Base = 0x2077EE00 ;база ХП
                    $Offset[1] = "37c" ;Оффсет на ХП
					$Offset[2] = "1ea0" ;Оффсет на ХП
					$Offset[3] = "984" ;Оффсет на ХП
					$Offset[4] = "204" ;Оффсет на ХП
                    $DataType = "dword" ;тип данных
                Case $Param2 = "Cur MP" ;мана персонажа. Обращение: GetData("Char", "Cur HP")
                    $Base = 0x00955890 ;база МП
                    $Offset[1] = "C9" ;Оффсет на МП
                    $DataType = "dword" ;тип данных
                Case $Param2 = "SXP" ;SXP персонажа. Обращение: GetData("Char", "SXP")
                    $Base = 0x00955e8c ;база SXP
                    $Offset[1] = "28" ;1-й Оффсет на SXP
                    $Offset[2] = "140" ;2-й Оффсет на SXP
                    $Offset[3] = "A8" ;3-й Оффсет на SXP
                    $DataType = "float" ;тип данных
                Case Else
                    SetError(1)
                    ;Сообщение об ошибке может быть закомменчено или наоборот, в зависимости от того чего мы хотим от скрипта.
                    ;ErrorMsg('GetData("'&$Param1&'", WTF?...', 'Ошибка вызова: команды GetData("'&$Param1&'", "'&$Param2&'") не существует.')
            EndSelect
        Case $Param1 = "Target"
            Select
                Case $Param2 = "Cur HP" ;жизни цели. Обращение: GetData("Target", "Cur HP")
                    $Base = 0x00955e8c ;база tHP
                    $Offset[1] = "20" ;1-й Оффсет на tHP
                    $Offset[2] = "100" ;2-й Оффсет на tHP
                    $Offset[3] = "A8" ;3-й Оффсет на tHP
                    $DataType = "float" ;тип данных
                Case Else
                    ;Сообщение об ошибке может быть закомменчено или наоборот, в зависимости от того чего мы хотим от скрипта.
                    ;ErrorMsg('GetData("'&$Param1&'", WTF?...', 'Ошибка вызова: команды GetData("'&$Param1&'", "'&$Param2&'") не существует.')
            EndSelect
        Case Else
            ;Сообщение об ошибке может быть закомменчено или наоборот, в зависимости от того чего мы хотим от скрипта.
            ErrorMsg('GetData(WTF?...', 'Ошибка вызова: команды GetData("'&$Param1&'") не существует.')
    EndSelect
    ;Тут происходит обработка данных пришедших сверхку
    $MemTemp = (_MemoryRead($Base, $DllInformation)) ;первый запрос в память, полученный результат уже будет обрабатываться в цикле
    For $i = 2 To UBound($Offset, 1)-1 Step 1 ;i начинается с двух потому что было решено оставить [0] ячейку пустой, мб в будущем пригодится. В обращениях же к памяти обращения идут в ячейку [$i-1]
        If String($Offset[$i]) = "nop" Then ;Смотрим значение текущей ячейки. Если оно не содержит в себе оффсет
            $MemTemp =  (_MemoryRead($MemTemp+Dec($Offset[$i-1]), $DllInformation, $DataType)) ;Значит нам пора формировать последний запрос используя данные хранящиеся в пред идущей ячейке [$i-1], в котором необходимо указать тип данных которые мы желаем получить.
            ExitLoop ;Отправив последний запрос, выходим из цикла. Нам больше нечего искать.
        Else ;Если значение в текущей ячейке содержит в себе оффсет, значит и пред идущая ячейка содержит в себе оффсет.
            $MemTemp =  (_MemoryRead($MemTemp+Dec($Offset[$i-1]), $DllInformation)) ;Формируем запрос используя оффсет хранящийся в пред идущей от текущей ячейке [$i-1]
        EndIf
    Next
    Return $MemTemp ;Возвращаем полученные данные.
EndFunc


вот что отладчик выдает, или как там он называется )
Код:
"C:\Users\Иван\Desktop\mytest.au3"(55,103) : error: ErrorMsg(): undefined function.

подскажите что не так, я наверное что то не подключил, или не до заполнил... не могу понять пока.
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

ivantu вспомогательная функция, предназначена просто для отображения сообщения об ошибке, можешь удалить её.
 

ivantu

Новичок
Сообщения
8
Репутация
1
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

А подскажите пожалуйста новичку как правильно обращаться к нужной ячейке, GetData("Char", "Cur HP")
Допустим мне нужно обратиться к GetData("Char", "Cur HP") узнать сколько HP и по полученному результату выполнить действие.
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Путь к ячейке памяти описан внутри самой функции, GetData и параметры это лишь обертка.
 

humerhead

Новичок
Сообщения
11
Репутация
0
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Как можно произвести нажатие какого-либо элемента интерфейса (а конкретно нажатие бинда в wow) с помощью NomadMemory?
 

ivantu

Новичок
Сообщения
8
Репутация
1
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Belfigor сказал(а):
Путь к ячейке памяти описан внутри самой функции, GetData и параметры это лишь обертка.

Это я понял, а как пользоваться этой оберткой не совсем понятно... :-\ :scratch:
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

ivantu
Дак никак. Это пример. Он работал бы только в Iris Online тех времен. Для того чтобы написать свой вариант для своей игры, тебе надо изучить как находить статические оффсеты в Cheat Engine.
 

Carousel

Новичок
Сообщения
7
Репутация
0
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Картинки умерли :(
Если есть возможность, обновите пожалуйста!
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

У меня не осталось картинок :(
 
Верх