Модуль Купец
Ресурсы имеют очень важное значение в игре. Постройки, войска, исследования - все это требует огромное количество ресурсов
Один город вполне способен обеспечить себя ресурсами, но пока он будет копить ресурсы на постройку здания - пройдет уйма времени, а в других городах в это время ресурсы могут быть бесполезны, все уже построено, и они просто лежат на складе.
Пересылать ресурсы из одних городов в другие - как раз и предназначен модуль Купец!
Как это работает
Первым делом нужно классифицировать города на поставщиков и потребителей, сделать
это можно либо в настройках бота (вкладка "Купец"), либо во вкладке "Информация" для города:
- P - Поставщик (Provider), этот город будет поставлять ресурсы
- C - Получатель (Consumer), этот город будет получать ресурсы
- D - Отключено (Disabled), модуль не будет работать с этим городом
Одновременно с классификацией городов нужно задать для потребителей количество ресурсов, которые они будут получать
Рассмотрим конкретный пример, есть два города:
- Город1 - поставщик, доступно 10000 дерева, 10000 камня и 10000 серебра, свободный рынок 5000 единиц
- Город2 - потребитель, в городе вы строите Поджигатели
Цена одного поджигателя составляет: 1170 дерева, 270 камня и 720 серебра. Очевидно, что если слать в этот город все ресурсы в одинаковой пропорции, то получится перекос, город не нуждается в большем количестве камня, и этот ресурс будет просто лежать на складе мертвым грузом
По этой причине, бот оперирует не количеством, а пропроцией отсылаемых ресурсов. В данном случае пропорция составляет: 1170 дерева, 270 камня и 720 серебра. Задаем ее в настройках Город2:
Дальше бот расчитывает количество пересылаемых ресурсов, которое соответствует заданной пропорции
потребителя. Доступный объем пересылки составляет 5000 едениц, в этот объем можно
поместить:
[5000 (доступный рынок)] / [(1170+270+720) (пропорция потребителя)]
= 2.31 поджигателя
Бот переводит это значение в абсолютное, таким образом размер посылки составит:
- Дерево: 2.31*1170=2702
- Камень: 2.31*270=623
- Серебро: 2.31*720=1663
- Итого: 2702+623+1663=4988 ресурсов
Следующим этапом бот создает приказ на пересылку этих ресурсов из Город1 в Город2 и помещает в очередь. Обращаем внимание, минимальное количество ресурсов, которое бот может отправить, составляе 1000 едениц, если посылка содержит меньшее значение, бот ее не оптравит.
Переполнение склада
Когда в роли потребителя выступает собственный город, то известно сколько в нем на текущий момент находится ресурсов и сколько ресурсов уже движется в город. Имея эти данные можно определить, сколько ресурсов еще влезет на склад потребителя. Эта настройка предназначена именно для таких ситуаций, если потребитель не может принять больше ресурсов, чем вмещает склад, то и слать их не надо
И снова пример, данные те же, но известно, что в потребителе:
- Вместимость склада: 10000 единиц
- Дерево: 8000
- Камень: 4000
- Серебро: 9500
При этом в потребитель уже плывет:
- Дерево: 1000
- Камень: 1000
Зная эти данные не трудно посчитать, сколько в потребителя еще может влезть ресурсов:
- Дерево: 1000 = 10000 (вместимость склада) - 8000 (уже на складе) - 1000 (ресурсы в пути)
- Камень: 5000 = 10000 (вместимость склада) - 4000 (уже на складе) - 1000 (ресурсы в пути)
- Серебро: 500 = 10000 (вместимость склада) - 9500 (уже на складе) - 0 (ресурсы в пути)
В предыдущем примере мы посчитали, что поставщик создаст посылку, содержащую:
- Дерево: 2702
- Камень: 623
- Серебро: 1663
Как видно, размер посылки превысит доступное место на складе поставщика, и бот произведет коррекцию посылки, выбирает минимальное значение из размера посылки и доступого места на складе потребителя:
- Дерево: 1000
- Камень: 623
- Серебро: 500
Ограничение времени пересылки
Зачастую время пересылки между поставщиком и потребителем может быть достаточно большим, и вы не хотите блокировать рынок так долго. Для этого существует настройка "Ограничить время", доступная во вкладке "Информация" для города поставщика.
С ее помощью вы можете сообщить боту, чтобы поставщик не выбирал потребителей, отправка в которых займет больше времени, чем вы указали
Интервал отсылки ресурсов
Этой настройкой вы указываете боту, как часто формировать приказы на отправку ресурсов из поставщиков в потребителей
Один раз в указанный период бот будет выбирать для каждого поставщика одного потребителя, и пытаться отправить ему ресурсы