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

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


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

Сам запрос.

Скрипты:

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

ЗЫ:

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

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

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

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

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

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

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

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

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

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

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

Ты уверен?

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

 

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

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

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

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