Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
> yet another repair semi-mod, короче, просто заготовка для ремонта а-ля fallout ;)
HikeR
сообщение 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
Перейти в начало страницы
 
Dusty79
сообщение 15.07.2009, 07:37
Сообщение #2


Почти Игрок
**

Репутация:   11  
Группа: Участник
Сообщений: 18
Регистрация: 13.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Не стоило "изобретать велосипед" в данном конкретном случае.
Около 3-х недель назад, а может и более, камрад Shredder на основе моего односписочного ремонтного комплекта изготовил двухсписочный, приблизительный аналог которого представлен здесь. Только уже полностью готовый к употреблению.
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 09:27
Сообщение #3


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


http://www.gameru.net/forum/index.php?show...st&p=795093
с тех пор прошло ровно 2 недели, но никто, включая вас (хотя вы в том топике были), не предоставил ссылочку или хотя бы просто название на что-то похожее.
Перейти в начало страницы
 
Kolmogor
сообщение 15.07.2009, 09:30
Сообщение #4


Опытный Геймер
*******

Репутация:   147  
Группа: Участник
Сообщений: 182
Регистрация: 08.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Dusty79 @ 15.07.2009, 08:37) *
Не стоило "изобретать велосипед" в данном конкретном случае.
Около 3-х недель назад, а может и более, камрад Shredder на основе моего односписочного ремонтного комплекта изготовил двухсписочный, приблизительный аналог которого представлен здесь. Только уже полностью готовый к употреблению.

"велосипед" HikeR`а вижу, а ваш велосипед и мопед Shredder`а не вижу sad.gif
Перейти в начало страницы
 
marogor
сообщение 15.07.2009, 09:59
Сообщение #5


Продвинутый геймер
********

Репутация:   138  
Группа: Участник
Сообщений: 411
Награды: 3
Регистрация: 02.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Простите, что влезаю... smile.gif Но подтверждаю, что данный "велосипед", про который говорит Dusty79, существует, отлично работает и за две недели тестового использования (мной) не вызывает никаких нареканий.
Перейти в начало страницы
 
Орион
сообщение 15.07.2009, 10:02
Сообщение #6


Навий черны у ношьти
***************

Репутация:   377  
Группа: Забанен
Сообщений: 2210
Награды: 2
Регистрация: 11.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Аналогично Колмогору - Dusty79, выложите сначало то, о чём говорите.

HikeR, Весьма и весьма любопытно. Рад, что всё-таки появился мод и не в составе какой-то солянки, благодарю за "девайс" smile.gif

P.S. Раз уж вы написали, что проверка идёт по классу предмета - получается несколько нелогично, что любой броник можно починить любой другой бронёй. Можно ли это как-то ограничить, например, сузив проверку до проверки наследуемого объекта (чтобы уники чинить и похожние между собой броники)? Я в скриптах не силён, потому не очень представляю, что именно надо дописать, не хотелось бы неделю возиться с парой строчек кода smile.gif

Сообщение отредактировал Орион - 15.07.2009, 10:03


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
marogor
сообщение 15.07.2009, 10:24
Сообщение #7


Продвинутый геймер
********

Репутация:   138  
Группа: Участник
Сообщений: 411
Награды: 3
Регистрация: 02.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Орион, можно. smile.gif Именно так это сейчас и сделано. То есть, для примера: Грозу (простую либо прокачанную) можно починить только при наличии другой Грозы; ЛР300 - только при наличии другого ЛР300 и т.д....
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 10:30
Сообщение #8


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Орион @ 15.07.2009, 11:02) *
Можно ли это как-то ограничить, например, сузив проверку до проверки наследуемого объекта (чтобы уники чинить и похожние между собой броники)?

проверка по классу универсальна тем, что любой новый нестандартный объект (новое оружие, новая броня и тд) пройдет проверку.
а так как в игре более не к чему прицепится, то остается только вручную прописать все зависимости, типа "если а=куртка новичка и б=бандитская куртка, тогда чиним", и так для каждой пары. то есть любой нестандартный предмет надо добавлять ручками.
с оружием проще, проверка по классам в основном проходит правильно, за исключением гадюк и калашей (ну и невозможности ремонта обычного калаша укороченным). то есть можно добавить несколько исключений и все пройдет.

вот для обхода этого и юзается ценовой коэффициент, скажем обычная "куртка новичка" добавит к состояния "комбинезона сталкера" максимум 100%*0,1*(1000/60000) ~= 0,0017%, то есть практически нифига не добавит ;)
то есть непрактично получается.

вот по поводу "проверки наследуемости" я несколько в затруднении. это в конфигах видно, что один объект содержит ссылку на родительский объект и все его параметры, а вот как это дело определить в самой игре... можно анализировать название объекта или секции, типа "wpn_ak74_m1" понятно что нечто более интересное, чем просто "wpn_ak74", но единой логики ни у разрабов, ни у мододелов не выработалось, сходу и ен определишь, что "outfit_svoboda_m1" есть модификация "svoboda_light_outfit" ;)

вобщем приходит в голову только вариант с матрицей, в которой расписаны все возможные варианты. если кто даст актуальные clsid-ы оружия и броников, то составлю быстро (в lua_help, как выяснилось, clsid-ы нифига неправильные).

Цитата(marogor @ 15.07.2009, 11:24) *
Именно так это сейчас и сделано.

