yet another repair semi-mod, короче, просто заготовка для ремонта а-ля fallout ;) |
Здравствуйте, гость ( Авторизация | Регистрация )
yet another repair semi-mod, короче, просто заготовка для ремонта а-ля fallout ;) |
15.07.2009, 04:06
Сообщение
#1
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
в свете последних бурных обсуждений "про ремнот" решил выложить свое видение подхода к ремонту оружия и брони. принцип взят из Fallout 3, а конкретно - ремонт поврежденного итема возможен при помощи разбирания на запчасти другого аналогичного итема.
простенький фейс: в левом списке перечислено все оружие и броня с сортировкой по состоянию. при выборе в правом списке фильтруются только аналогичные оружие или броня, которые можно использовать для ремонта. кнопка над списком отображает текущее состояние и возможное улучшение при разбирании выделенного объекта. если выполняются некоторые условия, то кнопка разблокируется и при нажатии производится улучшение состояния, выброс из инвентаря "отработанного" объекта, и процесс можно продолжить. кнопка "выход", как ни странно, всего лишь закрывает этот диалог. немного про условия. применена простейшая фильтрация по классу объекта, соответсвенно получается, что гадюку можно чинить укороченным калашом и наоборот. любую броню можно чинить любой броней, так как класс у нее везде одинаковый. также нельзя починить объект с состоянием >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 тогда диалог появится при выпивании энергетика. "energy_drink" можно заменить на "kolbasa", вобщем что у вас в инвентаре есть съедобного, на то и вешайте. рисовать иконки "молотка и отвертки" я доверю более умеющим людям ;) у кого нестандартный инвентарь - имейте ввиду, кнопку выход я не рисовал, а просто обозначил зону реакции. поэтому для выхода пощелкайте в правый нижний угол. ну и вот собсно сам модуль: [delated] Сообщение отредактировал Орион - 15.11.2009, 20:22 |
 
|
|
|
|
15.07.2009, 07:37
Сообщение
#2
|
|
Почти Игрок Репутация: 11 Группа: Участник Сообщений: 18 Регистрация: 13.07.2009 |
Не стоило "изобретать велосипед" в данном конкретном случае.
Около 3-х недель назад, а может и более, камрад Shredder на основе моего односписочного ремонтного комплекта изготовил двухсписочный, приблизительный аналог которого представлен здесь. Только уже полностью готовый к употреблению. |
 
|
|
15.07.2009, 09:27
Сообщение
#3
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
http://www.gameru.net/forum/index.php?show...st&p=795093
с тех пор прошло ровно 2 недели, но никто, включая вас (хотя вы в том топике были), не предоставил ссылочку или хотя бы просто название на что-то похожее. |
 
|
|
15.07.2009, 09:30
Сообщение
#4
|
|
Опытный Геймер Репутация: 147 Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 |
Не стоило "изобретать велосипед" в данном конкретном случае. Около 3-х недель назад, а может и более, камрад Shredder на основе моего односписочного ремонтного комплекта изготовил двухсписочный, приблизительный аналог которого представлен здесь. Только уже полностью готовый к употреблению. "велосипед" HikeR`а вижу, а ваш велосипед и мопед Shredder`а не вижу |
 
|
|
15.07.2009, 09:59
Сообщение
#5
|
|
Продвинутый геймер Репутация: 138 Группа: Участник Сообщений: 411 Награды: 3 Регистрация: 02.03.2009 |
Простите, что влезаю... Но подтверждаю, что данный "велосипед", про который говорит Dusty79, существует, отлично работает и за две недели тестового использования (мной) не вызывает никаких нареканий.
|
 
|
|
15.07.2009, 10:02
Сообщение
#6
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
Аналогично Колмогору - Dusty79, выложите сначало то, о чём говорите.
HikeR, Весьма и весьма любопытно. Рад, что всё-таки появился мод и не в составе какой-то солянки, благодарю за "девайс" P.S. Раз уж вы написали, что проверка идёт по классу предмета - получается несколько нелогично, что любой броник можно починить любой другой бронёй. Можно ли это как-то ограничить, например, сузив проверку до проверки наследуемого объекта (чтобы уники чинить и похожние между собой броники)? Я в скриптах не силён, потому не очень представляю, что именно надо дописать, не хотелось бы неделю возиться с парой строчек кода Сообщение отредактировал Орион - 15.07.2009, 10:03 -------------------- нарушение правил п. 7.2
|
 
|
|
15.07.2009, 10:24
Сообщение
#7
|
|
Продвинутый геймер Репутация: 138 Группа: Участник Сообщений: 411 Награды: 3 Регистрация: 02.03.2009 |
Орион, можно. Именно так это сейчас и сделано. То есть, для примера: Грозу (простую либо прокачанную) можно починить только при наличии другой Грозы; ЛР300 - только при наличии другого ЛР300 и т.д....
|
 
