Lua [ARZ] FastFlip - быстрый "Домкрат" / Не чит

actio

Новичок
Автор темы
23
21
Версия SA-MP
  1. Любая
FastFlip

Скрипт для переворота авто с помощью "Домкрата" по нажатию клавиши.

Скрипт разрешен к использованию администрацией проекта, т.к не содержит запрещенных функций.
Данный скрипт полезен для тех, кто не хочет искать в инвентаре "Домкрат" или вручную прописывать команду для использования.

Обновление от 18 апреля 2024:
• В связи с обновлением самой Аризоны, основная функция скрипта не могла стабильно работать. Поправил во второй версии FastFlip v.2

Демонстрация:


Функции:
• Переворачивает ваш автомобиль при помощи Домкрата по нажатию клавиши "/" (слеш)
• Чинит ваш автомобиль при помощи "Набора для починки " по нажатию клавиш "zz"
• Оповещает вас при входе в игру о необходимости закупиться "Домкратами".
• При посадке в авто, напоминает вам о своей функции.

Установка:
• Поместите файл в папку "moonloader"

Активация:
• Автоматическая

Особенности:
• Скрипт не будет использовать Домкрат если вы не находитесь в авто на водительском месте.
• Скрипт не будет использовать Домкрат при открытом чате, либо при активном курсоре. Это сделано для того, чтобы не было ложных срабатываний во время написания сообщений в чат либо использовании каких-либо систем.

Зависимости:
• moonloader
• vkeys
 

Вложения

  • FastFlip v2.lua
    1.5 KB · Просмотры: 22
Последнее редактирование:

MLycoris

Режим чтения
Проверенный
1,807
1,853
куча сообщ в чат не всех возбуждает, так что можно проще
Lua:
function main()
    while true do wait(0)
        if isCharInAnyCar(1) and getDriverOfCar(storeCarCharIsInNoSave(1)) == 1 and not sampIsCursorActive() and testCheat('/') then
            sampSendChat('/domkrat')
        end
    end
end
 

actio

Новичок
Автор темы
23
21
куча сообщ в чат не всех возбуждает
C52l1fJ.jpg


Аризонщика и не такое будет возбуждать
 

MLycoris

Режим чтения
Проверенный
1,807
1,853
Как я могу проверить, не перевернулся ли мой автомобиль, и отправить команду на автоматическое управление им?
переворот можешь проверять двумя способами, либо
getCarRoll(storeCarCharIsInNoSave(1)), который возвращает угол наклона по горизонтали (бока машины)
либо getCarPitch(storeCarCharIsInNoSave(1)) , который по вертикали возвращает, то есть наклон морды

Lua:
if isCharInAnyCar(1) then
    local car = storeCarCharIsInNoSave(1)
    local roll = getCarRoll(car)
    if roll > 160 or roll < (-160) then
       
    end
end

можешь пример использования тут глянуть
 

Tab

Участник
38
9
как фиксануть?
 

Вложения

  • 1709585848435.png
    1709585848435.png
    4 KB · Просмотры: 30
  • moonloader.log
    8.7 KB · Просмотры: 4

actio

Новичок
Автор темы
23
21
как фиксануть?

Обновление от 18 апреля 2024:
• В связи с обновлением самой Аризоны, основная функция скрипта не могла стабильно работать. Поправил во второй версии FastFlip v.2
• Чинит ваш автомобиль при помощи "Набора для починки " по нажатию клавиш "zz"

Скачивай :)
 

Vintik

Мечтатель
Проверенный
1,467
916
переворот можешь проверять двумя способами, либо
getCarRoll(storeCarCharIsInNoSave(1)), который возвращает угол наклона по горизонтали (бока машины)
либо getCarPitch(storeCarCharIsInNoSave(1)) , который по вертикали возвращает, то есть наклон морды

Lua:
if isCharInAnyCar(1) then
    local car = storeCarCharIsInNoSave(1)
    local roll = getCarRoll(car)
    if roll > 160 or roll < (-160) then
      
    end
end

можешь пример использования тут глянуть
Либо, что будет работать при любом горизонтальном положении у перевёрнутой машины, воспользоваться кватернионом.
Идея в том, чтобы вектор, который изначально «торчит» вверх повернуть на кватернион машины. Если его новая Z координата меньше нуля, значит он смотрит куда-то вниз. Еще можно посчитать даже точно угол к полному перевёрнутому состоянию (например, если значение равно -1/√2 (это синус 45 градусов со знаком -), то угол 45 градусов).
Функции:
function quaternion_multiply(a, b, c, d,    w, x, y, z)
    return a * w - b * x - c * y - d * z,    a * x + b * w + c * z - d * y,    a * y - b * z + c * w + d * x,    a * z + b * y - c * x + d * w
end

function rotate_vector_on_quaternion(x, y, z,    a, b, c, d)
    local a1, b1, c1, d1 = quaternion_multiply(a, b, c, d,    0, x, y, z)
    local a2, b2, c2, d2 = quaternion_multiply(a1, b1, c1, d1,    a, -b, -c, -d)
    return b2, c2, d2
end
Использование:
local x, y, z, w = getVehicleQuaternion(car)
local vx, vy, vz = rotate_vector_on_quaternion(0, 0, 1,    w, x, y, z)

if vz < 0 then
    -- машина перевёрнута
end
 
  • Ха-ха
  • Нравится
Реакции: sizeoftrickster и MLycoris