diff --git a/Classic/evoClassicTaco.vl2 b/Classic/evoClassicTaco.vl2 index fb131d4..bb0ba6e 100644 Binary files a/Classic/evoClassicTaco.vl2 and b/Classic/evoClassicTaco.vl2 differ diff --git a/Classic/prefs/serverPrefs.cs b/Classic/prefs/serverPrefs.cs index 02038ef..92a3fd5 100644 --- a/Classic/prefs/serverPrefs.cs +++ b/Classic/prefs/serverPrefs.cs @@ -60,7 +60,8 @@ $Host::DefenseTurret::MaxWptHeight = 10; $Host::DefenseTurret::Optional = 0; $Host::DefenseTurret::RequiredInTourney = 0; $Host::DMSLOnlyMode = 0; -$Host::EmptyServerReset = 0; +$Host::EmptyServerReset = 1; +$Host::EmptyServerResetTime = 120; $Host::EnableAutobalance = 1; $Host::EnableLakUnlimitedDJ = 1; $Host::EnableMortarTurret = 0; diff --git a/Classic/scripts/autoexec/GetTeamCounts.cs b/Classic/scripts/autoexec/GetTeamCounts.cs index 7a66c67..dc349f9 100644 --- a/Classic/scripts/autoexec/GetTeamCounts.cs +++ b/Classic/scripts/autoexec/GetTeamCounts.cs @@ -5,8 +5,6 @@ // and aspects within the server. // // -// To control whether the server auto resets when empty -// $Host::EmptyServerReset = 0; $GetCountsClientTeamChange = true; @@ -19,9 +17,6 @@ function CreateServer( %mission, %missionType ) parent::CreateServer( %mission, %missionType ); //Call for a GetTeamCount update GetTeamCounts( %game, %client, %respawn ); - - //Whether the server auto restarts when empty or not - $Host::Dedicated = $Host::EmptyServerReset; } }; diff --git a/Classic/scripts/autoexec/TimedServerReset.cs b/Classic/scripts/autoexec/TimedServerReset.cs new file mode 100644 index 0000000..83ea168 --- /dev/null +++ b/Classic/scripts/autoexec/TimedServerReset.cs @@ -0,0 +1,103 @@ +//Timed Server reset +//Reset Server after a certain time +// +//Time in Minutes +// $Host::EmptyServerResetTime = 120; +//To control whether the server auto resets when empty +// $Host::EmptyServerReset = 1; + +//Changed in evo Server.ovl +// +//function GameConnection::onDrop(%client, %reason) +//{ +// if(isObject(Game)) +// Game.onClientLeaveGame(%client); +// +// // make sure that tagged string of player name is not used +// if($CurrentMissionType !$= "SinglePlayer") +// messageAllExcept(%client, -1, 'MsgClientDrop', '\c1%1 has left the game.', getTaggedString(%client.name), %client); +// else +// messageAllExcept(%client, -1, 'MsgClientDrop', "", getTaggedString(%client.name), %client); +// +// if(isObject(%client.camera)) +// %client.camera.delete(); +// +// // z0dd - ZOD, 6/19/02. Strip the hit sound tags +// removeTaggedString(%client.playerHitWav); +// removeTaggedString(%client.vehicleHitWav); +// removeTaggedString(%client.name); +// removeTaggedString(%client.voiceTag); +// removeTaggedString(%client.skin); +// freeClientTarget(%client); +// +// echo("CDROP: " @ %client @ " " @ %client.getAddress()); +// $HostGamePlayerCount--; +// +// // z0dd - ZOD, 5/05/04. Add a bot for every client drop if balanced bots are set +// if( $Host::BotsEnabled ) +// { +// if($Host::ClassicBalancedBots) +// { +// if(!%client.isAIControlled()) +// { +// if (serverCanAddBot()) +// { +// aiConnectMultiple( 1, $Host::MinBotDifficulty, $Host::MaxBotDifficulty, -1 ); +// $HostGameBotCount++; +// } +// } +// } +// } +// if($Host::ClassicAutoPWEnabled) +// { +// if( ($HostGamePlayerCount < $Host::ClassicAutoPWPlayerCount) && +// (!$Host::TournamentMode || ($Host::TournamentMode && !$Host::EvoAutoPWTourneyNoRemove))) +// { +// AutoPWServer(0); +// } +// } +// if($Host::EvoFullServerPWEnabled) +// { +// if($HostGamePlayerCount == ($MaxPlayers - 1)) +// { +// FullServerPW(0); +// } +// } +// //if($Host::EvoNoBaseRapeEnabled) +// //{ +// //if(!$Host::TournamentMode && +// //(EvoPlayersOnTeamCount() < $Host::EvoNoBaseRapeClassicPlayerCount)) +// //{ +// //$EvoNoBaseRape = 1; +// //} +// //} +// // Reset the server if everyone has left the game +// +// if( $HostGamePlayerCount - $HostGameBotCount == 0 && $Host::EmptyServerReset && !$resettingServer && !$LoadingMission && !$TimedServerResetActive && $CurrentMissionType !$= $Host::MissionType ) +// { +// if($Evo::ETMMode) +// { +// $Evo::ETMMode = false; +// ETMreset(); +// } +// +// %resettime = $Host::EmptyServerResetTime * 60000; +// schedule(%resettime, 0, "ResetServerTimed"); +// $TimedServerResetActive = true; +// error(formatTimeString("HH:nn:ss") SPC "Timed Server Reset schedule started..." ); +// +// } +//} + +function ResetServerTimed() +{ + if($HostGamePlayerCount - $HostGameBotCount == 0 && $Host::EmptyServerReset && !$resettingServer && !$LoadingMission && $TimedServerResetActive) + schedule(10, 0, "resetServerDefaults"); + // Instead of simply resetting the defaults, reinitialize the + // entire server... + // ReallyQuit(); + else + error(formatTimeString("HH:nn:ss") SPC "Timed Server Reset schedule cancelled..." ); + + $TimedServerResetActive = false; +} \ No newline at end of file diff --git a/Classic/scripts/serverDefaults.cs b/Classic/scripts/serverDefaults.cs index 9138b3e..94bb2e8 100644 --- a/Classic/scripts/serverDefaults.cs +++ b/Classic/scripts/serverDefaults.cs @@ -177,6 +177,8 @@ $Host::MapPlayerLimits["Whiteout", "DM"] = "8 -1"; $Host::MapPlayerLimits["Whiteout", "Bounty"] = "8 -1"; //Taco Addons +$Host::EmptyServerReset = 1; //To control whether the server auto resets when empty +$Host::EmptyServerResetTime = 120; //Time in Minutes to reset an empty server $Host::EnableAutobalance = 1; //Will autobalance when teams are uneven. $Host::EnableMortarTurret = 0; //Enable or Disable Mortar Turret $Host::EnableNetTourneyClient = 1; //Enable or Disable Tourney Net Client checking