SA:MP Lua Arizona Убираем первое лицо от лаунчера Аризоны (FirstPersonHandler_class_destroyer_t.lua)

Tema05

Известный
Автор темы
1,473
439
Версия SA-MP
  1. 0.3.7-R3
Так как я просто обожаю все щикарные иновации, что нам предлагает лаунчер Аризоны, представляю вашему внимаю простенький стрипт, который полностью отрубает первое лицо, добавленное в последнем обновлении.

P.S. Возможно вызывает какие-то побочки, лично я не заметил их. UPD: На практике активного использования долгое время побочек не было замечено.
P.P.S. По идеи при обновлении лаунчера скрипт не должен сломаться, но такая вероятность есть, если что обновлю.
P.P.P.S. Знаю, что ты, читатель, сумеешь сделать это в 30 символов и без костылей, сделал как сумел, мне главное результат.

Вот код:
Lua:
-- Паблик функция, не помню откуда взял
local ffi = require 'ffi'
ffi.cdef [[ ... ]]
function findSignatureInModule(signature, moduleName) ... end

local address, error = findSignatureInModule(
    'FF 61 04',
    'core.asi'
)
if address then
    writeMemory(tonumber(address), 1, 0xC3, true)
else
    print(error)
end
 

Вложения

  • FirstPersonHandler_class_destroyer_t.lua
    2.4 KB · Просмотры: 125
Последнее редактирование:

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,804
2,676
-- Паблик функция, не помню откуда взял
 
  • Нравится
Реакции: Tema05

Орк

Известный
312
205
А есть простой адрес на проверку состояния первого лица? Хочу для cam_set сделать проверку

@chapo ? @ARMOR ?
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,804
2,676
А есть простой адрес на проверку состояния первого лица?
Открой в иде кор аризоны, в нем alt + b и введи FF 61 04, если сигнатура правильная, то первый (а в идале единственный) будет нужный адрес
 

Орк

Известный
312
205
Открой в иде кор аризоны, в нем alt + b и введи FF 61 04, если сигнатура правильная, то первый (а в идале единственный) будет нужный адрес
а вариант для тупых, которые использую cheat engine или сразу адрес?

Lua:
-- core.asi+1765F6
-- core.asi+1765EB
-- core.asi+1765EA
-- core.asi+176498
-- core.asi+1765E8

    writeMemory(getModuleHandle('core.asi') + 0x1765E8, 1, 1 --[[ 0 ]], true)
какой-то из этих адресов.
Последний на переключение вида от первого и стандарт

А вообще, вид от первого лица у них неиграбельный, для красоты норм, но постоянно с ним не поиграть.
 
Последнее редактирование:

Tema05

Известный
Автор темы
1,473
439
Открой в иде кор аризоны, в нем alt + b и введи FF 61 04, если сигнатура правильная, то первый (а в идале единственный) будет нужный адрес
Нет, эта сигнатура ведёт на место, где идёт "jmp" на обработчик изменения режима камеры, который перехватывает это событие и переключает на свой дополнительный режим 1 лица. Инструкция заменяется на 0xC3 "retn", чтобы завершить функцию. Возвращяемого значения там нет. Эта функция не имеет прямого отношения к состоянию камеры.

а вариант для тупых, которые использую cheat engine или сразу адрес?

Lua:
-- core.asi+1765F6
-- core.asi+1765EB
-- core.asi+1765EA
-- core.asi+176498
-- core.asi+1765E8

    writeMemory(getModuleHandle('core.asi') + 0x1765E8, 1, 1 --[[ 0 ]], true)
какой-то из этих адресов.
Последний на переключение вида от первого и стандарт

А вообще, вид от первого лица у них неиграбельный, для красоты норм, но постоянно с ним не поиграть.
Походу из всех присутствующих я единственный кто реально открыл этот кор в иде) @whyega52
Потому что функцию, возвращающую состояние камеры 1 лица они любезно закинули в экспорты
Lua:
-- Выполнить 1 раз где-то в начале
ffi.cdef [[
    bool IsFirstPerson();
]]
local core = ffi.load('core.asi')

-- Получаем состояние 1 лица
print(core.IsFirstPerson())
И в отличии от твоего решения оно не сломается при обновлении кора, когда этот адрес памяти сместится
 
Последнее редактирование:
  • Нравится
Реакции: Орк и whyega52