aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut')
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut142
1 files changed, 11 insertions, 131 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut
index 453e35ec2..d22f26277 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut
@@ -31,12 +31,6 @@ struct {
void function BaseGametype_Init_MPSP()
{
AddSpawnCallback( "info_intermission", SetIntermissionCamera )
- AddCallback_EntitiesDidLoad( SetSpecCams )
-
- RegisterSignal( "ObserverTargetChanged" )
- AddClientCommandCallback( "spec_next", ClientCommandCallback_spec_next )
- AddClientCommandCallback( "spec_prev", ClientCommandCallback_spec_prev )
- AddClientCommandCallback( "spec_mode", ClientCommandCallback_spec_mode )
AddPostDamageCallback( "player", AddToTitanDamageStat )
AddPostDamageCallback( "npc_titan", AddToTitanDamageStat )
@@ -50,19 +44,6 @@ void function SetIntermissionCamera( entity camera )
file.intermissionCamera = camera
}
-void function SetSpecCams()
-{
- // spec cams are called spec_cam1,2,3 etc by default, so this is the easiest way to get them imo
- int camNum = 1
- entity lastCam = null
- do {
- lastCam = GetEnt( "spec_cam" + camNum++ )
-
- if ( lastCam != null )
- file.specCams.append( lastCam )
- } while ( lastCam != null )
-}
-
void function CodeCallback_OnClientConnectionStarted( entity player )
{
// not a real player?
@@ -173,6 +154,17 @@ void function CodeCallback_OnClientConnectionCompleted( entity player )
svGlobal.levelEnt.Signal( "PlayerDidSpawn", { player = player } )
+ if ( GetConVarBool( "ns_allow_spectators" ) )
+ {
+ if ( IsPrivateMatchSpectator( player ) )
+ {
+ InitialisePrivateMatchSpectatorPlayer( player )
+ return
+ }
+ }
+ else
+ player.SetPersistentVar( "privateMatchState", 0 )
+
// handle spawning late joiners
if ( GetGameState() == eGameState.Playing )
{
@@ -492,118 +484,6 @@ void function RespawnAsTitan( entity player, bool manualPosition = false )
}
-// spectator stuff
-
-void function PlayerBecomesSpectator( entity player )
-{
- player.StartObserverMode( OBS_MODE_CHASE )
- player.StopPhysics()
-
- player.EndSignal( "OnRespawned" )
- player.EndSignal( "OnDestroy" )
- player.EndSignal( "PlayerRespawnStarted" )
-
- int targetIndex = 0
-
- OnThreadEnd( function() : ( player )
- {
- if ( IsValid( player ) )
- player.StopObserverMode()
- })
-
- while ( true )
- {
- table result = player.WaitSignal( "ObserverTargetChanged" )
-
- array<entity> targets
-
- targets.append( file.intermissionCamera )
- foreach( entity cam in file.specCams )
- targets.append( cam )
-
- array<entity> targetPlayers
- if ( IsFFAGame() )
- targetPlayers = GetPlayerArray_Alive()
- else
- targetPlayers = GetPlayerArrayOfTeam_Alive( player.GetTeam() )
-
- foreach( entity player in targetPlayers )
- targets.append( player )
-
- if ( result.next )
- targetIndex = ( targetIndex + 1 ) % targets.len()
- else
- {
- if ( targetIndex == 0 )
- targetIndex = ( targets.len() - 1 )
- else
- targetIndex--
- }
-
- if ( targetIndex >= targets.len() )
- targetIndex = 0
-
- entity target = targets[ targetIndex ]
-
- player.StopObserverMode()
- if ( player.IsWatchingSpecReplay() )
- player.SetSpecReplayDelay( 0.0 ) // clear spectator replay
-
- if ( target.IsPlayer() )
- {
- try
- {
- player.SetObserverTarget( target )
- player.StartObserverMode( OBS_MODE_CHASE )
- }
- catch ( ex ) {}
- }
- else
- {
- player.SetObserverModeStaticPosition( target.GetOrigin() )
- player.SetObserverModeStaticAngles( target.GetAngles() )
- player.StartObserverMode( OBS_MODE_STATIC )
- }
- player.StopPhysics()
- }
-}
-
-bool function ClientCommandCallback_spec_next( entity player, array<string> args )
-{
- if ( player.GetObserverMode() == OBS_MODE_CHASE || player.GetObserverMode() == OBS_MODE_STATIC || player.GetObserverMode() == OBS_MODE_IN_EYE )
- player.Signal( "ObserverTargetChanged", { next = true } )
-
- return true
-}
-
-bool function ClientCommandCallback_spec_prev( entity player, array<string> args )
-{
- if ( player.GetObserverMode() == OBS_MODE_CHASE || player.GetObserverMode() == OBS_MODE_STATIC || player.GetObserverMode() == OBS_MODE_IN_EYE )
- player.Signal( "ObserverTargetChanged", { next = false } )
-
- return true
-}
-
-bool function ClientCommandCallback_spec_mode( entity player, array<string> args )
-{
- // currently unsure how this actually gets called on client, works through console and has references in client.dll tho
- if ( player.GetObserverMode() == OBS_MODE_CHASE )
- {
- // set to first person spectate
- player.SetSpecReplayDelay( FIRST_PERSON_SPECTATOR_DELAY )
- player.SetViewEntity( player.GetObserverTarget(), true )
- player.StartObserverMode( OBS_MODE_IN_EYE )
- }
- else if ( player.GetObserverMode() == OBS_MODE_IN_EYE )
- {
- // set to third person spectate
- player.SetSpecReplayDelay( 0.0 )
- player.StartObserverMode( OBS_MODE_CHASE )
- }
-
- return true
-}
-
void function TryGameModeAnnouncement( entity player ) // only putting this here because it's here in gametype_sp lol
{