Zone not registering pawn for state

Discussions about Coding and Scripting
Post Reply
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Zone not registering pawn for state

Post by ANUBITEK »

Edit:
Edited the log only, switched over to my model pawn so I don't have to sift through animation code log notes.

I'm having an issue with having my Pawn remain registered as "in this current zone" in code, the player is detected as they enter the zone, but they don't stay registered according to my log. What should be happening is they are found, their camera that they are associated with via assignments from the camera is found, the camera is associated with this zone, and code is passed to the camera based on conditions. But as I try to put my code into the state that it needs to be ('Active'), something is happening and the Player isn't being detected past ActorEntered. The following is all I get regarding the log involving the player. I should be getting a ScriptLog that says ("Active") every tick (for testing purposes), but I am not seeing a single ("Active") in my log. Can anyone help me with this?
ScriptLog: ActorEntered1 Autoplay.RPG_TestMale3D0
ScriptLog: ActorEntered2 Autoplay.RPG_TestMale3D0
ScriptLog: ActorLeaving1
ScriptLog: Inactive
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorLeaving1
ScriptLog: ActorEntered1 Autoplay.RPG_TestMale3D0
ScriptLog: ActorEntered2 Autoplay.RPG_TestMale3D0
ScriptLog: ActorLeaving1
ScriptLog: Inactive
Actor Entered Leaving Code

Code: Select all

//=============================================================================
// General functionality
//=============================================================================
event ActorEntered( actor Other )
{
	if ( RPG_PlatformPawn(Other)!=None && RPG_PlatformPawn(Other).bIsPlayer )
	{
		LocalPlayer = RPG_PlatformPawn(Other);
		log("ActorEntered1" @ LocalPlayer);
		if ( ( LocalPlayer != none && ViewPort(LocalPlayer.Player) != none ) &&
			LocalPlayer.bHasActiveCamera && LocalPlayer.ActiveCamera != none )
		{
			log("ActorEntered2" @ LocalPlayer);
			ActiveCamera = LocalPlayer.ActiveCamera;
			GoToState('Active');
			if ( Self.Event != '' )	
				TriggerEvent( Event, self, RPG_PlatformPawn(Other) );
		}
	}
	super.ActorEntered( Other );
}

// @Override
event ActorLeaving( actor Other )
{
	if ( RPG_PlatformPawn(Other) == None )
	{
		log("ActorLeaving1");
		LocalPlayer = none;
		GoToState('Inactive');
	}
	super.ActorLeaving( Other );
}
State Code

Code: Select all

//=============================================================================
// State Code
//=============================================================================
auto state Inactive
{
	function BeginState()
	{
		log("Inactive");
		return;
	}
}
	
state Active
{
	event Tick( float DeltaTime )
	{
	[...]
	}

	[...]

Begin:
	log("Active");
	SetCameraMode();
	if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) || 
		( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
		|| ActiveCamera == none)
		GoToState('Inactive');
	Sleep(PositionUpdateRate);
	GoTo('Begin');
}
Full Actor Code For Reference

Code: Select all

//=============================================================================
// RPG_CameraOpZone.
//=============================================================================
class RPG_CameraOpZone extends ZoneInfo;

enum ECamMode
{
	CM_Track1,
	CM_Track2,
    CM_CustomCamDistance1,
	CM_CustomCamDistance2,
	CM_MoveTransition
};
var ECamMode	NewCameraMode;

enum EVect1CamMode
{
	CM_None,
	CM_Track1,
	CM_Track2,
    CM_CustomCamDistance1,
	CM_CustomCamDistance2
};
var() EVect1CamMode	Vect1CamMode;

enum EVect2CamMode
{
	CM_None,
	CM_Track1,
	CM_Track2,
    CM_CustomCamDistance1,
	CM_CustomCamDistance2
};
var() EVect2CamMode	Vect2CamMode;

enum EVect3CamMode
{
	CM_None,
	CM_Track1,
	CM_Track2,
    CM_CustomCamDistance1,
	CM_CustomCamDistance2
};
var() EVect3CamMode	Vect3CamMode;

enum EVect4CamMode
{
	CM_None,
	CM_Track1,
	CM_Track2,
    CM_CustomCamDistance1,
	CM_CustomCamDistance2
};
var() EVect4CamMode	Vect4CamMode;

var RPG_PlatformPawn	LocalPlayer;
var RPG_Camera 			ActiveCamera;

