Да он пошол!!! Спасиб всё работает.Я уже все квесты просмотрел а всё было из-за нескольких пакетов следования.
Отредактировано Никроман (2009-07-03 06:30:59)
Форум Oblivion, Skyrim & Fallout 3/4 Modding |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Мод Компаньон
Да он пошол!!! Спасиб всё работает.Я уже все квесты просмотрел а всё было из-за нескольких пакетов следования.
Отредактировано Никроман (2009-07-03 06:30:59)
ЭЭЭЭ А зачем ты так много переменных наплодил? И два блока OnDeath?
И это, тебе придется не только один пакет следования делать, три как минимум. Ну а если смотреть на кол-во переменных, как я их понимаю, то и все шесть...
Отредактировано Wulf (2009-07-02 22:02:44)
Я просто делал компаньона на примере Джерико.Щас буду сокращать скрипты и т.д.
Я Гекком тока месяц занимаюсь,а компаньёнами 5 дней.Ща буду компаньону добавлять фунеции как у собаки типа ищи патроны,лекарства,людей.
Как там идут дела с тутором по созданию компаньона?
во - исполнитель моей мечты! делает компаньена на базе джерико с возможностями бябяки, ураааа! давай, я в тебя верю.
ЭЭЭЭ А зачем ты так много переменных наплодил?
В каком смысле много, я делал как у всех компаньонов в fallout 3.
А их можно как-то сократить?
Люди а как занести своего компаньона в NPCFollowerLIST? Он вроде у меня там был а ща пропал.Чёт у меня Гекк иногда поглючивает.
Отредактировано Никроман (2009-07-03 06:33:47)
А их можно как-то сократить?
Угу, еще как можно. Вот эти переменные
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
можно в одну затолкать... Например.
Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFaction.
Да... я задолбался пакеты делать мож написать как сократить скрипт.Как именно в одну затолкать:
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
Чтоб один пакет следования был.
Вроде ты пишешь тутор по созданию NPC компаньона?Как идут дела с написанием?
Отредактировано Никроман (2009-07-04 23:46:14)
Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFaction
Смотри я занёс своего компаньона в Followers а к нему прикреплен NPCFollowerLIST.Как мне своего компаньона прикрепить?
Я его чёт не могу занести в этот список.
А фракцию я создал и сделал дружественной игроку.
Я кокда смотрю все диалоги игрока там щас не появляються фразы которые занесены в Follower.После того как у меня Гекк вылетел.Тоесть команды типа:Поменять тактику,поменять экипировку.
Хм, у меня есть к тебе два предложения...
1. Если ты делаешь по аналогии со стандартными напарниками, то по подробней их расковырять, лучше всего с листочком бумаги и ручкой.
2. Подождать, когда я докарябую вторую часть тутора (так как лето, то в течении 2-х недель )
ЗЫ: И да, судя по переменным у тебя три пакета следования, один ожидания и два комбат стиля. Тебе чего в конечном итоге нужно то?
ЗЗЫ: Перед тем как делать мод, рекомендую хотяб основные моменты мода расписывать на бумажке. И тебе понятно, что нужно, и вопросы другим можно более менее продуктивней задавать, в случае затруднительных моментов.
Смотри а можно сделать так если не заносить своего компаньона в Followers а создать свой или сразу эти функции занести в FollowersHireNikroman?
ага, в диалоге с псиной есть такие фразы хорошая псина и плохая псина, они влияют на самообучение псины врядли... а на что влияют???
А зачем в туторе ты написал:
"Essential – ставим отметку (таким образом делаем нашего компаньона бессмертным)"
Зачем делать компаньона бессмертным?
Если его можно убить это было бы реалистичнее.
И можно прикрепить скрипт:
Если яо-гай мертв чтобы выводилось сообщение что он мертв.
BEGIN OnDeath
ShowMessage FollowerMessageDeadCompanien
END
А зачем в туторе ты написал:"Essential – ставим отметку (таким образом делаем нашего компаньона бессмертным)"Зачем делать компаньона бессмертным?Если его можно убить это было бы реалистичнее.
Соответственно если не ставить отметку - он не будет бессмертным. У человека, который читает туториал и что-то по нему, делает есть выбор. Его дело, как поступать со своим компаньоном - делать его бессмертным или нет. Мое дело лишь показать как именно это сделать
И можно прикрепить скрипт:Если яо-гай мертв чтобы выводилось сообщение что он мертв.
BEGIN OnDeath ShowMessage FollowerMessageDeadCompanien
END
Тогда уж не прикрепить, а добавить в основной скрипт отдельным блоком. Хорошее замечание, в следующей версии добавлю этот момент
Ошибка или опечатка у тебя в туторе.
Цитирую:
«Следующая закладка – Factions (фракции). Удаляем все, что есть в этом окне. Дальше идем в Character>Faction… В списке справа кликаем правой клавишей и в появившемся меню выбираем New (новый). В появившемся окошке New Form Editor ID вводим название новой фракции, например, IgorRaFalloutCompanion. Жмем Ок.»
Почему справа?
У меня слева. Вот скрин:
Нужно ставить не Neutral, а Friend.
Я сделал компаньона Когтя смерти и выставил параметр Neutral как написано у тебя, Коготь стал светиться не зеленым как друг, а красным как враг. Он не стал выполнять мои команды.
Я выставил параметр Friend, и все стало работать.
Вот мой компаньон Когтик смерти:Я добавил немного функций:
Такс... во-первых пользуемся кнопкой "Изменить", а не мультипостим, и во-вторых изображения лучше заливать вот так:
Размещение изображений на форуме
Теперь по сути
Ошибка или опечатка у тебя в туторе
Естественно опечатка
Нужно ставить не Neutral, а Friend.Я сделал компаньона Когтя смерти и выставил параметр Neutral как написано у тебя, Коготь стал светиться не зеленым как друг, а красным как враг. Он не стал выполнять мои команды.Я выставил параметр Friend, и все стало работать
Если ставить Friend возможны проблемы с атакой компаньона. так или иначе этот момент нужно тестировать. У меня выставлен Neutral и все прекрастно работает. При этом на вот это
Коготь стал светиться не зеленым как друг, а красным как враг. Он не стал выполнять мои команды
данный параметр не влияет. Советую посмотреть другие настройки компаньона.
А зачем ты сделал компаньона через Message можно ведь сделать как у всех компаньонов нормальные диалоги.
Я поэкспериминтировал через пару дней выложу полноценного компаньона животного.
Вот скрин:
А зачем ты сделал компаньона через Message можно ведь сделать как у всех компаньонов нормальные диалоги
Потому что считаю, что общаться с животными через диалоги как то... гм... ненормально. Для желающих делать компаньонов через диалоги будет другой туториал. Точнее вторая часть уже существующего о создании компаньона-НПС
Потому что считаю, что общаться с животными через диалоги как то... гм... ненормально. Для желающих делать компаньонов через диалоги будет другой туториал. Точнее вторая часть уже существующего о создании компаньона-НПС
Да разговаривать с животными это уж слишком
А вот ещё один способ создания компаньона как делал я
1)
Создаём нужные диалоги для уже имеющегося npc (следуй за мной, жди здесь, патрулируй и т.д.)
2)
Создаём соответствующие ai package (follow, travel и т.д.)
3)
Создаём в квесте (квест 01follower) стадии (1, 2, 3, 4 и т.д.)
4)
Указываем в ai package follow условие (condition) например getstage 01follower == 1,
а в диалоге "следуй за мной" в result script прописываем setqueststage 01follower 1
т.е. при стадии квеста 1 активируется ai package follow и npc будет следовать за игроком
Возможно данный способ не идеален, но как вариант можно использовать
Wulf написал(а):Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFactionСмотри я занёс своего компаньона в Followers а к нему прикреплен NPCFollowerLIST.Как мне своего компаньона прикрепить?Я его чёт не могу занести в этот список.А фракцию я создал и сделал дружественной игроку.Я кокда смотрю все диалоги игрока там щас не появляються фразы которые занесены в Follower.После того как у меня Гекк вылетел.Тоесть команды типа:Поменять тактику,поменять экипировку.
все верно, список неписей которые могут быть компаньенами в NPCFollowerLIST
открываешь NPCFollowerLIST а затем ПЕРЕТАСКИВАЕШЬ мышкой из objeckt window -> actor -> npc -> просто хватаешь мышкой нужного человека и тащишь.
для создания компаньена типа родного надо в двух квестах его прописать? первый Followers , а второй FollowersHire*** где *** имя непися больше нигде не надо?
насчет любимой мною темы КРОВИ... я научился создавать кровь для неписей созданную кровь нельзя использовать, а вот для CREATURE можно, если кому то это интерестно то напишу мини тутор , может Igor_Ra добавит в свой тутор о создании компаньенов животных эту инфу..
Никроман
если сделал компаньена нпс с функциями собаки прислать мне есп файл можешь? в личку напиши.
Мне Никроман скидывал компаньона на базе собаки.Он просто сделал полную копиию собаки.Но выбрал другое животное.
если кому то это интерестно то напишу мини тутор
Пиши туторы лишними небывают.
Отредактировано BloodBear (2010-02-13 13:39:41)
как смогу напишу значит. нашел еще один квест, в квестовом скрипте MQ04Script надо добавить своего компаньена в список, это тот момент когда ты посылаешь напарников врубить очиститель, а они посылают в ответ тебя. народ задолбался возиться с одной переменной в скриптах упоминается ***REFHired где *** имя компаньена, че это такое как его и с чем кушать?
подскажите что неправильно в этих скриптах:
оригинальный FollowersQuestSCRIPT:
SCN FollowersQuestSCRIPT short PlayerHasFollower float FollowerWaitingLeaveDay float DogmeatWaitingLeaveDay ;***Charon Variables*** short PlayerOwnsContract ;Set by buying the contract from Ahzrukhal or by killing him. short CharonHired ;Set to 1 when the player hires Charon after obtaining his contract. short CharonFired;Player has dismissed Charon ;***Fawkes Variables*** short FawkesHired short FawkesFired ;***Jericho Variables*** short JerichoConvince short JerichoHired short JerichoFired ;***Star Paladin Cross Variables*** short CrossDismissedPlayer short StarPaladinCrossHasBeenHired short StarPaladinCrossHired short StarPaladinCrossFired ;***Butch Variables*** short ButchHired short ButchFired ;***RL3 Variables*** short RL3Hired short RL3Fired ;***Clover Variables*** short CloverHired short CloverFired ;***Dogmeat Variables*** short DogmeatHired short DogmeatFired BEGIN GameMode if ( DogmeatHired == 1 ) if ( DogmeatREF.Waiting == 1 ) && ( DogmeatREF.GetInCell MegatonPlayerHouse == 0 ) && ( DogmeatREF.GetInCell Tenpenny03Player == 0 ) if ( DogmeatWaitingLeaveDay <= GameDaysPassed ) if ( DogmeatREF.GetInSameCell Player == 0 ) set Followers.DogmeatHired to 0 set Followers.DogmeatFired to 1 set DogmeatREF.Waiting to 0 DogmeatREF.SetPlayerTeammate 0 DogmeatREF.RemoveFromFaction FollowerFaction DogmeatREF.evp ShowMessage FollowerMessageLeaveDogmeat DogmeatREF.MoveTo EvacuationMarker set DogmeatWaitingLeaveDay to 0 endif endif endif endif if ( PlayerHasFollower == 1 ) if ( ButchREF.Waiting == 1 ) && ( ButchREF.GetInCell MegatonPlayerHouse == 0 ) && ( ButchREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( ButchREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.ButchHired to 0 set Followers.ButchFired to 1 set ButchREF.Waiting to 0 set ButchREF.IsFollowingDefault to 1 set ButchREF.IsFollowingLong to 0 set ButchREF.IsFollowingShort to 0 ButchREF.SetCombatStyle FollowersCombatStyleRanged set ButchREF.CombatStyleRanged to 1 set ButchREF.CombatStyleMelee to 0 ButchREF.SetPlayerTeammate 0 ButchREF.RemoveFromFaction FollowerFaction ButchREF.evp ShowMessage FollowerMessageLeaveButch ButchREF.MoveTo MuddyRudderMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( CharonREF.Waiting == 1 ) && ( CharonREF.GetInCell MegatonPlayerHouse == 0 ) && ( CharonREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( CharonREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.CharonHired to 0 set Followers.CharonFired to 1 set CharonREF.Waiting to 0 set CharonREF.IsFollowingDefault to 1 set CharonREF.IsFollowingLong to 0 set CharonREF.IsFollowingShort to 0 CharonREF.SetCombatStyle FollowersCombatStyleRanged set CharonREF.CombatStyleRanged to 1 set CharonREF.CombatStyleMelee to 0 CharonREF.SetFactionRank TeammateFaction -1 CharonREF.RemoveFromFaction FollowerFaction CharonREF.SetPlayerTeammate 0 CharonREF.evp ShowMessage FollowerMessageLeaveCharon CharonREF.MoveTo UnderworldNinthCircleMARKER set FollowerWaitingLeaveDay to 0 endif endif endif if ( CloverREF.Waiting == 1 ) && ( CloverREF.GetInCell MegatonPlayerHouse == 0 ) && ( CloverREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( CloverREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.CloverHired to 0 set Followers.CloverFired to 1 set CloverREF.Waiting to 0 set CloverREF.IsFollowingDefault to 1 set CloverREF.IsFollowingLong to 0 set CloverREF.IsFollowingShort to 0 CloverREF.SetCombatStyle FollowersCombatStyleRanged set CloverREF.CombatStyleRanged to 1 set CloverREF.CombatStyleMelee to 0 CloverREF.SetPlayerTeammate 0 CloverREF.RemoveFromFaction FollowerFaction CloverREF.evp ShowMessage FollowerMessageLeaveClover CloverREF.MoveTo ParadiseFallsEulogysPadMARKER set FollowerWaitingLeaveDay to 0 endif endif endif if ( JerichoREF.Waiting == 1 ) && ( JerichoREF.GetInCell MegatonPlayerHouse == 0 ) && ( JerichoREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( JerichoREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.JerichoHired to 0 set Followers.JerichoFired to 1 set JerichoREF.Waiting to 0 set JerichoREF.IsFollowingDefault to 1 set JerichoREF.IsFollowingLong to 0 set JerichoREF.IsFollowingShort to 0 JerichoREF.SetCombatStyle FollowersCombatStyleRanged set JerichoREF.CombatStyleRanged to 1 set JerichoREF.CombatStyleMelee to 0 JerichoREF.SetPlayerTeammate 0 JerichoREF.SetFactionRank TeammateFaction -1 JerichoREF.RemoveFromFaction FollowerFaction JerichoREF.evp ShowMessage FollowerMessageLeaveJericho JerichoREF.MoveTo MegatonOutsideMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( MQ08FawkesREF.Waiting == 1 ) && ( MQ08FawkesREF.GetInCell MegatonPlayerHouse == 0 ) && ( MQ08FawkesREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( MQ08FawkesREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.FawkesHired to 0 set Followers.FawkesFired to 1 set MQ08FawkesREF.Waiting to 0 set MQ08FawkesREF.IsFollowingDefault to 1 set MQ08FawkesREF.IsFollowingLong to 0 set MQ08FawkesREF.IsFollowingShort to 0 MQ08FawkesREF.SetCombatStyle FollowersCombatStyleRanged set MQ08FawkesREF.CombatStyleRanged to 1 set MQ08FawkesREF.CombatStyleMelee to 0 MQ08FawkesREF.SetPlayerTeammate 0 MQ08FawkesREF.RemoveFromFaction FollowerFaction MQ08FawkesREF.evp ShowMessage FollowerMessageLeaveFawkes MQ08FawkesREF.MoveTo FawkesMuseumWaitMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( RL3REF.Waiting == 1 ) && ( RL3REF.GetInCell MegatonPlayerHouse == 0 ) && ( RL3REF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( RL3REF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.RL3Hired to 0 set Followers.RL3Fired to 1 set RL3REF.Waiting to 0 set RL3REF.IsFollowingDefault to 1 set RL3REF.IsFollowingLong to 0 set RL3REF.IsFollowingShort to 0 RL3REF.SetCombatStyle FollowersCombatStyleRanged set RL3REF.CombatStyleRanged to 1 set RL3REF.CombatStyleMelee to 0 RL3REF.SetPlayerTeammate 0 RL3REF.RemoveFromFaction FollowerFaction RL3REF.evp ShowMessage FollowerMessageLeaveRL3 RL3REF.MoveTo CCBazaarMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( StarPaladinCrossREF.Waiting == 1 ) && ( StarPaladinCrossREF.GetInCell MegatonPlayerHouse == 0 ) && ( StarPaladinCrossREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( StarPaladinCrossREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.StarPaladinCrossHired to 0 set Followers.StarPaladinCrossFired to 1 set StarPaladinCrossREF.Waiting to 0 set StarPaladinCrossREF.IsFollowingDefault to 1 set StarPaladinCrossREF.IsFollowingLong to 0 set StarPaladinCrossREF.IsFollowingShort to 0 StarPaladinCrossREF.SetCombatStyle FollowersCombatStyleMelee set StarPaladinCrossREF.CombatStyleRanged to 1 set StarPaladinCrossREF.CombatStyleMelee to 0 StarPaladinCrossREF.SetPlayerTeammate 0 StarPaladinCrossREF.RemoveFromFaction FollowerFaction StarPaladinCrossREF.evp ShowMessage FollowerMessageLeaveStarPaladinCross StarPaladinCrossREF.MoveTo CitScribeMarker04 set FollowerWaitingLeaveDay to 0 endif endif endif endif END
он же с моим компаньеном:
SCN FollowersQuestSCRIPT short PlayerHasFollower float FollowerWaitingLeaveDay float DogmeatWaitingLeaveDay ;***Charon Variables*** short PlayerOwnsContract ;Set by buying the contract from Ahzrukhal or by killing him. short CharonHired ;Set to 1 when the player hires Charon after obtaining his contract. short CharonFired;Player has dismissed Charon ;***Fawkes Variables*** short FawkesHired short FawkesFired ;***Jericho Variables*** short JerichoConvince short JerichoHired short JerichoFired ;***Star Paladin Cross Variables*** short CrossDismissedPlayer short StarPaladinCrossHasBeenHired short StarPaladinCrossHired short StarPaladinCrossFired ;***Butch Variables*** short ButchHired short ButchFired ;***RL3 Variables*** short RL3Hired short RL3Fired ;***Clover Variables*** short CloverHired short CloverFired ;***Dogmeat Variables*** short DogmeatHired short DogmeatFired short NewFemChildHired short NewFemChildFired BEGIN GameMode if ( DogmeatHired == 1 ) if ( DogmeatREF.Waiting == 1 ) && ( DogmeatREF.GetInCell MegatonPlayerHouse == 0 ) && ( DogmeatREF.GetInCell Tenpenny03Player == 0 ) if ( DogmeatWaitingLeaveDay <= GameDaysPassed ) if ( DogmeatREF.GetInSameCell Player == 0 ) set Followers.DogmeatHired to 0 set Followers.DogmeatFired to 1 set DogmeatREF.Waiting to 0 DogmeatREF.SetPlayerTeammate 0 DogmeatREF.RemoveFromFaction FollowerFaction DogmeatREF.evp ShowMessage FollowerMessageLeaveDogmeat DogmeatREF.MoveTo EvacuationMarker set DogmeatWaitingLeaveDay to 0 endif endif endif endif if ( PlayerHasFollower == 1 ) if ( ButchREF.Waiting == 1 ) && ( ButchREF.GetInCell MegatonPlayerHouse == 0 ) && ( ButchREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( ButchREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.ButchHired to 0 set Followers.ButchFired to 1 set ButchREF.Waiting to 0 set ButchREF.IsFollowingDefault to 1 set ButchREF.IsFollowingLong to 0 set ButchREF.IsFollowingShort to 0 ButchREF.SetCombatStyle FollowersCombatStyleRanged set ButchREF.CombatStyleRanged to 1 set ButchREF.CombatStyleMelee to 0 ButchREF.SetPlayerTeammate 0 ButchREF.RemoveFromFaction FollowerFaction ButchREF.evp ShowMessage FollowerMessageLeaveButch ButchREF.MoveTo MuddyRudderMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( CharonREF.Waiting == 1 ) && ( CharonREF.GetInCell MegatonPlayerHouse == 0 ) && ( CharonREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( CharonREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.CharonHired to 0 set Followers.CharonFired to 1 set CharonREF.Waiting to 0 set CharonREF.IsFollowingDefault to 1 set CharonREF.IsFollowingLong to 0 set CharonREF.IsFollowingShort to 0 CharonREF.SetCombatStyle FollowersCombatStyleRanged set CharonREF.CombatStyleRanged to 1 set CharonREF.CombatStyleMelee to 0 CharonREF.SetFactionRank TeammateFaction -1 CharonREF.RemoveFromFaction FollowerFaction CharonREF.SetPlayerTeammate 0 CharonREF.evp ShowMessage FollowerMessageLeaveCharon CharonREF.MoveTo UnderworldNinthCircleMARKER set FollowerWaitingLeaveDay to 0 endif endif endif if ( CloverREF.Waiting == 1 ) && ( CloverREF.GetInCell MegatonPlayerHouse == 0 ) && ( CloverREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( CloverREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.CloverHired to 0 set Followers.CloverFired to 1 set CloverREF.Waiting to 0 set CloverREF.IsFollowingDefault to 1 set CloverREF.IsFollowingLong to 0 set CloverREF.IsFollowingShort to 0 CloverREF.SetCombatStyle FollowersCombatStyleRanged set CloverREF.CombatStyleRanged to 1 set CloverREF.CombatStyleMelee to 0 CloverREF.SetPlayerTeammate 0 CloverREF.RemoveFromFaction FollowerFaction CloverREF.evp ShowMessage FollowerMessageLeaveClover CloverREF.MoveTo ParadiseFallsEulogysPadMARKER set FollowerWaitingLeaveDay to 0 endif endif endif if ( JerichoREF.Waiting == 1 ) && ( JerichoREF.GetInCell MegatonPlayerHouse == 0 ) && ( JerichoREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( JerichoREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.JerichoHired to 0 set Followers.JerichoFired to 1 set JerichoREF.Waiting to 0 set JerichoREF.IsFollowingDefault to 1 set JerichoREF.IsFollowingLong to 0 set JerichoREF.IsFollowingShort to 0 JerichoREF.SetCombatStyle FollowersCombatStyleRanged set JerichoREF.CombatStyleRanged to 1 set JerichoREF.CombatStyleMelee to 0 JerichoREF.SetPlayerTeammate 0 JerichoREF.SetFactionRank TeammateFaction -1 JerichoREF.RemoveFromFaction FollowerFaction JerichoREF.evp ShowMessage FollowerMessageLeaveJericho JerichoREF.MoveTo MegatonOutsideMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( MQ08FawkesREF.Waiting == 1 ) && ( MQ08FawkesREF.GetInCell MegatonPlayerHouse == 0 ) && ( MQ08FawkesREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( MQ08FawkesREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.FawkesHired to 0 set Followers.FawkesFired to 1 set MQ08FawkesREF.Waiting to 0 set MQ08FawkesREF.IsFollowingDefault to 1 set MQ08FawkesREF.IsFollowingLong to 0 set MQ08FawkesREF.IsFollowingShort to 0 MQ08FawkesREF.SetCombatStyle FollowersCombatStyleRanged set MQ08FawkesREF.CombatStyleRanged to 1 set MQ08FawkesREF.CombatStyleMelee to 0 MQ08FawkesREF.SetPlayerTeammate 0 MQ08FawkesREF.RemoveFromFaction FollowerFaction MQ08FawkesREF.evp ShowMessage FollowerMessageLeaveFawkes MQ08FawkesREF.MoveTo FawkesMuseumWaitMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( RL3REF.Waiting == 1 ) && ( RL3REF.GetInCell MegatonPlayerHouse == 0 ) && ( RL3REF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( RL3REF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.RL3Hired to 0 set Followers.RL3Fired to 1 set RL3REF.Waiting to 0 set RL3REF.IsFollowingDefault to 1 set RL3REF.IsFollowingLong to 0 set RL3REF.IsFollowingShort to 0 RL3REF.SetCombatStyle FollowersCombatStyleRanged set RL3REF.CombatStyleRanged to 1 set RL3REF.CombatStyleMelee to 0 RL3REF.SetPlayerTeammate 0 RL3REF.RemoveFromFaction FollowerFaction RL3REF.evp ShowMessage FollowerMessageLeaveRL3 RL3REF.MoveTo CCBazaarMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( NewFemChildREF.Waiting == 1 ) && ( NewFemChildREF.GetInCell MegatonPlayerHouse == 0 ) && ( NewFemChildREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( NewFemChildREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.NewFemChildHired to 0 set Followers.NewFemChildFired to 1 set NewFemChildREF.Waiting to 0 set NewFemChildREF.IsFollowingDefault to 1 set NewFemChildREF.IsFollowingLong to 0 set NewFemChildREF.IsFollowingShort to 0 NewFemChildREF.SetCombatStyle FollowersCombatStyleRanged set NewFemChildREF.CombatStyleRanged to 1 set NewFemChildREF.CombatStyleMelee to 0 NewFemChildREF.SetPlayerTeammate 0 NewFemChildREF.RemoveFromFaction FollowerFaction NewFemChildREF.evp ShowMessage FollowerMessageLeaveNewFemChild NewFemChildREF.MoveTo CCBazaarMarker set FollowerWaitingLeaveDay to 0 endif endif endif if ( StarPaladinCrossREF.Waiting == 1 ) && ( StarPaladinCrossREF.GetInCell MegatonPlayerHouse == 0 ) && ( StarPaladinCrossREF.GetInCell Tenpenny03Player == 0 ) if ( FollowerWaitingLeaveDay <= GameDaysPassed ) if ( StarPaladinCrossREF.GetInSameCell Player == 0 ) set Followers.PlayerHasFollower to 0 set Followers.StarPaladinCrossHired to 0 set Followers.StarPaladinCrossFired to 1 set StarPaladinCrossREF.Waiting to 0 set StarPaladinCrossREF.IsFollowingDefault to 1 set StarPaladinCrossREF.IsFollowingLong to 0 set StarPaladinCrossREF.IsFollowingShort to 0 StarPaladinCrossREF.SetCombatStyle FollowersCombatStyleMelee set StarPaladinCrossREF.CombatStyleRanged to 1 set StarPaladinCrossREF.CombatStyleMelee to 0 StarPaladinCrossREF.SetPlayerTeammate 0 StarPaladinCrossREF.RemoveFromFaction FollowerFaction StarPaladinCrossREF.evp ShowMessage FollowerMessageLeaveStarPaladinCross StarPaladinCrossREF.MoveTo CitScribeMarker04 set FollowerWaitingLeaveDay to 0 endif endif endif endif END
оригинальный MQ04Script:
ScriptName MQ04Script ;covers all scripting and variables for quest MQ04 short DeadNPCs;incremented when anyone in TL is killed. Talking to Betty after incrementing this causes her to reset things so everyone is alive short PlayerinChair ;flag set when player is seated in lounger; 1 triggers animations, 2 allows for move to TL short PlayerInTL;flag set to 1 when player actually enters Tranquility Lane; set back to 0 when he exits short DadInfo ;flag set to 1 when player asks about Dad's whereabouts, used to update dialogue choices short SafetyLock;flag for safety protocols preventing NPCs from permanent death. 0 for no permanent death, 1 to allow permanent death short NPCReset;flag used for tracking reset updates every morning short BettyRefuse;flag set when player refuses task from Betty; reset every time player completes a task. short Task1;flag set to 1 if player agrees to complete task 1 short Task2;flag set to 1 if player agrees to complete task 2 short Task3;flag set to 1 if player agrees to complete task 3 short MarthaInfo;flag set to 1 if player learns about Roger/Martha connection short undiesplaced ;flag set to 1 if player places underwear in Rockwells' basement short BasementBody ;flag set to 1 if player kills Old Lady Dithers in the Rockwells' basement short JanetFollow;flag set when player asks Janet to follow him to the basement short RockwellConv ;flag used for tracking conversation between Janet and Roger short BasementBody ;flag set if NPC is killed in the Rockwells basement short SlasherKills;flag incremented when killing NPCs as the Slasher short DithersInfo;flag set in dialogue results when player learns of existence of failsafe from Dithers short FailSeq ;var incremented as player activates objects for Failsafe; reset if he gets one wrong short FailLast ;var set to the last failsafe object activated, used for tracking sequence short HouseEnter;flag set to 1 when player has entered the abandoned house short BettyHit ;flag set to 1 if player hits Betty in any fashion -- used in BettyScript short ResetInfo;flag set if Betty has ever reset anyone and talked to the player about it short MiseryInfo;flag set if Dithers has told player about failsafe and ending misery short DadGreet ;flag set when back in Vault 112; used to handle packages for Dad short DadDogInfo;flag set when player learns dad is a dog short BraunInfo;flag set when player is told Betty is Braun short TLInfo;flag set when/if player asks for more information about TL Short Invasion ;flag set when player uses failsafe terminal; triggers endstate behavior for Chinese Invasion Short InvasionStep ;var incremented when scripting associated with Invasion stuff has run short Task1Complete ;set to 1 if player uses speech on Timmy ;set to 2 if player tricks Timmy with brochure ;set to 3 if player beats Timmy up ;set to 4 if player kills one of Timmy's parents ;set to 5 if player rigs robot to "haunt" Timmy's room short Task2Complete ;set to 1 if player convinces Janet Roger is cheating ;set to 2 if player successfully plants underwear in the basement ;set to 4 if player kills Martha with Janet's rolling pin ;set to 5 if player convinces Janet Roger wears underwear short Task3Complete ;set to 1 if player rigs the oven to explode ;set to 2 if player puts rollerskate on the stairs ;set to 3 if Chandelier falls on Mabel ;set to 4 if robot is reprogrammed float StageUpdateTimer;timer used to update to stage 5 after arriving in Tranquility Lane Begin GameMode ;scripting for moving player from Vault112 to Tranquility Lane worldspace ;also handles changing player into kid and giving him the appropriate clothes ;PlayerInChair var is set on MQ04PlayerPodScript if ( PlayerInChair == 2 ) if ( Player.GetInCell Vault112a == 1 ) ;While we're running this block, set any followers to Waiting so they don't wander into Tranquility Lane if ( JerichoRef.HasBeenHired == 1 ) set JerichoRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( CharonRef.HasBeenHired == 1 ) set CharonRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( DogmeatRef.HasBeenHired == 1 ) set DogmeatRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( ButchRef.HasBeenHired == 1 ) set ButchRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( CloverRef.HasBeenHired == 1 ) set CloverRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( RL3Ref.HasBeenHired == 1 ) set RL3Ref.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( MQ08FawkesRef.HasBeenHired == 1 ) set MQ08FawkesRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( StarPaladinCrossRef.HasBeenHired == 1 ) set StarPaladinCrossRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif SetLocationSpecificLoadScreensOnly 1 Player.Dispel Stealthboy Player.moveto MQ04StartBench Player.RemoveAllItems MQ04PlayerContainerRef Player.RemoveItem Pipboy 1 1 Player.RemoveItem PipboyGlove 1 1 SetPCYoung 1 player.AgeRace -1 player.additem MQ04PlayerOutfit 1 1 player.equipitem MQ04PlayerOutfit 1 1 Set StageUpdateTimer to 3 Set PlayerInTL to 1 Set PlayerInChair to -1 ; RImod MQ04PodFadetoWhiteISFX ;finally, disable both Enclave Radio and GNR broadcast refs while the player is in TL if ( RadioGalaxyNewsRef01.GetDisabled == 0 ) RadioGalaxyNewsRef01.Disable endif if ( RadioGalaxyNewsRef02.GetDisabled == 0 ) RadioGalaxyNewsRef02.Disable endif RadioEnclaveRef.Disable PipBoyRadioOff EnablePlayerControls AutoDisplayObjectives 1 endif endif ;run a timer after arriving to give the initial stage update if ( GetStage MQ04 == 0 ) if ( Player.GetInWorldSpace TranquilityLane == 1 ) if ( StageUpdateTimer > 0 ) set StageUpdateTimer to ( StageUpdateTimer - GetSecondsPassed ) else if ( GetStage MQ03 >= 10 ) SetStage MQ03 200 endif SetStage MQ04 5 SetQuestDelay MQ04 0 endif endif endif ;update variable on Old Lady Dithers if the player enters the abandoned house if ( OldLadyDithersRef.talk == 0 ) if ( Player.GetinCell TLAbandonedHouse == 1 ) set OldLadyDithersRef.Talk to 1 endif endif ;---------------------FAILSAFE SCRIPTING----------------------- if ( InvasionStep == 0 ) if ( MQ04.Invasion == 1 ) GeorgeNeusbaumRef.Resurrect 0 GeorgeNeusbaumRef.Moveto MQ04GeorgeInvasionMarker PatNeusbaumRef.Resurrect 0 PatNeusbaumRef.Moveto MQ04PatInvasionMarker MabelHendersonRef.Resurrect 0 MabelHendersonRef.Moveto MQ04MabelInvasionMarker OldLadyDithersRef.Resurrect 0 OldLadyDithersRef.Moveto MQ04DithersInvasionMarker MarthaSimpsonRef.Resurrect 0 MarthaSimpsonRef.Moveto MQ04MarthaInvasionMarker RogerRockwellRef.Resurrect 0 RogerRockwellRef.Moveto MQ04RogerInvasionMarker JanetRockwellRef.Resurrect 0 JanetRockwellRef.Moveto MQ04JanetInvasionMarker if ( TimmyNeusbaumRef.GetDisabled == 0 ) TimmyNeusbaumRef.Disable endif MQ04SoldierRef1.Enable MQ04SoldierRef2.Enable MQ04SoldierRef3.Enable MQ04SoldierRef4.Enable MQ04SoldierRef5.Enable MQ04SoldierRef6.Enable MQ04SoldierRef7.Enable MQ04ExitDoorActRef.Enable SetStage MQ04 70 RewardKarma 300 set InvasionStep to 1 endif elseif ( InvasionStep == 1 ) SetQuestDelay MQ04 0 set InvasionStep to 2 endif ;---------------------TASK 1 SCRIPTING---------------------------- ;if either of Timmy's parents are dead, and he's not yet on the correct package, have him re-evaluate ;(added because Timmy doesn't seem to be getting the message... he's kind of a slow kid.) if ( GetStage MQ04 == 15 ) if ( TimmyNeusbaumRef.DadDead == 1 ) if ( TimmyNeusbaumRef.GetCurrentAIPackage != MQ04TimmyMournGeorge ) TimmyNeusbaumRef.EVP endif elseif ( TimmyNeusbaumRef.MomDead == 1 ) if ( TimmyNeusbaumRef.GetCurrentAIPackage != MQ04TimmyMournPat ) TimmyNeusbaumRef.EVP endif endif endif ;--------------------TASK 2 SCRIPTING--------------------------- ;-------------------TASK 3 SCRIPTING------------------------ ;Update quest stage when player has killed Mabel with rollerskate ;Note that Task3Complete is set in Mabel's script, not here if ( MabelHendersonRef.push == 1 ) if ( MabelHendersonRef.SkatePlaced == -1 ) if ( GetStage MQ04 == 35 ) SetStage MQ04 40 set MabelHendersonRef.push to -1 endif endif endif ;If Mabel is killed by the robot, flag the var and update the quest if ( GetStage MQ04 == 35 ) if ( TLHendersonRobotRef.IsKiller MabelHendersonRef == 1 ) Set MQ04.Task3Complete to 4 SetStage MQ04 40 endif endif ;--------TASK 4 SCRIPTING--------------------------------------- ;Update Objective when player has slasher outfit and knife in inventory ;Force equip both mask and knife, since player can't access inventory if ( GetStage MQ04 == 45 ) if ( Player.GetItemCount MQ04SlasherMask > 0 ) if ( Player.GetItemCount MQ04SlasherKnife > 0 ) SetStage MQ04 50 endif endif endif ;Update Objective again when all target NPCs are dead (note that var is incremented through scripts on the individual NPCs) if ( GetStage MQ04 == 50 ) if ( SlasherKills >= 8 ) SetStage MQ04 60 endif endif ;Update Quest Stage and Objective when player has exited Tranquility Lane if ( GetStage MQ04 == 70 ) if ( Player.GetInCell Vault112a == 1 ) SetStage MQ04 75 endif endif End
он же с моим компаньеном:
ScriptName MQ04Script ;covers all scripting and variables for quest MQ04 short DeadNPCs;incremented when anyone in TL is killed. Talking to Betty after incrementing this causes her to reset things so everyone is alive short PlayerinChair ;flag set when player is seated in lounger; 1 triggers animations, 2 allows for move to TL short PlayerInTL;flag set to 1 when player actually enters Tranquility Lane; set back to 0 when he exits short DadInfo ;flag set to 1 when player asks about Dad's whereabouts, used to update dialogue choices short SafetyLock;flag for safety protocols preventing NPCs from permanent death. 0 for no permanent death, 1 to allow permanent death short NPCReset;flag used for tracking reset updates every morning short BettyRefuse;flag set when player refuses task from Betty; reset every time player completes a task. short Task1;flag set to 1 if player agrees to complete task 1 short Task2;flag set to 1 if player agrees to complete task 2 short Task3;flag set to 1 if player agrees to complete task 3 short MarthaInfo;flag set to 1 if player learns about Roger/Martha connection short undiesplaced ;flag set to 1 if player places underwear in Rockwells' basement short BasementBody ;flag set to 1 if player kills Old Lady Dithers in the Rockwells' basement short JanetFollow;flag set when player asks Janet to follow him to the basement short RockwellConv ;flag used for tracking conversation between Janet and Roger short BasementBody ;flag set if NPC is killed in the Rockwells basement short SlasherKills;flag incremented when killing NPCs as the Slasher short DithersInfo;flag set in dialogue results when player learns of existence of failsafe from Dithers short FailSeq ;var incremented as player activates objects for Failsafe; reset if he gets one wrong short FailLast ;var set to the last failsafe object activated, used for tracking sequence short HouseEnter;flag set to 1 when player has entered the abandoned house short BettyHit ;flag set to 1 if player hits Betty in any fashion -- used in BettyScript short ResetInfo;flag set if Betty has ever reset anyone and talked to the player about it short MiseryInfo;flag set if Dithers has told player about failsafe and ending misery short DadGreet ;flag set when back in Vault 112; used to handle packages for Dad short DadDogInfo;flag set when player learns dad is a dog short BraunInfo;flag set when player is told Betty is Braun short TLInfo;flag set when/if player asks for more information about TL Short Invasion ;flag set when player uses failsafe terminal; triggers endstate behavior for Chinese Invasion Short InvasionStep ;var incremented when scripting associated with Invasion stuff has run short Task1Complete ;set to 1 if player uses speech on Timmy ;set to 2 if player tricks Timmy with brochure ;set to 3 if player beats Timmy up ;set to 4 if player kills one of Timmy's parents ;set to 5 if player rigs robot to "haunt" Timmy's room short Task2Complete ;set to 1 if player convinces Janet Roger is cheating ;set to 2 if player successfully plants underwear in the basement ;set to 4 if player kills Martha with Janet's rolling pin ;set to 5 if player convinces Janet Roger wears underwear short Task3Complete ;set to 1 if player rigs the oven to explode ;set to 2 if player puts rollerskate on the stairs ;set to 3 if Chandelier falls on Mabel ;set to 4 if robot is reprogrammed float StageUpdateTimer;timer used to update to stage 5 after arriving in Tranquility Lane Begin GameMode ;scripting for moving player from Vault112 to Tranquility Lane worldspace ;also handles changing player into kid and giving him the appropriate clothes ;PlayerInChair var is set on MQ04PlayerPodScript if ( PlayerInChair == 2 ) if ( Player.GetInCell Vault112a == 1 ) ;While we're running this block, set any followers to Waiting so they don't wander into Tranquility Lane if ( JerichoRef.HasBeenHired == 1 ) set JerichoRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( CharonRef.HasBeenHired == 1 ) set CharonRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( DogmeatRef.HasBeenHired == 1 ) set DogmeatRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( ButchRef.HasBeenHired == 1 ) set ButchRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( CloverRef.HasBeenHired == 1 ) set CloverRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( RL3Ref.HasBeenHired == 1 ) set RL3Ref.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( NewFemChildRef.HasBeenHired == 1 ) set NewFemChildRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( MQ08FawkesRef.HasBeenHired == 1 ) set MQ08FawkesRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif if ( StarPaladinCrossRef.HasBeenHired == 1 ) set StarPaladinCrossRef.Waiting to 1 set Followers.FollowerWaitingLeaveDay to ( GameDaysPassed + FollowerWaitTime ) endif SetLocationSpecificLoadScreensOnly 1 Player.Dispel Stealthboy Player.moveto MQ04StartBench Player.RemoveAllItems MQ04PlayerContainerRef Player.RemoveItem Pipboy 1 1 Player.RemoveItem PipboyGlove 1 1 SetPCYoung 1 player.AgeRace -1 player.additem MQ04PlayerOutfit 1 1 player.equipitem MQ04PlayerOutfit 1 1 Set StageUpdateTimer to 3 Set PlayerInTL to 1 Set PlayerInChair to -1 ; RImod MQ04PodFadetoWhiteISFX ;finally, disable both Enclave Radio and GNR broadcast refs while the player is in TL if ( RadioGalaxyNewsRef01.GetDisabled == 0 ) RadioGalaxyNewsRef01.Disable endif if ( RadioGalaxyNewsRef02.GetDisabled == 0 ) RadioGalaxyNewsRef02.Disable endif RadioEnclaveRef.Disable PipBoyRadioOff EnablePlayerControls AutoDisplayObjectives 1 endif endif ;run a timer after arriving to give the initial stage update if ( GetStage MQ04 == 0 ) if ( Player.GetInWorldSpace TranquilityLane == 1 ) if ( StageUpdateTimer > 0 ) set StageUpdateTimer to ( StageUpdateTimer - GetSecondsPassed ) else if ( GetStage MQ03 >= 10 ) SetStage MQ03 200 endif SetStage MQ04 5 SetQuestDelay MQ04 0 endif endif endif ;update variable on Old Lady Dithers if the player enters the abandoned house if ( OldLadyDithersRef.talk == 0 ) if ( Player.GetinCell TLAbandonedHouse == 1 ) set OldLadyDithersRef.Talk to 1 endif endif ;---------------------FAILSAFE SCRIPTING----------------------- if ( InvasionStep == 0 ) if ( MQ04.Invasion == 1 ) GeorgeNeusbaumRef.Resurrect 0 GeorgeNeusbaumRef.Moveto MQ04GeorgeInvasionMarker PatNeusbaumRef.Resurrect 0 PatNeusbaumRef.Moveto MQ04PatInvasionMarker MabelHendersonRef.Resurrect 0 MabelHendersonRef.Moveto MQ04MabelInvasionMarker OldLadyDithersRef.Resurrect 0 OldLadyDithersRef.Moveto MQ04DithersInvasionMarker MarthaSimpsonRef.Resurrect 0 MarthaSimpsonRef.Moveto MQ04MarthaInvasionMarker RogerRockwellRef.Resurrect 0 RogerRockwellRef.Moveto MQ04RogerInvasionMarker JanetRockwellRef.Resurrect 0 JanetRockwellRef.Moveto MQ04JanetInvasionMarker if ( TimmyNeusbaumRef.GetDisabled == 0 ) TimmyNeusbaumRef.Disable endif MQ04SoldierRef1.Enable MQ04SoldierRef2.Enable MQ04SoldierRef3.Enable MQ04SoldierRef4.Enable MQ04SoldierRef5.Enable MQ04SoldierRef6.Enable MQ04SoldierRef7.Enable MQ04ExitDoorActRef.Enable SetStage MQ04 70 RewardKarma 300 set InvasionStep to 1 endif elseif ( InvasionStep == 1 ) SetQuestDelay MQ04 0 set InvasionStep to 2 endif ;---------------------TASK 1 SCRIPTING---------------------------- ;if either of Timmy's parents are dead, and he's not yet on the correct package, have him re-evaluate ;(added because Timmy doesn't seem to be getting the message... he's kind of a slow kid.) if ( GetStage MQ04 == 15 ) if ( TimmyNeusbaumRef.DadDead == 1 ) if ( TimmyNeusbaumRef.GetCurrentAIPackage != MQ04TimmyMournGeorge ) TimmyNeusbaumRef.EVP endif elseif ( TimmyNeusbaumRef.MomDead == 1 ) if ( TimmyNeusbaumRef.GetCurrentAIPackage != MQ04TimmyMournPat ) TimmyNeusbaumRef.EVP endif endif endif ;--------------------TASK 2 SCRIPTING--------------------------- ;-------------------TASK 3 SCRIPTING------------------------ ;Update quest stage when player has killed Mabel with rollerskate ;Note that Task3Complete is set in Mabel's script, not here if ( MabelHendersonRef.push == 1 ) if ( MabelHendersonRef.SkatePlaced == -1 ) if ( GetStage MQ04 == 35 ) SetStage MQ04 40 set MabelHendersonRef.push to -1 endif endif endif ;If Mabel is killed by the robot, flag the var and update the quest if ( GetStage MQ04 == 35 ) if ( TLHendersonRobotRef.IsKiller MabelHendersonRef == 1 ) Set MQ04.Task3Complete to 4 SetStage MQ04 40 endif endif ;--------TASK 4 SCRIPTING--------------------------------------- ;Update Objective when player has slasher outfit and knife in inventory ;Force equip both mask and knife, since player can't access inventory if ( GetStage MQ04 == 45 ) if ( Player.GetItemCount MQ04SlasherMask > 0 ) if ( Player.GetItemCount MQ04SlasherKnife > 0 ) SetStage MQ04 50 endif endif endif ;Update Objective again when all target NPCs are dead (note that var is incremented through scripts on the individual NPCs) if ( GetStage MQ04 == 50 ) if ( SlasherKills >= 8 ) SetStage MQ04 60 endif endif ;Update Quest Stage and Objective when player has exited Tranquility Lane if ( GetStage MQ04 == 70 ) if ( Player.GetInCell Vault112a == 1 ) SetStage MQ04 75 endif endif End
один ругается на waiting другой на hired
Отредактировано 7755 (2010-02-13 16:45:47)
надеюсь, перед добавлением компаньона в скрипт ты создал все объекты, которые в скрипте используются. Ты пакеты создал? Квесты и скрипты дополнил? Диалоги всё настроил?Нужно по порядку данные в разные скрипты добавлять.
Посмотри скрипт компаньона Джерико JerichoScript. Там увидишь Waiting.
Этот способ создания компаньонов геморойный.Лучше как Игорь описывал, либо через глобальгые переменные ну и если ты в скриптах шариш то можно тока ими обойтись.
Отредактировано BloodBear (2010-02-13 17:49:06)
Опишу кратко процесс. Я создал компаньона BloodBear.
Добавил данные о компаньоне в квест Followers и FollowersHireBloodBear.
Добавил компаньона в список NPCFollowersLIST.
Добавил данные в скрипт FollowersQuestSCRIPT.
SCN FollowersQuestSCRIPT
short PlayerHasFollower
float FollowerWaitingLeaveDay
float DogmeatWaitingLeaveDay
;***Charon Variables***
short PlayerOwnsContract ;Set by buying the contract from Ahzrukhal or by killing him.
short CharonHired ;Set to 1 when the player hires Charon after obtaining his contract.
short CharonFired ;Player has dismissed Charon
;***Fawkes Variables***
short FawkesHired
short FawkesFired
;***Jericho Variables***
short JerichoConvince
short JerichoHired
short JerichoFired
;***BloodBear Variables***
short BloodBearHired
short BloodBearFired
;***Star Paladin Cross Variables***
short CrossDismissedPlayer
short StarPaladinCrossHasBeenHired
short StarPaladinCrossHired
short StarPaladinCrossFired
;***Butch Variables***
short ButchHired
short ButchFired
;***RL3 Variables***
short RL3Hired
short RL3Fired
;***Clover Variables***
short CloverHired
short CloverFired
;***Dogmeat Variables***
short DogmeatHired
short DogmeatFired
BEGIN GameMode
if ( DogmeatHired == 1 )
if ( DogmeatREF.Waiting == 1 ) && ( DogmeatREF.GetInCell MegatonPlayerHouse == 0 ) && ( DogmeatREF.GetInCell Tenpenny03Player == 0 )
if ( DogmeatWaitingLeaveDay <= GameDaysPassed )
if ( DogmeatREF.GetInSameCell Player == 0 )
set Followers.DogmeatHired to 0
set Followers.DogmeatFired to 1
set DogmeatREF.Waiting to 0
DogmeatREF.SetPlayerTeammate 0
DogmeatREF.RemoveFromFaction FollowerFaction
DogmeatREF.evp
ShowMessage FollowerMessageLeaveDogmeat
DogmeatREF.MoveTo EvacuationMarker
set DogmeatWaitingLeaveDay to 0
endif
endif
endif
endif
if ( PlayerHasFollower == 1 )
if ( ButchREF.Waiting == 1 ) && ( ButchREF.GetInCell MegatonPlayerHouse == 0 ) && ( ButchREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( ButchREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.ButchHired to 0
set Followers.ButchFired to 1
set ButchREF.Waiting to 0
set ButchREF.IsFollowingDefault to 1
set ButchREF.IsFollowingLong to 0
set ButchREF.IsFollowingShort to 0
ButchREF.SetCombatStyle FollowersCombatStyleRanged
set ButchREF.CombatStyleRanged to 1
set ButchREF.CombatStyleMelee to 0
ButchREF.SetPlayerTeammate 0
ButchREF.RemoveFromFaction FollowerFaction
ButchREF.evp
ShowMessage FollowerMessageLeaveButch
ButchREF.MoveTo MuddyRudderMarker
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( CharonREF.Waiting == 1 ) && ( CharonREF.GetInCell MegatonPlayerHouse == 0 ) && ( CharonREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( CharonREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.CharonHired to 0
set Followers.CharonFired to 1
set CharonREF.Waiting to 0
set CharonREF.IsFollowingDefault to 1
set CharonREF.IsFollowingLong to 0
set CharonREF.IsFollowingShort to 0
CharonREF.SetCombatStyle FollowersCombatStyleRanged
set CharonREF.CombatStyleRanged to 1
set CharonREF.CombatStyleMelee to 0
CharonREF.SetFactionRank TeammateFaction -1
CharonREF.RemoveFromFaction FollowerFaction
CharonREF.SetPlayerTeammate 0
CharonREF.evp
ShowMessage FollowerMessageLeaveCharon
CharonREF.MoveTo UnderworldNinthCircleMARKER
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( CloverREF.Waiting == 1 ) && ( CloverREF.GetInCell MegatonPlayerHouse == 0 ) && ( CloverREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( CloverREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.CloverHired to 0
set Followers.CloverFired to 1
set CloverREF.Waiting to 0
set CloverREF.IsFollowingDefault to 1
set CloverREF.IsFollowingLong to 0
set CloverREF.IsFollowingShort to 0
CloverREF.SetCombatStyle FollowersCombatStyleRanged
set CloverREF.CombatStyleRanged to 1
set CloverREF.CombatStyleMelee to 0
CloverREF.SetPlayerTeammate 0
CloverREF.RemoveFromFaction FollowerFaction
CloverREF.evp
ShowMessage FollowerMessageLeaveClover
CloverREF.MoveTo ParadiseFallsEulogysPadMARKER
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( JerichoREF.Waiting == 1 ) && ( JerichoREF.GetInCell MegatonPlayerHouse == 0 ) && ( JerichoREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( JerichoREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.JerichoHired to 0
set Followers.JerichoFired to 1
set JerichoREF.Waiting to 0
set JerichoREF.IsFollowingDefault to 1
set JerichoREF.IsFollowingLong to 0
set JerichoREF.IsFollowingShort to 0
JerichoREF.SetCombatStyle FollowersCombatStyleRanged
set JerichoREF.CombatStyleRanged to 1
set JerichoREF.CombatStyleMelee to 0
JerichoREF.SetPlayerTeammate 0
JerichoREF.SetFactionRank TeammateFaction -1
JerichoREF.RemoveFromFaction FollowerFaction
JerichoREF.evp
ShowMessage FollowerMessageLeaveJericho
JerichoREF.MoveTo MegatonOutsideMarker
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( BloodBearREF.Waiting == 1 ) && ( BloodBearREF.GetInCell MegatonPlayerHouse == 0 ) && ( BloodBearREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( BloodBearREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers. BloodBearHired to 0
set Followers. BloodBearFired to 1
set BloodBearREF.Waiting to 0
set BloodBearREF.IsFollowingDefault to 1
set BloodBearREF.IsFollowingLong to 0
set BloodBearREF.IsFollowingShort to 0
BloodBearREF.SetCombatStyle FollowersCombatStyleRanged
set BloodBearREF.CombatStyleRanged to 1
set BloodBearREF.CombatStyleMelee to 0
BloodBearREF.SetPlayerTeammate 0
BloodBearREF.SetFactionRank TeammateFaction -1
BloodBearREF.RemoveFromFaction FollowerFaction
BloodBearREF.evp
ShowMessage FollowerMessageLeaveBloodBear
BloodBearREF.MoveTo MegatonOutsideMarker
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( MQ08FawkesREF.Waiting == 1 ) && ( MQ08FawkesREF.GetInCell MegatonPlayerHouse == 0 ) && ( MQ08FawkesREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( MQ08FawkesREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.FawkesHired to 0
set Followers.FawkesFired to 1
set MQ08FawkesREF.Waiting to 0
set MQ08FawkesREF.IsFollowingDefault to 1
set MQ08FawkesREF.IsFollowingLong to 0
set MQ08FawkesREF.IsFollowingShort to 0
MQ08FawkesREF.SetCombatStyle FollowersCombatStyleRanged
set MQ08FawkesREF.CombatStyleRanged to 1
set MQ08FawkesREF.CombatStyleMelee to 0
MQ08FawkesREF.SetPlayerTeammate 0
MQ08FawkesREF.RemoveFromFaction FollowerFaction
MQ08FawkesREF.evp
ShowMessage FollowerMessageLeaveFawkes
MQ08FawkesREF.MoveTo FawkesMuseumWaitMarker
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( RL3REF.Waiting == 1 ) && ( RL3REF.GetInCell MegatonPlayerHouse == 0 ) && ( RL3REF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( RL3REF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.RL3Hired to 0
set Followers.RL3Fired to 1
set RL3REF.Waiting to 0
set RL3REF.IsFollowingDefault to 1
set RL3REF.IsFollowingLong to 0
set RL3REF.IsFollowingShort to 0
RL3REF.SetCombatStyle FollowersCombatStyleRanged
set RL3REF.CombatStyleRanged to 1
set RL3REF.CombatStyleMelee to 0
RL3REF.SetPlayerTeammate 0
RL3REF.RemoveFromFaction FollowerFaction
RL3REF.evp
ShowMessage FollowerMessageLeaveRL3
RL3REF.MoveTo CCBazaarMarker
set FollowerWaitingLeaveDay to 0
endif
endif
endif
if ( StarPaladinCrossREF.Waiting == 1 ) && ( StarPaladinCrossREF.GetInCell MegatonPlayerHouse == 0 ) && ( StarPaladinCrossREF.GetInCell Tenpenny03Player == 0 )
if ( FollowerWaitingLeaveDay <= GameDaysPassed )
if ( StarPaladinCrossREF.GetInSameCell Player == 0 )
set Followers.PlayerHasFollower to 0
set Followers.StarPaladinCrossHired to 0
set Followers.StarPaladinCrossFired to 1
set StarPaladinCrossREF.Waiting to 0
set StarPaladinCrossREF.IsFollowingDefault to 1
set StarPaladinCrossREF.IsFollowingLong to 0
set StarPaladinCrossREF.IsFollowingShort to 0
StarPaladinCrossREF.SetCombatStyle FollowersCombatStyleMelee
set StarPaladinCrossREF.CombatStyleRanged to 1
set StarPaladinCrossREF.CombatStyleMelee to 0
StarPaladinCrossREF.SetPlayerTeammate 0
StarPaladinCrossREF.RemoveFromFaction FollowerFaction
StarPaladinCrossREF.evp
ShowMessage FollowerMessageLeaveStarPaladinCross
StarPaladinCrossREF.MoveTo CitScribeMarker04
set FollowerWaitingLeaveDay to 0
endif
endif
endif
endif
END
Повесил такой скрипт на квест FollowersHireBloodBear
SCN FollowersBloodBearQuestSCRIPT
short PlayerKnowsBloodBearPast
short PlayerTurnedDownBloodBear
short BloodBearAcceptedOffer
short BloodBearTurnedDownOffer
short BloodBearMadeOffer
short BloodBearHired
short BloodBearFired
Создал пакеты,диалоги.
Повесил скрипт на компаньона:
scn BloodBearSCRIPT
short HasBeenHired
short WeaponOut
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
short DoOnce
BEGIN OnDeath
set DialogueMegaton.BloodBearDead to 1
END
BEGIN OnCombatEND
if ( GetPlayerTeammate == 1 )
resethealth
restoreav perceptioncondition 100
restoreav endurancecondition 100
restoreav leftattackcondition 100
restoreav leftmobilitycondition 100
restoreav rightattackcondition 100
restoreav rightmobilitycondition 100
endif
END
BEGIN OnDeath
if ( Followers.BloodBearHired == 1 )
set Followers.PlayerHasFollower to 0
set Followers.BloodBearHired to 0
ShowMessage FollowerMessageDeadBloodBear
endif
END
через глобальные делал, это для собачек простейших, мне же нужно человека - непися с функциями собаки(искать патроны химию и т.п.) запарился в квестах с диалогами возиться... вот пример:
хочу чтоб непись открыл мне свой инвентарь, в квесте неписю делаю топик с фразой ОБМЕНЯЕМСЯ ЭКИПИРОВКОЙ на что он должен ответить ДА и должно открытся окно обмена инвентарем. но у меня непись просто говорит ДА и все, продолжение диалога , а окно инвентаря не открывается... скрин 200кб все отмечено тоже что и у стандартых партнеров...
тутор о создании квеста читал и о создании торговца, но в топиках этих так не разобрался блин
хочу чтоб непись открыл мне свой инвентарь
в result script (end) пропиши openteammatecontainer
и "давай обменяемся экиперовкой" скопируй в prompt
Info refusal не нужно (если по умолчанию не ставится)
Отредактировано Alex1881 (2010-02-17 01:26:13)
щас попробую, но както странно у всех openteammatecontainer в первом окне, а мне значит во второе...
Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Мод Компаньон