Авторизация  
Garik66

Как записывать в трейнере разные значения в адрес с помощью таймера.

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

Сам запрос.

Скрипты:

For  yh1kn v.1 :

Скрытый текст

[ENABLE]
{$LUA}
flag = 0
UDF1.CETimer1:setEnabled(true)
memrec = getAddressList().getMemoryRecordByID("3")
function CETimer1Timer(sender)
  if flag == 1 then
    memrec.Value = "999"
    flag = 0
  else
    memrec.Value = "888"
    flag = 1
  end
end
{$ASM}

[DISABLE]
{$LUA}
UDF1.CETimer1:setEnabled(false)
{$ASM}

 

For  yh1kn v.2:

Скрытый текст

[ENABLE]
{$LUA}
flag = 0
UDF1.CETimer1:setEnabled(true)
function CETimer1Timer(sender)
  if flag == 1 then
    writeInteger('["Tutorial-i386.exe"+002345D0]+480',"777")
    flag = 0
  else
    writeInteger('["Tutorial-i386.exe"+002345D0]+480',"666")
    flag = 1
  end
end
{$ASM}
 
[DISABLE]
{$LUA}
UDF1.CETimer1:setEnabled(false)
{$ASM}

 

For  yh1kn v.3:

Скрытый текст

[ENABLE]
{$LUA}
flag = 0
UDF1.CETimer1:setEnabled(true)
memrec=getAddressList().getMemoryRecordByID("5")
memrec1=getAddressList().getMemoryRecordByID("6")

function CETimer1Timer(sender)
  if flag == 1 then
    memoryrecord_unfreeze(memrec)
    --sleep(5)
    memoryrecord_freeze(memrec1)
    flag = 0
  else
    memoryrecord_unfreeze(memrec1)
    --sleep(5)
    memoryrecord_freeze(memrec)
    flag = 1
  end
end
{$ASM}
 
[DISABLE]
{$LUA}
UDF1.CETimer1:setEnabled(false)
{$ASM}

 

For  yh1kn v.4 (в видео не рассматривал - дописал потом):

Скрытый текст

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2017-05-16
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
{$LUA}
UDF1.show()
UDF1.CETimer1:setEnabled(true)
memrec = getAddressList().getMemoryRecordByID("8")
function CETimer1Timer(sender)
  if memrec.Value == "0" then
    sleep "300"
    memrec.Value = "1"
  else
    sleep "300"
    memrec.Value = "0"
  end
end

{$ASM}
aobscanmodule(INJECT1,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(flag)
registersymbol(flag)
registersymbol(INJECT1)

newmem:
  cmp [flag],1
  jne @f
  mov [ebx+00000480],#333
  jmp code

@@:
  mov [ebx+00000480],#222

code:
  cmp [ebx+00000480],000003E8
  jmp return

flag:
  dd 0

INJECT1:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
{$LUA}
UDF1.CETimer1:setEnabled(false)
{$ASM}
INJECT1:
  db 81 BB 80 04 00 00 E8 03 00 00

unregistersymbol(flag)
unregistersymbol(INJECT1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+23AC3

"Tutorial-i386.exe"+23AB1: E8 0A 9D FE FF                 -  call Tutorial-i386.exe+D7C0
"Tutorial-i386.exe"+23AB6: 5E                             -  pop esi
"Tutorial-i386.exe"+23AB7: 5B                             -  pop ebx
"Tutorial-i386.exe"+23AB8: C9                             -  leave 
"Tutorial-i386.exe"+23AB9: C3                             -  ret 
"Tutorial-i386.exe"+23ABA: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABC: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABE: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23AC0: 53                             -  push ebx
"Tutorial-i386.exe"+23AC1: 89 C3                          -  mov ebx,eax
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+23AC3: 81 BB 80 04 00 00 E8 03 00 00  -  cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
"Tutorial-i386.exe"+23ACD: 75 2C                          -  jne Tutorial-i386.exe+23AFB
"Tutorial-i386.exe"+23ACF: 8B 83 68 04 00 00              -  mov eax,[ebx+00000468]
"Tutorial-i386.exe"+23AD5: B2 01                          -  mov dl,01
"Tutorial-i386.exe"+23AD7: 8B 8B 68 04 00 00              -  mov ecx,[ebx+00000468]
"Tutorial-i386.exe"+23ADD: 8B 09                          -  mov ecx,[ecx]
"Tutorial-i386.exe"+23ADF: FF 91 20 02 00 00              -  call dword ptr [ecx+00000220]
"Tutorial-i386.exe"+23AE5: 8B 83 78 04 00 00              -  mov eax,[ebx+00000478]
"Tutorial-i386.exe"+23AEB: B2 00                          -  mov dl,00
"Tutorial-i386.exe"+23AED: 8B 8B 78 04 00 00              -  mov ecx,[ebx+00000478]
"Tutorial-i386.exe"+23AF3: 8B 09                          -  mov ecx,[ecx]
}

 

 

Видео: 

 

For_yh1kn.CT

  • Плюс 2

Поделиться сообщением


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

Garik66,сколько отличного видео было выложено тобой,скольким ты уже помог благодаря своим видео,что тут сказать МОЛОДЕЦ.

  • Плюс 1

Поделиться сообщением


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

ЗЫ:

Посмотрел работу всех 4-х скриптов, если хочешь точнее, то лучше писать непосредственно в адрес (1 и 2 скрипты). Иначе накладывается таймер самой читающей инструкции (скрипты 3 и 4).

  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, yh1kn сказал:

Спасибо за подробное разъяснение но вот беда что когда скрипт активирую ничего не происходит. Имя таймера одинаковое в LUA таймера самого ничего нету. В чем может быть косяк ?

Скрипт то выложи! Иначе как понять?

Изменено пользователем what228

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, yh1kn сказал:

  1

@what228 уже опередил:

 

1 минуту назад, what228 сказал:

Скрипты то выложи

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, yh1kn сказал:
Скрытый текст

 



[ENABLE]
{$LUA}
flag = 0
UDF1.CETimer1:setEnabled(true)
memrec = getAddressList().getMemoryRecordByID("44")
function CETimer1Timer(sender)
  if flag == 1 then
    memrec.Value = "4"
    flag = 0
  else
    memrec.Value = "9"
    flag = 1
  end
end
{$ASM}


[DISABLE]
{$LUA}
UDF1.CETimer1:setEnabled(false)
{$ASM}

 

 

1. Тег спойлер + код
2. ID адреса правильный?

Изменено пользователем what228

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, yh1kn сказал:

memrec = getAddressList().getMemoryRecordByID("44")

Что у тебя в таблице под ID 44 - скрипт или адрес?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минуту назад, yh1kn сказал:

когда отркыт графический редактор ничего не происходит

Что за граф.редактор? Это ты наверное про Form Designer?

11 минуту назад, yh1kn сказал:

в первом варианте значения меняются с задержкой вне зависимости от значения тика таймера.

Ты уверен?

Перезапусти игру и СЕ и проверь ещё раз.

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация