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

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

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

 

Платформа: 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)  
    

 

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

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


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

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

Что получилось в итоге?

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


Ссылка на сообщение
Поделиться на другие сайты
 
29 минут назад, Cyrax сказал:

Что получилось в итоге?

Я еще на работе :u1F62B:


Дополнено 8 минуты спустя

сделал мод с копией скрипта, где добавил новую функцию после той, что уже была в виде

zW8Zqyc.png

включил мод в МО2 в самом конце списка, заспавнил в инвентарь и руки всякого разного, новых магазинов не появилось 

@denis2000 @Cyrax

  • Печаль 1

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


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

НечтоХрустящее чет сайт болеет. Не первый раз мне не приходит уведомление, что мне ответили.

Кем работаешь, НечтоХрустящее?

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, Cyrax сказал:

НечтоХрустящее чет сайт болеет. Не первый раз мне не приходит уведомление, что мне ответили.

Кем работаешь, НечтоХрустящее?

бумажки перекладываю :bc310bc3-6cb8-4279-860d-c4fdb7162848:

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
15 минут назад, НечтоХрустящее сказал:

бумажки перекладываю :bc310bc3-6cb8-4279-860d-c4fdb7162848:

 

Инкассатор и бухгалтер, крупье и юрист и так далее - все они перекладывают бумажки. Хоть малость бы конкретики.

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, Cyrax сказал:

Инкассатор и бухгалтер, крупье и юрист и так далее - все они перекладывают бумажки. Хоть малость бы конкретики.

а для чего эта информация? 

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


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, НечтоХрустящее сказал:

а для чего эта информация? 

Мне просто инетресно. Спросил рандомного чела, которого я вообще не знаю. Жаль, что ты не ответишь. Мне интересно, правда.

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


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

НечтоХрустящее Где вызывали новую функцию?


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

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


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

НечтоХрустящее Где вызывали новую функцию?

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

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


Ссылка на сообщение
Поделиться на другие сайты
   
40 минут назад, Cyrax сказал:

НечтоХрустящее не игнорь!

ладно

  • Пост еще тот... 1

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


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

НечтоХрустящее Чтобы код внутри функции выполнился эту функцию нужно вызвать! Просто добавить функцию - недостаточно. Можно сделать например так, чтобы первая функция вызывала вторую:

function stock_mags(npc)

...

    trader_autoinject.spawn_items(npc, to_spawn, true)

	stock_mags_actor_weapon(npc)	

end

function stock_mags_actor_weapon(npc)
...
end

 


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

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


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

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

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

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

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

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

Войти

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

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

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

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