Перейти к содержанию

В чём моя ошибка в скрипте в СЕ


Рекомендуемые сообщения

Всем доброго времени суток! Профессионалы читинга помогите понять в чём ошибка. В общем в очень хорошей игре называется "Gun" пытаюсь сделать бессмертными лошадей (жалко, что такие милые животные страдают). В общем исходя из знаний, которые под черпнул от уважаемых: Keng, Coder, MasterGH получилось во многих играх сделать читы в частности и в этой: - бессмертие, без перезарядки, беск. спринт лошади, а вот здоровье оной не выходит. Привожу оба варианта скрипта:

 

1 -ый вариант:

  Показать контент

 

2 - ой вариант:

  Показать контент

Интересует именно бессмертие коня, если можете помогите понять в чём ошибаюсь.

А игра просто замечательная.

Ссылка на комментарий
Поделиться на другие сайты

Не знаю проверил ли ты или нет, с какими адресами работает твоя инструкция.

Если не с одним адресом, то нужно делать фильтр.

Если инструкция работает только с НР твоей лошадки, то объясню как нужно написать твой скрипт.

инструкция

fstp dword ptr [esi+28]

нам указывает, что в регистре FPU st(0) лежит текущее значение НР, т.е чтобы лошадка   стало бессмертной тебе нужно заменить значение в этом регистре на максимальноe, как быстрее это сделать, смотри скрипт:

  Показать контент

Если окажется, что в найденном тобою смещении "[esi+c4] - (в этом смещении тоже значение фл. 350)" значение не постоянно и меняется, то можно переписать скрипт так:

  Показать контент

 

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

Да конечно проверял, работает не с одним адресом,, вернее с адресами (насколько я понял) коней и когда в мисси с адресами персов, которых надо спасти, или защитить, но не врагов. Но это я думаю не страшно, возможно и шкалу времени на спасение перса подвешивают. Просто смещение там тоже было + 28. Спасибо Garik66, завтра попробую. Сейчас просто нет времени, надо на работу... .

Ссылка на комментарий
Поделиться на другие сайты

  В 15.02.2016 в 01:50, SerVick сказал:

Да конечно проверял, работает не с одним адресом,, вернее с адресами (насколько я понял) коней и когда в мисси с адресами персов, которых надо спасти, или защитить, но не врагов. Но это я думаю не страшно, возможно и шкалу времени на спасение перса подвешивают. Просто смещение там тоже было + 28. Спасибо Garik66, завтра попробую. Сейчас просто нет времени, надо на работу... .

Показать  

Как это не страшно.. А миссия будет убить на пример животных ??? ты будешь стрелять по ним бесконечно - даже не поняв то, что дело всё в кривой опции. 

Вот так бы хотя бы сделать тебе надо.. На других инструкция пролетает здоровье. Фильтр на максимальном здоровье идет - от других животных. Лошадей в игре убивать вроде как не надо.  

  Показать контент

 

 

Ссылка на комментарий
Поделиться на другие сайты

Спасибо LIRW и Garik66 за помощь. предложенный вариант (fstp dword ptr  [esi+28]) срабатывает, но он "глючный". Получается такой глюк: 1) шкала жизни показывает 0, 2) если слезть с коня, то остаётся только седло, а на другого коня не появляется команды (в седло), соответственно думаю будут ещё какие -то глюки. Ребята вот я конечно не спец в ассемблере, но почитал что  "ret" отнимает указанное число байт, Но до конца понять не смог что происходит в этом месте. В общем в моём понимании после "pop" прыгает на смещение +24, если моё предположение правильно, то в оригинальном скрипте достаточно изменить "ret" на аналог "ret" , только что бы он прибавлял. Или я заблудился... . Эта инструкция работает с другими адресами, но получается с одним адресом. Т.е. дружественные персы, или транспорт. НПС - животные на других адресах. Т.е. фильтр здесь не понадобится. Буду пробовать предложенные варианты. Вечером отпишусь.

  В 15.02.2016 в 09:32, LIRW сказал:

