LUA скрипт [NL] Callbacks library

Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
В нле нельзя регать больше одной функции на один колбек, что иногда бывает неудобным. Вот типо либка, чтобы облегчить жизнь

Код:
local callbacks = {
    debug = true,
}

callbacks.setup = function( callback )
    assert( type( callback ) == "string", "Invalid type of callback" )

    callbacks[ callback ] = { }

    callbacks[ callback ].list = { }

    callbacks[ callback ].func = function( ... )
        for i, j in pairs( callbacks[ callback ].list ) do
            j( ... )
        end
    end

    Cheat.RegisterCallback( callback, callbacks[ callback ].func )

    if callbacks.debug then
        print( "Created callback: " .. callback  )
    end
end

callbacks.push = function( callback, func )
    assert( func, "Undefined callbacked variable" )
    assert( type( func ) == "function", "Invalid type of callbacked variable" )

    if not callbacks[ callback ] then
        callbacks.setup( callback )
    end

    table.insert( callbacks[ callback ].list, func )

    if callbacks.debug then
        print( "Pushed function to " .. callback )
    end
end

callbacks.pop = function( callback, func )
    assert( callbacks[ callback ], "Undefined callback" )
    assert( type( func ) == "function", "Invalid type of variable to pop" )

    for k, v in pairs( callbacks[ callback ].list ) do
        if v == func then
            table.remove( callbacks[ callback ].list, k )

            if callbacks.debug then
                print( "Poped function from " .. callback )
            end

            return
        end
    end

    if callbacks.debug then
        print( "Didnt find function to pop" )
    end
end
 
Эксперт
Статус
Оффлайн
Регистрация
24 Апр 2018
Сообщения
1,490
Реакции[?]
929
Поинты[?]
67K
в чём прикол объявлять тейбл и заполнять через точку, когда есть self?
 
Эксперт
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
1,740
Реакции[?]
559
Поинты[?]
2K
А в чем проблема сделать
Код:
local smthfunc = function(...)
    print(...)
end
local smthfunc2 = function(...)
    print(...)
end
Cheat.RegisterCallback("draw", function()
    smthfunc("albedo")
    smthfunc2("ura")
end)
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
А в чем проблема сделать
Код:
local smthfunc = function(...)
    print(...)
end
local smthfunc2 = function(...)
    print(...)
end
Cheat.RegisterCallback("draw", function()
    smthfunc("albedo")
    smthfunc2("ura")
end)
Иногда не совсем удобно. Можно подряд писать функции, не листая каждый раз вниз-вверх
 
Сверху Снизу