Что нового

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

Dellroc

Осваивающий
Сообщения
151
Репутация
31
Моё решение. Может кому понадобится для просчёта угла поворота персонажа по координатам начальной точки и конечной. Нулевая координата в верху. Отсчёт по часовой стрелке.
Код:
Func _CoordsToRotation($cX,$cY,$tX,$tY) ; Author: Yashied
Local $Pi = 4 * ATan(1)
Local $R = Sqrt(($cX - $tX) ^ 2 + ($cY - $tY) ^ 2)
Local $A = ASin(($tX - $cX) / $R)
If $tY > $cY Then $A = $Pi - $A
If $A < 0 Then $A += 2 * $Pi
If $A=360 Then $A=0
Local $tAngle=($A * 180 / $Pi)
$tAngle=Round($tAngle)
$R=Round($R)
Local $tReturn[2]=[$tAngle,$R]  ; $tAngle - угол по направлению, $R - расстояние до точки направления
Return $tReturn
EndFunc
 

leon001

Новичок
Сообщения
22
Репутация
1
а если до п.9 все гуд, а на п.9 при изменении значения не появляется ничего... что делать тогда?
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Если такое происходит на всех возможных адресах, убедись что ты ломаешь не флеш приложение. Так же в некоторых играх приведенный способ не полностью подходит и там нужно рыться в дебаггере. Я таким образом сломал себе зубы об FF XIV :smile:
 

br2

Новичок
Сообщения
12
Репутация
2
Доработал код Dellroc, под следующую ротацию, может кому пригодится:
Код:
Func _CoordsToRotation($cX,$cY,$tX,$tY)
	Local $Pi = 4 * ATan(1)
	Local $R = Sqrt(($cX - $tX) ^ 2 + ($cY - $tY) ^ 2)
	Local $A = ASin(($tY - $cY) / $R)
	If $tX > $cX Then $A = $Pi + $A
	If $tX < $cX Then $A = $Pi + $A
	If $A < 0 Then $A += 2 * $Pi
	If $A > 2 * $Pi Then $A=0
	Local $tAngle=($A * 180 / $Pi)
	$tAngle=Round($tAngle)
	$A=Round($A,2)
	$R=Round($R)
	Local $tReturn[3]=[$A,$R,$tAngle]  
        ; $A - угол в радианах 
        ; $tAngle - угол в градусах 
        ; $R - расстояние до точки направления
	Return $tReturn
EndFunc
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Код:
Func _CoordsToRotation($cX,$cY,$tX,$tY)
    Local $Pi = 4 * ATan(1)
    Local $R = Sqrt(($cX - $tX) ^ 2 + ($cY - $tY) ^ 2)
    Local $A = ASin(($tY - $cY) / $R)
    If $tX > $cX Then $A = $Pi + $A
    If $tX < $cX Then $A = $Pi + $A
    If $A < 0 Then $A += 2 * $Pi
    If $A > 2 * $Pi Then $A=0
    Local $tAngle=($A * 180 / $Pi)
    $tAngle=Round($tAngle)
    $A=Round($A,2)
    $R=Round($R)
    Local $tReturn[3]=[$A,$R,$tAngle]  
        ; $A - угол в радианах
        ; $tAngle - угол в градусах
        ; $R - расстояние до точки направления
    Return $tReturn
EndFunc



только сейчас заметил что не хватает условий сравнения по y :scratch:
 

Nilson

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

Вопрос на засыпку. Нашел я значится нужное мне значение. Нашел ESi, правда в моем случае это был EAX и пошел искать уже его. тут и началось интересное. http://clip2net.com/s/jqdSPR как мы видим, в найденных адресах, в поле значения, написано не наше искомое значение а нечто другое и так уже 5 попытка. Естественно там, где в восьмом пункте мы открываем окошко и ждем обращение к опкоду у меня окошко остается пустым.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Nilson
Используй Pointer scan( функция в CE ) и не забивай себе голову.
 

Nilson

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

firex сказал(а):
Nilson
Используй Pointer scan( функция в CE ) и не забивай себе голову.
Я бы с радостью, но с инглишом я дружу мало (Немецкий учил в школе). А внятного описания данной функции на русском я не нашел. Везде гайды по типу этого и везде результат у меня тот же.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Nilson
Вам понадобится только пару опций: ( на остальное не обращайте внимания, изучите позже )
MaxLevel - максимальная "глубина" указателя. К примеру указатель
Код:
pointer > pointer [+ offset] > pointer [+ offset] > [+ offset] - третьего уровня ( 3 )

MaxOffsetValue - максимальное значение offset в моем наглядном шаблоне.
 

Nilson

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

firex сказал(а):
Nilson
Вам понадобится только пару опций: ( на остальное не обращайте внимания, изучите позже )
MaxLevel - максимальная "глубина" указателя. К примеру указатель
Код:
pointer > pointer [+ offset] > pointer [+ offset] > [+ offset] - третьего уровня ( 3 )

MaxOffsetValue - максимальное значение offset в моем наглядном шаблоне.
После вашего совета сразу пошел и ткнул поиск не меняя никаких настроек. Получил огромное число базовых адресов и офсетов в 4х уровнях. Соответственно в поле Points to везде адрес моей переменной. Типа любой из предложенных мне адресов является поинтом для найденной переменной?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Nilson
1) Сохраните их все и перезапустите игру.
2) Проверьте какие из них все еще верно показывают значение.
3) Выбирайте на вкус и цвет.
 

Nilson

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

firex сказал(а):
Nilson
1) Сохраните их все и перезапустите игру.
2) Проверьте какие из них все еще верно показывают значение.
3) Выбирайте на вкус и цвет.
Спасибо. И последний вопрос, так, для саморазвития. А нафига тогда способ как в посте? Просто по интернету все гайды именно такой метод предлагают. В чем соль?
 
Автор
Belfigor

Belfigor

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

В том что иногда, чтобы найти нужное значение, нужно именно лезть на уровень ассемблера, ибо поинтерсканнер всегда будет выдавать неработающие адреса. Ну и например поинтер сканнер не поможет тебе найти в памяти структуру например таблицы мобов и тд и тп.
 

Nilson

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

Да, вы правы, иногда поинтсканер на пашет :(. А в моем случае не пашут оба способа. Видимо придется возвращаться к версии отслеживания пикселя по цвету :(
 
Автор
Belfigor

Belfigor

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

Или же уходить глубже на уровень ассемблера
 

Nilson

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

Belfigor сказал(а):
Или же уходить глубже на уровень ассемблера
Нет, спасибо. Помаюсь еще с поиском через поинт сканер и по вашему гайду и все. Может придумаю почему у меня не так как должно быть.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Re: [Iris Online] iWalker. Потрошим память игры. Пытаемся написать бота

Nilson
Постараюсь вам объяснить:
Предположим у нас есть игра в которой есть боты, боты спавнятся в реальном времени. Очевидно, что в памяти есть некий массив указателей на ботов, сами боты - структура, которая содержит информацию ( или указатели на информацию ). Если вы собираетесь найти указатель на конкретного бота - вам необходим указатель на массив указателей, и уж затем найти в нем конкретного бота. Однако все может быть куда сложнее, поверьте, это еще "плевая" ерунда.

Это банальный пример, вместо ботов у вас могут быть вещи или иное... Так что вашим методом кроме текущей информации ничего не найдете, вам нужен иной подход:
.. тут я пытался расписать вам облачное представление необходимых действий .. Но все упирается в необходимость познаний азов ассемблера. Если собираетесь серьезно подойти к делу и освоить подобное ремесло - начине с изучения ассемблера, иначе - продолжайте играться с пикселями.
 

Nilson

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

Понимаете, мне это нужно для моей конкретной задачи и возможно всего раз или 2. Не хотелось бы заниматься углубленным изучением ради пары раз. Мне и питона пока хватает, что бы заканчивать день с головной болью. У меня склад ума гуманитарный, но всю жизнь пытаюсь это сломать.
 

Shpilivili

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

Народ, у мну в место видео картинка с жабой и надписью click and discover imageshack. Шта со мной? :'(
 

gloss

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

Shpilivili сказал(а):
Народ, у мну в место видео картинка с жабой и надписью click and discover imageshack. Шта со мной? :'(
Картинку удалили с хостинга :smile:
 
Верх