Как это не страшно.. А миссия будет убить на пример животных ??? ты будешь стрелять по ним бесконечно - даже не поняв то, что дело всё в кривой опции. 

Вот так бы хотя бы сделать тебе надо.. На других инструкция пролетает здоровье. Фильтр на максимальном здоровье идет - от других животных. Лошадей в игре убивать вроде как не надо.  

  Показать контент

 

 

Показать  

 

 

Ссылка на комментарий
Поделиться на другие сайты

  В 16.02.2016 в 03:40, SerVick сказал:

fstp dword ptr  [esi+28]) срабатывает, но он "глючный"

Показать  

Глючный из-за операнда ret, если бы его не было, то скрипт сработал бы нормально. Я удалял из st(0) значение в  [esi+28], чтобы не вводить дополнительную переменную. Так что нужно ввести ещё переменную.

Попробуй ещё один скрипт:

  Показать контент

LIRW проверил не работает как нужно.

По-видимому связанно с выбранной тобою инструкцией.

Изменено пользователем Garik66
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Ну как это на других не работает. Вот задание на пример - убить бозонов там в игре. Вот посмотри как инструкции не работают с ними. Я ещо давно как то в этой игре ковырялся и особо то не подумал об этом... А потом вот квест у меня был - лошадью задавить надо было копытами этих животных. Я давил их наверное с пол часа - пока не дошло, что они тоже бессмертны... Но брал другую конечно инструкцию. А что самое интересное, у меня не исчезает не чего и работает всё как надо. Вот последний скрипт который дал - всё работает как надо. В лошадь стреляешь и в неё записывается около 1000 здоровья. Другие животные уходят в никуда. Так как для каждого животного свои максимальные адреса здоровья. Вот у этого бозона - по моему 200 (если память не изменяет) могу ошибаться, так как в день по сколько игр смотрю и не упомнишь где что было. Единственное в трейнере деньги не сделал.. Я их как то делал, но они у некоторых не работали. А делал через указатель, так как на этом адресе висит инструкций с 30 - не известно каких. Там в принципе деньги то нужны только один раз. Любой их может какой не будь артманей взломать. Да и зачем эти деньги в игре ??? они только для улучшения оружия, но не для покупки его.. На пример увеличенный магазин или прибавка к скорострельности. Патроны там и так в трейнере бесконечные, скорострельность зависит уже от тебя - можно повесить скрипт на мышь и будешь стрелять как с автомата..

Ссылка на комментарий
Поделиться на другие сайты

  В 14.02.2016 в 20:14, SerVick сказал:

если можете помогите понять в чём ошибаюсь.

Показать  

чтобы заработал мой первый скрипт из сообщения 

Нужно чтобы ты сделал АА скрипт из инструкции повыше этой fstp dword ptr [esi+28], чтобы в инъекцию не попадала инструкция ret 0004 и выложил сюда.

Поправлю скрипт и будет работать как нужно.

Все глюки произошли именно из-за ret 0004.

  Показать контент

 

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

Парни огромное спасибо!!! За помощь и время уделённое мне. Извиняюсь, что ввёл вас в заблуждение... , действительно инструкции работают с другими "неписями" т.е смещение +28 текущее здоровье и врагов и т.д. В общем без фильтра не обойтись. Проверил на одной из предложенных инструкций: 

fsubr dword ptr [esi+28]. Т.е. [esi+28] = текущее здоровье, [esi+2с] = макс. здоровье. Вот, только не пойму почему в этом коде тоже враги стали бессмертными вместе с лошадью?


 

  Показать контент

 

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

Garik66 и LIRW огромное спасибо за помощь!!! Garik66, если не трудно напиши не большие комментарии, к коду. А  именно почему в квадратных скобках слова, а не регистр и что такое dd . Просто хочется не просто списать, а понять что происходит в коде... .