//var() byte		TriggerGroupID; // Used for when CameraSwitchers are to be used as a trigger.  Used to prevent triggers from constantly firing.
//var() float		TriggerGroupScanDist;
//var() float		SmoothFactor; // To be described later
var byte			SharedCameraID;
var() float			TrackCustomDistance;
var() float			PositionUpdateRate;
var() rotator		NewRotation;
var vector			NewCamLoc; // For fixed or X,Y track mode, if Zero, use camera's current

//var() bool		bSmoothTransition;
var() bool		bCamXAxisLock;
var() bool		bCamYAxisLock;
var() bool		bCamZAxisLock;
var() bool		bRestorePitch;
var() bool		bRestoreYaw;
var() bool		bRestoreRoll;
var() bool		bInstantLocTransition;

//=====================================
// What SharedCameraID will be set to
//=====================================
var(RPG_CamLoc1) byte		CamID1;
var(RPG_CamLoc2) byte		CamID2;
var(RPG_CamLoc3) byte		CamID3;
var(RPG_CamLoc4) byte		CamID4;

//=====================================
// New Camera Position
//=====================================
var(RPG_CamLoc1) vector		CamAngle1;
var(RPG_CamLoc2) vector		CamAngle2;
var(RPG_CamLoc3) vector		CamAngle3;
var(RPG_CamLoc4) vector		CamAngle4;

//=====================================
// Position Pawn Needs To Be In For Camera Position Change
//=====================================
var(RPG_CamLoc1) vector		MoveCamVector1;
var(RPG_CamLoc2) vector		MoveCamVector2;
var(RPG_CamLoc3) vector		MoveCamVector3;
var(RPG_CamLoc4) vector		MoveCamVector4;

//=====================================
// Should Position Be Checked
//=====================================
var(RPG_CamLoc1) bool		bCheckCamVector1;
var(RPG_CamLoc2) bool		bCheckCamVector2;
var(RPG_CamLoc3) bool		bCheckCamVector3;
var(RPG_CamLoc4) bool		bCheckCamVector4;

//=====================================
// Checks Player's X Coordinate
//	Pos: If Player X is Greater Than Position X
//	Neg: If Player X Is Less Than Position X
//=====================================
var(RPG_CamLoc1) bool		bCheckPlayer_X_Pos_1;
var(RPG_CamLoc2) bool		bCheckPlayer_X_Pos_2;
var(RPG_CamLoc3) bool		bCheckPlayer_X_Pos_3;
var(RPG_CamLoc4) bool		bCheckPlayer_X_Pos_4;
var(RPG_CamLoc1) bool		bCheckPlayer_X_Neg_1;
var(RPG_CamLoc2) bool		bCheckPlayer_X_Neg_2;
var(RPG_CamLoc3) bool		bCheckPlayer_X_Neg_3;
var(RPG_CamLoc4) bool		bCheckPlayer_X_Neg_4;

//=====================================
// Checks Player's Y Coordinate
//=====================================
var(RPG_CamLoc1) bool		bCheckPlayer_Y_Pos_1;
var(RPG_CamLoc2) bool		bCheckPlayer_Y_Pos_2;
var(RPG_CamLoc3) bool		bCheckPlayer_Y_Pos_3;
var(RPG_CamLoc4) bool		bCheckPlayer_Y_Pos_4;
var(RPG_CamLoc1) bool		bCheckPlayer_Y_Neg_1;
var(RPG_CamLoc2) bool		bCheckPlayer_Y_Neg_2;
var(RPG_CamLoc3) bool		bCheckPlayer_Y_Neg_3;
var(RPG_CamLoc4) bool		bCheckPlayer_Y_Neg_4;

//=====================================
// Checks Player's Z Coordinate
//=====================================
var(RPG_CamLoc1) bool		bCheckPlayer_Z_Pos_1;
var(RPG_CamLoc2) bool		bCheckPlayer_Z_Pos_2;
var(RPG_CamLoc3) bool		bCheckPlayer_Z_Pos_3;
var(RPG_CamLoc4) bool		bCheckPlayer_Z_Pos_4;
var(RPG_CamLoc1) bool		bCheckPlayer_Z_Neg_1;
var(RPG_CamLoc2) bool		bCheckPlayer_Z_Neg_2;
var(RPG_CamLoc3) bool		bCheckPlayer_Z_Neg_3;
var(RPG_CamLoc4) bool		bCheckPlayer_Z_Neg_4;

