Jump to content

NPC Bark Help


DingleMcDonglic

Recommended Posts

I haven't the slightest idea on how NPC barks work in the geck, but if i want to give my companion a little more depth/life I'm going to need to do it the right way. So after looking up tutorials and what not with no help in sight I decided to see how Obsidian did it. I saw the way they got Cass's barks to work so I tried myself. I am using powerup and I get no saving errors so the script "seems" fine. My guy just won't talk when he's in certain in-game regions.

If someone could help me by pointing out the flaw in my script that would be very helpful.

SCN aaaDarrenDukeTimerGeneralBarkScript

Float	ftimer
Float	fRandom

Int		iCounter
Short	bDarrenDukeBarked
Short	bQuestDelayFast
Short bRegionSection								;Regions  divided into different script sections.  An error occurs if sections exceeds 10 if/else nests.

Float	fSpeakTime

Begin GameMode

	If aaaDarrenDukeID.bDarrenDukeHired != 1																				
		Return
	ElseIf Player.IsInCombat == 1
		Return
	ElseIf (bDarrenDukeBarked == 1) && (GameDaysPassed >= fSpeakTime + 1.0)
			Set bDarrenDukeBarked to 0
 			Return
;;;Region Section																								;Goodsprings first
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapGoodspringsRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationGoodsprings 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return																								;Jacobstown Region Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapJacobstownRegion == 1					
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationJacobstown 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return																								;NCRCF Region next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapNCRCFRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationNCRCF 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																								;Fiend Region next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion vMapVault3FiendRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationFiends 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																								;Nellis Region next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion vMapNellisAFBRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationNellis 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																								;Boulder City next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapBoulderCityRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationBoulderCity 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																								;Camp Forlorn Hope next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapCampForlornHopeRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationForlornHope 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																								
	ElseIf bDarrenDukeBarked == 0 && (IsPlayerInRegion vMapRSAlphaRegion == 1 || IsPlayerInRegion vMapRSBravoRegion == 1 || IsPlayerInRegion vMapRSCharlieRegion == 1 || IsPlayerInRegion vMapRSDeltaRegion == 1 || IsPlayerInRegion vMapRSEchoRegion == 1 || IsPlayerInRegion vMapRSFoxtrotRegion == 1)
			Set fRandom to GetRandomPercent
			If fRandom <= 50			
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationRangerStation 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return
			Else																										;50% chance that NCRlocation line is barked
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationNCR 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return
			Endif	
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapTheFortRegion == 1					;Fort Region
			Set fRandom to GetRandomPercent
			If fRandom <= 50																						;50% chance that Fort line is barked
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationFort 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return
			Else																										;50% chance that Fort2 line is barked
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationFort2 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return																								;Bittersprings Region next
			Endif
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMAPBitterSpringsRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationBitterSprings 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Hoover Dam next	
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion MapHooverDam == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationHooverDam 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Mojave Outpost next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion vMapMojaveOutpostRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationMojaveOutpost 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Red Rock Canyon next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerInRegion VMapRedRockCanyonRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationRedRock 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Nipton next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion vMapNiptonRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationNipton 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Cottonwood Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion vMapCottonwoodCove == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationCottonwood 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Black Mountain Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion vMapBlackMtnRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationBlackMt 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Quarry Junction Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion vMapQuarryJunctionRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationQuarryJunction 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Hidden Valley Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion VMapHiddenValleyRegion == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationHiddenValley 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return 																									;Primm Next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion MapPrimm == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationPrimm 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return																									;Camp Golf next
	ElseIf bDarrenDukeBarked == 0 && IsPlayerinRegion vMapRegionCampGolf == 1
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationCampGolf 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return																									;The Strip next
	ElseIf bDarrenDukeBarked == 0 && Player.GetInWorldSpace TheStripWorldNew == 1
			Set fRandom to GetRandomPercent
			If fRandom <= 50																						;50% chance that Fort line is barked
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationStrip 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return
			Else																										;50% chance that Fort2 line is barked
				DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationStreet 1
				Set fSpeakTime to GameDaysPassed
				Set bDarrenDukeBarked to 1
				Return
			Endif																										;Freeside next
	ElseIf bDarrenDukeBarked == 0 && (Player.GetInWorldSpace FreesideWorld == 1 || Player.GetInWorldSpace FreesideNorthWorld == 1)
			DarrenDukeREF.SayTo DarrenDukeREF aaaDarrenDukeLocationFreeside 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return
;;;;;;;;;
	Elseif bDarrenDukeBarked == 0
			DarrenDukeREF.SayTo player aaaDarrenDukeGeneralIdle 1
			Set fSpeakTime to GameDaysPassed
			Set bDarrenDukeBarked to 1
			Return
	EndIf
End

Thanks...

Link to comment
Share on other sites

  • Recently Browsing   0 members

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