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

Как в LUA Скрипте прописать регистр MOV


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

Ты думаешь я не пробовал, я не понимаю эту систему, почему то в некоторых играх можно указатель записать в AA скрипт а в некоторых нет.

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

Ты думаешь я не пробовал

Baracuda, если до следующих выходных никто не поможет, попробую чем-нибудь помочь. Игру я ещё не сносил, нужно будет сверить версии игры и установленные DLC.

А пока попрощаюсь.

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

 

ошибка 14 then expected near в этой строке что то не так if pValue = 999 then

 

Ты кнопку на форме создай, вот и выдает ошибку что кнопки нет на форме. :-D

Попробуй так

function CEButton1Click(sender)GameName = 'witcher3.exe'if(getProcessIDFromProcessName(GameName) == nil) thenendaddress = getAddress(stringlist_getString(result,0))debug_setBreakpoint(address)debug_removeBreakpoint(address)pValue = '[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28'writeInteger(pValue,999)endfunction debugger_onBreakpoint()end 
function CEButton1Click(sender)GameName = 'witcher3.exe'if(getProcessIDFromProcessName(GameName) == nil) thenendaddress = getAddress(stringlist_getString(result,0))debug_setBreakpoint(address)debug_removeBreakpoint(address)pValue = '[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28'writeInteger(pValue,999)endfunction debugger_onBreakpoint()end
Изменено пользователем Dison
Ссылка на комментарий
Поделиться на другие сайты

Dison я пробовал, не работает.

 

если вот эти строчки убрать, то всё прекрасно работает, но не замораживается а просто устанавливается на установленное число 999 и всё.

 

address = getAddress(stringlist_getString(result,0))

debug_setBreakpoint(address)

debug_removeBreakpoint(address)

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

Если бы для меня настояла нужда в таком скрипте, то я возможно поступил бы следующим образом.

 

1 Поиск нужного статического указателя и добавление его в таблицу СЕ

2 Переименование указателя в той же таблице СЕ (например называю его topspeed)

3 Создание формы СЕ

4 Переименование параметра Name  самой формы СЕ на например Race4k

5 Создание кнопки CEToggleBox (не CEButton)

6 Переименование параметра кнопки Caption со стандартнаго CEToggleBox1 на например Top Speed Frezzer Mod - Now OFF

7 Осталось написать скрипт Lua

 

al = getAddressList()topspeed = al.getMemoryRecordByDescription("topspeed")function checkKeys(timer)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenif topspeed.Value~="??" thentopspeed.Value="100"endendendt=createTimer(nil)timer_setInterval(t, 100)timer_onTimer(t, checkKeys)timer_setEnabled(t, true)function CEToggleBox1Change(sender)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now OFF" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now ON"elseif Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now OFF"endendend
Изменено пользователем NullAlex
Любой код обязательно должен быть обернут в соответствующий тег
Ссылка на комментарий
Поделиться на другие сайты

Garik66 если надумаешь работать с указателем, '[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28' то игра The Witcher 3 Wild Hunt версия 1.11 если у тебя версия .1.12 то я сделаю на версию 1.12


AntonVitalivich

можно пожалуйста по подробнее об этом

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

Garik66 если надумаешь работать с указателем, '[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28' то игра The Witcher 3 Wild Hunt версия 1.11 если у тебя версия .1.12 то я сделаю на версию 1.12

AntonVitalivich

можно пожалуйста по подробнее об этом

Да. Первое что нужно сделать это добавить указатель в таблице CE. Потом создать форму трейнера, на неё установить кнопку CEToggleBox. Потом добавить скрипт Lua в Lua engine. Потом прикрепить созданную кнопку к скрипту Lua, делается  это в настройках кнопки, OnChange параметр, справа от параметра небольшая кнопка. Потом все, активируется скрипт Lua в Lua Engine, форма трейнера "компилируется" Restore and Show, после этого на форме кликается один раз кнопка, её название меняется на "Top Speed Frezzer Mod - Now ON", и тогда таймер Lua определив что кнопка стала называтся "Top Speed Frezzer Mod - Now ON", начнет записывать в значение указателя заданное число 100, а если кликнуть на кнопку второй раз, название кнопки поменяется на "Top Speed Frezzer Mod - Now OFF" и таймер перестанет записывать число 100.

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

The Witcher 3 Wild Hunt версия 1.11

Baracuda, я прошёл игру, закончив её на версии 1.08 (по-моему).

 

В начале попробуй способ AntonVitalievich, заодно дополнительно научишься новому.

Если не получиться, пиши в личку, я пропатчу игру до твоей версии и попробуем сделать всё в ассемблере.  

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

да Garik66 сейчас проверю способ AntonVitalivich и после отпишусь.


ошибку выдаёт