если вы про сабж, то сейчас ту же LR300 можно чинить и гадюками, а "пустынный орел" - обычными ПМ-ами ;)
Перейти в начало страницы
 
marogor
сообщение 15.07.2009, 10:35
Сообщение #9


Продвинутый геймер
********

Репутация:   138  
Группа: Участник
Сообщений: 411
Награды: 3
Регистрация: 02.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Hiker, не про сабж - про то, о чём говорил Дасти.

Или ссылку на "сабж" или прекращаем флудить. Орион

Сообщение отредактировал Орион - 15.07.2009, 10:39
Причина редактирования: предупреждение, за оффтоп будете отстранены от темы
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 10:38
Сообщение #10


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


ну тогда поделитесь алгоритмом проверки, только если это не заранее составленная матрица.
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 11:49
Сообщение #11


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


по поводу брони. попробуем метод тупой, но надежный.

под картинкой - ссылка с доступом на редактирование таблички в googledocs. слева - что чиним, сверху - чем чиним. единичка в ячейке - ремонт возможен, иначе невозможен.

пока я заполнил банально, броню можно чинить такой же броней, уникальные броники чинятся родителями (и наоборот). предлагайте пары предметов, либо сразу вносите дополнения в эту таблицу. а я потом готовую матрицу скопирую во внешний конфиг.

p.s.
"здесь был вася" просьба не писать ;)
Перейти в начало страницы
 
Dusty79
сообщение 15.07.2009, 12:00
Сообщение #12


Почти Игрок
**

Репутация:   11  
Группа: Участник
Сообщений: 18
Регистрация: 13.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Что касается демонстрации - мой "велосипед" можно было увидеть в действии на скринах в соседней теме..
К сожалению, сейчас не имею физической возможности предоставить сам код.
Что касается алгоритма проверки и сопоставления предметов для ремонта - я делал привязку к каталогу, в котором лежит модель предмета, что гораздо быстрее и проще матриц или списков. Да, это требует сортировки файлов моделей по папкам, но это уже было сделано до того, как я разрабатывал этот девайс под определенный мод. Я просто воспользовался ситуацией.
Впрочем, и от этого я планирую отказаться, сделав ремкомплект легче в переносе под другие моды. Никаких таблиц не планирую - я еще не сошел с ума. smile.gif
Перейти в начало страницы
 
Орион
сообщение 15.07.2009, 12:11
Сообщение #13


Навий черны у ношьти
***************

Репутация:   377  
Группа: Забанен
Сообщений: 2210
Награды: 2
Регистрация: 11.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


HikeR, Внёс пару правок. В частности, в ремонт Сталкеровского комбеза комбезами Монолита, Долга и Свободы. Ремонт комбеза Туриста - улучшенным комбезом Сталкера.


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 12:23
Сообщение #14


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Dusty79 @ 15.07.2009, 13:00) *
я делал привязку к каталогу, в котором лежит модель предмета

не совсем понял.
оружие - название каталога с моделью (в \meshes\weapons )
обычный калаш: ak74
укороченный калаш: ak-74u

лежат в разных каталогах, то есть у вас тоже разные калаши друг другом не чинятся? или ПМ обычный, и ПМ с глушителем - тоже несовместимы?
Перейти в начало страницы
 
Орион
сообщение 15.07.2009, 12:31
Сообщение #15


Навий черны у ношьти
***************

Репутация:   377  
Группа: Забанен
Сообщений: 2210
Награды: 2
Регистрация: 11.03.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


HikeR, Кстати, идея с таблицей очень хороша тем, что легко можно будет добавлять свою новую броню, не редактиуя скрипты, а просто расширяя таблицу конфиг-файла smile.gif


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
Dusty79
сообщение 15.07.2009, 12:35
Сообщение #16


Почти Игрок
**

Репутация:   11  
Группа: Участник
Сообщений: 18
Регистрация: 13.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Я же сказал, что сортировка моделей по папкам уже была проведена. Сходное оружие лежит в одной папке.
Что касается совместимости того же ак-74 и ак-74у... При всей схожести механизма детали конструкции одного не подходят к другому. Факт. Так что они действительно несовместимы для ремонта. В условиях игры, конечно. Да и оружие это разных весовых категорий. Зато любую модификацию ак-47 можно починить, разобрав любой другой ак-47. Лично я был против подобного, но тестеры настояли на этом, дабы не портить юзабельность ремкомплекта. Краткое описание девайса я передавал Вам в личном сообщении.
Перейти в начало страницы
 
HikeR
сообщение 15.07.2009, 12:52
Сообщение #17


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Орион @ 15.07.2009, 13:31) *
не редактиуя скрипты, а просто расширяя таблицу конфиг-файла

именно. и не надо проводить сортировку моделей по каталогам, если человек захочет добавить в игру свой собственный ствол ;)

ну а что касается калашей... в реальности АКМСУ действительно имеет несколько иную конструкцию, чем АКМС (более короткие поршень и газовая трубка), однако в игре используются аналоги АКС-74У и АК-74, которые имеют практически полностью идентичные механизмы.
поэтому взаимопочинка этих автоматов вполне реальна, дойду до оружия - поставлю еденички в соответсвующих ячейках ;)
Перейти в начало страницы
 
HikeR
сообщение 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
Перейти в начало страницы
 
HikeR
сообщение 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
Перейти в начало страницы
 

4 страниц V   1 2 3 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 02.05.2024, 18:16