Garik66 Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 Видать уже парюсь , никак не могу объединить два рабочих кода в один.1.[ENABLE]alloc(newMem,64)label(returnHere)newMem:mov dword ptr [esi+00000280],(float)100//fstp dword ptr [esi+edi*4+00000200]jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)2.[ENABLE]alloc(newMem,64)label(returnHere)newMem:mov dword ptr [esi+00000280],(float)0//fstp dword ptr [esi+edi*4+00000200]jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)2 запускаю после выключения 1 (Оба работают: 1 прописывает 100, где мне нужно, 2 - 0.)Уже по-моему все варианты переходов (прыжков) перепробовал:В начале сравнивал с 100 (сотней):[ENABLE]alloc(newMem,64)label(returnHere)label(Razdet)newMem:cmp dword ptr [esi+00000280],(float)100jbe Razdetmov dword ptr [esi+00000280],(float)100 //Эта часть работаетjmp returnHereRazdet:mov dword ptr [esi+00000280],(float)0 //Эта не работаетjmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)Затем попытался с помощью флага, но здесь вообще ничего не получается:[ENABLE]alloc(newMem, 128)label(returnHere)label(Razdet)label(_Razdet)registersymbol(_Razdet)newMem:cmp [_Razdet],1jne Razdetmov dword ptr [esi+00000280],(float)0mov [_Razdet],0jmp returnHereRazdet:mov dword ptr [esi+00000280],(float)100mov [_Razdet],1jmp returnHere_Razdet:dd 0Fallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]unregistersymbol(_Razdet)dealloc(newMem)Мастера подскажите пжлста, где ошибаюсь.Заранее Болшой СПАСЫБ!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
lamalamaz Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 При каком условии должно быть 100 а при каком 0?При срабатывании инструкции чередовать 100 и 0? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 декабря, 2014 Автор Поделиться Опубликовано 11 декабря, 2014 При каком условии должно быть 100 а при каком 0?При срабатывании инструкции чередовать 100 и 0? Да, инструкция разовая - срабатывает, в моём случае когда одеваешь или снимаешь шмотку с героя. Ссылка на комментарий Поделиться на другие сайты Поделиться
lamalamaz Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 Да, инструкция разовая - срабатывает, в моём случае когда одеваешь или снимаешь шмотку с героя.[ENABLE]alloc(newMem,64)label(returnHere)label(nol)label(sto)label(load)newMem:cmp dword ptr [esi+00000280],(float)100je nolcmp dword ptr [esi+00000280],(float)0je stojmp loadnol:mov dword ptr [esi+00000280],(float)0 jmp returnHeresto:mov dword ptr [esi+00000280],(float)100jmp returnHereload:mov dword ptr [esi+00000280],(float)100jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)Попробуй так 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 (изменено) Видать уже парюсь , никак не могу объединить два рабочих кода в один.1.[ENABLE]alloc(newMem,64)label(returnHere)newMem:mov dword ptr [esi+00000280],(float)100//fstp dword ptr [esi+edi*4+00000200]jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)2.[ENABLE]alloc(newMem,64)label(returnHere)newMem:mov dword ptr [esi+00000280],(float)0//fstp dword ptr [esi+edi*4+00000200]jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)2 запускаю после выключения 1 (Оба работают: 1 прописывает 100, где мне нужно, 2 - 0.)Уже по-моему все варианты переходов (прыжков) перепробовал:В начале сравнивал с 100 (сотней):[ENABLE]alloc(newMem,64)label(returnHere)label(Razdet)newMem:cmp dword ptr [esi+00000280],(float)100jbe Razdetmov dword ptr [esi+00000280],(float)100 //Эта часть работаетjmp returnHereRazdet:mov dword ptr [esi+00000280],(float)0 //Эта не работаетjmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)Затем попытался с помощью флага, но здесь вообще ничего не получается:[ENABLE]alloc(newMem, 128)label(returnHere)label(Razdet)label(_Razdet)registersymbol(_Razdet)newMem:cmp [_Razdet],1jne Razdetmov dword ptr [esi+00000280],(float)0mov [_Razdet],0jmp returnHereRazdet:mov dword ptr [esi+00000280],(float)100mov [_Razdet],1jmp returnHere_Razdet:dd 0Fallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]unregistersymbol(_Razdet)dealloc(newMem)Мастера подскажите пжлста, где ошибаюсь.Заранее Болшой СПАСЫБ!!! На этом форуме уже была статья про объединения 2 -х скриптов в один.Используй поиск по форуму. Тебе ссюдаhttp://forum.gamehacklab.ru/topic/1972-obedinenie-dvukh-i-bolee-skriptov-v-odin/?hl=объединение Изменено 11 декабря, 2014 пользователем Dison Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 декабря, 2014 Автор Поделиться Опубликовано 11 декабря, 2014 [ENABLE]alloc(newMem,64)label(returnHere)label(nol)label(sto)label(load)newMem:cmp dword ptr [esi+00000280],(float)100je nolcmp dword ptr [esi+00000280],(float)0je stojmp loadnol:mov dword ptr [esi+00000280],(float)0 jmp returnHeresto:mov dword ptr [esi+00000280],(float)100jmp returnHereload:mov dword ptr [esi+00000280],(float)100jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem)Попробуй так Не понимаю зачем нужно это: 1. load:mov dword ptr [esi+00000280],(float)100jmp returnHere если есть это: sto:mov dword ptr [esi+00000280],(float)100jmp returnHere И здесь:2. cmp dword ptr [esi+00000280],(float)0 значение dword ptr [esi+00000280], в игре может быть и выше 0 и при этом не равняться 100. НО идею использовать две метки и два сравнения сейчас попробую. Спасибо.На этом форуме уже была статья про объединения 2 -х скриптов в один.Используй поиск по форуму. Тебе ссюдаhttp://forum.gamehacklab.ru/topic/1972-obedinenie-dvukh-i-bolee-skriptov-v-odin/?hl=объединениеПрежде чем кидаете ссыль, почитайте её сами.В моём случае от одной инструкции идут два взаимоисключающих кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 Конкретно тебе что нужно сделать с этими инструкциями? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 декабря, 2014 Автор Поделиться Опубликовано 11 декабря, 2014 Конкретно тебе что нужно сделать с этими инструкциями?В теме уже отвечал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 11 декабря, 2014 Поделиться Опубликовано 11 декабря, 2014 (изменено) Так у тебя же один адрес отвечает за 2 скриптаFallout3.exe+36E4E0 Изменено 11 декабря, 2014 пользователем Dison Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 декабря, 2014 Автор Поделиться Опубликовано 11 декабря, 2014 Так у тебя же один адрес отвечает за 2 скриптаFallout3.exe+36E4E0Да. И я об этом уже писал. Прежде чем кидаете ссыль, почитайте её сами.В моём случае от одной инструкции идут два взаимоисключающих кода.А что, в этом случае нельзя объединить в один код? Главная проблема не в том, что один адрес отвечает за 2 скрипта, а в том, что тип float.Если бы были целые, давно бы уже подобрал переходы (прыжки). Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 12 декабря, 2014 Поделиться Опубликовано 12 декабря, 2014 В общем, если я правильно понял суть скрипта, что он должен делать, то попробуй этот:[ENABLE]alloc(newMem,64)label(returnHere)label(originalcode) // новая метка. для оригинального кода (в данном случае она нужна, чтобы не дублировать оригинальную инструкцию)label(set_zero) // новая метка. для записи нуля (0)newMem:cmp [esi+00000280],(float)100 // какое условие должно быть - я так и не понял, но раз ты с сотней сравнивал, то сделал именно по такому условиюjne set_zero // прыжок, если не равноmov dword ptr [esi+00000280],(float)100originalcode:fstp dword ptr [esi+edi*4+00000200] // не забываем про оригинальный кодjmp returnHereset_zero: // сюда попадаем, если при сравнении с сотней сработал прыжок "jne"mov dword ptr [esi+00000280],(float)0jmp returnhereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 декабря, 2014 Автор Поделиться Опубликовано 12 декабря, 2014 NullAlexК сожалению тоже не работает.Я уже перепробовал кучу разных прыжков, пока не получается.В твоём скрипте, даже, если убрать: originalcode:fstp dword ptr [esi+edi*4+00000200] // не забываем про оригинальный коди добавить в:cmp........ [esi+00000280],(float)100 - dword ptr.всё равно (float)100 не записывается по нужному адресу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 12 декабря, 2014 Поделиться Опубликовано 12 декабря, 2014 Странно, должен был сработать... Ты несколько раз одевал и снимал шмотку в игре? Начальное значение может быть больше 100, а это значит, что первым делом оно установится равным 100, а потом уже - на ноль.Но на всякий случай, попробуй этот: (только в игре не забудь снять и одеть шмотку несколько (больше одного) раз)[ENABLE]alloc(newMem,2048)label(returnHere)label(originalcode)newMem:cmp [esi+00000280],(float)100jne @Fmov dword ptr [esi+00000280],(float)0@@:mov dword ptr [esi+00000280],(float)100originalcode:fstp dword ptr [esi+edi*4+00000200]jmp returnHereFallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]dealloc(newMem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 декабря, 2014 Автор Поделиться Опубликовано 12 декабря, 2014 NullAlexБольшое спасибо за помощь. Я уже разобрался в чём дело, вот рабочий код (на 100 . Подробнее опишу в чём дело и выложу уже готовый кодв форуме "скрипты и таблицы" и сюда выложу ссылку.alloc(newMem, 128)label(returnHere)label(Razdet_1)label(Razdet_2)label(Razdet_3)label(Razdet_4)label(_Razdet)registersymbol(_Razdet)newMem:cmp [_Razdet],3je Razdet_4cmp [_Razdet],2je Razdet_3cmp [_Razdet],1je Razdet_2cmp [_Razdet],0je Razdet_1Razdet_1:mov dword ptr [esi+00000280],(float)100mov [_Razdet],1jmp returnHereRazdet_2:mov [_Razdet],2jmp returnHereRazdet_3:mov dword ptr [esi+00000280],(float)0mov [_Razdet],3jmp returnHereRazdet_4:mov [_Razdet],0jmp returnHere_Razdet:dd 0Fallout3.exe+36E4E0:jmp newMemnopnopreturnHere:[DISABLE]Fallout3.exe+36E4E0:fstp dword ptr [esi+edi*4+00000200]unregistersymbol(_Razdet)dealloc(newMem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 декабря, 2014 Автор Поделиться Опубликовано 12 декабря, 2014 Для тех, кто читал:Решение проблемы и полный рабочий скрипт выложен в форуме "Скрипты и таблицы":http://forum.gamehacklab.ru/topic/3010-skripty-dlia-fallout-3-ot-garik66/?p=20478 Эту тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения