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

Как при деактивации скрипта вернуть первоначальное значение?


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

Допустим при активации скрипта я записываю по адресу [x] значение b.

Изначально в [x] было a.

Как при выключении скрипта вернуть в [x] значение a?

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

При включении (секция [ENABLE]) запоминай значение, а при выключении (секция [DISABLE]) - восстанавливай, как обычно.

Но тебе нужно выбрать начальное значение таким, которого в игре точно не будет, чтобы опираться на это значение, как на флаг, и не перезаписать запомненное значение. Либо заводить две переменные, например:

if (rem_flag == 0) { rem_value = N; // где "N" - текущее значение rem_flag = 1; // установили значение флага на "1", чтобы предотвратить перезапись запомненного значения}// ...
Ссылка на комментарий
Поделиться на другие сайты

При включении (секция [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)  
Ссылка на комментарий
Поделиться на другие сайты

Вроде бы разобрался как сделать это при помощи ввода переменной.

Использовал это в третьем скрипте (последней версии) в этой теме

[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)   
Ссылка на комментарий
Поделиться на другие сайты

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

UPD:

В скрипте у тебя скобочки лишние только:

mov [eax+000000060],Konctanta // #100
Ссылка на комментарий
Поделиться на другие сайты

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

UPD:

В скрипте у тебя скобочки лишние только:

mov [eax+000000060],Konctanta // #100
Огромное спасибо! 

Переделал заодно и свой первый скрипт, теперь работает именно как я задумывал.

 

Результаты обсуждения, если кто читал см. в моей теме

 

Тему можно закрыть.

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

Огромное спасибо!

Пожалуйста) Надеюсь, что помог))

Переделал заодно и свой первый скрипт, теперь работает именно как я задумывал.

 

Результаты обсуждения, если кто читал см. в моей теме http://forum.gamehacklab.ru/topic/3010-skripty-dlia-fallout-3-ot-garik66/?p=20494

Продолжай в том же духе, и тебя вскоре переведут в группу Trainer Maker, что позволит тебе файлы заливать на форум (и пользоваться вкладкой "Файлы" (сверху)) :)
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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