diff --git a/Classic/prefs/serverPrefs.cs b/Classic/prefs/serverPrefs.cs index dc435f9..da08a33 100644 --- a/Classic/prefs/serverPrefs.cs +++ b/Classic/prefs/serverPrefs.cs @@ -10,6 +10,7 @@ $Host::AllowAdminVotes = 1; $Host::AllowMapScript = "True"; $Host::AllowPlayerVoteChangeMission = 1; $Host::AllowPlayerVoteSkipMission = 1; +$Host::AllowPlayerVoteTeamDamage = 0; $Host::AllowPlayerVoteTimeLimit = 1; $Host::AllowPlayerVoteTournamentMode = 0; $Host::AnimateWithTransitions = 1; @@ -180,6 +181,7 @@ $Host::TN::echo = 1; $Host::TournamentMode = 0; $Host::useCustomSkins = 1; $Host::VoteCooldown = 120; +$Host::VoteDelayTime = 120; $Host::VotePassPercent = 60; $Host::VoteSpread = 20; $Host::VoteTime = "45"; diff --git a/Classic/scripts/LakRabbitGame.cs b/Classic/scripts/LakRabbitGame.cs old mode 100644 new mode 100755 index c94834a..bdaea37 --- a/Classic/scripts/LakRabbitGame.cs +++ b/Classic/scripts/LakRabbitGame.cs @@ -17,6 +17,9 @@ // Thanks for helping me test! // maradona, pip, phantom jaguar, hilikus, the_ham, pip, wiggle, dragon, pancho villa, w/o, nectar and many others.. // +// v3.39 Aug 2021 +// Added Leave Mission Area Damage from Arena +// // v3.38 Nov 2020 // Added Observer GameOver (Mainly for switching to CTF) // Added Missile Lak Fix @@ -2067,13 +2070,15 @@ function LakRabbitGame::resetScore(%game, %client) function LakRabbitGame::enterMissionArea(%game, %playerData, %player) { - if(%player.getState() $= "Dead") - return; + if(%player.getState() $= "Dead") + return; - %player.client.outOfBounds = false; - messageClient(%player.client, 'EnterMissionArea', '\c1You are back in the mission area.'); - logEcho(%player.client.nameBase@" (pl "@%player@"/cl "@%player.client@") entered mission area"); - cancel(%player.alertThread); + %player.client.outOfBounds = false; + messageClient(%player.client, 'EnterMissionArea', '\c1You are back in the mission area.'); + logEcho(%player.client.nameBase@" (pl "@%player@"/cl "@%player.client@") entered mission area"); + + // Disable out of bounds kill + cancel(%player.alertThread); } @@ -2171,9 +2176,34 @@ function getHeight(%this) function LakRabbitGame::leaveMissionArea(%game, %playerData, %player) { + if(%player.getState() $= "Dead") + return; + + %player.client.outOfBounds = true; + + // Schedule out of bounds kill + %player.alertThread = %game.schedule(3500, "MissionAreaDamage", %player); + plzBounceOffGrid(%player, 65); } +// From Arena +// ------------------------------------------------------------------ // +// Do damage to a player for being outside the mission area + +function LakRabbitGame::MissionAreaDamage(%game, %player) +{ + if(%player.getState() !$= "Dead") + { + %player.setDamageFlash(0.1); + %prevHurt = %player.getDamageLevel(); + %player.setDamageLevel(%prevHurt + 0.09); + %player.alertThread = %game.schedule(1000, "MissionAreaDamage", %player); + } + else + %game.onClientKilled(%player.client, 0, $DamageType::OutOfBounds); +} + // z0dd - ZOD, 10/02/02. Hack for flag collision bug. // borlak -- stolen from classic function LakRabbitGame::startFlagCollisionSearch(%game, %flag) diff --git a/Classic/scripts/autoexec/TeamManagement.cs b/Classic/scripts/autoexec/TeamManagement.cs index 970a4eb..df67a8f 100644 --- a/Classic/scripts/autoexec/TeamManagement.cs +++ b/Classic/scripts/autoexec/TeamManagement.cs @@ -278,6 +278,68 @@ if (!isActivePackage(ResetTBNGameOver)) activatePackage(ResetTBNGameOver); +// No Base Rape Notify Script +// +// Notifys clients if NoBase rape is on or off. +// +// Enable or Disable +// $Host::EnableNoBaseRapeNotify = 1; +// + +// Called in GetTeamCounts.cs +function NBRStatusNotify( %game ) +{ + if( $Host::EnableNoBaseRapeNotify && $Host::NoBaseRapeEnabled ) + { + //On + if( $Host::NoBaseRapePlayerCount > $TotalTeamPlayerCount ) + { + if( $NBRStatus !$= "PLAYEDON" ) + $NBRStatus = "ON"; + } + //Off + else + { + if( $NBRStatus !$= "PLAYEDOFF" ) + $NBRStatus = "OFF"; + } + + switch$($NBRStatus) + { + case ON: + messageAll('MsgNoBaseRapeNotify', '\c1No Base Rape: \c0Enabled.'); + $NBRStatus = "PLAYEDON"; + case OFF: + messageAll('MsgNoBaseRapeNotify', '\c1No Base Rape: \c0Disabled.~wfx/misc/diagnostic_on.wav'); + $NBRStatus = "PLAYEDOFF"; + case PLAYEDON: + //Do Nothing + case PLAYEDOFF: + //Do Nothing + } + } +} + +// Reset gameover +package ResetNBRNotify +{ + +function DefaultGame::gameOver(%game) +{ + Parent::gameOver(%game); + + //Reset NoBaseRapeNotify + $NBRStatus = "IDLE"; +} + +}; + +// Prevent package from being activated if it is already +if (!isActivePackage(ResetNBRNotify)) + activatePackage(ResetNBRNotify); + + + // Team Autobalance Script // // Determines which team needs players and proceeds to switch them diff --git a/Classic/scripts/autoexec/VoteMenu.cs b/Classic/scripts/autoexec/VoteMenu.cs index dc81da6..45dec5e 100644 --- a/Classic/scripts/autoexec/VoteMenu.cs +++ b/Classic/scripts/autoexec/VoteMenu.cs @@ -9,6 +9,15 @@ //$Host::AllowPlayerVoteSkipMission = 1; //$Host::AllowPlayerVoteTimeLimit = 1; //$Host::AllowPlayerVoteTournamentMode = 1; +//$Host::AllowPlayerVoteTeamDamage = 0; + +//Vote Delay +//Delay the ability to vote (For everyone) at the beginning of the match +//$Host::VoteDelayTime = 120; //(120 is 2 mins) + +//Vote Cooldown +//Time cooldown that dosnt allow a player to vote again after theyve initiated a vote +//$Host::VoteCooldown = 120; //(120 is 2 mins) package ExtraVoteMenu { @@ -48,13 +57,15 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) { messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTournamentMode', 'change server to Tournament.', 'Vote Tournament Mode'); messageClient(%client, 'MsgVoteItem', "", %key, 'VoteChangeMission', 'change the mission to', 'Vote to Change the Mission'); - // if(%multipleTeams) - // { - // if($teamDamage) - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); - // else - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); - // } + + if(%multipleTeams) + { + if($teamDamage) + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); + else + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); + } + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteChangeTimeLimit', 'change the time limit', 'Vote to Change the Time Limit'); messageClient(%client, 'MsgVoteItem', "", %key, 'VoteSkipMission', 'skip the mission to', 'Vote to Skip Mission' ); messageClient(%client, 'MsgVoteItem',"", %key, 'ForceVote', 'Cancel Force Vote', "Cancel 'Vote To...'"); @@ -65,15 +76,19 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) //Mission Info Header - Mission Name, Type, Caps to Win if(%client.canVote) { - if($CurrentMissionType $= "CTF" || $CurrentMissionType $= "SCtF") - messageClient(%client, 'MsgVoteItem', "", %key, '', $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC MissionGroup.CTF_scoreLimit SPC "Caps to Win", - $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC MissionGroup.CTF_scoreLimit SPC "Caps to Win"); - else + switch$($CurrentMissionType) { - if($CurrentMissionType $= "LakRabbit") %cap = "2000 Points to Win"; - else %cap = "25 Points to Win"; //DM - messageClient(%client, 'MsgVoteItem', "", %key, '', $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap, - $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap); + case CTF or SCtF: + messageClient(%client, 'MsgVoteItem', "", %key, '', $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC MissionGroup.CTF_scoreLimit SPC "Caps to Win", + $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC MissionGroup.CTF_scoreLimit SPC "Caps to Win"); + case LakRabbit: + %cap = "2000 Points to Win"; + messageClient(%client, 'MsgVoteItem', "", %key, '', $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap, + $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap); + case DM: + %cap = "25 Points to Win"; + messageClient(%client, 'MsgVoteItem', "", %key, '', $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap, + $MissionDisplayName SPC "(" @ $MissionTypeDisplayName @ "):" SPC %cap); } } @@ -99,6 +114,14 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) messageClient(%client, 'MsgVoteItem', "", %key, 'MakeObserver', "", 'Become an Observer'); } } + + //Beginning match Vote Delay + if(!%client.isAdmin) + { + if((getSimTime() - $VoteDelay) < ($Host::VoteDelayTime * 1000)) + return; + } + if(!%client.canVote && !%isAdmin) return; @@ -115,13 +138,13 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) if($Host::AllowPlayerVoteTimeLimit) messageClient(%client, 'MsgVoteItem', "", %key, 'VoteChangeTimeLimit', 'change the time limit', 'Vote to Change the Time Limit'); - // if(%multipleTeams) - // { - // if($teamDamage) - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); - // else - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); - // } + if(%multipleTeams && $Host::AllowPlayerVoteTeamDamage) + { + if($teamDamage) + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); + else + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); + } if($Host::AllowPlayerVoteSkipMission) messageClient(%client, 'MsgVoteItem', "", %key, 'VoteSkipMission', 'skip the mission to', 'Vote to Skip Mission' ); @@ -135,13 +158,13 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) messageClient(%client, 'MsgVoteItem', "", %key, 'VoteFFAMode', 'Change server to Free For All.', 'Vote Free For All Mode'); messageClient(%client, 'MsgVoteItem', "", %key, 'VoteChangeTimeLimit', 'change the time limit', 'Vote to Change the Time Limit'); - // if(%multipleTeams) - // { - // if($teamDamage) - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); - // else - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); - // } + if(%multipleTeams) + { + if($teamDamage) + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Vote to Disable Team Damage'); + else + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Vote to Enable Team Damage'); + } } } else @@ -177,13 +200,14 @@ function DefaultGame::sendGameVoteMenu(%game, %client, %key) else messageClient(%client, 'MsgVoteItem', "", %key, 'ToggleLockedTeams', 'Enable Locked Teams', 'Enable Locked Teams'); } - // if(%multipleTeams) - // { - // if($teamDamage) - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Disable Team Damage'); - // else - // messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Enable Team Damage'); - // } + + if(%multipleTeams) + { + if($teamDamage) + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'disable team damage', 'Disable Team Damage'); + else + messageClient(%client, 'MsgVoteItem', "", %key, 'VoteTeamDamage', 'enable team damage', 'Enable Team Damage'); + } //Toggle Tournament Net Client if(%client.isAdmin && $Host::EnableNetTourneyClient) @@ -314,7 +338,7 @@ function serverCmdStartNewVote(%client, %typeName, %arg1, %arg2, %arg3, %arg4, % } case "VoteTeamDamage": - if(!%isAdmin) + if((!%isAdmin && $Host::AllowPlayerVoteTeamDamage) || (%isAdmin && %client.ForceVote)) // not admin { %msg = %client.nameBase @ " initiated a vote to " @ ($TeamDamage == 0 ? "enable" : "disable") @ " team damage."; } @@ -709,6 +733,9 @@ function DefaultGame::gameOver(%game) //Reset ClassicMaxMapChangeVotes deleteVariables("$CMHasVoted*"); // Eolk - let people who have voted vote again + + //Beginning match Vote Delay + $VoteDelay = getSimTime(); } function DefaultGame::cancelMatchStart(%game, %admin) diff --git a/Classic/scripts/autoexec/zAFK.cs b/Classic/scripts/autoexec/z_dtAFK.cs similarity index 100% rename from Classic/scripts/autoexec/zAFK.cs rename to Classic/scripts/autoexec/z_dtAFK.cs diff --git a/Classic/scripts/autoexec/zStats.cs b/Classic/scripts/autoexec/z_dtStats.cs similarity index 100% rename from Classic/scripts/autoexec/zStats.cs rename to Classic/scripts/autoexec/z_dtStats.cs diff --git a/Classic/scripts/serverDefaults.cs b/Classic/scripts/serverDefaults.cs old mode 100644 new mode 100755 index 77e45e3..a616891 --- a/Classic/scripts/serverDefaults.cs +++ b/Classic/scripts/serverDefaults.cs @@ -187,13 +187,13 @@ $Host::AllowPlayerVoteChangeMission = 1; $Host::AllowPlayerVoteSkipMission = 1; $Host::AllowPlayerVoteTimeLimit = 1; $Host::AllowPlayerVoteTournamentMode = 0; +$Host::AllowPlayerVoteTeamDamage = 0; $Host::NoBaseRapeEnabled = 1; //Enable or Disable No Base Rape $Host::NoBaseRapePlayerCount = 14; //Min number players the turn off No Base Rape $Host::AveragePings = 1; //Show Average ping in F2 menu $Host::GuidCheck = 1; //Dont allow players to join without a Guid or Name $Host::MinFlagRecordPlayerCount = 6; //Min number players to allow flag record to be recorded $Host::ItemRespawnTime = 30; //Time it takes for items to respawn (repairpacks) -$Host::VoteCooldown = 120; //Time cooldown to allow a player to vote again after a vote (120 is 2 mins) $Host::TKMax = 12; //Max tks before kick $Host::TKWarn1 = 4; //Max tks before 1st warning $Host::TKWarn2 = 8; //Max tks before 2nd warning @@ -201,6 +201,8 @@ $Host::KickObserverStartOnJoin = 0; //Start KickObserver Timer as so $Host::KickObserverTimeout = 1200; //How long player can stay in observer before being booted (1200 is 20 mins) //$Host::ClassicBanlist = "prefs/banlist.cs"; $Host::dtBanlist = "prefs/dtBanlist.cs"; //Alternate Ban System +$Host::VoteCooldown = 120; //Time cooldown that dosnt allow a player to vote again after theyve initiated a vote (120 is 2 mins) +$Host::VoteDelayTime = 120; //Delay the ability to vote (For everyone) at the beginning of the match (120 is 2 minutes) //LakRabbit $Host::LakRabbitUnlimitedDJ = 1; //Unlimited disc-jumps if enabled diff --git a/Classic/scripts/supportClassic.cs b/Classic/scripts/supportClassic.cs old mode 100644 new mode 100755 index 9747417..26936e4 --- a/Classic/scripts/supportClassic.cs +++ b/Classic/scripts/supportClassic.cs @@ -46,7 +46,7 @@ function AIConnection::isMounted(%client) { %vehicle = %client.getControlObject(); %className = %vehicle.getDataBlock().className; - if(%className $= WheeledVehicleData || %className $= FlyingVehicleData || %className $= HoverVehicleData) + if(%className $= WheeledVehicleData || %className $= FlyingVehicleData || %className $= HoverVehicleData) return true; else return false; @@ -66,19 +66,19 @@ function ForceFieldBareData::damageObject(%data, %targetObject, %position, %sour // Random Teams code by Founder (founder@mechina.com) 6/13/02 /////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// -// Couple other files edited for Random Teams. +// Couple other files edited for Random Teams. // Hud.cs and DefaultGame.cs function AIConnection::startMission(%client) { // assign the team if (%client.team <= 0) Game.assignClientTeam(%client); - + if(%client.lastTeam !$= "") { if(%client.team != %client.lastTeam) Game.AIChangeTeam( %client, %client.lastTeam ); - } + } // set the client's sensor group... setTargetSensorGroup( %client.target, %client.team ); %client.setSensorGroup( %client.team ); @@ -179,7 +179,7 @@ datablock TriggerData(flagTrigger) tickPeriodMS = 10; }; -function flagTrigger::onEnterTrigger(%data, %obj, %colObj) +function flagTrigger::onEnterTrigger(%data, %obj, %colObj) { %flag = %obj.flag; if($flagStatus[%flag.team] $= "") @@ -313,4 +313,13 @@ function KickByCID(%client, %reason, %time) // Keep them out // if(%time != 0) // BanList::add(%client.guid, %client.getAddress(), %time); -} \ No newline at end of file +} + +//More Spam +function TSStatic::onTrigger(%this, %triggerId, %on){ +//anti console spam +} + +function TSStatic::onTriggerTick(%this, %triggerId){ +//anti console spam +} diff --git a/README.md b/README.md index af4bfd1..fdc3e72 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Discord: [Tribes 2 Discord](https://discord.gg/Y4muNvF) - Shocklance Only Deathmatch Mode - Admin Logging - Teamkill Warnings - - General Improvments + - General Improvements ---