Что нового

[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 при изменении значения не появляется ничего... что делать тогда?
 
Автор
B

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) Выбирайте на вкус и цвет.
Спасибо. И последний вопрос, так, для саморазвития. А нафига тогда способ как в посте? Просто по интернету все гайды именно такой метод предлагают. В чем соль?
 
Автор
B

Belfigor

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

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

Nilson

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

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

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:
 
Верх