|
|
15.07.2009, 10:30
Сообщение
#8
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
Можно ли это как-то ограничить, например, сузив проверку до проверки наследуемого объекта (чтобы уники чинить и похожние между собой броники)? проверка по классу универсальна тем, что любой новый нестандартный объект (новое оружие, новая броня и тд) пройдет проверку. а так как в игре более не к чему прицепится, то остается только вручную прописать все зависимости, типа "если а=куртка новичка и б=бандитская куртка, тогда чиним", и так для каждой пары. то есть любой нестандартный предмет надо добавлять ручками. с оружием проще, проверка по классам в основном проходит правильно, за исключением гадюк и калашей (ну и невозможности ремонта обычного калаша укороченным). то есть можно добавить несколько исключений и все пройдет. вот для обхода этого и юзается ценовой коэффициент, скажем обычная "куртка новичка" добавит к состояния "комбинезона сталкера" максимум 100%*0,1*(1000/60000) ~= 0,0017%, то есть практически нифига не добавит ;) то есть непрактично получается. вот по поводу "проверки наследуемости" я несколько в затруднении. это в конфигах видно, что один объект содержит ссылку на родительский объект и все его параметры, а вот как это дело определить в самой игре... можно анализировать название объекта или секции, типа "wpn_ak74_m1" понятно что нечто более интересное, чем просто "wpn_ak74", но единой логики ни у разрабов, ни у мододелов не выработалось, сходу и ен определишь, что "outfit_svoboda_m1" есть модификация "svoboda_light_outfit" ;) вобщем приходит в голову только вариант с матрицей, в которой расписаны все возможные варианты. если кто даст актуальные clsid-ы оружия и броников, то составлю быстро (в lua_help, как выяснилось, clsid-ы нифига неправильные). Именно так это сейчас и сделано. если вы про сабж, то сейчас ту же LR300 можно чинить и гадюками, а "пустынный орел" - обычными ПМ-ами ;) |
 
|
|
15.07.2009, 10:35
Сообщение
#9
|
|
Продвинутый геймер Репутация: 138 Группа: Участник Сообщений: 411 Награды: 3 Регистрация: 02.03.2009 |
Hiker, не про сабж - про то, о чём говорил Дасти.
Или ссылку на "сабж" или прекращаем флудить. Орион Сообщение отредактировал Орион - 15.07.2009, 10:39
Причина редактирования: предупреждение, за оффтоп будете отстранены от темы
|
 
|
|
15.07.2009, 10:38
Сообщение
#10
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
ну тогда поделитесь алгоритмом проверки, только если это не заранее составленная матрица.
|
 
|
|
15.07.2009, 11:49
Сообщение
#11
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
по поводу брони. попробуем метод тупой, но надежный.
под картинкой - ссылка с доступом на редактирование таблички в googledocs. слева - что чиним, сверху - чем чиним. единичка в ячейке - ремонт возможен, иначе невозможен. пока я заполнил банально, броню можно чинить такой же броней, уникальные броники чинятся родителями (и наоборот). предлагайте пары предметов, либо сразу вносите дополнения в эту таблицу. а я потом готовую матрицу скопирую во внешний конфиг. p.s. "здесь был вася" просьба не писать ;) |
 
|
|
15.07.2009, 12:00
Сообщение
#12
|
|
Почти Игрок Репутация: 11 Группа: Участник Сообщений: 18 Регистрация: 13.07.2009 |
Что касается демонстрации - мой "велосипед" можно было увидеть в действии на скринах в соседней теме..
К сожалению, сейчас не имею физической возможности предоставить сам код. Что касается алгоритма проверки и сопоставления предметов для ремонта - я делал привязку к каталогу, в котором лежит модель предмета, что гораздо быстрее и проще матриц или списков. Да, это требует сортировки файлов моделей по папкам, но это уже было сделано до того, как я разрабатывал этот девайс под определенный мод. Я просто воспользовался ситуацией. Впрочем, и от этого я планирую отказаться, сделав ремкомплект легче в переносе под другие моды. Никаких таблиц не планирую - я еще не сошел с ума. |
 
|
|
15.07.2009, 12:11
Сообщение
#13
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
HikeR, Внёс пару правок. В частности, в ремонт Сталкеровского комбеза комбезами Монолита, Долга и Свободы. Ремонт комбеза Туриста - улучшенным комбезом Сталкера.
-------------------- нарушение правил п. 7.2
|
 
|
|
15.07.2009, 12:23
Сообщение
#14
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
я делал привязку к каталогу, в котором лежит модель предмета не совсем понял. оружие - название каталога с моделью (в \meshes\weapons ) обычный калаш: ak74 укороченный калаш: ak-74u лежат в разных каталогах, то есть у вас тоже разные калаши друг другом не чинятся? или ПМ обычный, и ПМ с глушителем - тоже несовместимы? |
 
|
|
15.07.2009, 12:31
Сообщение
#15
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
HikeR, Кстати, идея с таблицей очень хороша тем, что легко можно будет добавлять свою новую броню, не редактиуя скрипты, а просто расширяя таблицу конфиг-файла
-------------------- нарушение правил п. 7.2
|
 
