The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Мод Компаньон


Мод Компаньон

Сообщений 31 страница 60 из 69

31

Да он пошол!!! Спасиб всё работает.Я уже все квесты просмотрел а всё было из-за нескольких пакетов следования.
:rofl:  :crazyfun:  :cool:

Отредактировано Никроман (2009-07-03 06:30:59)

0

32

ЭЭЭЭ А зачем ты так много переменных наплодил? И два блока OnDeath?
И это, тебе придется не только один пакет следования делать, три как минимум. Ну а если смотреть на кол-во переменных, как я их понимаю, то и все шесть... :)

Отредактировано Wulf (2009-07-02 22:02:44)

+1

33

Я просто делал компаньона на примере Джерико.Щас буду сокращать скрипты и т.д.
Я Гекком тока месяц занимаюсь,а компаньёнами 5 дней.Ща буду компаньону добавлять фунеции как у собаки типа ищи патроны,лекарства,людей.
Как там идут дела с тутором по созданию компаньона? :crazy:  :crazyfun:

0

34

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

0

35

Wulf написал(а):

ЭЭЭЭ А зачем ты так много переменных наплодил?

В каком смысле много, я делал как у всех компаньонов в fallout 3.
А их можно как-то сократить?
:shine:

Люди а как занести своего компаньона в NPCFollowerLIST? Он вроде у меня там был а ща пропал.Чёт у меня Гекк иногда поглючивает.

Отредактировано Никроман (2009-07-03 06:33:47)

0

36

Никроман написал(а):

А их можно как-то сократить?

Угу, еще как можно. Вот эти переменные

short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting

можно в одну затолкать... Например.

Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFaction.

0

37

Да... я задолбался пакеты делать мож написать как сократить скрипт.Как именно в одну затолкать:
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
Чтоб один пакет следования был. :writing:

Вроде ты пишешь тутор по созданию NPC компаньона?Как идут дела с написанием?

Отредактировано Никроман (2009-07-04 23:46:14)

0

38

Wulf написал(а):

Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFaction

Смотри я занёс своего компаньона в Followers а к нему прикреплен NPCFollowerLIST.Как мне своего компаньона прикрепить?
Я его чёт не могу занести в этот список.
А фракцию я создал и сделал дружественной игроку.
Я кокда смотрю все диалоги игрока там щас не появляються фразы которые занесены в Follower.После того как у меня Гекк вылетел.Тоесть команды типа:Поменять тактику,поменять экипировку.

0

39

Хм, у меня есть к тебе два предложения... :)
1. Если ты делаешь по аналогии со стандартными напарниками, то по подробней их расковырять, лучше всего с листочком бумаги и ручкой.
2. Подождать, когда я докарябую вторую часть тутора (так как лето, то в течении 2-х недель :) )

ЗЫ: И да, судя по переменным у тебя три пакета следования, один ожидания и два комбат стиля. Тебе чего в конечном итоге нужно то?

ЗЗЫ: Перед тем как делать мод, рекомендую хотяб основные моменты мода расписывать на бумажке. И тебе понятно, что нужно, и вопросы другим можно более менее продуктивней задавать, в случае затруднительных моментов.

+1

40

Смотри а можно сделать так если не заносить своего компаньона в Followers а создать свой или сразу эти функции занести в FollowersHireNikroman? :cool:

0

41

Написание тутора по компаньонам животным в самом разгаре. Основа уже написана и реализована:
http://i032.radikal.ru/0907/40/a8dcfd7d6864t.jpghttp://s47.radikal.ru/i117/0907/01/4fc42a619dcdt.jpg
Возможно будут какие-то пожелания? О чем написать, какие возможности реализовать? Только в разумных пределах :)

0

42

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

0

43

А зачем в туторе ты написал:
"Essential – ставим отметку (таким образом делаем нашего компаньона бессмертным)"
Зачем делать компаньона бессмертным?
Если его можно убить это было бы реалистичнее.

И можно прикрепить скрипт:
Если яо-гай мертв чтобы выводилось сообщение что он мертв.

BEGIN OnDeath
   
ShowMessage FollowerMessageDeadCompanien

END

0

44

Death написал(а):

А зачем в туторе ты написал:"Essential – ставим отметку (таким образом делаем нашего компаньона бессмертным)"Зачем делать компаньона бессмертным?Если его можно убить это было бы реалистичнее.

Соответственно если не ставить отметку - он не будет бессмертным. У человека, который читает туториал и что-то по нему, делает есть выбор. Его дело, как поступать со своим компаньоном - делать его бессмертным или нет. Мое дело лишь показать как именно это сделать :)

Death написал(а):

И можно прикрепить скрипт:Если яо-гай мертв чтобы выводилось сообщение что он мертв.
            BEGIN OnDeath    ShowMessage FollowerMessageDeadCompanien
            END

Тогда уж не прикрепить, а добавить в основной скрипт отдельным блоком. Хорошее замечание, в следующей версии добавлю этот момент

0

45

Ошибка или опечатка у тебя в туторе.
Цитирую:
«Следующая закладка – Factions (фракции). Удаляем все, что есть в этом окне. Дальше идем в Character>Faction… В списке справа кликаем правой клавишей и в появившемся меню выбираем New (новый). В появившемся окошке New Form Editor ID вводим название новой фракции, например, IgorRaFalloutCompanion. Жмем Ок.»

Почему справа?
У меня слева. Вот скрин:

0

46

