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

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

Привет всем, у меня возник вопрос по поводу fld инструкции. Вопрос заключается в том что нужно как то сделать так, что бы в игре устанавливалось максимальное значение или конкретное значение, но в fld инструкции, как я понимаю не всегда можно использовать mov функцию или иные. Дак вот у меня есть инструкция в принципе рабочая, для того чтоб она работала в игре более менее правильно я соответственно внедряю в fld значение по некому смещению, которое предположительно является либо статичным и подходящим мне, либо максимальным значением. Но что делать если мне нужно впихать в инструкцию именно максимальное значение (возможно больше максимального), но его в структуре адреса нет, а так же нет ни одного подходящего и статичного значения (все либо меньше, либо не статичны)?

П.С.: Объясню на всякий зачем мне, на примере жизней, именно максимальное значение внедрять в инструкцию если она и без максималки работает и ты и так не сдохнешь, если будет внедрятся статичное значение, но меньше максимального. Для того что бы было красиво, но и возможно по иным причинам. :)

Привожу пример кода в котором внедряется значение меньше максимального, хоть и этого хватает:

[ENABLE]aobscan(address20, D9 80 C8 09 01 00 8B 16 8B 42 18 D9 5C 24 04 57)alloc(newMem, 100)label(returnHere)registersymbol(address20)newMem:push ebxmov ebx, dword ptr [eax+109CC]//внедряется значение 300, но требуемое максимальное значение в игре 350mov dword ptr [eax+109C8],ebxpop ebxfld dword ptr [eax+000109C8]jmp returnHereaddress20:jmp newMemnopreturnHere:[DISABLE]address20:fld dword ptr [eax+000109C8]dealloc(newMem)unregistersymbol(address20)
Ссылка на комментарий
Поделиться на другие сайты

Так ты внедряешь 350,а пишется 300

И что за игра больше информации предоставь.

Нет, внедряю 300 и пишется в игру соответственно 300)) Мне как раз и надо внедрить 350, но в структуре такого значения нет с типом нужным мне float, есть только 300 статичное, есть больше 350 и с подходящим мне типом float , я был бы рад их внедрить, но они не статичны. Игра Mini ninjas.

Да вообще собственно не важно в какой игре, мне бы хотелось правильно работать с инструкциями fld в такой ситуации и в других играх.

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

 

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

По поводу максимального значения: есть игры где оно есть, а есть игры где жизнь выглядит так  Жмаксимальная - Урон = Жтекущая (например Fallout3), может у тебя такой случай?

По конкретному значению, попробуй так:

 

Если так не получится, можно попробовать ввести переменную. Сперва попробуй 1 скрипт, потом, если что попробуем с константой. 

PS:

Добавлю по этому варианту: Жмаксимальная - Урон = Жтекущая.

В данном случае Жмаксимальной в структуре нет. Если мы убираем Урон (обнуляем, нопим инструкцию, которая отнимает Ж), тогда и получаем:

Жмаксимальная = Жтекущая  

[ENABLE]aobscan(address20, D9 80 C8 09 01 00 8B 16 8B 42 18 D9 5C 24 04 57)alloc(newMem, 100)label(returnHere)registersymbol(address20) newMem://внедряется значение 300, но требуемое максимальное значение в игре 350mov dword ptr [eax+109C8],(float)350fld dword ptr [eax+000109C8]jmp returnHere address20:jmp newMemnopreturnHere: [DISABLE]address20:fld dword ptr [eax+000109C8] dealloc(newMem)unregistersymbol(address20) 
Изменено пользователем garik66
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

По поводу максимального значения: есть игры где оно есть, а есть игры где жизнь выглядит так  Жмаксимальная - Урон = Жтекущая (например Fallout3), может у тебя такой случай?

По конкретному значению, попробуй так:

 

Если так не получится, можно попробовать ввести переменную. Сперва попробуй 1 скрипт, потом, если что попробуем с константой. 

PS:

Добавлю по этому варианту: Жмаксимальная - Урон = Жтекущая.

В данном случае Жмаксимальной в структуре нет. Если мы убираем Урон (обнуляем, нопим инструкцию, которая отнимает Ж), тогда и получаем:

Жмаксимальная = Жтекущая  

Вот блин я дубина))) Работает, спасибо тебе огромное, а я блин думал что mov dword ptr [eax+109C8],#350 это одно и тоже что и mov dword ptr [eax+109C8],(float)350 :-D

Вот только щас ещё проверю этот способ на анологичной инструкции. Да к стате не мог бы ты по подробней рассказать об случае максимальная-урон= текущая, а то вдруг тоже столкнусь дак чтобы знать что делать. Примерчик бы так сказать не помешал))

[ENABLE]aobscan(address20, D9 80 C8 09 01 00 8B 16 8B 42 18 D9 5C 24 04 57)alloc(newMem, 100)label(returnHere)registersymbol(address20) newMem://внедряется значение 300, но требуемое максимальное значение в игре 350mov dword ptr [eax+109C8],(float)350fld dword ptr [eax+000109C8]jmp returnHere address20:jmp newMemnopreturnHere: [DISABLE]address20:fld dword ptr [eax+000109C8] dealloc(newMem)unregistersymbol(address20) 
Изменено пользователем Korol2010
Ссылка на комментарий
Поделиться на другие сайты

Вот блин я дубина))) Работает, спасибо тебе огромное, а я блин думал что mov dword ptr [eax+109C8],#350 это одно и тоже что и mov dword ptr [eax+109C8],(float)350 :-D

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

По типам данных посмотри этот урок Xipho: 

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

По типам данных посмотри этот урок Xipho: 

ок. Да, а что с примером на счёт максимальная-урон= текущая? Покажешь?)))

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

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

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

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