Garik66 Опубликовано 13 декабря, 2014 Поделиться Опубликовано 13 декабря, 2014 Допустим при активации скрипта я записываю по адресу [x] значение b.Изначально в [x] было a.Как при выключении скрипта вернуть в [x] значение a? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 13 декабря, 2014 Поделиться Опубликовано 13 декабря, 2014 При включении (секция [ENABLE]) запоминай значение, а при выключении (секция [DISABLE]) - восстанавливай, как обычно.Но тебе нужно выбрать начальное значение таким, которого в игре точно не будет, чтобы опираться на это значение, как на флаг, и не перезаписать запомненное значение. Либо заводить две переменные, например:if (rem_flag == 0) { rem_value = N; // где "N" - текущее значение rem_flag = 1; // установили значение флага на "1", чтобы предотвратить перезапись запомненного значения}// ... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 декабря, 2014 Автор Поделиться Опубликовано 13 декабря, 2014 При включении (секция [ENABLE]) запоминай значение, а при выключении (секция [DISABLE]) - восстанавливай, как обычно. "Как обычно"? Я этого пока ещё ни разу не делал, хотя и предполагал, что именно так и нужно будет сделать. Чтобы я разобрался в вопросе, давайте на примере попробуем:Допустим я написал рабочий скрипт: Мне нужно чтобы при де активации скрипта все три значения приняли значение 0.Могу ли я записать скрипт, допустим так: Если не могу, перепишите пожалуйста правильно скрипт.[ENABLE]alloc(Primer, 64)label(Vozvrat)Primer:mov [eax+000000060],#100mov [eax+000000064],#100mov [eax+000000068],#100mov [eax+04],edxmov eax,[esi+08]jmp VozvratAdresInGame:jmp PrimernopVozvrat:[DISABLE]AdresInGame:mov [eax+04],edxmov eax,[esi+08]dealloc(Primer) [ENABLE]alloc(Primer, 64)label(Vozvrat)Primer:mov [eax+000000060],#100mov [eax+000000064],#100mov [eax+000000068],#100mov [eax+04],edxmov eax,[esi+08]jmp VozvratAdresInGame:jmp PrimernopVozvrat:[DISABLE]AdresInGame:mov [eax+000000060],0mov [eax+000000064],0mov [eax+000000068],0mov [eax+04],edxmov eax,[esi+08]dealloc(Primer) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 14 декабря, 2014 Автор Поделиться Опубликовано 14 декабря, 2014 Вроде бы разобрался как сделать это при помощи ввода переменной.Использовал это в третьем скрипте (последней версии) в этой теме[ENABLE]alloc(Primer, 64)label(Vozvrat)label(Konctanta)registersymbol(Konctanta)Primer:mov [eax+000000060],[Konctanta] // #100mov [eax+000000064],[Konctanta] // #100mov [eax+000000068],[Konctanta] // #100mov [eax+04],edxmov eax,[esi+08]jmp VozvratKonctanta:db 64AdresInGame:jmp PrimernopVozvrat:[DISABLE]AdresInGame://mov [eax+000000060],0 // Так конечно нельзя делать.//mov [eax+000000064],0//mov [eax+000000068],0mov [eax+04],edxmov eax,[esi+08]unregistersymbol(Konctanta)dealloc(Primer) Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 14 декабря, 2014 Поделиться Опубликовано 14 декабря, 2014 Во втором скрипте - выйдет, но первые три инструкции будут записаны как оригинальный код, и будут выполняться в обычном режиме, поэтому нужен другой подход, но какой именно - я не подскажу, т.к. таким вопросом не задавался никогда. Но мне кажется, что нужно в обход этой конструкции идти, т.е. восстанавливать дефолтовое значение, и чтобы при этом лишние инструкции в памяти не остались.UPD:В скрипте у тебя скобочки лишние только:mov [eax+000000060],Konctanta // #100 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 14 декабря, 2014 Автор Поделиться Опубликовано 14 декабря, 2014 Во втором скрипте - выйдет, но первые три инструкции будут записаны как оригинальный код, и будут выполняться в обычном режиме, поэтому нужен другой подход, но какой именно - я не подскажу, т.к. таким вопросом не задавался никогда. Но мне кажется, что нужно в обход этой конструкции идти, т.е. восстанавливать дефолтовое значение, и чтобы при этом лишние инструкции в памяти не остались.UPD:В скрипте у тебя скобочки лишние только:mov [eax+000000060],Konctanta // #100Огромное спасибо! Переделал заодно и свой первый скрипт, теперь работает именно как я задумывал. Результаты обсуждения, если кто читал см. в моей теме Тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 14 декабря, 2014 Поделиться Опубликовано 14 декабря, 2014 Огромное спасибо!Пожалуйста) Надеюсь, что помог)) Переделал заодно и свой первый скрипт, теперь работает именно как я задумывал. Результаты обсуждения, если кто читал см. в моей теме http://forum.gamehacklab.ru/topic/3010-skripty-dlia-fallout-3-ot-garik66/?p=20494Продолжай в том же духе, и тебя вскоре переведут в группу Trainer Maker, что позволит тебе файлы заливать на форум (и пользоваться вкладкой "Файлы" (сверху)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения