Вопрос Как гетать листэбл

Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2021
Сообщения
53
Реакции[?]
8
Поинты[?]
0
базовый вариант:
local unpack_listable = function (elem)
    local result = { };
    local lst = elem:get_list();
    
    for i, res in ipairs(elem:get()) do
        result[
            lst[res]
        ] = true;
    end
    
    return result;
end

local example_function = function ()
    local result = unpack_listable(listable_item);

    if result['Doubletap Indicator'] then -- etc
    end
end
оптимизированный (хз) вариант:
local table_map = function (t, f)
    local res = { };

    for k, v in pairs(t) do
        local new_k, new_v = f(k, v);

        res[new_k] = new_v;
    end

    return res;
end

local create_listable_handler = function (listable_item)
    local listable_item_status = { };

    listable_item:set_callback(function (this)
        local element_list = this:get_list();
        local element_value = this:get();
        
        local active = table_map(element_value, function (k, v)
            return v, true;
        end);

        for i, res in ipairs(element_list) do
            listable_item_status[
                res
            ] = active[i];
        end
    end, true) -- true, чтобы вызвать при запуске скрипта

    return listable_item_status;
end

-- example
local indicators_status = create_listable_handler(indicators_listable);

offset_y:depend(function ()
    return indicators_status['Doubletap'];
end);

local function on_render(...)
    if indicators_status['Dormant'] then
        render.text(...);
    end
end
 
she/her
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2022
Сообщения
294
Реакции[?]
118
Поинты[?]
27K
базовый вариант:
local unpack_listable = function (elem)
    local result = { };
    local lst = elem:get_list();
   
    for i, res in ipairs(elem:get()) do
        result[
            lst[res]
        ] = true;
    end
   
    return result;
end

local example_function = function ()
    local result = unpack_listable(listable_item);

    if result['Doubletap Indicator'] then -- etc
    end
end
оптимизированный (хз) вариант:
local table_map = function (t, f)
    local res = { };

    for k, v in pairs(t) do
        local new_k, new_v = f(k, v);

        res[new_k] = new_v;
    end

    return res;
end

local create_listable_handler = function (listable_item)
    local listable_item_status = { };

    listable_item:set_callback(function (this)
        local element_list = this:get_list();
        local element_value = this:get();
       
        local active = table_map(element_value, function (k, v)
            return v, true;
        end);

        for i, res in ipairs(element_list) do
            listable_item_status[
                res
            ] = active[i];
        end
    end, true) -- true, чтобы вызвать при запуске скрипта

    return listable_item_status;
end

-- example
local indicators_status = create_listable_handler(indicators_listable);

offset_y:depend(function ()
    return indicators_status['Doubletap'];
end);

local function on_render(...)
    if indicators_status['Dormant'] then
        render.text(...);
    end
end
бро че это за дичь не понимаю зачем так код писать ваще
 
Nike.lua
Олдфаг
Статус
Оффлайн
Регистрация
13 Окт 2020
Сообщения
2,746
Реакции[?]
1,465
Поинты[?]
2K
code_language.lua:
local function get_listable( listable, option )
    local a = listable:get( )
    for i = 1, #a do
        local list = listable:get_list( )
        local index = nil
        for j = 1, #list do
            if option == list[ i ] then
                index = j
            end
        end
        
        if a[ i ] == index then
            return true
        else
            return false
        end
    end
end
Апи не оптимизировано, но вот код
 
she/her
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2022
Сообщения
294
Реакции[?]
118
Поинты[?]
27K
code_language.lua:
local function get_listable( listable, option )
    local a = listable:get( )
    for i = 1, #a do
        local list = listable:get_list( )
        local index = nil
        for j = 1, #list do
            if option == list[ i ] then
                index = j
            end
        end
       
        if a[ i ] == index then
            return true
        else
            return false
        end
    end
end
Апи не оптимизировано, но вот код
схренали оно не оптимизирован
 
she/her
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2022
Сообщения
294
Реакции[?]
118
Поинты[?]
27K
ПРОШУ НЕ НАДО Я ЩА ВСЕ ЛИНКИ УДАЛЮ
Здравствуйте, я по поводу вашего неподопающего поведения на форуме скриптов и читов для онлайн игр yougame.biz.
Я крайне недоволен вашими сообщениями, можете, пожалуйста, прекратить их писать.
 
Эксперт
Статус
Оффлайн
Регистрация
24 Апр 2018
Сообщения
1,488
Реакции[?]
928
Поинты[?]
67K
ПРОШУ НЕ НАДО Я ЩА ВСЕ ЛИНКИ УДАЛЮ
Здравствуйте, я по поводу вашего неподопающего поведения на форуме скриптов и читов для онлайн игр yougame.biz.
Я крайне недоволен вашими сообщениями, можете, пожалуйста, прекратить их писать.
 
Начинающий
Статус
Оффлайн
Регистрация
30 Ноя 2020
Сообщения
80
Реакции[?]
18
Поинты[?]
2K
code_language.lua:
local function get_listable( listable, option )
    local a = listable:get( )
    for i = 1, #a do
        local list = listable:get_list( )
        local index = nil
        for j = 1, #list do
            if option == list[ i ] then
                index = j
            end
        end
       
        if a[ i ] == index then
            return true
        else
            return false
        end
    end
end
Апи не оптимизировано, но вот код
так чтоли
Код:
get_listable(menu_c.triggers, "On Player Death")
 
Сверху Снизу