Нужно ставить не Neutral, а Friend.
Я сделал компаньона Когтя смерти и выставил параметр Neutral  как написано у тебя, Коготь стал светиться не зеленым как друг, а красным как враг.  Он не стал выполнять мои команды.
Я выставил параметр Friend, и все стало работать.

0

47

Вот мой компаньон Когтик смерти:Я добавил немного функций:

0

48

Такс... во-первых пользуемся кнопкой "Изменить", а не мультипостим, и во-вторых изображения лучше заливать вот так:
Размещение изображений на форуме

Теперь по сути :)

Death написал(а):

Ошибка или опечатка у тебя в туторе

Естественно опечатка

Death написал(а):

Нужно ставить не Neutral, а Friend.Я сделал компаньона Когтя смерти и выставил параметр Neutral  как написано у тебя, Коготь стал светиться не зеленым как друг, а красным как враг.  Он не стал выполнять мои команды.Я выставил параметр Friend, и все стало работать

Если ставить Friend возможны проблемы с атакой компаньона. так или иначе этот момент нужно тестировать. У меня выставлен Neutral и все прекрастно работает. При этом на вот это

Death написал(а):

Коготь стал светиться не зеленым как друг, а красным как враг.  Он не стал выполнять мои команды

данный параметр не влияет. Советую посмотреть другие настройки компаньона.

0

49

А зачем ты сделал компаньона через Message можно ведь сделать как у всех компаньонов нормальные диалоги.
Я поэкспериминтировал через пару дней выложу полноценного компаньона животного.
Вот скрин:

0

50

Death написал(а):

А зачем ты сделал компаньона через Message можно ведь сделать как у всех компаньонов нормальные диалоги

Потому что считаю, что общаться с животными через диалоги как то... гм... ненормально. Для желающих делать компаньонов через диалоги будет другой туториал. Точнее вторая часть уже существующего о создании компаньона-НПС

0

51

Igor_Ra написал(а):

Потому что считаю, что общаться с животными через диалоги как то... гм... ненормально. Для желающих делать компаньонов через диалоги будет другой туториал. Точнее вторая часть уже существующего о создании компаньона-НПС

Да разговаривать с животными это уж слишком :rofl:

0

52

А вот ещё один способ создания компаньона как делал я
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 будет следовать за игроком

Возможно данный способ не идеален, но как вариант можно использовать

0

53

Никроман написал(а):

Wulf написал(а):Да и зачем тебе NPCFollowerLIST? Сделай неписю фракцию и сделай ее дружественной PlayerFactionСмотри я занёс своего компаньона в Followers а к нему прикреплен NPCFollowerLIST.Как мне своего компаньона прикрепить?Я его чёт не могу занести в этот список.А фракцию я создал и сделал дружественной игроку.Я кокда смотрю все диалоги игрока там щас не появляються фразы которые занесены в Follower.После того как у меня Гекк вылетел.Тоесть команды типа:Поменять тактику,поменять экипировку.

все верно, список неписей которые могут быть компаньенами в NPCFollowerLIST

открываешь NPCFollowerLIST а затем ПЕРЕТАСКИВАЕШЬ мышкой из objeckt window -> actor -> npc -> просто хватаешь мышкой нужного человека и тащишь.

для создания компаньена типа родного надо в двух квестах его прописать? первый Followers , а второй FollowersHire*** где *** имя непися больше нигде не надо?

насчет любимой мною темы КРОВИ... я научился создавать кровь для неписей созданную кровь нельзя использовать, а вот для CREATURE можно, если кому то это интерестно то напишу мини тутор , может Igor_Ra добавит в свой тутор о создании компаньенов животных эту инфу..

Никроман

если сделал компаньена нпс с функциями собаки прислать мне есп файл можешь? в личку напиши.

0

54

Мне Никроман скидывал компаньона на базе собаки.Он просто сделал полную копиию собаки.Но выбрал другое животное. ;)

7755 написал(а):

если кому то это интерестно то напишу мини тутор

Пиши туторы лишними небывают. ;)

Отредактировано BloodBear (2010-02-13 13:39:41)

0

55

как смогу напишу значит. нашел еще один квест, в квестовом скрипте 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)

0

56

надеюсь, перед добавлением компаньона в скрипт ты создал все объекты, которые в скрипте используются. Ты пакеты создал? Квесты и скрипты дополнил? Диалоги всё настроил?Нужно по порядку данные в разные скрипты добавлять.

Посмотри скрипт компаньона Джерико JerichoScript. Там увидишь Waiting.

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

Отредактировано BloodBear (2010-02-13 17:49:06)

0

57

Опишу кратко процесс. Я создал компаньона 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

0

58

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

хочу чтоб непись открыл мне свой инвентарь, в квесте неписю делаю топик с фразой ОБМЕНЯЕМСЯ ЭКИПИРОВКОЙ на что он должен ответить ДА и должно открытся окно обмена инвентарем. но у меня непись просто говорит ДА и все, продолжение диалога , а окно инвентаря не открывается...  скрин 200кб все отмечено тоже что и у стандартых партнеров...

тутор о создании квеста читал и о создании торговца, но в топиках этих так не разобрался блин

0

59

7755 написал(а):

хочу чтоб непись открыл мне свой инвентарь

в result script (end) пропиши openteammatecontainer
и "давай обменяемся экиперовкой" скопируй в prompt
Info refusal не нужно (если по умолчанию не ставится)

Отредактировано Alex1881 (2010-02-17 01:26:13)

0

60

щас попробую, но както странно у всех openteammatecontainer в первом окне, а мне значит во второе...  :mad:

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Мод Компаньон