Jump to content

New Faction Vertibird Fast Travel Script problems


Vades82

Recommended Posts

Hello, as the title says, I'm presently trying to get a fast travel script to fire basically mirroring the in game BoS Vertibird grenade.

 

I have created said Item, and added the appropriate items and scripts. Modifying the BoSVertibirdSmoke script to fire using my keywords, and quest.

 

When the Grenade is tossed, it pops and then displays the cannot land VFTdisplay message.

 

From here, I created a quest pretty much identical to the VFT quest, including the scene. Modified every script I could find to use my quest. I eliminated the Quest Alias' for the Globals which determined Vertibird faction and Pilot and used VFTVertibird Ref to create a temp Vertibird at VFTstart and did the same with the VFTPilot.

 

The quest is almost identical to the VFT quest, except for scripts. Which are basically just converts to work with my grenade and quest.

 

The glaring issues I have right now are as follows:

 

1.The custom grenade script can't get the script to fire

 

2.In the scene tab, I cannot use Edit Actor Behavior properly, it won't save my changes and defaults on pause, instead of remaining on normal with no categories checked.

 

3. When Left Clicking on the quest and selecting the Use Report, Mine differs from the VFT, I have 6 items.

-MSTT - My Grenade

-and 5 packages

 

The VFT original Looks like this

-SMBN - AO_DogMeatFinf_Autonomous_Branch

-SMQN - BoSVertibirdFastTravelNode

-SMQN - AO_Companion_LoiterSearch_Quests

etc..default

 

It has it's scene listed in this report, mine does not and our Packages are not the same.

 

I have tried following every thread I can through the kit to mimic the VFT quest and I'm stuck. Any help or suggestions would be greatly appreciated. I'm a new to modding the creation kit.

 

this is my grenade script

 

 

Scriptname CABAirFieldEnable extends ObjectReference Const

Keyword Property MarineVertibirdGrenadeKW Auto Const
message Property VFTNoLandingMessage Auto Const
message Property VFTInProgressMessage Auto Const
message Property VFTDispatchMessage Auto Const
Quest Property VFTMarine Auto Const


event OnInit()

	if VFTMarine.IsRunning() == 1
		VFTInProgressMessage.Show()
	elseif VFTMarine.IsRunning() == 0 
		debug.tracefunction()
		debug.trace("VFT SMOKE WORKED")
		float[] safePoint = GetSafePosition()
		if safePoint
			; only show message if quest successfully starts
			if MarineVertibirdGrenadeKW.SendStoryEventAndWait(akLoc = GetCurrentLocation(), akRef1 = self)
				VFTDispatchMessage.Show()
			;WJS - make sure you get the No Landing message if the quest can't start
			Else
				debug.trace("VFT SMOKE FAILED")
				VFTNoLandingMessage.Show()
			endif
		else
			debug.trace("VFT SMOKE FAILED")
			VFTNoLandingMessage.Show()
		endif
	endif
endEvent 

 

 

 

Frag Script from quest stages

 

 

 

;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment
Scriptname CABmod:CABModFrag Extends Quest Hidden Const

;BEGIN FRAGMENT Fragment_Stage_0000_Item_00
Function Fragment_Stage_0000_Item_00()
;BEGIN CODE
SetStage(10)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0010_Item_00
Function Fragment_Stage_0010_Item_00()
;BEGIN CODE
Debug.Trace("GrenadeThrown")
Alias_VertibirdVFT.GetActorRef().SetGhost()
Alias_PilotVFT.GetActorRef().SetGhost()
utility.wait(2)
SetStage(20)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0020_Item_00
Function Fragment_Stage_0020_Item_00()
;BEGIN CODE
Alias_PilotVFT.TryToEnable()
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0025_Item_00
Function Fragment_Stage_0025_Item_00()
;BEGIN AUTOCAST TYPE VFTQuestScript
Quest __temp = self as Quest
VFTQuestScript kmyQuest = __temp as VFTQuestScript
;END AUTOCAST
;BEGIN CODE
; run timer to leave if player doesn't board
kmyQuest.StartWaitTimer()
SetObjectiveDisplayed(10,1)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0030_Item_00
Function Fragment_Stage_0030_Item_00()
;BEGIN CODE
;Fire off tutorial stage if we haven't before

if !Tutorial.GetStageDone(2300)
  Tutorial.SetStage(2300)
endif

SetObjectiveCompleted(10,1)

