И скажут (а я уверен, что и Ipatow скажет то же самое), что надо использовать систему CRAFT и не мучиться. А если уж хочется потренироваться в многоуровневых сообщениях, то идти от простого к сложному, а не от верстака чёрте-куда.
Я не понимаю как сделать рабочей вторую страницу меню.
Ну как бы по-понятней объяснить... Скрипт проверяет нажатие кнопок месседжа, который этот же самый скрипт в данный момент показывает на экране. Ну то есть - в скрипте в одном блоке стоит команда "Показать месседж такой-то", а в другом блоке стоят команды - если в показываемом месседж-боксе нажата какая-то кнопка - сделать для неё то-то и то-то. Для того, чтобы появилось вторая страница меню - надо в первом месседж-боксе добавить новую кнопку и внести в скрипт верстака команду, которая отслеживает нажатие на эту новую кнопку (по аналогии с предыдущими кнопками), а в итог команды вписать показ второго месседжа. Второй месседж со своими кнопками, естественно, предварительно должен быть создан в редакторе. Тогда в игре, при нажатии новой кнопки в первом месседж-боксе, скрипт покажет второй месседж-бокс (ту самую вторую страницу меню) уже с его кнопками и этот же скрипт будет отслеживать, этими же командами, какие кнопки нажимаются уже в этом, втором месседже-боксе.
И вот тут вылезает закавыка - в скрипте уже были прописаны действия для кнопок первого месседжа, поэтому, когда откроется окно второго месседжа, скрипт будет делать для его кнопок то же самое, что и для кнопок первого. В скрипт надо будет вводить дополнительную переменную, дублировать все команды по отслеживанию нажатия кнопок, в каждый дубль добавлять проверку значения этой переменной. Например: если значение переменной = 1 (открыта первая страница меню), то при нажатии кнопки из текущего месседжа скрипт сделает что-то из компонентов Х, а вот если значение переменной = 2 (открыта вторая страница меню) то при нажатии этой кнопки скрипт сделает уже что-то из компонентов Y. Вот такой вот нюанс. Скрипт разрастается, конечно, до неимоверного размера, с кучей строк, в которых легко запутаться и "накосячить". Поэтому, как уже неоднократно говорилось - не стоит править ванильный верстак. Сделай свой отдельный, со своим скриптом, поставь в доме игрока в Мегатоне где-нибудь рядом с родным верстаком и будет счастье. PS. Опять же, если будет два разных мода от разных мододелов на разные схемы, но сделанные для ванильного верстака - то в игре все равно будет работать только один из них, который отметят последним в списке загрузки. Он своими изменениями "затрет" все предыдущие манипуляции другого мода над верстаком.
Да, это самое рациональное. Если мод делается сильно большой и вводящий какие-то новые системы, не имеющие аналогов, можно под шумок и систему производства свою собственную построить - но тут определённо не тот масштаб.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №2255
написано: 6 ноября 2019, 06:10
| Отредактировано: КсюXa - 6 ноября 2019, 08:15
О! Вместо верстака просто скрипт на конкретно нужную броню. По аналогии со всякими выключателями, вентилями, требующими определенный навык ремонта или науки. При активации (подъеме брони в инвентарь) выскакивает сообщение - "Броня такая-то, обычная, но у вас в рюкзаке есть свистелки-перделки, способные улучшить это." При отказе получаем обычную, при согласии - улучшенную. Получается - без верстака, типа - на коленке сделал, в походных условиях Для совместимости с другими модами, затрагивающими эту же броню, скрипт можно вкорячить в новый перк: есть перк - броня апгрейдится, нет перка - извините...
Добавлено (06 Ноября 2019, 09:21) --------------------------------------------- Кстати, мастер Ипатов - вопрос такой незатейливый: если на предмете висит скрипт с OnAdd, то при покупке такого предмета у торговца через меню торговли - команда срабатывает? Ну типа в ОнАдд задумано, что при добавлении заскриптованного предмета происходит нечто своё, отдельное. Знаю, что если напрямую брать, с "земли" - то ноу проблем, а вот через покупку... Если честно - мне проверять лень
Ой, всё...
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №2256
написано: 6 ноября 2019, 07:11
| Отредактировано: КсюXa - 6 ноября 2019, 07:36
не стоит править ванильный верстак. Сделай свой отдельный, со своим скриптом, поставь в доме игрока в Мегатоне где-нибудь рядом с родным верстаком и будет счастье.
Спасибо вы мне очень помогли. Для начала я наверное и так сделаю, а потом копну поглубже
Вот, к примеру - шаблон скрипта для верстака. Для верстака, естественно, отдельного, не ванильного. Попробуй приспособить для своих целей. В скрипте прописаны кнопки для первой страницы меню и для второй страницы. А также переход между страницами. Результирующий итог для нажатия кнопок пустой - тут тебе решать, что "программировать" на них. В итоге скрипт пока довольно невелик, но вот когда будешь заполнять проверки условий для каждой кнопки и какой результат должен быть после этих проверок - скрипт разбухнет до безобразия. Он не станет сложнее, просто объемнее. PS. Шаблон сделан в виде еспешника, в игре работу кнопок можно проверить на новом верстаке возле магазина Мойры.
Ой, всё...
Изменение репутации для пользователя supernik95
supernik95Offline
Сообщение №2261
написано: 10 ноября 2019, 10:52
| Отредактировано: supernik95 - 10 ноября 2019, 10:53
Народ, есть такой вопрос. После нахождения определенного количества времени вне новой локации и по возвращении ГГ в оное, большее число НПС скапливается в одном месте. Это из-за кривых навмешей или же в самой локации есть дыры, и неписи как-бы "спотыкаются"? Подскажите.
Блин, ответ очевиден. Кривые навмеши на новой локации. Движок игры тут и рядом не тарахтел.И что там именно кривое - отсюда не видно. Пока только информация про существование какой-то новой локации, х.з. где.
Я извиняюсь, но я так понимаю что это не скрипт, а условия открытой якчейки в message box. Можно как-то написать скрипт похож на GetHasNote ? Я пробовал вписать команду (GetAV repair = 25) не работает.
note может иметь только игок, поэтому при использовании gathasnote не обязательно указывать, кто именно имеет этот note. В отличие от AV (actor value), которых и у игрока, и у каждого НПС целая куча, поэтому при использовании getav repair нужно обязательно указывать, у кого именно проверяется навык ремонта. Т.е. должно быть так:
Код
if player.getav repair >= 25
====================== Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294 Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Изменение репутации для пользователя divine2991
divine2991Offline
Сообщение №2272
написано: 22 ноября 2019, 19:47
| Отредактировано: divine2991 - 22 ноября 2019, 19:47
Всем привет!Столкнулся с проблемой, установил дополнение первичных потребностей и в этом дополнении помимо всего прочего есть возможность менять течение времени скриптом типа
if button == 0 set timescale to 30 endif elseif button == 1 set timescale to 15 endif elseif button == 2 set timescale to 10 endif elseif button == 3 set timescale to 5 endif elseif button == 4 set timescale to 1 endif
Собственно суть проблемы, если я ставлю set timescale to 15 то время в шкале сна или отдыха начинает отставать. Например если на часах "пятница 11:59pm" то в 12:01pm должна быть суббота,НО у меня день меняется в 12:08pm может знает кто как подправить?
Скорость течения времени можно и через консоль менять, без скриптов этой же командой - set timescale to нужное значение (по умолчанию 4, кажется). Возможно, значения 14 или 16 "подведут" хронометр, раз точное время так важно.
Изменение репутации для пользователя ncrrainjer
ncrrainjerOffline
Сообщение №2275
написано: 29 ноября 2019, 06:54
| Отредактировано: ncrrainjer - 8 декабря 2019, 07:59
Добавлено (08 Декабря 2019, 10:26) --------------------------------------------- Ребят,подскажите пожалуйста как поднимается уровень NPC есть какая-то система?И как сделать топик диалога на подобии второго Фолла, когда NPC уровень получал,говорил,что чувствует силу или что стал сильнее и т.п. Пытался запросить характеристики через диалоге:
short Rang short Lvl short Exp short CurExp
Set Rang to MyNPCRef.GetFactionRank SomeFaction Set Lvl to MyNPCRef.Getlevel Set Exp to MyNPCRef.GetXPForNextLevel Set CurExp to MyNPCRef.GetActorValue XP ShowMessage MyNPCStatMSG Rang, Lvl, Exp, CurExp
Это все в резалт скрипте диалога. ,но ничего не вышло,буду еще ковыряться,но пока не могу понять как сделать.
ncrrainjer, можно глянуть на Брисе. Там не совсем через такой диалог можно поднять уровень NPC, но достаточно близко к этому. Правда, нужен FOSE (пусть и не для этого).
Тут надо переменные выносить в отдельный квестовый скрипт для отдельного квеста, где и будет настраиваться текущее значение нужных параметров, а в самом месседже в поле текста внести соответствующие строки. Ну типа: Уровень (Lvl): %.0f Ранг(Rang): %.0f и так далее... А в команде ShowMessage указать переменные из какого квеста берутся:
ShowMessage MyNPCStatMSG IDквеста.Lvl IDквеста.Rang и так далее.
КсюXa,Большое спасибо за ответ)Но все же уровень NPC и его опыт меняется допустим если он участвует в боях?Или с каким уровнем NPC создан, с таким уровнем он и остается не зависимо от его действий.Просто если у неписей нет системы поднятия уровня,то и заморачиваться не стоит с изобретением велосипеда, тогда я сделаю другие ветки развития.
Добавлено (08 Декабря 2019, 16:43) --------------------------------------------- ApeX,Спасибо)Тоже о Брисе подумал)
Изменение репутации для пользователя Nesuqik
NesuqikOffline
Сообщение №2279
написано: 21 января 2020, 09:56
| Отредактировано: Nesuqik - 21 января 2020, 10:07
Привет, появился такой интересный вопрос - как отловить смерть турели через GameMode? И сразу еще один интересный вопрос. Когда турель разрушается (умирает) она переходит в Disable или все же можно получить ее хп GetAV Health? Недавно пришел в F3, мало чего еще знаю
Код
if ( iTurret05.GetDisabled == 1 ) if ( iTurretType == 1 ) set iTurret05 to aaaFunnyWorldTurretREF05.PlaceAtMe aaaFunnyWorldTurret01 1 5; elseif ( iTurretType == 2 ) set iTurret05 to aaaFunnyWorldTurretREF05.PlaceAtMe aaaFunnyWorldTurret02 1 5; elseif ( iTurretType == 3 ) set iTurret05 to aaaFunnyWorldTurretREF05.PlaceAtMe aaaFunnyWorldTurret03 1 5; elseif ( iTurretType == 4 ) set iTurret05 to aaaFunnyWorldTurretREF05.PlaceAtMe aaaFunnyWorldTurret04 1 5; endif else iTurret05.RestoreAV Health 9999; endif
Начало спавна происходит в Quest Stage таким образом:
Код
set aaaFunnyWorldQuestTurrets.iTurret05 to aaaFunnyWorldTurretREF05.PlaceAtMe aaaFunnyWorldTurret01 1 5;
Вот такой код используется у меня на спавн турели. Только вот при загрузке их появляется много (очень много). Или это все же может быть связано с тем что редактирую скрипты и потом снова загружаюсь в мод, и получается такая штука? Уже всю голову поломал как это сделать. Код на спавн неписей помощников такой же, только он правильно работает, а этот, зараза, не хочет(