// Debrief Loading Screen Script // // Use Debrief screen to show more information while loading. // Modified to work with Classic // Originally made for DarkMod // Edited dramatically by ChocoTaco // // LoadScreenLines 5 and 6 are only used in Debrief mode. // When LoadingScreenUseDebrief is off it defaults to the server's default loadscreen. // MOTD Strings can be left " " in ServerPrefs to not use. // PhantomPackage // Phantom139 // // Global Variables // LOADSCREEN // // $version="V0.31"; // $dtLoadingScreen::DevTag = "RK4000"; //places the developer name on the screen // $dtLoadingScreen::CoDevTag = "DarkTiger"; //places co-devs on the screen // $dtLoadingScreen::ThankYous = "dtLoadingScreen forum members and active players."; // Enable Debrief Loading Screen // $Host::LoadingScreenUseDebrief = 0; // Colors // $Host::LoadScreenColor1 = "05edad"; //Light Teal // $Host::LoadScreenColor2 = "29DEE7"; //Bright Blue Teal // $Host::LoadScreenColor3 = "33CCCC"; //Dark Teal // Lines // $Host::LoadScreenLine1 = "Join Discord:"; // $Host::LoadScreenLine1_Msg = "playt2.com/discord"; // $Host::LoadScreenLine2 = "Game Modes:"; // $Host::LoadScreenLine2_Msg = "LakRabbit, Capture the Flag, DeathMatch, (Light Only) Capture the Flag"; // $Host::LoadScreenLine3 = "Get Mappacks:"; // $Host::LoadScreenLine3_Msg = "playt2.com/mappacks"; // $Host::LoadScreenLine4 = "Server Location:"; // $Host::LoadScreenLine4_Msg = "Iowa"; // $Host::LoadScreenLine5 = "Server Hosted:"; // $Host::LoadScreenLine5_Msg = "Google Compute Engine"; // $Host::LoadScreenLine6 = "Server Github:"; // $Host::LoadScreenLine6_Msg = "github.com/ChocoTaco1/TacoServer"; // MOTD or EVENTS Messages // $Host::LoadScreenMOTD1 = "Celebrating 20 Years of Tribes2!"; // $Host::LoadScreenMOTD2 = "Lak crowd early evenings after work during the week."; // $Host::LoadScreenMOTD3 = "Big CTF games Fridays, Saturdays, and Sundays!"; // $Host::LoadScreenMOTD4 = "Please make an effort to keep teams balanced!"; // First Screen loading time (Map Screen) // If this is set too low the second screen wont show at all $dtLoadingScreen::FirstScreen = 5500; // Second Screen Delay $dtLoadingScreen::Delay = 0; // Include map and game rules on the debrief screen as well // Useful if youre looking to replace both screens $dtLoadingScreen::ShowFullScreen = 0; // Enable/Disable Images $dtLoadingScreen::ShowImages = 0; // Enable/Disable Server Logo $dtLoadingScreen::ShowLogo = $Host::LoadScreenShowLogo; //$dtLoadingScreen::ShowLogo = 0; $dtLoadingScreen::LogoName = $Host::LoadScreenShowLogoName; //$dtLoadingScreen::LogoName = "dpub/DPUB_logo"; // Color safetynet // If a $Host::LoadScreenColor is "" ServerPrefs will delete and replace with serverDefaults if( $Host::LoadScreenColor1 $= " " ) $Host::LoadScreenColor1 = "05edad"; if( $Host::LoadScreenColor2 $= " " ) $Host::LoadScreenColor2 = "29DEE7"; if( $Host::LoadScreenColor3 $= " " ) $Host::LoadScreenColor3 = "33CCCC"; // So ServerDefaults wont replace a "" value when meant to be blank function DLSBlank() { for(%x = 1; %x <= 4; %x++) { if( $Host::LoadScreenMOTD[%x] $= "") { $Host::LoadScreenMOTD[%x] = " "; } } } DLSBlank(); // Keep it in a package to be neat and organized! package LoadScreenPackage { function sendLoadInfoToClient( %client ) { //error( "** SENDING LOAD INFO TO CLIENT " @ %client @ "! **" ); %singlePlayer = $CurrentMissionType $= "SinglePlayer"; messageClient( %client, 'MsgLoadInfo', "", $CurrentMission, $MissionDisplayName, $MissionTypeDisplayName ); // Send map quote: for ( %line = 0; %line < $LoadQuoteLineCount; %line++ ) { if($LoadQuoteLine[%line] !$= "") messageClient( %client, 'MsgLoadQuoteLine', "", $LoadQuoteLine[%line] ); } // Send map objectives: if ( %singlePlayer ) { switch ( $pref::TrainingDifficulty ) { case 2: %diff = "Medium"; case 3: %diff = "Hard"; default: %diff = "Easy"; } messageClient( %client, 'MsgLoadObjectiveLine', "", "DIFFICULTY: " @ %diff ); } for ( %line = 0; %line < $LoadObjLineCount; %line++ ) { if ( $LoadObjLine[%line] !$= "" ) messageClient( %client, 'MsgLoadObjectiveLine', "", $LoadObjLine[%line], !%singlePlayer ); } // Send rules of engagement: if ( !%singlePlayer ) messageClient( %client, 'MsgLoadRulesLine', "", "RULES OF ENGAGEMENT:", false ); for ( %line = 0; %line < $LoadRuleLineCount; %line++ ) { if ( $LoadRuleLine[%line] !$= "" ) messageClient( %client, 'MsgLoadRulesLine', "", $LoadRuleLine[%line], !%singlePlayer ); } messageClient( %client, 'MsgLoadInfoDone' ); // ---------------------------------------------------------------------------------------------- // z0dd - ZOD, 5/12/02. Send the mod info screen if this isn't the second showing of mission info if(!%second) schedule($dtLoadingScreen::FirstScreen, 0, "ALTsendModInfoToClient", %client); // ---------------------------------------------------------------------------------------------- } }; // Prevent package from being activated if it is already if (!isActivePackage(LoadScreenPackage) && $Host::LoadingScreenUseDebrief) activatePackage(LoadScreenPackage); // Dont even try to override sendModInfoToClient since evo has it // Just make our own function ALTsendModInfoToClient(%client) { // Wont allow Debrief on consecutive map loads if(%client.loaded) { schedule($dtLoadingScreen::FirstScreen, 0, "NORMALsendModInfoToClient", %client); return; } // Sound // As the background hum will stop on the debrief page // Breaks the abrupt stop // LoadingScreen sounds are limited to 5 secs or you'll receive an error %snd = '~wgui/inventory_hum.wav'; messageClient(%client, 'MsgLoadQuoteLine', %snd, ""); %line1 = "" @ $Host::LoadScreenLine1 @ " " @ $Host::LoadScreenLine1_Msg; %line2 = "" @ $Host::LoadScreenLine2 @ " " @ $Host::LoadScreenLine2_Msg; %line3 = "" @ $Host::LoadScreenLine3 @ " " @ $Host::LoadScreenLine3_Msg; %line4 = "" @ $Host::LoadScreenLine4 @ " " @ $Host::LoadScreenLine4_Msg; %line5 = "" @ $Host::LoadScreenLine5 @ " " @ $Host::LoadScreenLine5_Msg; %line6 = "" @ $Host::LoadScreenLine6 @ " " @ $Host::LoadScreenLine6_Msg; if($Host::TimeLimit $= "999" || $Host::TimeLimit $= "unlimited") %timeloadingvar = "Unlimited"; else %timeloadingvar = $Host::TimeLimit; if($Host::KickObserverTimeout $= 0) %obskickvar = "Off"; else %obskickvar = ($Host::KickObserverTimeout / 60) @ " Minutes"; %time = "Time limit: " @ %timeloadingvar; %max = "Max players: " @ $Host::MaxPlayers; %net = "Packets Rate / Size: " @ $pref::Net::PacketRateToClient @ " / " @ $pref::Net::PacketSize; %smurf = "Refuse smurfs: " @ ($Host::NoSmurfs ? "On" : "Off"); %obskick = "Obs Kick Time: " @ %obskickvar; //%random = "Random teams: " @ ($RandomTeams ? "On" : "Off"); //%fair = "Fair teams: " @ ($Host::ClassicFairTeams ? "On" : "Off"); //%rape = "No Base Rape: " @ ($Host::EvoNoBaseRapeEnabled ? "On" : "Off"); //%td = "Team damage: " @ ($Host::TeamDamageOn ? "On" : "Off"); //%crc = "CRC checking: " @ ($Host::CRCTextures ? "On" : "Off"); //%pure = "Pure server: " @ ($Host::PureServer ? "On" : "Off"); if($Host::NoBaseRapeEnabled) %rapeppl = "Min No Base Rape: " @ $Host::NoBaseRapePlayerCount; %turrets = "Min Turrets: " @ $Host::EnableTurretPlayerCount; if($Host::ClassicEvoStats && $Host::ClassicStatsType > 0) %stats = "Stats based on: " @ ($Host::ClassicStatsType == 1 ? "Kills" : "Damage"); %currentmis = "Current mission: " @ $MissionDisplayName @ " (" @ $MissionTypeDisplayName @ ")"; $dmlP = 0; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; // Images // Desired pics much exist in the texticons folder on the client in some capacity //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if($dtLoadingScreen::ShowImages) { $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; %randompics = getRandom(1,4); switch$(%randompics) { case 1: $dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; case 2: $dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; case 3: $dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; case 4: $dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; } //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; } else if($dtLoadingScreen::ShowLogo) { if(%client.dmpVersion $=$DMP::Version) { $dtLoadingScreen::LoadScreenMessage[$dmlP++] = ""; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; } else if(%client.dmpVersion $="" || %client.dmpVersion < $DMP::Version) { $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "!! This server uses the DMP Discord Map Pack !!"; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "Get the latest here: files.playt2.com/Mappacks"; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; } } // Full screen things //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if($dtLoadingScreen::ShowFullScreen) { $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ $MissionDisplayName @ ":"; for ( %line = 0; %line < $LoadQuoteLineCount; %line++ ) { if($LoadQuoteLine[%line] !$= "") $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ StripMLControlChars($LoadQuoteLine[%line]); } $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; for ( %line = 0; %line < $LoadObjLineCount; %line++ ) { if($LoadObjLine[%line] !$= "") $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ $LoadObjLine[%line]; } $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ $MissionTypeDisplayName @ ":"; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "RULES OF ENGAGEMENT:"; for ( %line = 0; %line < $LoadRuleLineCount; %line++ ) $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ StripMLControlChars($LoadRuleLine[%line]); $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "Info:"; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line1; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line2; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line3; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "Please use /report or /msg, to report bugs, glitches, problems, suggestions, or just leave a message."; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ $Host::GameName @ ":"; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line4; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line5; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %line6; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %net; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %time; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %max; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %smurf; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %rapeppl; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %turrets; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %obskick; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %stats; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ %currentmis; $dtLoadingScreen::LoadScreenMessage[$dmlP++] = " "; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %rape; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %random; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %fair; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %pure; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %crc; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = "*" @ $Host::GameName; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = "" @ $Host::Info; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = "Map Info:"; //$dtLoadingScreen::LoadScreenMessage[$dmlP++] = %currentmis; schedule($dtLoadingScreen::Delay, 0, "sendLoadscreen", %client); } // Send debrief screen function sendLoadscreen(%client) { %client.loaded = 1; messageClient( %client, 'MsgGameOver', ""); messageClient( %client, 'MsgClearDebrief', "" ); messageClient(%client, 'MsgDebriefResult', "", "CLASSIC"); messageClient(%client, 'MsgDebriefResult', "", ""); messageClient(%client, 'MsgDebriefResult', "", "Version: " @ $classicVersion); messageClient(%client, 'MsgDebriefResult', "", "Developers: z0dd and ZOD"); //%ServerMissionType = "" @ $MissionDisplayName @ "" @ "\n" @ $MissionTypeDisplayName @ ""; //messageClient(%client, 'MsgDebriefAddLine', "", %ServerMissionType); //%Thanks = "\nThanks: "@$dtLoadingScreen::ThankYous@" "@ //"\n"; //messageClient(%client, 'MsgDebriefAddLine', "", %Thanks); for ( %a = 1; %a <= $dmlP; %a++ ) { %msgTag = $dtLoadingScreen::LoadScreenMessage[%a]; messageClient(%client, 'MsgDebriefAddLine', "", %msgTag); } %MOTDHeader = "Events:"; %MOTDMsg1 = "" @ $Host::LoadScreenMOTD1; %MOTDMsg2 = "" @ $Host::LoadScreenMOTD2; %MOTDMsg3 = "" @ $Host::LoadScreenMOTD3; %MOTDMsg4 = "" @ $Host::LoadScreenMOTD4; //MOTD Loop //Leave line " " in ServerPrefs to not show a line for(%x = 1; %x <= 4; %x++) { if($Host::LoadScreenMOTD[%x] !$= " " && $Host::LoadScreenMOTD[%x] !$= "") { if(%x $= 1) { messageClient(%client, 'MsgDebriefAddLine', "", %MOTDHeader); messageClient(%client, 'MsgDebriefAddLine', "", %MOTDMsg[%x]); %header = 1; //No other lines without the header } else if(%header) messageClient(%client, 'MsgDebriefAddLine', "", %MOTDMsg[%x]); } } // Normal Screen Always in the Background // If client hits continue during debrief screen sendLoadInfoToClient(%client); } // Show normal second screen during following map loads function NORMALsendModInfoToClient(%client) { %line1 = "" @ $Host::LoadScreenLine1 @ " " @ $Host::LoadScreenLine1_Msg; %line2 = "" @ $Host::LoadScreenLine2 @ " " @ $Host::LoadScreenLine2_Msg; %line3 = "" @ $Host::LoadScreenLine3 @ " " @ $Host::LoadScreenLine3_Msg; %line4 = "" @ $Host::LoadScreenLine4 @ " " @ $Host::LoadScreenLine4_Msg; %line5 = "" @ $Host::LoadScreenLine5 @ " " @ $Host::LoadScreenLine5_Msg; %line6 = "" @ $Host::LoadScreenLine6 @ " " @ $Host::LoadScreenLine6_Msg; if($Host::TimeLimit $= "999" || $Host::TimeLimit $= "unlimited") %timeloadingvar = "Unlimited"; else %timeloadingvar = $Host::TimeLimit; %time = "Time limit: " @ %timeloadingvar; %max = "Max players: " @ $Host::MaxPlayers; %net = "Packets Rate / Size: " @ $pref::Net::PacketRateToClient @ " / " @ $pref::Net::PacketSize; %smurf = "Refuse smurfs: " @ ($Host::NoSmurfs ? "On" : "Off"); //%random = "Random teams: " @ ($RandomTeams ? "On" : "Off"); //%fair = "Fair teams: " @ ($Host::ClassicFairTeams ? "On" : "Off"); //%rape = "No Base Rape: " @ ($Host::EvoNoBaseRapeEnabled ? "On" : "Off"); //%td = "Team damage: " @ ($Host::TeamDamageOn ? "On" : "Off"); //%crc = "CRC checking: " @ ($Host::CRCTextures ? "On" : "Off"); //%pure = "Pure server: " @ ($Host::PureServer ? "On" : "Off"); if($Host::NoBaseRapeEnabled) %rapeppl = "Min No Base Rape: " @ $Host::NoBaseRapePlayerCount; %turrets = "Min Turrets: " @ $Host::EnableTurretPlayerCount; if($Host::ClassicEvoStats && $Host::ClassicStatsType > 0) %stats = "Stats based on: " @ ($Host::ClassicStatsType == 1 ? "Kills" : "Damage"); //if($Evo::ETMMode && $ETMmode::CurrentMap <= $ETMmode::Counter) //{ // %nmis = "Next mission: " @ $ETMmode::MapDisplayName[$ETMmode::CurrentMap]; //} //else //{ //%nmis = "Next mission: " @ findNextCycleMission(); //if ( $Host::ClassicRandomMissions ) //{ //%nmis = %nmis SPC "(Random)"; //} //if($Host::EvoTourneySameMap && $Host::TournamentMode) //{ //%nmis = "Next mission: " @ $CurrentMission @ " (Same)"; //} //} %currentmis = "Current mission: " @ $MissionDisplayName @ " (" @ $MissionTypeDisplayName @ ")"; // classic doesn't use a variable to print the version, it needs to be edited manually %modName = ""; //%ModLine[0] = "Classic Developers: z0dd and ZOD"; %ModLine[0] = "CLASSIC"; %ModLine[1] = ""; %ModLine[1] = "Version: " @ $classicVersion @ ""; %ModLine[3] = ""; %ModLine[4] = "Developers: z0dd and ZOD"; %ModLine[5] = ""; %ModCnt = 6; %SpecialCnt = 4; %SpecialTextLine[0] = %line1; %SpecialTextLine[1] = %line2; %SpecialTextLine[2] = %line3; %SpecialTextLine[3] = %line4; %ServerCnt = 8; %ServerTextLine[0] = %time; %ServerTextLine[1] = %max; %ServerTextLine[2] = %net; %ServerTextLine[3] = %smurf; %ServerTextLine[4] = %rapeppl; %ServerTextLine[5] = %turrets; %ServerTextLine[6] = %stats; %ServerTextLine[7] = %currentmis; //%serverTextLine[2] = %td; //%serverTextLine[3] = %crc; //%ServerTextLine[4] = %pure; //%ServerTextLine[5] = %fair; //%ServerTextLine[6] = %random; //%ServerTextLine[7] = %rape; %singlePlayer = $CurrentMissionType $= "SinglePlayer"; //messageClient(%client, 'MsgLoadInfo', "", $CurrentMission, %modName, $Host::GameName); messageClient(%client, 'MsgLoadInfo', "", $CurrentMission); // Send mod details (non bulleted list, small text): for(%line = 0; %line < %ModCnt; %line++) if(%ModLine[%line] !$= "") messageClient(%client, 'MsgLoadQuoteLine', "", %ModLine[%line]); // Send mod special settings (bulleted list, large text): for(%line = 0; %line < %SpecialCnt; %line++) if(%SpecialTextLine[%line] !$= "") messageClient(%client, 'MsgLoadObjectiveLine', "", %SpecialTextLine[%line], !%singlePlayer); // Send server info: //if(!%singlePlayer) // messageClient(%client, 'MsgLoadRulesLine', "", "" @ $Host::Info, false); for(%line = 0; %line < %ServerCnt; %line++) if (%ServerTextLine[%line] !$= "") messageClient(%client, 'MsgLoadRulesLine', "", %ServerTextLine[%line], !%singlePlayer); messageClient(%client, 'MsgLoadInfoDone'); }