From 9707a81210437bb09b67d2f6ca3c1349ac01e7b3 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Tue, 3 Nov 2020 16:48:44 -0500 Subject: [PATCH] Obj Var instead of Guid check --- Classic/scripts/autoexec/zDarkTigerAFK.cs | 142 +++++++++++----------- 1 file changed, 73 insertions(+), 69 deletions(-) diff --git a/Classic/scripts/autoexec/zDarkTigerAFK.cs b/Classic/scripts/autoexec/zDarkTigerAFK.cs index 05ee253..a96fe45 100644 --- a/Classic/scripts/autoexec/zDarkTigerAFK.cs +++ b/Classic/scripts/autoexec/zDarkTigerAFK.cs @@ -10,12 +10,12 @@ $dtVar::AFKTimeout = 1; $dtVar::AFKtime = 60000 * 2; // Run from List Only instead of All clients on the server. 1 is yes, 0 is no $dtVar::ListOnly = 1; -// Add clients who are normally AFK +// Add clients who are normally AFK $dtVar::AFKList[$AFKCount++] = ""; $dtVar::AFKList[$AFKCount++] = ""; // Loop Check Timer // How often do you want a AFKLoop. 1000 * 30 is 30 seconds -$dtVar::AFKloop = 1000 * 30; +$dtVar::AFKloop = 1000 * 30; //////////////////////////////////////////////////////////////////////////////// @@ -29,14 +29,14 @@ else package DT_AFKPackage { - + function CreateServer( %mission, %missionType ) { parent::CreateServer( %mission, %missionType ); - + //Call to start AFKTimeout update DT_AFKtimeoutLoop(); - + // Prevent package from being activated if it is already if(!isActivePackage(DT_AFKOverrides) && $dtVar::ListOnly) activatePackage(DT_AFKOverrides); @@ -54,14 +54,14 @@ package DT_AFKOverrides function GameConnection::onConnect(%client, %name, %raceGender, %skin, %voice, %voicePitch) { Parent::onConnect(%client, %name, %raceGender, %skin, %voice, %voicePitch); - + DT_AFKStatusConnect(%client); } function GameConnection::onDrop(%client, %reason) { Parent::onDrop(%client, %reason); - + DT_AFKStatusDrop(%client); } @@ -71,74 +71,78 @@ function GameConnection::onDrop(%client, %reason) function DT_AFKStatusConnect(%client) { - for(%x = 1; %x <= $AFKCount; %x++) + if($dtVar::AFKtime != 0 && !$Host::TournamentMode) //0 minutes disables { - %guid = $dtVar::AFKList[%x]; - if(%client.guid $= %guid && %guid !$= "") + for(%x = 1; %x <= $AFKCount; %x++) { - $DT_AFKStatus = "ACTIVE"; - $DT_AFKListCount++; + %guid = $dtVar::AFKList[%x]; + if(%client.guid $= %guid && %guid !$= "") + { + $DT_AFKStatus = "ACTIVE"; + $DT_AFKListCount++; + %client.dtAFK = 1; + } } } } function DT_AFKStatusDrop(%client) { - for(%x = 1; %x <= $AFKCount; %x++) - { - %guid = $dtVar::AFKList[%x]; - if(%client.guid $= %guid && %guid !$= "") - $DT_AFKListCount = $DT_AFKListCount - 1; - } + if(%client.dtAFK) + $DT_AFKListCount = $DT_AFKListCount - 1; + + // for(%x = 1; %x <= $AFKCount; %x++) + // { + // %guid = $dtVar::AFKList[%x]; + // if(%client.guid $= %guid && %guid !$= "") + // $DT_AFKListCount = $DT_AFKListCount - 1; + // } + if($DT_AFKListCount $= 0) //Wont set IDLE until all List Clients are off the server $DT_AFKStatus = "IDLE"; } //////////////////////////////////////////////////////////////////////////////// - + function DT_AFKtimeoutLoop() -{ +{ //echo($DT_AFKStatus); - + switch$($DT_AFKStatus) { case ACTIVE: - if($dtVar::AFKtime != 0 && !$Host::TournamentMode) - { //0 minutes disables - if($dtVar::ListOnly) + if($dtVar::AFKtime != 0 && !$Host::TournamentMode) //0 minutes disables { - for(%i = 0; %i < ClientGroup.getCount(); %i ++) - { - %client = ClientGroup.getObject(%i); - for(%x = 1; %x <= $AFKCount; %x++) - { - %guid = $dtVar::AFKList[%x]; - if(!%client.isAIControlled() && isObject(%client.player) && %client.player.getState() !$= "Dead" ) - { - if(%client.guid $= %guid && %guid !$= "") + if($dtVar::ListOnly) + { + for(%i = 0; %i < ClientGroup.getCount(); %i ++) + { + %client = ClientGroup.getObject(%i); + if(%client.dtAFK) + { + if(!%client.isAIControlled() && isObject(%client.player) && %client.player.getState() !$= "Dead") + AFKChk(%client); + } + } + } + else + { + for(%i = 0; %i < ClientGroup.getCount(); %i ++) + { + %client = ClientGroup.getObject(%i); + if(!%client.isAIControlled() && isObject(%client.player) && %client.player.getState() !$= "Dead") AFKChk(%client); - } - } - } - } - else - { - for(%i = 0; %i < ClientGroup.getCount(); %i ++) - { - %client = ClientGroup.getObject(%i); - if(!%client.isAIControlled() && isObject(%client.player) && %client.player.getState() !$= "Dead") - AFKChk(%client); - } - } - } - case IDLE: - //Do Nothing + } + } + } + case IDLE: + //Do Nothing } - - if(isEventPending($dtVar::AFKloopSchedule)) + + if(isEventPending($dtVar::AFKloopSchedule)) cancel($dtVar::AFKloopSchedule); - $dtVar::AFKloopSchedule = schedule($dtVar::AFKloop, 0, "DT_AFKtimeoutLoop"); + $dtVar::AFKloopSchedule = schedule($dtVar::AFKloop, 0, "DT_AFKtimeoutLoop"); } //////////////////////////////////////////////////////////////////////////////// @@ -146,7 +150,7 @@ function DT_AFKtimeoutLoop() function AFKChk(%client) { if(%client.player.curTransform $= %client.player.getTransform()) - {//checks to see if there position and rotation are the same. + {//checks to see if there position and rotation are the same. %client.player.afkTimer += $dtVar::AFKloop; if(%client.player.afkTimer >= $dtVar::AFKtime) { @@ -158,8 +162,8 @@ function AFKChk(%client) { %client.player.afkTimer = 0;//reset if moving } - - %client.player.curTransform = %client.player.getTransform();//save current transform + + %client.player.curTransform = %client.player.getTransform();//save current transform } //////////////////////////////////////////////////////////////////////////////// @@ -169,29 +173,29 @@ function DefaultGame::AFKForceObserver(%game, %client) //make sure we have a valid client... if (%client <= 0) return; - + // first kill this player if(%client.player) %client.player.scriptKill(0); - + if( %client.respawnTimer ) cancel(%client.respawnTimer); - + %client.respawnTimer = ""; - + // remove them from the team rank array %game.removeFromTeamRankArray(%client); - + // place them in observer mode %client.lastObserverSpawn = -1; %client.observerStartTime = getSimTime(); - + %client.camera.getDataBlock().setMode( %client.camera, "observerFly" ); messageClient(%client, 'MsgClientJoinTeam', '\c2You have been placed into observer mode due to inactivity.', %client.name, game.getTeamName(0), %client, 0 ); logEcho(%client.nameBase@" (cl "@%client@") was forced into observer mode due to inactivity"); %client.lastTeam = %client.team; - + if($Host::TournamentMode) { if(!$matchStarted) @@ -208,25 +212,25 @@ function DefaultGame::AFKForceObserver(%game, %client) } } } - + // switch client to team 0 (observer) %client.team = 0; %client.player.team = 0; setTargetSensorGroup( %client.target, %client.team ); %client.setSensorGroup( %client.team ); - + // set their control to the obs. cam %client.setControlObject( %client.camera ); commandToClient(%client, 'setHudMode', 'Observer'); - + // display the hud //displayObserverHud(%client, 0); updateObserverFlyHud(%client); - + messageAllExcept(%client, -1, 'MsgClientJoinTeam', '\c2%1 has been placed into observer mode due to inactivity.', %client.name, game.getTeamName(0), %client, 0 ); - + updateCanListenState( %client ); - + // call the onEvent for this game type %game.onClientEnterObserverMode(%client); //Bounty uses this to remove this client from others' hit lists -} \ No newline at end of file +}