;unghost on landing
Alias_VertibirdVFT.GetActorRef().SetGhost(false)
Alias_PilotVFT.GetActorRef().SetGhost(false)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0040_Item_00
Function Fragment_Stage_0040_Item_00()
;BEGIN CODE
;unghost on landing
Alias_VertibirdVFT.GetActorRef().SetGhost()
Alias_PilotVFT.GetActorRef().SetGhost()
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0060_Item_00
Function Fragment_Stage_0060_Item_00()
;BEGIN CODE
; block activation of vertibird, and force passengers to dismount
actor vertibird = Alias_VertibirdVFT.GetActorRef()
vertibird.BlockActivation(true, true)

actor player = Game.GetPlayer()
if vertibird.IsBeingRiddenBy(player)
	player.Dismount()
endif

actor companion = Alias_companionvft.GetActorRef()
actor dogmeat = Alias_dogmeatvft.GetActorRef()
if companion && vertibird.IsBeingRiddenBy(companion)
	companion.dismount()
endif
if dogmeat && vertibird.IsBeingRiddenBy(dogmeat)
	dogmeat.dismount()
endif
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0100_Item_00
Function Fragment_Stage_0100_Item_00()
;BEGIN AUTOCAST TYPE companionvertibirdquestscript
Quest __temp = self as Quest
companionvertibirdquestscript kmyQuest = __temp as companionvertibirdquestscript
;END AUTOCAST
;BEGIN CODE
Alias_VertibirdVFT.GetActorRef().EvaluatePackage()

if IsObjectiveCompleted(10) == 0
SetObjectiveDisplayed(10,0)
endif

kmyQuest.EndSceneGhostCheck()

;Clear from Followers
if (Alias_VertibirdVFT.GetActorRef() == Alias_FollowerQuestVBird.GetActorRef())
Alias_FollowerQuestVBird.Clear()
endif

; block activation of vertibird, and force passengers to dismount
actor vertibird = Alias_VertibirdVFT.GetActorRef()
vertibird.BlockActivation(true, true)

actor player = Game.GetPlayer()
if vertibird.IsBeingRiddenBy(player)
	player.Dismount()
endif

actor companion = Alias_companionvft.GetActorRef()
actor dogmeat = Alias_dogmeatvft.GetActorRef()
if companion && vertibird.IsBeingRiddenBy(companion)
	companion.dismount()
endif
if dogmeat && vertibird.IsBeingRiddenBy(dogmeat)
	dogmeat.dismount()
endif

Stop()
;END CODE
EndFunction
;END FRAGMENT

;END FRAGMENT CODE - Do not edit anything between this and the begin comment

ReferenceAlias Property Alias_PilotVFT Auto Const

ReferenceAlias Property Alias_VertibirdVFT Auto Const

Scene Property VFTMarineScene Auto Const

Quest Property Tutorial Auto Const

ReferenceAlias Property Alias_CompanionVFT Auto Const

ReferenceAlias Property Alias_DogmeatVFT Auto Const

ReferenceAlias Property Alias_FollowerQuestVBird Auto Const 

 

 

Edited by Vader0311
Link to comment
Share on other sites

So, I figured out some of my problems and got the quest up and running.

 

