Перейти к контенту

Рекомендуемые сообщения

@Jekyll, ну... тогда, наверное, только перебором через pairs или ipairs, в зависимости от индексов таблицы.

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


Подарки

  • Ссылка на комментарий
    1 час назад, Jekyll сказал:

    local table = {1,2,3,4,5} (условно)

    math.max(table) - не работает (вылет - number expected, got table)

     

    local t = {1,2,3,4,5}
    local m = math.max(unpack(t))
     

    • Полезно 4
    Ссылка на комментарий

    @Jekyll unpack может помочь, если я не путаю: math.max(unpack(table)) Могу в имени напутать.

     

    О, да уже тут ответили.

    Изменено пользователем dsh
    • Спасибо 1
    • Нравится 1
    Ссылка на комментарий

    Как проветрить предметы в слоте?

    Скрытый текст

    local list_dev = {
        ["detector_simple"] = true,
        ["detector_advances"] = true,
        ["detector_elite"] = true,
        ["detector_svarog"] = true
    }

    function init_slot()
        if db.actor:item_in_slot(DETECTOR_SLOT) and list_dev[db.actor:item_in_slot(DETECTOR_SLOT):section()] then return true
        else return false
    end
    end

     

    Не работает

     


    Подарки

  • Ссылка на комментарий

    Лучше рюкзак постирать :tongue:

    Код с виду правильный, хотя и несколько перемудреный. Номер слота указан верно?  Значение секции детектора читается?

    • Согласен 1

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий

    Подскажите в чем проблема? Имею такую функцию:

    Скрытый текст

    function spawn_meat(victim, who)
        local meat_position = victim:position()
        local meat_direction = victim:direction()
        meat_direction = vector_rotate_y(meat_direction, math.random(-180, 180))
        meat_position.x = meat_position.x + meat_direction.x * random_float(0.5, 0.7)
        meat_position.y = meat_position.y + meat_direction.y + 1
        meat_position.z = meat_position.z + meat_direction.z * random_float(0.5, 0.7)

        local monster_meat = monster_to_meat[victim:clsid()]
        for i = 1, math.random(1,3) do
        alife():create(monster_meat, meat_position, victim:level_vertex_id(), victim:game_vertex_id())
    end
    end

     

    Спавн itema по кругу трупа мутантов. Но они спавняться в одно стопке. в чем проблема? https://disk.yandex.ru/i/-miHtOu9MKTVhA

     

    Изменено пользователем Colder

    Подарки

  • Ссылка на комментарий

    Как правильно прочитат рандомно название оружия или где то можно подсмотреть?

    Пробовал так:

    Скрытый текст

    local weapon_classes  = {
        [clsid.wpn_svu] = true,
        [clsid.wpn_svu_s] = true,
        [clsid.wpn_usp45] = true,
        [clsid.wpn_usp45_s] = true,
        [clsid.wpn_val] = true,
        [clsid.wpn_val_s] = true,
        [clsid.wpn_vintorez] = true,
        [clsid.wpn_vintorez_s] = true,
        [clsid.wpn_walther] = true,
        [clsid.wpn_walther_s] = true
    }

    function irWeapon(object, class_id)
        local id = class_id or get_clsid(object)
        return id and weapon_classes[id]
    end

    function show_news()
        if irWeapon(item) then
        local name = system_ini():r_string(item:section(), "inv_name")
        local n = name[math.random(#name)]
        local ww = gts(n)

        local news_text = "%c[ui_gray_1]".. ww
        db.actor:give_game_news(news_text, "ui\\cop\\ui_cop_iconstotal", Frect():set(415,0,83,47), 0, 5000)
    end
    end

    но ничего не приходит.


    Подарки

  • Ссылка на комментарий
    1 час назад, Colder сказал:

    ничего не приходит.

    Может так:

        function show_news(item)

     

    • Согласен 1

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий
    50 минут назад, Colder сказал:

    Не помогло. 

    Ладно... Пойдем длинным путём...

    В функции show_news переменная item откуда берётся?

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий
    2 часа назад, Colder сказал:

    Как правильно прочитат рандомно название оружия

    Вообще не понял...

    Может, стоит для начала рандомно  определить оружие?

    Здесь могла быть ваша реклама.


    Подарки

  • 5
  • 3
  • 4
  • 3
  • Ссылка на комментарий
    20 минут назад, mole venomous сказал:

    Может, стоит для начала

    Адекватно сформулировать вопрос :)

    Чтобы хотя бы было понятно, чего хочется достичь, и откуда что берется на данный момент.

    3 часа назад, Colder сказал:

    local n = name[math.random(#name)]
        local ww = gts(n)

    Я что-то не припоминаю чтобы для строк в Lua применялся оператор #. Что тут должно получиться, одна рандомная буква из названия?

    Загадочная функция gts не приведена.

    Судя по тому что оно не вылетает на #строка, подозреваю что функция show_news с заключенным в ней блоком вообще не вызывается.

    • Согласен 3

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий
    4 hours ago, Zander_driver said:

    чтобы для строк в Lua применялся оператор #

    Длина строки успешно читается… Есть какие-то особые случаи?

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий
    7 часов назад, Norman Eisenherz сказал:

    особые случаи?

    string.len

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    Оператор #, кстати, вполне успешно вернёт длину строки, но это ничему не поможет.

    Предположим, что загадочная функция gts - это game.translate_string. Предположим даже, что функция show_news действительно вызывается, но тогда непонятно, как в неё передаётся переменная item, ведь show_news объявлена за пределами on_trade, а область видимости переменной item - внутри on_trade. Скорее всего, как писали выше, передавать item в функцию таки необходимо.
    Но и это ещё не всё.

    local name = system_ini():r_string(item:section(), "inv_name") - здесь переменной name присвоится строка. Одна строка.

    #name отработает и даст длину, math.random(#name) - случайный индекс в пределах длины строки.
    Однако name[math.random(#name)] вернёт nil, поскольку получить один символ из строки посредством обращения к индексу в Lua нельзя - у символов в строках просто нет индекса. Для этого необходимо использовать функцию string.sub.

    Но даже если бы удалось получить символ, то после применения загадочной local ww = gts(n) в переменную ww попадёт ровно тот же символ без всякого перевода. Ибо вряд ли в xml с текстами найдутся записи, идентификаторами которых служат одиночные символы латинского алфавита...

    • Нравится 2
    • Согласен 1
    Ссылка на комментарий

    Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

    ×
    ×
    • Создать...