• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

LUA скрипт Rendering BeamSpline

  • Автор темы Автор темы ru_paste
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
25 Апр 2019
Сообщения
162
Реакции
79
ЧЕ это такое?
fsddfsdf.png

Эт вот такой луч. Прям как траектория в ските да да...
LUA:
Expand Collapse Copy
ffi.cdef([[
    typedef struct {
        float x;
        float y;
        float z;
    } s_vector;

    typedef struct {
        int type;
        void* start_entity;
        int start_attachment;
        void* end_entity;
        int end_attachment;
        s_vector start;
        s_vector ehd;
        int model_index;
        const char* model_name;
        int halo_index;
        const char* halo_name;
        float halo_scale;
        float duration;
        float width;
        float end_width;
        float fade_length;
        float amplitude;
        float brightness;
        float speed;
        int start_frame;
        float frame_rate;
        float red;
        float green;
        float blue;
        bool renderable;
        int segments;
        int flags;
        s_vector center;
        float start_radius;
        float end_radius;
    } s_beam_info;

    typedef struct {
        char pad_0[12];
        s_vector mins;
        s_vector maxs;
        char pad_1[8];
        void* next;
        int type;
        int flags;
        int attachment_count;
        s_vector attachment[10];
        s_vector delta;
        char pad_2[8];
        float die_at;
        float width;
        float end_width;
        float fade_length;
        float amplitude;
        float duration;
        float red;
        float green;
        float blue;
        float brightness;
        float speed;
        float frame_rate;
        float frame;
        int segments;
        unsigned int entity[10];
        int made_by_ru_paste[10];
        int model_index;
        int halo_index;
        float halo_scale;
        int frame_count;
        float rg_noise[129];
        void* trail;
        float start_radius;
        float end_radius;
        char pad_3[5];
    } s_beam;
]])

local spline = {} do
    spline.beam_class = ffi.cast("void*[B]", ffi.cast("void[/B]", ffi.cast("char*", utils.opcode_scan("client.dll", "B9 ? ? ? ? A1 ? ? ? ? FF 10 A1 ? ? ? ? B9")) + 1)[0])--....
    spline.beam_create = ffi.cast("s_beam*(__thiscall*)(void*, s_beam_info*)", spline.beam_class[0][12])

    spline.create = function(points, material, width, rgba)
        if #points < 2 then
            return
        end

        local beam_info = ffi.new("s_beam_info")

        beam_info.type = 6
        beam_info.start = {points[1]:unpack()}
        beam_info.ehd = {points[2]:unpack()}
        beam_info.model_index = -1
        beam_info.model_name = material
        beam_info.halo_scale = 0
        beam_info.duration = 0
        beam_info.width = width
        beam_info.end_width = width
        beam_info.fade_length = 0
        beam_info.amplitude = 0
        beam_info.brightness = rgba.a
        beam_info.speed = 0
        beam_info.start_frame = 0
        beam_info.frame_rate = 0
        beam_info.red = rgba.r
        beam_info.green = rgba.g
        beam_info.blue = rgba.b
        beam_info.renderable = true
        beam_info.segments = -1
        beam_info.flags = 16643

        local spline = spline.beam_create(spline.beam_class, beam_info)

        if spline ~= nil then
            spline.attachment_count = math.min(#points, 10)

            for i = 2, spline.attachment_count do
                spline.attachment[i - 1] = {points[i]:unpack()}
            end

            return spline
        end
    end

    spline.remove = function(spline)
        if spline ~= nil then
            spline.flags = 0
            spline.die_at = globals.curtime
        end
    end
end

Использование:
spline.create(points: table, material: string, width: number, rgba: color): s_beam*
spline.remove(spline: s_beam*)
Ограничения:
spline.create: #points >= 2 and points[1]:dist(points[2]) >= 0.1
Точек может быть не более 10, остальные будут проигнорированы

После создания он будет отображаться до тех пор, пока не будет удален.
Указатель который возвращает spline.create нужно сохранять. Проебал указатель, ждёшь смены карты.

Материал нужно прекешить.
 
Назад
Сверху Снизу