//=============================================================================
// General functionality
//=============================================================================
event ActorEntered( actor Other )
{
	if ( RPG_PlatformPawn(Other)!=None && RPG_PlatformPawn(Other).bIsPlayer )
	{
		LocalPlayer = RPG_PlatformPawn(Other);
		log("ActorEntered1" @ LocalPlayer);
		if ( ( LocalPlayer != none && ViewPort(LocalPlayer.Player) != none ) &&
			LocalPlayer.bHasActiveCamera && LocalPlayer.ActiveCamera != none )
		{
			log("ActorEntered2" @ LocalPlayer);
			ActiveCamera = LocalPlayer.ActiveCamera;
			GoToState('Active');
			if ( Self.Event != '' )	
				TriggerEvent( Event, self, RPG_PlatformPawn(Other) );
		}
	}
	super.ActorEntered( Other );
}

// @Override
event ActorLeaving( actor Other )
{
	if ( RPG_PlatformPawn(Other) == None )
	{
		log("ActorLeaving1");
		LocalPlayer = none;
		GoToState('Inactive');
	}
	super.ActorLeaving( Other );
}

//=============================================================================
// State Code
//=============================================================================
auto state Inactive
{
	function BeginState()
	{
		log("Inactive");
		return;
	}
}
	
state Active
{
	event Tick( float DeltaTime )
	{
		if ( bCheckCamVector1 == true )
		{
			if ( bCheckPlayer_X_Pos_1 == true && (LocalPlayer.Location.X >= MoveCamVector1.X) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
			if ( bCheckPlayer_X_Neg_1 == true && (LocalPlayer.Location.X <= MoveCamVector1.X) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
			if ( bCheckPlayer_Y_Pos_1 == true && (LocalPlayer.Location.Y >= MoveCamVector1.Y) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
			if ( bCheckPlayer_Y_Neg_1 == true && (LocalPlayer.Location.Y <= MoveCamVector1.Y) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
			if ( bCheckPlayer_Z_Pos_1 == true && (LocalPlayer.Location.Z >= MoveCamVector1.Z) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
			if ( bCheckPlayer_Z_Neg_1== true && (LocalPlayer.Location.Z <= MoveCamVector1.Z) )
			{
				NewCamLoc = CamAngle1;
				SharedCameraID = CamID1;
			}
		}
		if ( bCheckCamVector2 == true )
		{
			if ( bCheckPlayer_X_Pos_2 == true && (LocalPlayer.Location.X >= MoveCamVector2.X) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
			if ( bCheckPlayer_X_Neg_2 == true && (LocalPlayer.Location.X <= MoveCamVector2.X) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
			if ( bCheckPlayer_Y_Pos_2 == true && (LocalPlayer.Location.Y >= MoveCamVector2.Y) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
			if ( bCheckPlayer_Y_Neg_2 == true && (LocalPlayer.Location.Y <= MoveCamVector2.Y) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
			if ( bCheckPlayer_Z_Pos_2 == true && (LocalPlayer.Location.Z >= MoveCamVector2.Z) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
			if ( bCheckPlayer_Z_Neg_2 == true && (LocalPlayer.Location.Z <= MoveCamVector2.Z) )
			{
				NewCamLoc = CamAngle2;
				SharedCameraID = CamID2;
			}
		}
		if ( bCheckCamVector3 == true )
		{
			if ( bCheckPlayer_X_Pos_3 == true && (LocalPlayer.Location.X >= MoveCamVector3.X) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
			if ( bCheckPlayer_X_Neg_3 == true && (LocalPlayer.Location.X <= MoveCamVector3.X) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
			if ( bCheckPlayer_Y_Pos_3 == true && (LocalPlayer.Location.Y >= MoveCamVector3.Y) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
			if ( bCheckPlayer_Y_Neg_3 == true && (LocalPlayer.Location.Y <= MoveCamVector3.Y) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
			if ( bCheckPlayer_Z_Pos_3 == true && (LocalPlayer.Location.Z >= MoveCamVector3.Z) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
			if ( bCheckPlayer_Z_Neg_3 == true && (LocalPlayer.Location.Z <= MoveCamVector3.Z) )
			{
				NewCamLoc = CamAngle3;
				SharedCameraID = CamID3;
			}
		}
		if ( bCheckCamVector4 == true )
		{
			if ( bCheckPlayer_X_Pos_4 == true && (LocalPlayer.Location.X >= MoveCamVector4.X) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
			if ( bCheckPlayer_X_Neg_4 == true && (LocalPlayer.Location.X <= MoveCamVector4.X) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
			if ( bCheckPlayer_Y_Pos_4 == true && (LocalPlayer.Location.Y >= MoveCamVector4.Y) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
			if ( bCheckPlayer_Y_Neg_4 == true && (LocalPlayer.Location.Y <= MoveCamVector4.Y) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
			if ( bCheckPlayer_Z_Pos_4 == true && (LocalPlayer.Location.Z >= MoveCamVector4.Z) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
			if ( bCheckPlayer_Z_Neg_4 == true && (LocalPlayer.Location.Z <= MoveCamVector4.Z) )
			{
				NewCamLoc = CamAngle4;
				SharedCameraID = CamID4;
			}
		}
	}
	
	function EndState()
	{
		super.EndState();
	}

Begin:
	log("Active");
	SetCameraMode();
	if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) || 
		( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
		|| ActiveCamera == none)
		GoToState('Inactive');
	Sleep(PositionUpdateRate);
	GoTo('Begin');
}

//=============================================================================
// Camera Adjustment
//=============================================================================
function SetCameraMode()
{
	log("SetCameraMode");
	if ( (LocalPlayer == none || LocalPlayer.bDeleteMe || LocalPlayer.Health <= 0) || 
		( LocalPlayer.ActiveCamera == none && LocalPlayer.bHasActiveCamera == false )
		|| ActiveCamera == none)
		return;
	//============================================================================================
	if ( bCheckCamVector1 )
	{
		switch Vect1CamMode
		{
			case CM_None:
				break;
			case CM_Track1:
				NewCameraMode = CM_Track1;
				break;
			case CM_Track2:
				NewCameraMode = CM_Track2;
				break;
			case CM_CustomCamDistance1:
				NewCameraMode = CM_CustomCamDistance1;
				break;
			case CM_CustomCamDistance2:
				NewCameraMode = CM_CustomCamDistance2;
				break;
			default:
				break;
		}
	}
	//======================
	if ( bCheckCamVector2 )
	{
		switch Vect2CamMode
		{
			case CM_None:
				break;
			case CM_Track1:
				NewCameraMode = CM_Track1;
				break;
			case CM_Track2:
				NewCameraMode = CM_Track2;
				break;
			case CM_CustomCamDistance1:
				NewCameraMode = CM_CustomCamDistance1;
				break;
			case CM_CustomCamDistance2:
				NewCameraMode = CM_CustomCamDistance2;
				break;
			default:
				break;
		}
	}
	//======================
	if ( bCheckCamVector3 )
	{
		switch Vect3CamMode
		{
			case CM_None:
				break;
			case CM_Track1:
				NewCameraMode = CM_Track1;
				break;
			case CM_Track2:
				NewCameraMode = CM_Track2;
				break;
			case CM_CustomCamDistance1:
				NewCameraMode = CM_CustomCamDistance1;
				break;
			case CM_CustomCamDistance2:
				NewCameraMode = CM_CustomCamDistance2;
				break;
			default:
				break;
		}
	}
	//======================
	if ( bCheckCamVector4 )
	{
		switch Vect4CamMode
		{
			case CM_None:
				break;
			case CM_Track1:
				NewCameraMode = CM_Track1;
				break;
			case CM_Track2:
				NewCameraMode = CM_Track2;
				break;
			case CM_CustomCamDistance1:
				NewCameraMode = CM_CustomCamDistance1;
				break;
			case CM_CustomCamDistance2:
				NewCameraMode = CM_CustomCamDistance2;
				break;
			default:
				break;
		}
	}
	//======================
	switch NewCameraMode
	{
		case CM_Track1:
			ActiveCamera.CamCueue = CM_Track1;
			break;
		case CM_Track2:
			ActiveCamera.CamCueue = CM_Track2;
			break;
		case CM_CustomCamDistance1:
			ActiveCamera.CamCueue = CM_CustomCamDistance1;
			break;
		case CM_CustomCamDistance2:
			ActiveCamera.CamCueue = CM_CustomCamDistance2;
			break;
		case CM_MoveTransition:
			ActiveCamera.CamCueue = CM_MoveTransition;
		default:
			break;
	}
	//============================================================================================
	if ( LocalPlayer.CurCamID != SharedCameraID )
	{
		log("SetCameraMode1");
		ActiveCamera.TargetDistance = TrackCustomDistance; //Linear distance interpolation
		ActiveCamera.DesiredRotation = NewRotation; //Linear rotation interpolation (layer 1) towards this orientation
		ActiveCamera.bCamXAxisLock = bCamXAxisLock;
		ActiveCamera.bCamYAxisLock = bCamYAxisLock; 
		ActiveCamera.bCamZAxisLock = bCamZAxisLock;
		ActiveCamera.bRestorePitch = bRestorePitch;
		ActiveCamera.bRestoreYaw = bRestoreYaw;
		ActiveCamera.bRestoreRoll = bRestoreRoll;
			
		if ( bInstantLocTransition )
		{
			log("SetCameraMode2");
			if ( ActiveCamera.CameraMode == CM_MoveTransition )
				ActiveCamera.CamCueueAdjust();
			ActiveCamera.SetLocation( NewCamLoc);
			ActiveCamera.SetRotation( ActiveCamera.DesiredRotation);
			ActiveCamera.ViewRotation = ActiveCamera.DesiredRotation;
			ActiveCamera.CamDistance = TrackCustomDistance;
			ActiveCamera.CamCueueAdjust();
			ActiveCamera.Tick(0.0); //Force immediate camera update
		}
		if ( !bInstantLocTransition )
		{
			log("SetCameraMode3");
			if ( ActiveCamera.CameraMode != CM_MoveTransition )
				ActiveCamera.CameraMode = CM_MoveTransition;
			if ( ActiveCamera.bTransitionMoving == false )
			{
				ActiveCamera.NewLoc = NewCamLoc;
				ActiveCamera.SetRotation( ActiveCamera.DesiredRotation);
				ActiveCamera.ViewRotation = ActiveCamera.DesiredRotation;
				ActiveCamera.CamDistance = TrackCustomDistance;
			}
		}
		LocalPlayer.OldCamID = LocalPlayer.CurCamID;
		LocalPlayer.CurCamID = SharedCameraID;
	}
}

defaultproperties
{
	bHidden=true
	bEdShouldSnap=True
	DrawType=DT_Sprite
	Texture=Texture'Engine.S_SpecialEvent'
	Style=STY_Masked
}
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Zone not registering pawn for state

Post by sektor2111 »

I might be wrong but some of your tech have... a sort of useless complexity. I'm trying to say that "MAP" might have zone leaks or other bugs and then things are not gonna be funny. For sure strategy at this point has to be changed with something safer and more simple. By triggering in state code I'm not sure if things are in perfect timing all the time, else I like states but... not switching through them a lot.
Just saying...

I'm trying to imagine a camera reacting as player in state CheatFlying aka Ghost. Believe or not, in that state Pawn has an insane power for finding actors using PATHS - default Engine method. Testing if owner is reachable and if not Move to find it, and probably those paths needs only links without special considerations as long as using <PHYS_Flying> and <bCanFly>, Pawn technically can reach where it wants, and your camera might follow player with no pain. You won't need any "awesome" code, natives in C++ are working faster enough for this job, and pathing is way handy for a new comer mapper than special triggering and tags and...
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Re: Zone not registering pawn for state

Post by ANUBITEK »

2 things: one, this actor was at one point working decently, but I changed from two functions to one function and state code and it doesn't operate now. Two, if you really think path navigation could help, I will absolutely take links to read mate.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
ANUBITEK
Adept
Posts: 261
Joined: Sun Dec 28, 2014 1:10 am
Location: Anubitek

Re: Zone not registering pawn for state

Post by ANUBITEK »

I'm sorry for the double post, mobile is being absolute asses right now. Just wanted to point out the camera is a scriptedpawn, so it has access to all scriptedpawn functions.
<<| http://uncodex.ut-files.com/ |>>

Code reference for UGold, UT99, Unreal2, UT2k3, UT3
Additional Beyond Unreal Wiki Links
wiki.beyondunreal.com/Legacy:Console_Bar
wiki.beyondunreal.com/Exec_commands#Load
wiki.beyondunreal.com/Legacy:Exec_Directive#Loading_Other_Packages
wiki.beyondunreal.com/Legacy:Config_Vars_And_.Ini_Files
wiki.beyondunreal.com/Legacy:INT_File
User avatar
sektor2111
Godlike
Posts: 6410
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Zone not registering pawn for state

Post by sektor2111 »

That's good because ScriptedPawn are moving to spot (Location) not really to an actor, so it can be moved to Location + vect(0,0,50), So in higher spot an seeing player and moving by itself + advantages around LastSeenPos and LastSeingPos as a fallback or such.
I discovered this by pathing some crap and it did not work normally, but by using cheatFlying (ghost), things went different, Pawn flier is a more advanced seeker than ground units... Else there are pathing hints making links where usually Nodes are not linked (recommended more to speak in private about pathing insanity because there, it is not a black tutorial about this stuff, but is a bit grey). Else camera will look over owner all time...
Post Reply