Error:[string "function CEToggleBox1Change(sender)
..."]:19: attempt to index a nil value (global 'Race4k')

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

ошибку выдаёт Error:[string "function CEToggleBox1Change(sender) ..."]:19: attempt to index a nil value (global 'Race4k')

Baracuda, скорее всего ты не сделал пункт 4 инструкции:

 

4 Переименование параметра Name  самой формы СЕ на например Race4k

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

я всё так и сделал как написал мене AntonVitalivich.


function CEToggleBox1Change(sender)al = getAddressList()topspeed = al.getMemoryRecordByDescription("topspeed")function checkKeys(timer)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenif topspeed.Value~='[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28' thentopspeed.Value="100"endendendendt=createTimer(nil)timer_setInterval(t, 100)timer_onTimer(t, checkKeys)timer_setEnabled(t, true)function CEToggleBox1Change(sender)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now OFF" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now ON"elseif Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now OFF"endendend 
Изменено пользователем Baracuda
Ссылка на комментарий
Поделиться на другие сайты

if topspeed.Value~="??" then

Два вопроса "??" - это то значение адреса, которое обычно можно видеть в memory viwe когда еще не подключен какой либо процесс/игра, тоесть там еще ничего нет. Луа определив это, не запустит скрипт. В случае если не сделать такую запись, Луа начнет выдавать ошибку о том что адрес не рабочий.

1 Эту строку изменять не надо на

if topspeed.Value~='[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28' then

нужно оставить как есть

f topspeed.Value~="??" then

2 Скрипты которые я выложил не нуждаются в корректировке

Например у Вас в начале скрипта появилась запись

function CEToggleBox1Change(sender) и в итоге дублируется два раза

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

Baracuda, не меняй скрипты AntonVitalievich, а просто, занеси в таблицу адрес [[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28 (если ещё не занёс) и в названии адреса напиши topspeed

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

вот занёс выдаёт ошибку Error:[string "
..."]:26: attempt to index a nil value (global 'Race4k')

 

function CEToggleBox1Change(sender)al = getAddressList()topspeed = al.getMemoryRecordByDescription("topspeed")function checkKeys(timer)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenif topspeed.Value~="??" thentopspeed.Value = '[[[[[[[["witcher3.exe"+028F3F60]+0]+18]+20]+40]+40]+1c0]+10]+28'topspeed.Value="100"endendendendt=createTimer(nil)timer_setInterval(t, 100)timer_onTimer(t, checkKeys)timer_setEnabled(t, true)function CEToggleBox1Change(sender)if Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now OFF" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now ON"elseif Race4k.CEToggleBox1.Caption=="Top Speed Frezzer Mod - Now ON" thenRace4k.CEToggleBox1.Caption="Top Speed Frezzer Mod - Now OFF"endendend
Изменено пользователем Baracuda
Ссылка на комментарий
Поделиться на другие сайты

Garik66 пожалуйста ты можешь на примере показать, не чё не пойму просто в нести.

короче я всё перепробовал, указатель у меня в таблице, я его назвал topspeed толку ноль.

я так понял, записывать указатель в Lua не надо, а просто оставить его в таблице, и назвать topspeed, если я правильно понял.


AntonVitalivich вы можете на примере своего Lua скрипта показать, куда в вписывать указатель. 


вылазить одно и та же ошибка

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

AntonVitalivich вы можете на примере своего Lua скрипта показать, куда в вписывать указатель. 

Все что нужно Вам, это в таблицу СЕ добавть свой указатель, назвав его topspeed

Потом создать форму и кнопку (переименовать в них то что нужно)

Потом скопировать выложенный мною Luaскрипт ничего в нем не меняя, в Lua Engine и активировать

Потом скомпилировать форму.

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

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


я сижу ломаю голову, не проще ли показать на живом скрипте.

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

Garik66 пожалуйста ты можешь на примере показать, не чё не пойму просто в нести.

Baracuda, я же говорил, что не изучал LUA - руки так и не дошли.

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

Просто, когда простая задача усложняется, вот так всегда и получается.

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

ЗЫ: и на примере показать не могу, я уже давно не пользуюсь указателями и у меня сейчас нет под рукой игры с найденными указателями. 

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

я сам изначально написал Lua скрипт с таймером включения, потом я попросил вас что бы вы мене помогли в писать функцию выключения, на одну и туже кнопку, теперь мене создали такой головняк, что я сам запутался, вот бы в школе так учили, догадывайся сам у нас бы в строне одни двоешьники были, ЧЕЛОВЕКУ ВСЕГДА ПОКАЗЫВАЮТ НА ПРАКТИКЕ, ЧТО БЫ ОН КОНКРЕТНО ПОНЯЛ ЧТО К ЧЕМУ И НЕ ОШИБАЛСЯ, ПОВТОРЯЮСЬ НА ПРИМЕРЕ А НЕ НА ДОГАДЛИВОСТИ.

ЕСЛИ ЧЕЛОВЕК НЕ ПОНИМАЕТ, ЧТО ДЕЛАЮТ, ЕМУ ПОКАЗЫВАЮТ НА ЖИВОМ ПРИМЕРЕ ГДЕ ОН ОШИБСЯ, ЭТО ВЕДЬ ПРАВИЛЬНО, И ХОЛЯВЫ ЗДЕСЬ НЕТ НЕ КАКОЙ.  

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

ЧЕЛОВЕКУ ВСЕГДА ПОКАЗЫВАЮТ НА ПРАКТИКЕ,

Обычно я так и делаю. (снимаю видео, чтобы было более наглядно.) Головняка лично я тебе не устраивал. 

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

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

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

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