Ссылка на комментарий
Поделиться на другие сайты

SerVick Не дождался от тебя скрипта. Скачал игру.

Вот рабочий скрипт, только нужно сделать нормальный фильтр (не по максимальным значениям жизни а по ID):

  Показать контент

Фильтр же найдёшь?

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

 

  В 16.02.2016 в 18:23, SerVick сказал:

Garik66, если не трудно напиши не большие комментарии, к коду. А  именно почему в квадратных скобках слова, а не регистр и что такое dd . Просто хочется не просто списать, а понять что происходит в коде... .

Показать  

Ты про скрипт, что в этом сообщении

 

Так про него мне Женька (LIRW) сказал что он не рабочий. Зачем его тогда комментировать. Вон лучше возьми скрипт из предыдущего сообщения - он рабочий и как он работает я уже объяснял выше (во втором посте топика).

 

Ссылка на комментарий
Поделиться на другие сайты

Скрипт на денюжки, попросил Женя написать для проверки.

  Показать контент

Для Gan табличка для денюжков.

1. Войти в меню торговли.

2. Numpad +  -  + 1000 монет.

Gun.CT

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

  В 16.02.2016 в 06:48, Garik66 сказал:

Глючный из-за операнда ret, если бы его не было, то скрипт сработал бы нормально. Я удалял из st(0) значение в  [esi+28], чтобы не вводить дополнительную переменную. Так что нужно ввести ещё переменную.

Попробуй ещё один скрипт:

  Показать контент

SerVick

LIRW проверил не работает как нужно.

По-видимому связанно с выбранной тобою инструкцией.

Показать  

Garik66 спасибо! Скрипт работает как надо, только к нему ещё буду мудрить фильтр. Без него все бессмертными становятся.

Ссылка на комментарий
Поделиться на другие сайты

Garick66 и LIRW огромное вам спасибо!!! Очень помогли, правда я ещё ни когда не искал по ID, но думаю - это уже не проблема... . Материал по этой теме есть, почитаю. Главное сейчас благодаря вам многое стало понятней. Конечно пробелов много. Но как говорят терпение и труд... . Ещё раз огромное спасибо!!!

Ссылка на комментарий
Поделиться на другие сайты

  В 17.02.2016 в 16:36, SerVick сказал:

Скрипт работает как надо

Показать  

Ну раз скрипт работает как надо :), то отвечу на:

 

  В 16.02.2016 в 18:23, SerVick сказал:

Garik66, если не трудно напиши не большие комментарии, к коду.

Показать  

Что мы сделали, записав в скрипт:

label(HP_horse)
HP_horse:
dd (float)350

мы выделили в ранее выделенной памяти  

alloc(newmem,2048)

кусочек памяти, в нашем случае 4 байта, который мы можем использовать как нам нужно. В данном скрипте мы в этих 4 байтах храним максимальное НР лошадки.

Можно сформулировать не много по другому - мы создали указатель, т.е. HP_horse - это сам указатель, а по смещению 0 -лежит максимальное НР лошадки, т.е. [HP_horse+0] или просто  [HP_horse] = (float)350.

Название это кусочка мы даём сами для удобства (для нашего понимания) - HP_horse -  НР лошадки, deletion - удаление, т.е. в нашем примере эту память используем для удаления значения в st(0).

Ну ещё добавлю при такой записи:

label(HP_horse)
HP_horse:
dd (float)350

мы можем использовать HP_horse только внутри данного скрипта, т.е. локально.

Для того чтобы использовать HP_horse в других скриптах, в таблице СЕ, нужно добавить ещё две записи в скрипт:

label(HP_horse)
registersymbol(HP_horse)
--------
--------
HP_horse:
dd (float)350
--------
--------
unregistersymbol(HP_horse)  

или можем записать иначе:

globalalloc(HP_horse, 4)
-------
-------
dealloc(HP_horse)  

 

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.