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

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

Всем прив хотел спросить про скрипт сравнения как он пишется.Я хочу сравнить две структуры нашёл отличия 1 и 0.Как писать фильтр.

cmp ....

а дальше сама инструкция

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

Всем прив хотел спросить про скрипт сравнения как он пишется.Я хочу сравнить две структуры нашёл отличия 1 и 0.Как писать фильтр.

cmp ....

а дальше сама инструкция

Тут всё просто. Хорошо если сразу нашёлся правильный параметр.

Например, по адресу eax+1C у игрока всегда 1, а у противников любое другое число, тогда скрипт для уменьшения здоровья только у врагов выглядит так:


cmp [eax+1C],1
je exit
вычитание здоровья
exit:
...

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

Тут всё просто. Хорошо если сразу нашёлся правильный параметр.

Например, по адресу eax+1C у игрока всегда 1, а у противников любое другое число, тогда скрипт для уменьшения здоровья только у врагов выглядит так:


cmp [eax+1C],1
je exit
вычитание здоровья
exit:
...

Если сказать простым языком мне надо чтобы инструкция шла так

1.если EDF+47 РАВНО 50 ТО

2.ВЫПОЛНЯЕМ ОБЫЧНУЮ ИНСТРУКЦИЮ ТИПА

MOV DSD+54

MOV DFT+78

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА

MOV GGR+76

MOV FER+84

3.ВЫХОД ИЗ ИНСТРУКЦИИ

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

1.если EDF+47 РАВНО 50 ТО

2.ВЫПОЛНЯЕМ ОБЫЧНУЮ ИНСТРУКЦИЮ ТИПА

MOV DSD+54

MOV DFT+78

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА

MOV GGR+76

MOV FER+84

3.ВЫХОД ИЗ ИНСТРУКЦИИ

В общем-то да. Здесь путей несколько в зависимости от целей.

1. Если параметр (не)равен, то выход.

2. Если параметр (не)равен, то выполняем свои инструкции и выход.

3. Если параметр (не)равен, то выполняем свои инструкции и далее оригинальные, выход.

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

В общем-то да. Здесь путей несколько в зависимости от целей.

1. Если параметр (не)равен, то выход.

2. Если параметр (не)равен, то выполняем свои инструкции и выход.

3. Если параметр (не)равен, то выполняем свои инструкции и далее оригинальные, выход.

Можеш написать шаблон к 3 на основе моего выше

1.если EDF+47 РАВНО 50 ТО

2.ВЫПОЛНЯЕМ ОБЫЧНУЮ ИНСТРУКЦИЮ ТИПА

MOV DSD+54

MOV DFT+78

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА

MOV GGR+76

MOV FER+84

3.ВЫХОД ИЗ ИНСТРУКЦИИ

Тоесть надо если параметр = 50 то выполняем одну инструкцию а если не равен другую

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

Можеш написать шаблон к 3 на основе моего выше

1.если EDF+47 РАВНО 50 ТО

2.ВЫПОЛНЯЕМ ОБЫЧНУЮ ИНСТРУКЦИЮ ТИПА

MOV DSD+54

MOV DFT+78

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА

MOV GGR+76

MOV FER+84

3.ВЫХОД ИЗ ИНСТРУКЦИИ

Тоесть надо если параметр = 50 то выполняем одну инструкцию а если не равен другую

если EDF+47 РАВНО 50 ТО...

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...

вот это не понял, два противоречивых сравнения, напишу ==50/ !=50

орфография сохранена)


cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit

branch2: //если !=50
mov GGR+76
mov FER+84

exit:

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

если EDF+47 РАВНО 50 ТО...

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...

вот это не понял, два противоречивых сравнения, напишу ==50/ !=50

орфография сохранена)


cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit

branch2: //если !=50
mov GGR+76
mov FER+84

exit:

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

спасиб

пишет что нехочет компилировать jne branch2

если EDF+47 РАВНО 50 ТО...

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...

вот это не понял, два противоречивых сравнения, напишу ==50/ !=50

орфография сохранена)

пишет что нехочет компилировать jne branch2
cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit

branch2: //если !=50
mov GGR+76
mov FER+84

exit:

если EDF+47 РАВНО 50 ТО...

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...

вот это не понял, два противоречивых сравнения, напишу ==50/ !=50

орфография сохранена)


cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit

branch2: //если !=50
mov GGR+76
mov FER+84

exit:

если EDF+47 РАВНО 50 ТО...

А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...

вот это не понял, два противоречивых сравнения, напишу ==50/ !=50

орфография сохранена)


cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit

branch2: //если !=50
mov GGR+76
mov FER+84

exit:

пишет что нехочет компилировать jne branch2
Ссылка на комментарий
Поделиться на другие сайты

Я уже молчу про регистры)

Регистры? registersymbol имеешь в виду? А что там?)

В секции активации скрипта - создал, в секции отключения скрипта - уничтожил. Вот в общем-то и все различие по поводу "жизни" таких флагов. :)

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

Регистры? registersymbol имеешь в виду? А что там?)

В секции активации скрипта - создал, в секции отключения скрипта - уничтожил. Вот в общем-то и все различие по поводу "жизни" таких флагов. :)

Нет, я про EDF DSD DFT GGR FER

И про синтаксис mov

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

Нет, я про EDF DSD DFT GGR FER

И про синтаксис mov

alloc(newmem,2048)

label(branch2)

label(returnhere)

label(originalcode)

label(exit)

newmem:

originalcode:

cmp [ESI+67],(FLOAT)64

jne branch2

mov [esi+76],edx

mov edx,[ebp-54]

jmp exit

branch2:

mov [esi+68],(FLOAT)100

mov edx,[ebp-65]

exit:

jmp returnher

тут всё так?

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

alloc(newmem,2048)

label(branch2)

label(returnhere)

label(originalcode)

label(exit)

newmem:

originalcode:

cmp [ESI+67],(FLOAT)64

jne branch2

mov [esi+76],edx

mov edx,[ebp-54]

jmp exit

branch2:

mov [esi+68],(FLOAT)100

mov edx,[ebp-65]

exit:

jmp returnher

тут всё так?

Этот кусок правильный, только допиши e на конце jmp returnhere, метку originalcode и её объявление можешь убрать и если на выходе после метки exit сразу переход на returnhere можно сделать так:



[убрать объявление метки exit]
...
mov edx,[ebp-54]
jmp returnhere

branch2:
mov [esi+68],(FLOAT)100
mov edx,[ebp-65]

jmp returnhere

Надеюсь куда return'ить уже написано)

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

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

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

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