mirror of
https://github.com/ChocoTaco1/TacoServer.git
synced 2026-06-24 06:14:13 +00:00
111 lines
3.2 KiB
C#
111 lines
3.2 KiB
C#
// auto reteam clients that have drop
|
|
//script by: DarkTiger
|
|
//version 1.1
|
|
function tmMirrorTeam(%client){
|
|
if (!$Host::TournamentMode){
|
|
return;
|
|
}
|
|
|
|
if (%client.team <= 0){
|
|
return;
|
|
}
|
|
|
|
%guid = %client.guid;
|
|
if (%guid $= "" || %guid == 0){
|
|
return;
|
|
}
|
|
|
|
$TourneyRejoinTeam[%guid] = %client.team;
|
|
$TourneyRejoinSeq[%guid] = $missionSequence;
|
|
%client.recDrop = 1;
|
|
echo("TourneyRejoin: saved team info for " @ %client.nameBase
|
|
@ " (GUID:" @ %guid @ ") team=" @ %client.team
|
|
@ " seq=" @ $missionSequence);
|
|
}
|
|
|
|
function tmRejoin(%game, %client){
|
|
if (!$Host::TournamentMode || !$missionRunning){
|
|
return;
|
|
}
|
|
|
|
%guid = %client.guid;
|
|
if (%guid $= "" || %guid == 0){
|
|
return;
|
|
}
|
|
|
|
if ($TourneyRejoinSeq[%guid] $= ""){
|
|
return;
|
|
}
|
|
|
|
if ($TourneyRejoinSeq[%guid] != $missionSequence){
|
|
$TourneyRejoinTeam[%guid] = "";
|
|
$TourneyRejoinSeq[%guid] = "";
|
|
return;
|
|
}
|
|
|
|
%savedTeam = $TourneyRejoinTeam[%guid];
|
|
|
|
// Consume the record so a second reconnect goes through normal pick-team flow
|
|
$TourneyRejoinTeam[%guid] = "";
|
|
$TourneyRejoinSeq[%guid] = "";
|
|
|
|
echo("TourneyRejoin: restoring" SPC %client.nameBase SPC "(GUID:" @ %guid @ ") to team " @ %savedTeam);
|
|
|
|
|
|
%game.clientChangeTeam(%client, %savedTeam, 1, true);
|
|
|
|
//%game.clientJoinTeam( %client, %savedTeam, false );
|
|
|
|
if (!$MatchStarted && !$countdownStarted){
|
|
clearBottomPrint(%client);
|
|
%client.observerMode = "pregame";
|
|
%client.notReady = true;
|
|
centerprint(%client, "\nPress FIRE when ready.", 0, 3);
|
|
messageClient(%client, 'MsgClient',
|
|
'\c2You have been re-teamed to %1 after reconnecting. Press FIRE when ready.',
|
|
%game.getTeamName(%savedTeam));
|
|
}
|
|
else{
|
|
clearBottomPrint(%client);
|
|
%client.notReady = false;
|
|
commandToClient(%client, 'setHudMode', 'Standard');
|
|
messageClient(%client, 'MsgClient',
|
|
'\c2You have been re-teamed to %1 after reconnecting.',
|
|
%game.getTeamName(%savedTeam));
|
|
}
|
|
%client.isRejoin = 1;
|
|
messageAllExcept(%client, -1, 'MsgClient',
|
|
'\c2%1 reconnected and has been restored to %2.',
|
|
%client.name, %game.getTeamName(%savedTeam));
|
|
}
|
|
|
|
package TourneyRejoinPackage{
|
|
// Mirror team to global whenever a client joins a team
|
|
function DefaultGame::clientJoinTeam(%game, %client, %team, %respawn){
|
|
Parent::clientJoinTeam(%game, %client, %team, %respawn);
|
|
tmMirrorTeam(%client);
|
|
}
|
|
// Mirror team to global whenever a client changes team
|
|
function DefaultGame::clientChangeTeam(%game, %client, %team, %fromObs, %respawned){
|
|
Parent::clientChangeTeam(%game, %client, %team, %fromObs, %respawned);
|
|
tmMirrorTeam(%client);
|
|
}
|
|
|
|
function DefaultGame::clientMissionDropReady(%game, %client){
|
|
parent::clientMissionDropReady(%game, %client);
|
|
schedule(32, 0, "tmRejoin", %game, %client);
|
|
%client.isRejoin = 0;
|
|
}
|
|
function serverCmdPlayContentSet( %client ){
|
|
if(!%client.isRejoin){// block the join team ui if they are already ready on a team
|
|
parent::serverCmdPlayContentSet(%client);
|
|
}
|
|
else{
|
|
%client.isRejoin = 0;
|
|
}
|
|
}
|
|
};
|
|
|
|
if (!isActivePackage(TourneyRejoinPackage)){
|
|
activatePackage(TourneyRejoinPackage);
|
|
}
|