простенький фейс:
в левом списке перечислено все оружие и броня с сортировкой по состоянию. при выборе в правом списке фильтруются только аналогичные оружие или броня, которые можно использовать для ремонта. кнопка над списком отображает текущее состояние и возможное улучшение при разбирании выделенного объекта. если выполняются некоторые условия, то кнопка разблокируется и при нажатии производится улучшение состояния, выброс из инвентаря "отработанного" объекта, и процесс можно продолжить. кнопка "выход", как ни странно, всего лишь закрывает этот диалог.
немного про условия. применена простейшая фильтрация по классу объекта, соответсвенно получается, что гадюку можно чинить укороченным калашом и наоборот. любую броню можно чинить любой броней, так как класс у нее везде одинаковый. также нельзя починить объект с состоянием >98% (и так нормальный) и < 10% (хлам восстановлению не подлежит), однако можно использовать эти объекты для разбирания. также применяется ценовой коэффициент, то есть для починки экзы нужно очень много "курток новичка" ;) да, и починябельный объект починяется не больше чем на 10% от состояния разбираемого объекта. и еще, оружие разбирается и выкидывается без учета наличия патронов или прицелов, поэтому что жалко - предварительно снимайте.
по тексту скрипта легко найти где производится проверка и расширить ее, добавив свои условия, также как и автоматическое снятие апгрейдов. меня в первую очередь интересовало сохранение уникального оружия и броников, а не глобальное восстановление всех встреченных стволов с целью последующей продажи, но такой вариант тоже возможен ;)
активация диалога производится из любого места игры вызовом инициализирующей ф-ии, например так:
Код
level.start_stop_menu(ui_repair.repair_dialog(get_hud()),true)
можно привязать вызов к чему угодно, диалог выводится поверх существующих диалогов. если вызов происходит из самой игры (например сопоставлен вхождению в какую-то зону), то худ полностью очищается и остается только окно диалога.
однако текущий вариант рассчитан (просто из-за расположения всех элементов) на вывод поверх окна инвентаря, и срабатывает при использовании какого-либо предмета. то есть быстрого ознакомления с возможностями модуля можно в файле bind_stalker.script найти функцию function actor_binder:on_item_drop (obj) и в конце дописать что-то вроде:
Код
if obj:section() == "energy_drink"
level.start_stop_menu(ui_repair.repair_dialog(get_hud()),true)
end
level.start_stop_menu(ui_repair.repair_dialog(get_hud()),true)
end
тогда диалог появится при выпивании энергетика. "energy_drink" можно заменить на "kolbasa", вобщем что у вас в инвентаре есть съедобного, на то и вешайте. рисовать иконки "молотка и отвертки" я доверю более умеющим людям ;)
у кого нестандартный инвентарь - имейте ввиду, кнопку выход я не рисовал, а просто обозначил зону реакции. поэтому для выхода пощелкайте в правый нижний угол.
ну и вот собсно сам модуль:
[delated]