Торговля. Продажа предметов через собственный магазин.

    Функционал реализуется через два списка-очереди, отдельно для обычных (первых десяти) магазинных и биржевых слотов (открывающихся при наличии торгового аккаунта). Расположены они в отдельном окне, вызвать которое можно из меню "Предметы" или "Окна" в рабочем окне программы, а так же ряда других мест.

    Добавление предмета в очередь осуществляется перетаскиванием из большинства других списков предметов (групп, результатов поиска по названию, статистики и проч).

    Каждая строка, кроме наименования предмета, имеет два дополнительных параметра: количество и счетчик.
="Количество" - текущее число штук, которое будет выставлено в магазин за одно действие. Не может быть больше максимального стека данного предмета. Количество, меньшее максимального стека, автоматически "отрезается" перед операцией. 
="Счетчик" - определяет число отдельных срабатываний (переносов предмета в магазин). Есть разница между положительным и нулевым значением счетчика. Положительные получают "-1" при каждой успешной попытке, а при переходе от "1" к "0" удаляются из очереди. Изначально имеющие "0" находятся в очереди неограниченно и однократно проверяются на возможность размещения при каждом общем анализе очереди.
    Очередь просматривается всегда сверху вниз. Это означает, что верхние строки имеют приоритет на обработку по сравнению с нижними. Если позиция не может быть обработана (такого предмета нет в наличии на персонаже, такой предмет уже выставлен и действует запрет на дубликаты и проч.), то она пропускается, и начинают рассматриваться последующие. Строки в списке можно перемещать друг относительно друга, выстраивая нужный вам приоритет по выставлению на продажу.
    Как уже было указано можно регулировать вопрос дубликатов, то есть не размещать более одного наименования, либо наоборот игнорировать исходный расклад по предметам и работать только по списку очереди. За это отвечает опция "Разрешить размещать дубликаты" над списком. По умолчанию дубликаты запрещены (галочка снята).
    Причем разрешение на дубликаты разрешает и тратить весь счетчик позиции сразу. Такой расклад как на скрине справа на первом же проходе забросит в магазин три рунических зеркала (затем удалит строку из списка), и только после этого перейдет к нижним элементам. Это не относится к позициям с нулевым счетчиком, такие срабатывают только один раз за один вызов функции анализа.
    Удаление элементов списка производится через перетаскивание их на надпись "Удалить (?)", находящуюся справа над очередью. Двойной клик принудительно очищает весь список целиком. Каждый список имеет свою "область" удаления.
    Если после полного прохода по очереди в соответствующей части магазина все равно остались пустые слоты, то по их числу будет произведено такое же число запусков специализированного lua-скрипта (если он не пуст). В нем как минимум можно организовать выдачу сообщения, что очередь не справляется с заполнением всех слотов. Либо же скрипт-командами заполнять место другими предметами (из своего рода резервного списка продажи). В каждом запуске стоит исходить из того, что нужно заполнить одну ячейку. Клик на ссылку "Скрипт пустых слотов" открывает редактор для изменения содержимого соотв. сценария действий. В конце редактор можно просто закрыть, сохранение скрипта производится автоматически в процессе.
   
Очередь и положение опции на дубликаты можно сохранять в отдельные файлы, а так же загружать обратно из них. Для этого используйте соотв. ссылки над списком.
    Анализ очереди запускается при начале выполнения режима (нажатии "Старт" в рабочем окне), если в соотв. части магазина игрока есть свободные слоты. А так же после каждого факта покупки уже в процессе работы. Но в последнем случае обработка очереди может начаться не сразу. Если персонаж в бою, то перемещать предметы в сундуке нельзя (ровно как и по направлению сундук->магазин). Так что проверка на необходимость обработки очереди осуществляется в так называемые "безопасные" периоды, в частности когда не фиксируется активный бой.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.