|
|
15.07.2009, 12:35
Сообщение
#16
|
|
Почти Игрок Репутация: 11 Группа: Участник Сообщений: 18 Регистрация: 13.07.2009 |
Я же сказал, что сортировка моделей по папкам уже была проведена. Сходное оружие лежит в одной папке.
Что касается совместимости того же ак-74 и ак-74у... При всей схожести механизма детали конструкции одного не подходят к другому. Факт. Так что они действительно несовместимы для ремонта. В условиях игры, конечно. Да и оружие это разных весовых категорий. Зато любую модификацию ак-47 можно починить, разобрав любой другой ак-47. Лично я был против подобного, но тестеры настояли на этом, дабы не портить юзабельность ремкомплекта. Краткое описание девайса я передавал Вам в личном сообщении. |
 
|
|
15.07.2009, 12:52
Сообщение
#17
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
не редактиуя скрипты, а просто расширяя таблицу конфиг-файла именно. и не надо проводить сортировку моделей по каталогам, если человек захочет добавить в игру свой собственный ствол ;) ну а что касается калашей... в реальности АКМСУ действительно имеет несколько иную конструкцию, чем АКМС (более короткие поршень и газовая трубка), однако в игре используются аналоги АКС-74У и АК-74, которые имеют практически полностью идентичные механизмы. поэтому взаимопочинка этих автоматов вполне реальна, дойду до оружия - поставлю еденички в соответсвующих ячейках ;) |
 
|
|
15.07.2009, 15:04
Сообщение
#18
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
итак, добавлен файлик misc\repair_dependences.ltx, который содержит:
- названия секций всей брони, которая встречается в оригинальной игре - матрицу, по которой проходит проверка возможности ремонта - внешний коэффициент ремонта для брони коэф. ремонта показывает, сколько %% максимум добавится к ремонтируемой броне от состояния разбираемой брони. матрица проста для понимания, но неудобна для реактирования ;) слева - что чиним, сверху - чем чиним, на пересечении - возможность (при желании можно добавить и вероятность :) для добавления новой брони достаточно в секции [all_outfits] дописать к параметру outfits свою броню, обязательно в конце. затем, в секции [outfit_dependences] опять же в конце создать параметр с совпадающим именем и строкой разрешения/запрещения ремонта, и не забыть добавить к остальным строкам одну цифру. я делал в табличном редакторе, там ошибится значительно сложнее. самое главное, чтобы количество значений в каждой строке совпадало с общим количеством разной брони перечисленном в секции [all_outfits]. в скрипте происходит проверка на равенство, в противном случае происходит принудительный вылет с записью в лог, так сказать, во-избежании. с оружием поступлю аналогично, но немного попозже, матрицы рисовать весьма утомительно ;) p.s. вспоминая разбирательства с деревом апгрейдов в чистом небе для ответа на вопрос "как разблокировать все апгрейды для дробовика" работа с матрицей начинает казаться простой и увлекательной ;) p.p.s. кто-нить может нарисовать красивую иконку для этого "набора отверток", во избежание, так сказать, претензий? Сообщение отредактировал Орион - 15.11.2009, 20:23 |
 
|
|
15.07.2009, 15:45
Сообщение
#19
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
Немного оптимизировал таблицу для простоты обращения с ней. Подписи - сокращения от названий комбезов. Порядок в текущем файле такой же, как и список слева по вертикале. Т.е. если что-то не понятно - смотрим на список слева.
P.S. Файл переименовать в .ltx - влом было архивировать. [delated] Сообщение отредактировал Орион - 15.11.2009, 20:24 -------------------- нарушение правил п. 7.2
|
 
|
|
15.07.2009, 21:25
Сообщение
#20
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
Цитата для быстрого ознакомления с возможностями модуля можно в файле bind_stalker.script найти функцию function actor_binder:on_item_drop (obj) и в конце дописать что-то вроде: кстати, при таком способе вероятны вылеты после ремонта, сохранения и последующей загруки с ошибкой вида: log Код Клиент: Синхронизация... * phase time: 11 ms * phase cmem: 322966 K * [win32]: free[3224172 K], reserved[97808 K], committed[872260 K] * [ D3D ]: textures[63067 K] * [x-ray]: crt heap[322407 K], process heap[8414 K], game lua[21473 K], engine lua[245 K], render[1037 K] * [x-ray]: economy: strings[5037 K], smem[28210 K] stack trace: [error][ 87] : Параметр задан неверно. какого-то фига происходит сброс всего инвентаря именно перед загрузкой, что активирует попытку вывода диалога в момент когда выводить диалог просто некуда ;) так что для ознакомления такое вполне проходит, а для нормального использования - не очень. Сообщение отредактировал HikeR - 15.07.2009, 21:27 |
 
|
|
Текстовая версия | Сейчас: 19.05.2024, 18:07 |