-I needed to create a sm event node for the quest. (I didn't know the menu opened up like it did)

 

- It seems that all Alias's needed to be unique and in proper order and properly placed in the fragment script. i.e. VFTVertibird=(CustomName Used as alias)

 

-All Actions in the scene, needed to be unique for that specific quest.

 

 

My problem now, and it's so far a minor one, The Board Vertibird message that is displayed when the quest fires, is not displayed when the Vertibird lands, but when it is dispatched. This is different than that Standard script, which doesn't display this message until the craft lands and also displays a quest marker if it lands out of view. Also, the Actor Behavior will not properly update to not "Pause" on stages, and will not mirror the standard VFT Actor Behavior, Which is only end on Death. Any thoughts?

 

Also, the Pilot I have created to sit in the Vertibird does not appear, this may be because of how the Actor Templates, but as of now, I have an empty Vertibird Flying me around.

Edited by Vader0311
Link to comment
Share on other sites

  • 2 weeks later...

Bump,

 

I'm still unable to get my pilot to show up in my vertibird when I use my fast travel Script. Everything appears correct in my frag script

 

Scriptname CABmod:CABModFrag Extends Quest Hidden Const

;BEGIN FRAGMENT Fragment_Stage_0000_Item_00
Function Fragment_Stage_0000_Item_00()
;BEGIN CODE
SetStage(10)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0010_Item_00
Function Fragment_Stage_0010_Item_00()
;BEGIN CODE
Debug.Trace("GrenadeThrown")
Alias_Marine_VertibirdVFT.GetActorRef().SetGhost()
Alias_Marine_PilotVFT.GetActorRef().SetGhost()
utility.wait(2)
SetStage(20)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0020_Item_00
Function Fragment_Stage_0020_Item_00()
;BEGIN CODE
Alias_Marine_PilotVFT.TryToEnable()
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0025_Item_00
Function Fragment_Stage_0025_Item_00()
;BEGIN AUTOCAST TYPE VFTQuestScript
Quest __temp = self as Quest
VFTQuestScript kmyQuest = __temp as VFTQuestScript
;END AUTOCAST
;BEGIN CODE
; run timer to leave if player doesn't board
kmyQuest.StartWaitTimer()
SetObjectiveDisplayed(10,1)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0030_Item_00
Function Fragment_Stage_0030_Item_00()
;BEGIN CODE
;Fire off tutorial stage if we haven't before

if !Tutorial.GetStageDone(2300)
  Tutorial.SetStage(2300)
endif

SetObjectiveCompleted(10,1)

;unghost on landing
Alias_Marine_VertibirdVFT.GetActorRef().SetGhost(false)
Alias_Marine_PilotVFT.GetActorRef().SetGhost(false)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0040_Item_00
Function Fragment_Stage_0040_Item_00()
;BEGIN CODE
;unghost on landing
Alias_Marine_VertibirdVFT.GetActorRef().SetGhost()
Alias_Marine_PilotVFT.GetActorRef().SetGhost()
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0060_Item_00
Function Fragment_Stage_0060_Item_00()
;BEGIN CODE
; block activation of vertibird, and force passengers to dismount
actor vertibird = Alias_Marine_VertibirdVFT.GetActorRef()
vertibird.BlockActivation(true, true)

actor player = Game.GetPlayer()
if vertibird.IsBeingRiddenBy(player)
	player.Dismount()
endif

actor companion = Alias_Marine_companionvft.GetActorRef()
actor dogmeat = Alias_Marine_dogmeatvft.GetActorRef()
if companion && vertibird.IsBeingRiddenBy(companion)
	companion.dismount()
endif
if dogmeat && vertibird.IsBeingRiddenBy(dogmeat)
	dogmeat.dismount()
endif
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_Stage_0100_Item_00
Function Fragment_Stage_0100_Item_00()
;BEGIN AUTOCAST TYPE companionvertibirdquestscript
Quest __temp = self as Quest
companionvertibirdquestscript kmyQuest = __temp as companionvertibirdquestscript
;END AUTOCAST
;BEGIN CODE
Alias_Marine_VertibirdVFT.GetActorRef().EvaluatePackage()

if IsObjectiveCompleted(10) == 0
SetObjectiveDisplayed(10,0)
endif

kmyQuest.EndSceneGhostCheck()

;Clear from Followers
if (Alias_Marine_VertibirdVFT.GetActorRef() == Alias_FollowerQuestVBird.GetActorRef())
Alias_FollowerQuestVBird.Clear()
endif

; block activation of vertibird, and force passengers to dismount
actor vertibird = Alias_Marine_VertibirdVFT.GetActorRef()
vertibird.BlockActivation(true, true)

actor player = Game.GetPlayer()
if vertibird.IsBeingRiddenBy(player)
	player.Dismount()
endif

actor companion = Alias_Marine_companionvft.GetActorRef()
actor dogmeat = Alias_Marine_dogmeatvft.GetActorRef()
if companion && vertibird.IsBeingRiddenBy(companion)
	companion.dismount()
endif
if dogmeat && vertibird.IsBeingRiddenBy(dogmeat)
	dogmeat.dismount()
endif

Stop()
;END CODE
EndFunction
;END FRAGMENT



ReferenceAlias Property Alias_Marine_PilotVFT Auto Const

ReferenceAlias Property Alias_Marine_VertibirdVFT Auto Const

Scene Property VFTMarineScene Auto Const

Quest Property Tutorial Auto Const

ReferenceAlias Property Alias_Marine_CompanionVFT Auto Const

ReferenceAlias Property Alias_Marine_DogmeatVFT Auto Const

ReferenceAlias Property Alias_FollowerQuestVBird Auto Const

GlobalVariable Property AirFieldGlobal Auto Const
GlobalVariable Property AirFieldPilot Auto Const

 

 

 

The Pilots alias is properly created and states its created my pilot at tthe start marker.

 

It is below the vertibird in the alias list

Edited by Vader0311
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...