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

Tema05

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

P.S. Возможно вызывает какие-то побочки, лично я не заметил их.
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 · Просмотры: 112
Последнее редактирование:

whyega52

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

Орк

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

@chapo ? @ARMOR ?
 

whyega52

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

Орк

Известный
268
170
Открой в иде кор аризоны, в нем 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,474
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