SA:MP Lua Свет от фар как в Vice City

БеzликиЙ

Автор темы
Автор темы
Проверенный
974
569
Версия SA-MP
  1. Любая
Нормально получать оффсеты не судьба, идём костылями.

Свет от задних фар прямиком из Vice City. Реализован через рендер, на костылях, поэтому отображается поверх многих интерфейсов и может выглядеть странно на некоторых модельках. Огни заднего хода в комплекте. Совместимо с любыми скриптами, которые мигают задними фарами (будь то стробоскопы или поворотники). Работает только на машине, в которой сидит локальный игрок. Не проебите папку resources.

02.40.10.325.jpg



З.Ы. Если кто-то всё-таки скинет мне способ нормально получать оффсеты задних фар, буду очень благодарен и доделаю скрипт.
 

Вложения

  • vc-taillights.zip
    14.5 KB · Просмотры: 5

Musaigen

shitposter
Проверенный
1,660
1,477
Быстрое решение на коленке. Должно подходить. Работает на все автомобили. hook это https://github.com/themusaigen/hook
P.S: Через 0x858CE0 в проверке is_rendering_vehicle_coronas можно увеличить свет. Либо заменить адреса переменных в 0x70CEF8 (множитель ширины спрайта) и 0x70CF0A (множитель высоты спрайта)
Lua:
local ffi = require("ffi")
local hook = require("hook")

-- -------------------------------------------------------------------------- --

local axis_stretch = ffi.cast("uint8_t*", 0x70CEEF)
local is_rendering_vehicle_coronas = false

-- -------------------------------------------------------------------------- --

function main()
  hook.new("float*(__cdecl*)(float*, float*, float*)", 0x6FAF92, function(hook, ...)
    is_rendering_vehicle_coronas = true
    return hook:call(...)
  end, true)

  hook.new("bool(__cdecl*)(float*, float*, float*, float*, bool, bool)", 0x6FB24E, function(hook, ...)
    if is_rendering_vehicle_coronas then
      axis_stretch[0] = 2
    end

    local result = hook:call(...)

    if is_rendering_vehicle_coronas then
      axis_stretch[0] = 0

      is_rendering_vehicle_coronas = false
    end

    return result
  end, true)

  wait(-1)
end
 
Последнее редактирование:

БеzликиЙ

Автор темы
Автор темы
Проверенный
974
569
Быстрое решение на коленке. Должно подходить. Работает на все автомобили. hook это https://github.com/themusaigen/hook
P.S: Через 0x858CE0 в проверке is_rendering_vehicle_coronas можно увеличить свет. Либо заменить адреса переменных в 0x70CEF8 (множитель ширины спрайта) и 0x70CF0A (множитель высоты спрайта)
Lua:
local ffi = require("ffi")
local hook = require("hook")

-- -------------------------------------------------------------------------- --

local axis_stretch = ffi.cast("uint8_t*", 0x70CEEF)
local is_rendering_vehicle_coronas = false

-- -------------------------------------------------------------------------- --

function main()
  hook.new("float*(__cdecl*)(float*, float*, float*)", 0x6FAF92, function(hook, ...)
    is_rendering_vehicle_coronas = true
    return hook:call(...)
  end, true)

  hook.new("bool(__cdecl*)(float*, float*, float*, float*, bool, bool)", 0x6FB24E, function(hook, ...)
    if is_rendering_vehicle_coronas then
      axis_stretch[0] = 2
    end

    local result = hook:call(...)

    if is_rendering_vehicle_coronas then
      axis_stretch[0] = 0

      is_rendering_vehicle_coronas = false
    end

    return result
  end, true)

  wait(-1)
end
иногда срабатывает на свет от https://www.blast.hk/threads/231607/, но в целом эффект неплохой. правда, на вайс нихрена не похож, но всё равно спасибо
 

Musaigen

shitposter
Проверенный
1,660
1,477
иногда срабатывает на свет от https://www.blast.hk/threads/231607/
Срабатывать будет на любую корону, прикрепленную к машине.
но в целом эффект неплохой. правда, на вайс нихрена не похож, но всё равно спасибо
Можно спокойно сделать, подменяя множители ширины и высоты, о чём я и написал.
 

MrCreepTon

Неизвестный
Всефорумный модератор
2,266
5,141
А если тупо IDB вайс сити чекнуть? Скорее всего можн чекнуть как они там фары рисуют. И спиздить позаимствовать
 

БеzликиЙ

Автор темы
Автор темы
Проверенный
974
569
Срабатывать будет на любую корону, прикрепленную к машине.
у меня иногда триггерится на столбы, а 3D свет от фар - это вообще корона от "магазина оружия", что бы это ни значило, т.е. не прикреплённая к машине корона