Пытаюсь вкорячить в Fallout NV амулет из скайрима. Попробовал следовать инструкции по шлему, но наткнулся на казус: там надо одну ноду скопировать с существующего шлема, но у меня ведь не шлем, а ожерелье! А таковых в игре нет. КАК ЭКСПОРТИРОВАТЬ ИЗ МАКСА БЕЗ ВЫДИРАНИЯ НОД НИФСКОПОМ? Неужели нет нормальных вариантов? Вот, допустим, я сам нарисовал что-то, чему в игре нет аналогов, так что, невозможно это впихнуть в игру? Слот "Necklace" в игре есть, но самих предметов нету...
Ничего не понял... SkinWrap оставляем или коллапсим? Одежду, к которой скинили удаляем или как? Скелет оставляем весь? Экспортируем с какими параметрами? Мануальчик там на супер-пупер максера-мододела...
Добавлено (15 Июня 2019, 19:06) --------------------------------------------- ApeX, в общем сделал все по инструкции и с помощью здравого смысла и научного тыка - чертовщина какая-то получается. У меня в нифскопе все отлично выходит, а вот на движке я получаю вместо амулета размазанную по плоскости текстуру. Вот так в максе:
Вот в нифскопе:
А вот так в ГЕКК:
И что с этим делать?
Человек человеку - волк, а зомби зомби - зомби.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №94
| Тема: Скрипты
написано: 15 июня 2019, 21:32
| Отредактировано: Stea1ch - 19 июня 2019, 08:31
Как заставить скриптом непися нажать на спусковой крючек и перезарядить оружие перед этим?
Вопрос снят: создаешь AI Package со стрельбой и включаешь его в скрипте с помощью RefID.AddScriptPackage
Добавлено (19 Июня 2019, 02:35) --------------------------------------------- Такой вопрос по функциям enable/disable в скриптах: мне надо, чтобы предмет не появлялся в игре до определенной стадии квеста. Я вешаю на объект скрипт такого плана:
Код
scn DLC05AuralStealthSuitUpgrade1AddScript
Begin GameMode; Short once; DLC05AuralStealthSuitUpgrade1Ref.Disable; отключает этот объект
end;
Begin OnAdd; Short once; player.AddNote DLC05AuralStealthSuitUpgrade1; SetStage DLC05HolotapeHunt 40; DLC05AlienShieldUpgrade2Ref.Enable; включает второй квестовый объект при взятии
Removeme; end;
Затем в квесте я прописываю на нужной стадии диалога DLC05AuralStealthSuitUpgrade1Ref.Enable - по идее все должно работать, ан нет. Объект не появляется... ЧЯДНТ?
И опять вопрос снят. Не надо скриптом делать Disable - достаточно поставить галку в свойствах референта и делать Enable когда надо любым доступным способом.
Это не интересно. Во первых купить за неприличные деньги - это равносильно что он в гудспрингсе лежать будет, во вторых - мучу квест на обновления для костюма до Марк III и еще одно совершенно секретное =))
Добавлено (17 Июня 2019, 06:57) --------------------------------------------- Господа! Ничерта не понимаю... создаю непися с нуля, мастер-файлы: FalloutNV.esm, OldWorlBlues.esm и порт из фолла 3 MothershipZeta (ZetaNV.esm, взят отсюда). Итак, непись создан, голый, без AI пакетов, без фракций, полностью чистый, однако открывая диалоги я вижу жуткую ересь - чего там только нет, даже объявления директора школы Х8 из OldWorldBlues... ОТКУДА эта ересь лезет и как от этого избавиться?
Человек человеку - волк, а зомби зомби - зомби.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №97
| Тема: ВОПРОСЫ по моддингу
написано: 17 июня 2019, 23:29
| Отредактировано: Stea1ch - 18 июня 2019, 00:10
Да, действительно, стоит MaleAdult01. Пробовал ставить на NONE - результат не сохраняется, при повторном открытии голос опять на месте. ГЕКК глючит?
Другой вопрос: добавил в скрипт верстака на корабле пришельцев (DLC ZetaNV) 2 дополнительные функции - апгрейды для стелс-брони. Фактически все сделал копипастом, менюшки с conditions добавил тоже. Вырезал кусок скрипта - калькулятор состояния, все сделана на уровне additem/removeitem. При наличии необходимого в меню все появляется, но при активации ничего не происходит, хотя по идее все должно работать. Скрипт сохранился и появление меню само по себе означает что он работает. Вот скрипт, мои 2 последние кнопки (elseif Button == 8 и elseif Button == 9). Если бы чего-то не хватало - должно выскочить прописанное сообщение, но не происходит ровным счетом ничего, кроме анимации активатора. Весь скрипт не влазит, оставил как пример оригинальный шиш-кебаб (elseif button == 7).
Код
scn DLC05schematicsWorkbenchScript
;workbench to create customized weapons ; 1. Which schematics does the player have? Display as buttons. ; 2. If has items needed to create, do it; otherwise display "error" message
short HasItems short Button
short item1 short item2 short item3 short item4
float weaponCondition ; calculate what condition the weapon is at when created
; how many of these weapons has the player made? ;short countBottlecap ;short countDartGun ;short countDeathclaw ;short countNuka ;short countRailway ;short countRockit ;short countShishkebab ;short countNVDLC03AuralStealthSuit ;short countNVDLC03AuralStealthSuit2 ref link
BEGIN ONLOAD set link to getLinkedRef
END
Begin OnActivate ; if ( IsActionRef player == 1 || IsActionRef link == 1 ) ; display message box of possible weapons set HasItems to 0
if GetHasNote SchematicsBottlecapMineNote == 1 || GetHasNote SchematicsDartGunNote == 1 || GetHasNote SchematicsDeathclawGauntletNote == 1 set HasItems to 1 endif if GetHasNote SchematicsNukaCocktailNote == 1 || GetHasNote SchematicsRailwayRifleNote == 1 || GetHasNote SchematicsRockitLauncherNote == 1 || GetHasNote SchematicsShishkebabNote == 1 set HasItems to 1 endif if GetHasNote SchematicsBottlecapMineNote10 == 1 || GetHasNote SchematicsDartGunNote10 == 1 || GetHasNote SchematicsDeathclawGauntletNote10 == 1 set HasItems to 1 endif if GetHasNote SchematicsNukaCocktailNote10 == 1 || GetHasNote SchematicsRailwayRifleNote10 == 1 || GetHasNote SchematicsRockitLauncherNote10 == 1 || GetHasNote SchematicsShishkebabNote10 == 1 set HasItems to 1 endif if GetHasNote SchematicsBottlecapMineNote20 == 1 || GetHasNote SchematicsDartGunNote20 == 1 || GetHasNote SchematicsDeathclawGauntletNote20 == 1 || GetHasNote SchematicsRockitLauncherNote30 == 1 set HasItems to 1 endif if GetHasNote SchematicsNukaCocktailNote20 == 1 || GetHasNote SchematicsRailwayRifleNote20 == 1 || GetHasNote SchematicsRockitLauncherNote20 == 1 || GetHasNote SchematicsShishkebabNote20 == 1 set HasItems to 1 endif
if GetHasNote DLC05AuralStealthSuitUpgrade1 == 1 || GetHasNote DLC05AlienShieldUpgrade2 == 1 set HasItems to 1 endif
if ( Button >0 ) ; base condition is just repair skill set weaponCondition to (player.getav Repair)/100
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ elseif button == 7 ; Shishkebab ; 1. check for schematics if GetHasNote SchematicsShishkebabNote == 0 && GetHasNote SchematicsShishkebabNote10 == 0 && GetHasNote SchematicsShishkebabNote20 == 0 ShowMessage SchematicsWorkbenchFailureGenericMsg else ; 2. check for components if ( player.GetItemCount MotorcycleGasTank > 0 ) && ( player.GetItemCount PilotLight > 0 ) && ( player.GetItemCount LawnmowerBlade > 0 ) && ( player.GetItemCount MotorcycleHandbrake > 0 ) ; 3. make it ;message "Shishkebab created." ShowMessage SchematicsWorkbenchSuccessShishkebabMsg player.RemoveItem MotorcycleGasTank 1 1 player.RemoveItem PilotLight 1 1 player.RemoveItem LawnmowerBlade 1 1 player.RemoveItem MotorcycleHandBrake 1 1 ; calculate condition set weaponCondition to (weaponCondition * countShishkebabBonus ) if weaponCondition > 100 set weaponCondition to 100 endif player.AddItemHealthPercent WeapShishkebab 1 weaponCondition PlaySound UIRepairWeapon ; increment count ModPCMiscStat "Weapons Created" 1 set countShishkebab to countShishkebab + 1
;If the player has made one of each item, add Achievement 40 if countWeapAchievement == 0 if countBottlecap >= 1 && countDartgun >= 1 && countDeathclaw >= 1 && countNuka >= 1 && countRailway >= 1 && countRockit >= 1 && countShishkebab >= 1 addachievement 40 set countWeapAchievement to 1 endif endif
else ; 4. failure message set item1 to player.GetItemCount MotorcycleGasTank set item2 to player.GetItemCount PilotLight set item3 to player.GetItemCount LawnmowerBlade set item4 to player.GetItemCount MotorcycleHandbrake
Вот менюшка, такое ощущение что что бы я не нажал - скрипту передается значение "0":
Добавлено (18 Июня 2019, 04:35) --------------------------------------------- В общем полный аминь творится. Суть в том, что я, меняя что-либо незначительное (например звук в скрипте) получаю стойкий вылет до загрузки меню игры. Более того: я прошел свой квест, СКОПИРОВАЛ заведомо правильный esp в другую папку, Поковырялся, получил вылет, скопировал заведомо правильный обратно - все заработало. Однако еще поковыряв и получив вылет - копирование правильного на место не помогает - получаю тот же стойкий вылет игры... я вообще ничего не понимаю, уже и диск проверил, и вирей погонял, все едино, нихрена игра не запускается... отключаю свой мод - стартует. Чудеса какие-то. И непонятки с датой изменения моего файла - создан в 2019-ом, изменен в 2012 в 5 утра. Эта инфа как-то попадаем в мой плагин из NVZeta.esm, только с какого перепуга - не пойму. Более того: когда я копирую заведомо рабочий файл поверх не рабочего - у меня время изменения первый раз встает на 5:01 утра, хотя у исходного 5:00! По моему у меня сейчас поедет крыша...
Если так редактор глючит, то можно ведь поставить другую версию, вполне рабочую и русифицированную.
Ну сейчас вроде добился стабильной работы, пропатчил игру чтобы больше 2-х гигов юзала, вроде все пашет (почти - по квесту один предмет не берется без disable/enable и скопированная и измененная мной стелс-броня почти не говорит, хотя в диалогах я условия для своей измененной брони добавил). А версия редактора в шапке - та же самая, что и у меня (1.4.0.518), разве что русифицированная и с глюкодавом (пока не знаю что это). Буду дальше ковырять русским гекком, может добьюсь чего. Теперь другой вопрос: мне в квесте чтобы все адекватно работало, пришлось создать 2 копии стелс-брони, каждая копия со своим эффектом. А нельзя ли как-то скриптом переключить эффект оригиналу, дабы не плодить 100500 копий одного и того же? Я, конечно, могу в стадях квеста прописать чтобы надо было устанавливать обновления, и в условиях в эффекте поставить GetObjectiveCompleted, но название оригиналу я не умею скриптами менять...
Всем ку! Такой вопрос: плодородная земля на участках принимает лишь определенные растения. В скрипте списка поддерживаемых нет. Где искать, чтобы была возможность сажать редкие труднодоступные растения? В скрипте есть только это:
Код
formlist property flPlanterPlantableItem auto ;formlist of plantable items formlist property flPlanterPlantedFlora auto ;formlist of planted flora
Я так понимаю что это и есть ссылки на списки поддерживаемых растений, которые вызываются функцией из другого скрипта:
Код
state planted EVENT OnActivate(ObjectReference TriggerRef) IF triggerRef == game.getPlayer() clearPlanterChoice = planterClearMessage.show() if clearPlanterChoice == 1 (PlanterContainer as BYOHPlanterContainerScript).plantedFloraRef.delete() (PlanterContainer as BYOHPlanterContainerScript).plantedFloraRef = none (PlanterContainer as BYOHPlanterContainerScript).plantedFloraBase = none ; back to "unplanted" state playAnimation("PlayAnim01") self.goToState("empty") PlanterContainer.Activate(Game.GetPlayer(), FALSE) endif endIf endEVENT
_____________________________________ Добрался до формлистов, указанных в скрипте, но не могу ничего добавить. Пробовал создать новый, результат еще хуже - там вообще ничего сделать нельзя.
Все. Вопрос закрыт. Все делается банальным перетаскиванием.
Всем ку! Продолжаю постигать редактор и задался такой целью: хочу создать перк, позволяющий разбирать ВСЕ артефакты и изучать зачарования с них с последующей возможностью применения. Не могу понять в какую сторону копать. Формлисты на разбор не нашел, единственное что нашел - это кейворд MagicDisallowEnchanting, не позволяющий разбирать предмет на пентаграмме душ. В какую сторону копать?
Он же создавался не для управления им, а для того, чтобы им управлять возможностью разборки.
А если заменить данный кейворд на условие GetHasPerk? Получится такое провернуть? Просто Creation Kit и логика в нем отличаются от GECK, не говоря уже о папирусе - скрипты для меня менее понятны.
то можно заменить его на какой-то свой нигде не используемый кейворд
То-то и оно, что я вообще пока не понимаю как работают кейворды. Сами кейворды кроме имени никакой функции не несут, разве что цвет (зачем? их же не видно, нахрена им цвет?). Где прописан функционал кейворда, ведь должен же быть скрипт?
Всем привет! В связи с крайне скудным количеством модификаций для глобальной стратегии "Endless Space 2", а так же с полным отсутствием русскоязычных ресурсов по моддингу и большим количеством недоработок в игре, я решил создать эту тему. Для начала я решил попробовать починить восстановление уничтоженных планет Бегемотом, что у меня в принципе получилось, за исключением некоторых нюансов - я восстанавливал планеты после квеста с магнитарами, терраформирования добился (мод прилагается), но система получается недоступной для колонизации. Самое интересное в том, что в игре четко написано, что данную планету МОЖНО восстановить Бегемотом, но в реальности кнопка не активна, именно по этому я задался целью исправить сие безобразие. Инструкции по моддингу на русском к сожалению нет в природе, вот ссылка на раздел с инструкцией англоязычного форума по моддингу. Я удалил оригинальный фрагмент кода, отвечающего за терраформирование разрушенных планет
Код
<!-- From Destroyed --> <PlanetTerraformationDefinition Name="PlanetTerraformationFromDestroyedToLava" SubCategory="PlanetTerraformationDust"> <Tags>PlanetTerraformationFromDestroyed</Tags>
<!-- Not buildable on a system! --> <InterpreterPrerequisite Flags="Prerequisite,Discard">false</InterpreterPrerequisite>
<!-- Buildable only on destroyed non-unique planets. --> <PathPrerequisite Flags="Discard,CheckOnPlanet">PlanetTypeDestroyed</PathPrerequisite> <PathPrerequisite Flags="CheckOnPlanet" Inverted="true">IsUniquePlanet</PathPrerequisite> <PathPrerequisite Flags="CheckOnPlanet" Inverted="true">CannotBeColonized</PathPrerequisite> <PathPrerequisite Flags="CheckOnPlanet" Inverted="true">../CannotBeColonized</PathPrerequisite>
<!-- You need to have the first terraformation tech --> <MetaPrerequisite Operator="Or"> <TechnologyPrerequisite UnlockHidden="true" Flags="Technology,Prerequisite,Discard,CheckOnEmpire">TechnologyTerraformation1</TechnologyPrerequisite> <TechnologyPrerequisite UnlockHidden="true" Flags="Technology,Prerequisite,Discard,CheckOnEmpire">TechnologyTerraformation1TimeLords</TechnologyPrerequisite> </MetaPrerequisite>
<!-- Not buildable on a system! --> <InterpreterPrerequisite Flags="Prerequisite,Discard">false</InterpreterPrerequisite>
<!-- You need to have the second terraformation tech --> <MetaPrerequisite Operator="Or"> <TechnologyPrerequisite UnlockHidden="true" Flags="Technology,Prerequisite,Discard,CheckOnEmpire">TechnologyTerraformation2</TechnologyPrerequisite> <TechnologyPrerequisite UnlockHidden="true" Flags="Technology,Prerequisite,Discard,CheckOnEmpire">TechnologyTerraformation2TimeLords</TechnologyPrerequisite> </MetaPrerequisite> <PathPrerequisite Flags="Prerequisite,Discard,CheckOnPlanet">PlanetTypeDestroyed</PathPrerequisite>
Всем ку, модмейкеры! Такой вопрос: не отображается в игре зачарование "Регенерация здоровья" (ну это возможно из-за слабого уровня восстановления), хотя регенерация магии и запаса сил есть. При попытке разобрать шмотку с регенерацией здоровья пишет что это зачарование уже есть. Полез в редактор, нашел зачарования, но никак не могу понять как реализован механизм разрешенных к изучению и запрещенных. Как к примеру сделать зачарование на хождение по воде, чтобы в игре его можно было изучить и оно появилось бы в списке? Где лежат эти правила? Покопался в самих эффектах, методом сравнения не нашел разницы между регенерацией магии и регенерацией здоровья. Так же покопался в хождении по воде, единственное отличие - отсутствие у эффекта школы магии. Поставил школу "изменение", попробую создать шмотку под разбор с хождением по воде, посмотрим что получится...
Добавлено (25 Марта 2020, 19:23) --------------------------------------------- Ну, как я и предполагал, шмотка с хождением по воде успешно распылилась и зачарование появилось в списке... остается вопрос: куда делось регенерация здоровья? Моды стоят только реплейсеры тел: Lady Body и Дети скайрима. Посмотрел на всякий пожарный в редакторе - ни один из этих модов не затрагивает эффекты и зачарования...
Добавлено (25 Марта 2020, 21:43) --------------------------------------------- И еще: повесил стенд для щита, повесил на него щит (тупо, не привязывая), так он в игре не отображается вообще. Удалил активатор со стенда - тоже самое!
Добавлено (28 Марта 2020, 04:20) --------------------------------------------- Ладно, с этим разобрались. Теперь у меня задача по-сложнее. Пытаюсь сделать заклинание "Личная защита" (отсылка к циклу "Архимаг" Александра Рудазова), за основу решил взять эффект "Неуязвимость Харкона", но! Надо сделать так, чтобы после прочтения заклинание оставалось активным неограниченно и слетало при первом попадании чем-либо. Постоянный эффект прописать не проблема, вопрос именно в его отключении при первом контакте, то есть оно должно поглотить ЛЮБОЙ урон и разрушиться. Есть у кого идеи? То, что придется править скрипт - ежу понятно, но вот я не бельмеса не понимаю в папирусе...
P.S. Что, форум умер???
Добавлено (03 Апреля 2020, 12:25) --------------------------------------------- Всем ку! Подскажите пожалуйста, как избавиться от таких артефактов освещения? Весь потолочный свет идентичен, настраивался один источник, затем дублировался и размещался по координатам, с боковыми так же. Все источники света всенаправленные без теней.
Человек человеку - волк, а зомби зомби - зомби.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №106
| Тема: Xenus 2 White Gold
написано: 19 мая 2020, 17:06
| Отредактировано: Stea1ch - 22 августа 2020, 04:44
Всем привет! Нашел в подъезде кучу дисков с играми, среди которых попался старый добрый Xenus 2 лицензия. По причине безвременной кончины студии "Deep Shadows" я ранее проходил эту игру в пиратском исполнении, а SDK на пиратке не работает. Вообще. Но тут я "дорвался". С большим трудом удалось найти SDK, ибо студия мертва и официальные ресурсы давно почили в бозе. Мануалы крайне скудны, с наскока удалось поменять только несколько незначительных параметров с помощью QRE. Сейчас продолжаю копать и буду рад любой помощи по моддингу данной игры - допиливать там много чего надо, но заниматься этим катастрофически некому. Кто имеет опыт в модификациях - добро пожаловать в обсуждение. Надеюсь олдфаги еще живы на этом форуме. На первое время нужна следующая информация: 1. Что, как и где отвечает за привязку боеприпасов к оружию? 2. Какой параметр и где отвечает за исчезновение одноразового оружия после выстрела? 3. Где хрянятся типы оружия (к примеру 7 - РПГ, 8 - ПЗРК "Игла")? 4. Где найти параметры калибра (самого калибра, где номер привязан к боеприпасу)? 5. Как сделать подводное оружие? (Арбалет может стрелять под водой, но даже с соответствующей галкой в параметрах движок игры не позволяет использовать его под водой)
Во время игры вызовите консоль и вводите следующие чит коды: addarmor<число> - добавить брони addhealth<число> - добавить здоровья addammo<число> - добавить патронов addhealth - добавить +10 единиц здоровья addarmor - добавить +10 единиц брони
Человек человеку - волк, а зомби зомби - зомби.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №107
| Тема: Xenus 2 White Gold
написано: 20 мая 2020, 03:27
| Отредактировано: Stea1ch - 8 июля 2020, 15:34
Добавление товаров и редактирование цен с помощьюQRE
Для работы понадобится редактор QRE из пакета SDK и лицензионная версия игры. Распаковав QRE в папку с игрой запускаем от имени Администратора файл _qre.exe Попадаем в главное окно программы, где нас интересует ссылка Scenario Objects
Переходим по ссылке и попадаем в окно сценарных объектов, где нам надо найти нужного продавца (в примере самый первый продавец - Артуро), для этого в верхней части окна выбираем NPC, находим нужного персонажа и переходим (в правой стороне окна по ссылке Trade) в меню торговли:
В меню торговли видим следующие параметры:
GOOD - собственно что именно продает NPC
COUNT - количество товара
GLOBAL TRIG - глобальный триггер, при котором товар появляется в продаже
EXP - Уровень ГГ, при котором товар будет доступен
BUY PRICE - цена, по которой NPC будет покупать у вас данный товар
BUY VARIATION - количество вариаций цены (дороже/дешевле BUY PRICE), по которой NPC будет покупать у вас данный товар
SELL PRICE - Цена для вас у данного NPC
SELL VARIATION - количество вариаций (дороже/дешевле SELL PRICE), по которой NPC будет продавать данный товар
REL VARIATION - количество вариаций цены в зависимости от репутации ГГ во фракции продавца
Чтобы добавить что-либо в список находим пустую строку или добавляем ее (кнопка Insert line) в нужное место (от этого зависит позиция товара в инвентаре торговца в игре), двойным кликом в ячейке GOOD открываем окно выбора товара, находим и выбираем двойным кликом что надо и прописываем нужные цены и другие параметры (можно срисовать из похожего товара у того же продавца). ВАЖНО! Цена скупки должна быть меньше, чем цена продажи, иначе получится чит на бабки.
Потом закрываем окна торговли и сценарных объектов редактора, переходим на вкладку Operations главного окна программы и жмем Save and repack. Не рассчитывайте на то, что товар сразу по волшебству появится у торговца - товары обновляются раз в игровые сутки. К изменению цен отношения не имеет - цены на существующие меняются сразу.
Решил создать тему, посвященную модификации этой замечательной игры, потому что адекватных форумов по этой теме не найти днем с огнем, а в сообщества Steam инструкции, мягко говоря кривые и сделаны на коленке. Я же подхожу к модам тщательно и не хочу делать их на предлагаемых костылях. В этой теме я поделюсь всем, что постиг за неделю знакомства с Unity и модкитом игры в частности. Сам модкит можно скачать ТУТ, на Fandom есть так же пара видеоинструкций (кривых, естественно, но для начала посмотреть стоит). Тут я буду публиковать только собственные наработки, избавленные от костылей. И так, начнем! Unity Hub берем ЗДЕСЬ. Думаю с установкой юнити вы вполне себе справитесь, иначе бы не были тут. В моих примерах я буду практически все делать с нуля и работать с бренчем "Master". Если тут чего-то нет - значит оригинальная инструкция правильна или я до этого еще не дошел.
Переименование мода (избавляемся от MyMod и снимаем таблички "дерево" с деревьев)
В видеоинструкции автор не переименовывает скрипт мода, однако из-за этого могут возникать конфликты, так что мы это поправим! Для начала распакуем модкит в рабочую папку и откроем наш проект (не забыли? Никаких примеров, только "Master"!). Абсолютно не обязательно ставить именно ту версию юнити, которая прописана в модките. Ставим последний LTS - на сегодня это 2019.4.17f1.
После импорта вы увидите восклицательный знак рядом с Unity version, означающий что у вас нет той же версии юнити, в которой создавался модкит. Это не беда, потому что, как я и писал выше, подойдет и более свежая 2019 года, выбираем ее из списка (вы же ее установили, не так ли?), жмакаем на название проекта (modkit-master) и соглашаемся с конвертацией:
Все, юнити чуть подумает и наш проект открыт. Далее идем в папку Scripts в дереве слева, кликаем по ассету MyMod, переименовываем его в название вашего мода сначала справа в Inpector, затем сам файл. В примере буду использовать Modgames:
Осталось переименовать мод в C# скрипте ModEntry. Открываем его, и правим в строках 8 и 26 название мода и рабочего пространства для локализаций:
Код
//[assembly: AssemblyTitle("Modgames")] // ENTER MOD TITLE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Localization.LoadStrings("Modgames_strings_");
Создание рецепта для крафта и записки для изучения с параметрами локализации
Создание самого рецепта вполне адекватно описано в сообществе Steam, так что не буду я на этом заострять внимание. В данном примере у меня уже создан рецепт патронов 6х49mm_jhp. Однако для мультиязычных модов подход по созданию записки (memo) в корне не верен, с этим сейчас и разберемся. Открываем справа в дереве каталогов Resources > Entities > Memo - тут у нас будут жить наши записки. Затем идем сверху в Game > Asset Viewer. В поиске набираем "Craft_book" и скачиваем понравившуюся книжку (ПКМ>Download). Тут же переименовываем скачанный ассет на свой лад. Делается это для того, чтобы не создавать иконки. Если вы намерены использовать свои Sprite - то можно просто создать новый рецепт, как описано в сообществе Steam.
Далее нам понадобится нормальный текстовый редактор, понимающий json. Настоятельно рекомендую Notepad++. Запускаем Notepad++, создаем файл с двумя скобками внутри
Код
{ }
и сохраняем его как modgames_book.json в любое удобное место и перетаскиваем в рабочее пространство Memo. Или сохраняем прямо в Assets > Resources > Entities > Memo рабочей папки проекта - на Ваше усмотрение. Кликаем по переименованному ассету записки и справа в inspector в поле "Note" привязываем к нему наш modgames_book. Так же правим рабочее пространство локализации в соответствии с названием нашего мода. Далее кликаем по modgames_book.json и жмем Node editor справа в Inspector:
Мы попали в редактор поведения. Тут редактируются все диалоги, квесты, записки... Тут нам надо создать дерево диалога (в данном случае одностороннего, ибо это книга и ГГ ее читает). Создаем начало дерева: ПКМ > Memo > Memo Begin. Далее создаем нужное количество страниц: ПКМ > Memo > Memo Page. Затем надо добавить пустышку: ПКМ > Dummy. Затем создаем триггер на Keyword: ПКМ > Keyword > Has Keyword. Далее создаем действие добавления рецепта: ПКМ > Player > Player Add Recipe. Затем добавляем Keyword (ПКМ > Keyword > Add Keyword, чтобы рецепт не учился каждый раз при прочтении книги.Ну и под конец создаем логические цепочки. В качестве Keyword в обоих случаях используем название нашей книги, можно с префиксом, главное чтобы значение в обоих полях было одинаково.
Далее приводим дерево к такому виду:
Заполняем кейворды и рецепт: кликаем по HasKeyword и в открывшемся окошке пишем название нашей книги (modgames_book), тоже самое проделываем и с AddKeyword. Добавляем рецепт в PlayerAddRecipe:
Жмем SAVE в левом верхнем углу и выходим из редактора.
Теперь мы подошли к самому главному, о чем в других инструкциях нет ни слова. Начинаем заполнять нашу книжку умными (или не очень) фразами. Продолжение следует.
Добавлено (08 Января 2021, 19:23) --------------------------------------------- Продолжаем тему. Для дальнейшей работы потребуется много копипастить, так что приготовьте левую руку к CTRL+C CTRL+V =)) Для начала надо создать локализацию. Идем Game > Localizalion > Generate String Localization Затем идем в Assets > Resources > Localization - там будут 2 файла: strings_en и strings_ru. Переименовываем их в modgames_strings_en и modgames_strings_ru соответственно. Открываем оба в Notepad++. Там нас интересуют строки:
Тут 2 параметра, относящихся к названию нашей записки. Приводим их в соответствующий вид:
Код
"memo" : { "modgames_book" : { "short" : "Modgames лучший сайт", "full" : "Книга о том как надо делать моды и инструкции. Научит как создать ~чего вы там создаете~"
Параметр "short" отвечает за короткое имя при наведении мышки, если книга лежит на полу или в ящике, к примеру, а параметр "full" покажет более подробную информацию при наведении мышки в инвентаре. Тоже самое проделываем в файле _en, но уже по-английски. С названием разобрались. Теперь перейдем к наполнению книги полезной (и не очень) информацией. Открываем Notepad++ и создаем пустой json файл с двумя скобками, как описано выше. Сохраняем под именем text_ru и text_en. Помещаем оба файла в рабочее пространство рядом с modgames_strings_ru. Открываем оба. Идем в memo и открываем Node Editor на файле modgames_book.json. Теперь самое важное: переключаемся в Notepad++ и приводим оба файла к следующему виду:
Теперь переключаемся на редактор и кликаем Page. Из открывшегося окошка копируем идентификатор фразы и тут же вставляем его ниже, дописываем в начало префикс
Код
#modgames_book.
Переключаемся на Notepad++ и вставляем идентификатор первыой фразы в первые кавычки. Повторяем тоже самое для английской версии файла. Таким образом проходим по всем фразам. В результате получаем это:
Переключаемся на редактор поведений, сохраняем и закрываем его. Осталось только наполнить каждую фразу смыслом. Во вторые кавычки каждой фразы пишем нашу полезную информацию:
Код
{ "modgames_book" : { "53c420c2-0016-4fec-9d6e-cc22235229e7" : "На самом деле я не знаю что писать, так что пишу от балды", "b69b4e76-1e8e-40a0-b27b-96be47a29fe7" : "Тут тоже должно быть что-то написано...", "3b3b446f-5702-4277-bdd1-9e8713332ad8" : "Ну а тут концовка. Всех благ." } }
Вот в принципе и все. Повторяем процедуру для английской версии, сохраняем оба файла и можно компилить мод. По такому же принципу создаются квесты, диалоги, реплики NPC. Надеюсь я все понятно объяснил. Знаю, сейчас закидаете помидорами, что можно прописать все прямо в окошках и нажать Generate Localisation - и весь текст заменится на ID и пропишется в text_ru, так вот: это актуально, если у вас все диалоги, записки и прочее создаются в один присест. Если вы добавляеете несколько диалогов не за раз - то генерация порушит все предыдущее и снова придется копипастить. По мне - уж лучше вручную. Еще добавлю: если вы прописываете перки оружию - то потрудитесь удалить их из strings_ru - самый последний блок Weaponerk должен выглядеть так:
Код
"weaponperk" : { }
Если, конечно, вы не создали свой оружейный перк - тогда его и только его прописываем сюда. Иначе все нативные перки будут без описания или придется их заполнить для каждого.
К сожалению данный метод хоть и работает для нашей книги, но рушит все диалоги в игре. Для того, чтобы этого не происходило, нам надо переименовать наши файлы text_(ru)(en) в modgames_text_(ru)(en) и прописать загрузку данного текста в скрипт ModEntryPoint.cs "Localization.LoadTexts("modgames_text_");" сразу после "Localization.LoadStrings("modgames_strings_");" Выглядит это так:
Так же, чтобы наши диалоги были видны в редакторе поведений не в виде идентификаторов прописываем еще 2 абзаца. Один сразу после 8 строки "//[assembly: AssemblyTitle("modgames")] // ENTER MOD TITLE":
Продолжение следует. Все, что я проделал в этой инструкции доступно для скачивания вместе с модкитом. Да-да, все исходники ТУТ! Пароль на архив: modgames.net
Добавлено (09 Января 2021, 02:41) --------------------------------------------- Продолжение, как и обещал.
Звуки. Конвертация и добавление в проект.
Про звук в официальных источниках так же не бельмеса. Сейчас это исправим. В этом примере мы будем добавлять звук создания/неудачи к нашему рецепту патронов из предыдущего урока. Для работы нам в принципе не требуется ни особых навыков, ни даже звукового редактора. Достаточно просто скачать нужный звук и преобразовать его в формат Vorbis (ogg). Важно заметить, что Unity примет и воспроизведет практически любой формат, но в игре такой звук воспроизводится НЕ БУДЕТ. Для этой нехитрой операции нам вполне хватит обычного VLC плеера. Создаем путь в проекте Assets > Resources > Sounds > SFX > Craft > Modgames (просто создаем папки по порядку, можно прямо в рабочей папке проекта или непосредственно в Unity). Теперь скачаем нужные нам звуки. Для примера я взял звук перезарядки дробовика в качестве удачного крафта и звук поломки часового механизма в качестве неудачи. Все звуки в формате mp3, так что будем их конвертировать. Просто открываем их в vlc по одному, кликаем ПКМ > Сохранить, выбираем преобразовать и профиль Audio - Vorbis (OGG), указываем путь прямо на папку Assets > Resources > Sounds> SFX > Craft > Modgames и имя файла modgames_sucsess и modgemes_fail соответственно для каждого звука и жмем кнопку "Начать". На выходе получаем оба файла сразу в нашем проекте.
Звуки готовы к использованию. Осталось только привязать их к двум событиям в рецепте крафта. Переходим в Entities > Craft, выделяем наш рецепт, кликаем по стрелочкам и назначаем звук для каждого события.
На этом все, звуки готовы. Продолжение следует.
Добавлено (11 Января 2021, 10:17) ---------------------------------------------
Prefab и с чем его едят.
Сегодня научимся ковырять игровые модели. Игровые модели выполнены в виде скрипта YAML с расширением .prefab. Напрямую сгенерировать их по неведомой мне причине модкит не умеет, или разработчики намеренно вставляют палки в колеса - сие для меня загадка. В модките с примерами существует несколько готовых prefab, те, которые я буду использовать, я выложу в свободный доступ. Сегодня пропишем лекарство от жадности вредности создателю урока по добавлению винтовки в игру а так же создадим prefab для холодного оружия. Итак, начнем!
Скачаем prefab пистолета, с которым будем работать. Открываем наш проект, добавляем prefab в папку Weapon. Добавляем в проект существующую винтовку, к примеру pipe_sniper_4. Скачиваем на просторах интернета модель винтовки в формате FBX (или конвертим из другого формата в FBX), которую будем добавлять. Создаем папки Textures и Materials прямо в папке Weapon. Если наша модель несет в себе запакованные материалы и текстуры - то нам надо их распаковать, в чем нам поможет сам Unity, для этого выделим саму модель и справа в Inspector нажмем сначала "Extract Textures", затем "Extract Materials". Тут так же есть нюансы. Текстуры могут быть в любом формате, dds, png, tga и даже jpg. Unity с данным модкитом НЕ МОЖЕТ ПОЛНОЦЕННО РАБОТАТЬ НИ С ЧЕМ, КРОМЕ PNG! Так что если извлеченные текстуры у нас не PNG - то придется их конвертировать, о чем я расскажу позже. Если текстуры у нас отдельны от модели - то просто конвертируем их, если они не PNG и помещаем в папку Textures. Я буду использовать уже подготовленную модель с извлеченными и конвертированными текстурами и материалами.
Открываем Prefab пистолета в Notepad++ (ПКМ > Show in Explorer > ПКМ > Edit with Notepad++) и находим там строки с координатами:
Как видно - коллайдер стал гораздо больше меша пистолета и теперь соответствует винтовкам и ружьям в игре. Теперь мы удалим меш ствола, оставив только рукоять (ее мы тоже удалим, но потом).
Перетаскиваем нашу модель FBX винтовки в сцену и размещаем внутри рамки, подгоняя размер и положение по рукояти. Ствол должен быть направлен по оси X, а приклад подходить почти вплотную к стенке коллайдера. Когда наша винтовка хорошо попала в рамку и рукоять совпадает с мешем в префабе - удаляем меш рукояти и переключаем обзор в режим 2D. Затем выделяем FlashSlot и двигаем его к выходному отверстию ствола пока на проекции 2D по осям XY придерживаясь центра ствола.
Затем переходим в 3D и подгоняем положение нашей модели так, чтобы дуло совпадало с FlashSlot. Поскольку по двум координатам у нас уже порядок - двигаем модель только по оси Z. ДВИГАЕМ ТОЛЬКО МОДЕЛЬ ОРУЖИЯ, НИ В КОЕМ СЛУЧАЕ НЕ ПРЕФАБ!
Теперь наша винтовка расположена правильно. Переименовываем префаб EPIstol в название нашего оружия, задаем параметры оружия, локализации. Правим M Entry Data
Теперь к ножу: Тут все проще. Еще раз вставляем префаб пистолета в проект. Удаляем меш ствола, оставляем только рукоять. Скачиваем модель ножа (или рисуем сами) и добавляем в проект. Текстурируем. Переносим модель в префаб, размещаем рукоять ножа внутри меша рукоятки пистолета, острой стороной по оси X, удаляем меш рукояти, удаляем FlashSlot - готово. Так же добавляем в проект любой нож из Asset Viewer, назначаем параметры, локализацию, привязываем к префабу, создаем иконку и привязываем ее - готово. Правим параметр "M Entry Data" в префабе. Можно открыть его Notepad++, а можно и прямо в Inspector.
Добавлено (15 Января 2021, 08:35) ---------------------------------------------
Prefab. Создание с нуля.
И так, продолжим. Для создания с нуля игровой модели нам нужно ее... создать! Создать ее можно прямо в редакторе сцены. Для этого кликаем правой мышкой по пустому месту в иерархии сцены и выбираем Create Empty. У нас появляется новый GameObject. Это и есть наш префаб, осталось только его настроить. Просто хватаем GameObject мышкой и перетаскиваем его в наш проект в нужную папку. Выделяем GameObject и справа в Inspector жмем Open Prefab. Дальше начинаем работу с Add Component. Тут нужно определится, для чего именно мы создаем игровую модель. В примере оружие, потому что координаты для него известны. Для начала добавим коллайдер: Add Component > Physics > Box Collider. Затем, уж коли это оружие - добавим оружейные скрипты: Add Component > Scripts > Weapon Link, Add Component > Scripts > Weapon Component. Теперь создадим FlashSlot - кликаем правой мышкой по пустому месту в иерархии сцены и выбираем Create Empty. Переименовываем новый GameObject в FlashSlot. Добавляем созданный FlashSlot в соответствующее поле в скрипте Weapon Link. На этом настройка префаба для огнестрела завершена, за исключением размеров, к сожалению, кроме как скоммуниздить параметры Transform и BoxCollider из видеоурков и скриншотов на просторах интернета, я других вариантов пока не знаю.
Продолжение следует.
Человек человеку - волк, а зомби зомби - зомби.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №110
| Тема: Проблемы после переезда.
написано: 13 апреля 2022, 16:43
| Отредактировано: Stea1ch - 13 апреля 2022, 16:54
Приветствую! Ваш переезд, который все ждали с нетерпением обернулся очередным "серпом по яйцам". Я не могу редактировать шапку своей темы (сообщение №1, написанное еще до переезда), в редакторе НАПРОЧЬ отсутствуют ФУНКЦИИ ВЫРАВНИВАНИЯ ТЕКСТА(!) - это вообще нонсенс, про цветатекстапостельныхтонов я вообще молчу - там хоть костыль есть там есть ввод номера, но он работает только в редакторе, в посте цвет по номеру не отображается. При написании данного сообщения я пытался использовать зачеркнутый текст по кнопке - в редакторе работает, в сообщении - нет. У меня не сохранилось ни одного личного сообщения, а они были. Я бы хотел знать когда примерно данные недоработки будут устранены и стоит ли этого вообще ждать?
Выравнивание есть в редакторе материалов, где оно явно более востребованно.
То есть, в теме форума можно забыть про красивое оформление тем с заголовками по центру? И Вы считаете что выравнивание не востребовано при написании ответов, как я отвечаю вам сейчас?
Цитата ApeX
Лимит времени на редактирование сообщений является распространенным в интернете, это обычное дело на сайтах.
Убедительная просьба УБРАТЬ данный лимит по отношению к шапке темы (сообщение №1), я считаю так будет правильно, ибо в шапку постоянно добавляются ссылки, к тому же с изменениями ПО на которое есть ссылки в шапке - информация о методах работы с данным ПО становится в корне не верной (как и случилось у меня) и я не могу ничего с этим поделать, а ведь пользователь, следуя неверной инструкции, может если не загубить проект - то в пустую потратить время, согласитесь - сие не есть гуд.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №112
| Тема: Проблемы после переезда.
написано: 14 апреля 2022, 07:09
| Отредактировано: Stea1ch - 14 апреля 2022, 07:27
А вот тут Вы ошибаетесь - вместо ввода номера прикрутите палитру с пипеткой - всем угодите =)) Ну и конечно несколько ячеек для пользовательских цветов, куда будут сохраняться цвета, выбранные в палитре.
Всем ку! Попытался перенести мину C4 в 3 фолл, но никак - в гекке нет триггера "детонация". Получается обычная мина. Есть идеи как реализовать скриптом?
P.S для модераторов и вебдизайнеров форума: НЕ УБИРАЮТСЯ КАРТИНКИ ПОД СПОЙЛЕР - не возможно открыть полученный спойлер.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №115
| Тема: Скрипты
написано: 11 ноября 2022, 18:30
| Отредактировано: Stea1ch - 11 ноября 2022, 18:30
Не, тут по весу... Я сейчас ваяю скрипт на 96 листов тетради только потому, что функция GetContainerInventoryCount не работает от слова совсем в гекке 3 фолла, так бы я просто ограничил бы количество и сообщение об ошибке при попытке добавить больше с предложением убрать лишнее, но не судьба... Приходится для каждого предмета создавать переменную для подсчета общего числа... Делаю мод на ремонт брони на верстаке, хотел чтоб можно было только один предмет положить на верстак и чинить его, притом он бы появлялся на верстаке в виде ванили, но придется делать ремонт всего и сразу с подсчетом необходимых ресурсов... хотя... может и смогу реализовать ограничение, только скрипт на рулон туалетной бумаги будет...
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №118
| Тема: Скрипты
написано: 24 ноября 2022, 08:20
| Отредактировано: Stea1ch - 24 ноября 2022, 08:21
Всем ку! Я все же не забросил идею со взрывчаткой С4 в 3 фолле. Мне удалось придумать как сделать чтобы мина не взрывалась (ну почти, если прямо на нее встать - бахнет) и удалось сдетонировать ее из консоли. А теперь вопрос: есть ли способ каким-то макаром получить скриптом рефы мин, установленных игроком в текущей локации? По принципу поиска что-ли... ну или совсем костыль: как взаимодействовать со всеми рефами типа FF00xxxx? Нужен скриптовый костыль в виде FF* для взаимодействия со всеми динамическими рефами пользователя.
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №119
| Тема: Скрипты
написано: 24 ноября 2022, 10:04
Ну так переношу-то я из NV мину. Собственно я думал что родной скрипт просто надо будет слегка допилить. И да, тут люди есть. Живые. К тому же я в этой теме еще до переезда постигал основы скриптов, чтоб не теряться =))
Изменение репутации для пользователя Stea1ch
Stea1chOffline
Сообщение №120
| Тема: Скрипты
написано: 24 ноября 2022, 10:52
Чтобы мина не взрывалась вообще, надо сделать её вообще не миной.
Я пытался это сделать, но уперся в полное отсутствие Begin OnFire - в 3 гекке его нет, в FOSE подавно, даже CommandExtender не помог - нет там такого... хотя тул прикольный, функция поиска отлично работает из консольки =)) Пробую сделать подмену на OnDrop - будет двойной функционал - просто мина если юзать как оружие и мина с ду если ее просто выкинуть из инвентаря. Выбрасываться будет активатор с менюхой такой же как и у обычной мины.