Перейти к содержанию
Авторизация  
НечтоХрустящее

Добавление магазинов в ассортимент торговцам

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

 

Платформа: Anomaly

Аддон: MagsRedux.2024.04.16

Вопрос следующий:

в аддоне MagsRedux для генерации ассортимента магазинов у торговцев есть скрипт 

magazines_loot.script

который содержит следующую функцию

Спойлер

-- function to resupply mags based on what weapons are in stock
-- formula is: 3 mags for 1st weapon, and 1 extra for each subsequent
function stock_mags(npc)
    local id = npc:id()
    if trader_autoinject.get_trader_type(npc) ~= trader_autoinject.SUPPLIER then return end
    print_dbg("Restocking mags for %s", npc:name())
    local to_spawn = {}
    -- collect num. of mags to spawn
    local function itr_inv(temp, item)
        local sec = item:section()
        if not IsAmmo(item) and IsWeapon(item) and is_supported_weapon(item) then
            local default_mag = weapon_default_magazine(item)
            local default_capacity = SYS_GetParam(2, default_mag, "max_mag_size")
            local default_load_delay = SYS_GetParam(2, default_mag, "load_delay")
            local mags = get_mags_for_basetype(get_weapon_base_type(item))
            if mags then
                print_dbg("Mags [%s]", sec)
                for _, mag in pairs(mags) do
                    local load_delay = SYS_GetParam(2, mag, "load_delay")
                    local capacity = SYS_GetParam(2, mag, "max_mag_size")
    
                    if mag ~= default_mag and (capacity > default_capacity or load_delay < default_load_delay) then
                        print_dbg("Mag %s is improved", mag)
                        to_spawn[mag] = to_spawn[mag] and to_spawn[mag] + math_random(0, 1) or math_random(1, 2)
                    else
                        print_dbg("Mag %s is normal", mag)
                        to_spawn[mag] = to_spawn[mag] and to_spawn[mag] + 1 or 3
                    end
                end
            else
                print_dbg("Weapon has broken basetype [%s]", sec)
            end
        end
    end
    npc:iterate_inventory(itr_inv, npc)
    
    -- spawn them empty
    trader_autoinject.spawn_items(npc, to_spawn, true)
end

 

а возможно ли сделать ее подобие, но для того оружия, что есть в слотах или инвентаре игрока? В дополнение к тем, что генерируются функцией выше

  • Лайк 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

НечтоХрустящее Ммм, на вскидку вместо:

npc:iterate_inventory(itr_inv, npc) 
    

Писать:

db.actor:iterate_inventory(itr_inv, nil)  
    

 

  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, denis2000 сказал:

НечтоХрустящее Ммм, на вскидку вместо:


npc:iterate_inventory(itr_inv, npc) 
    

Писать:


db.actor:iterate_inventory(itr_inv, nil)  
    

 

Благодарю, попробую! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу