mirror of
https://github.com/Paintball/BO2-GSC-Releases.git
synced 2025-06-07 21:38:02 -05:00
Updated Github
This commit is contained in:
parent
c34e04211d
commit
5ef4f751e5
3
Multiplayer Mods/MW3 Styled Infection/README.md
Normal file
3
Multiplayer Mods/MW3 Styled Infection/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# MW3 STYLED INFECTED
|
||||||
|
## DIRECTIONS
|
||||||
|
- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes_zm/_clientids.gsc**_
|
280
Multiplayer Mods/MW3 Styled Infection/_clientids.gsc
Normal file
280
Multiplayer Mods/MW3 Styled Infection/_clientids.gsc
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
/*//////////////////
|
||||||
|
//MOD INFORMATION//
|
||||||
|
//////////////////
|
||||||
|
|
||||||
|
MW3 STYLE INFECTION GAMEMODE
|
||||||
|
DEVELOPED BY @ItsCahz
|
||||||
|
|
||||||
|
Free for use to the public
|
||||||
|
Released on plutonium forums by Cahz
|
||||||
|
|
||||||
|
This mod runs best with Team Deathmatch as the gamemode
|
||||||
|
The goal of Infected is to stay alive as long as possible
|
||||||
|
|
||||||
|
SURVIVORS
|
||||||
|
Random Primary (mtar, msmc, m27, or remmington)
|
||||||
|
Secondary (fiveseven)
|
||||||
|
|
||||||
|
INFECTED
|
||||||
|
First Infected gets survivor loadout until there is more than one person infected
|
||||||
|
Knife and Tomahawk only afterwards
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include maps/mp/_utility;
|
||||||
|
#include common_scripts/utility;
|
||||||
|
#include maps/mp/gametypes/_hud_util;
|
||||||
|
#include maps/mp/gametypes/_hud_message;
|
||||||
|
#include maps/mp/gametypes/_globallogic;
|
||||||
|
|
||||||
|
init()
|
||||||
|
{
|
||||||
|
level thread onPlayerConnect();
|
||||||
|
level thread StartInfected();
|
||||||
|
level thread EndInfected();
|
||||||
|
//wait 1;
|
||||||
|
//level thread spawnBot(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlayerConnect()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill("connected", player);
|
||||||
|
player thread onPlayerSpawned();
|
||||||
|
player thread checkName(player.name);
|
||||||
|
player maps\mp\teams\_teams::changeteam("axis");
|
||||||
|
player thread onScreenText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlayerSpawned()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
level endon("game_ended");
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
self waittill("spawned_player");
|
||||||
|
level notify("update_text");
|
||||||
|
|
||||||
|
self givePerks();
|
||||||
|
|
||||||
|
if(!isDefined(self.isFirstSpawn))
|
||||||
|
{
|
||||||
|
self.isFirstSpawn = true;
|
||||||
|
self iprintln("Welcome to MW3 Style Infection!");
|
||||||
|
self iprintln("Developed by: ^5@ItsCahz");
|
||||||
|
}
|
||||||
|
if(self.pers["team"] == "axis")
|
||||||
|
{
|
||||||
|
if(isDefined(self.infected))
|
||||||
|
self maps\mp\teams\_teams::changeteam("allies");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self iprintlnbold("^5You Are Not Infected! Stay Alive!");
|
||||||
|
|
||||||
|
self thread giveWeapons("Survivor");
|
||||||
|
self thread monitorWeapons();
|
||||||
|
self thread waitForDeath();
|
||||||
|
|
||||||
|
level.totalAlive += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(self.pers["team"] == "allies")
|
||||||
|
{
|
||||||
|
if(!isDefined(self.infected))
|
||||||
|
self maps\mp\teams\_teams::changeteam("axis");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self iprintlnbold("^1You Are Infected! Kill the Survivors!");
|
||||||
|
|
||||||
|
if(level.infectedCount == 1)
|
||||||
|
self thread giveWeapons("Survivors");
|
||||||
|
else
|
||||||
|
self thread giveWeapons("Infected");
|
||||||
|
|
||||||
|
self thread monitorWeapons();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
checkName(text)
|
||||||
|
{
|
||||||
|
if(IsInArray(level.infectedtable, text))
|
||||||
|
self.infected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveName(text)
|
||||||
|
{
|
||||||
|
if(!IsInArray(level.infectedtable, text))
|
||||||
|
level.infectedtable[level.infectedtable.size] = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
StartInfected()
|
||||||
|
{
|
||||||
|
level.totalAlive = 0;
|
||||||
|
level.infectedCount = 0;
|
||||||
|
level.firstinfected = "";
|
||||||
|
level.infectedtable = [];
|
||||||
|
|
||||||
|
level.survivorWeapons = strTok("insas_mp,870mcs_mp,hk416_mp,tar21_mp", ",");
|
||||||
|
|
||||||
|
level.survivorPrimary = RandomInt(level.survivorWeapons.size);
|
||||||
|
level.survivorSecondary = "fiveseven_mp";
|
||||||
|
|
||||||
|
level.infectedPrimary = "knife_mp";
|
||||||
|
level.infectedSecondary = "hatchet_mp";
|
||||||
|
level.infectedTactical = "tactical_insertion_mp";
|
||||||
|
|
||||||
|
level thread updateText();
|
||||||
|
|
||||||
|
level waittill("prematch_over");
|
||||||
|
|
||||||
|
wait 3;
|
||||||
|
iPrintlnBold("^1Picking First Infected!");
|
||||||
|
wait 5;
|
||||||
|
|
||||||
|
level.firstinfected = pickRandomPlayer();
|
||||||
|
level.firstinfected.infected = true;
|
||||||
|
level.firstinfected suicide();
|
||||||
|
level.firstinfected maps\mp\teams\_teams::changeteam("allies");
|
||||||
|
|
||||||
|
level.gameStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
pickRandomPlayer()
|
||||||
|
{
|
||||||
|
randomnum = randomintrange(0, level.players.size);
|
||||||
|
infected = level.players[randomnum];
|
||||||
|
|
||||||
|
if (isAlive(infected))
|
||||||
|
return infected;
|
||||||
|
else
|
||||||
|
return pickRandomPlayer();
|
||||||
|
}
|
||||||
|
|
||||||
|
giveWeapons(Team)
|
||||||
|
{
|
||||||
|
self takeallweapons();
|
||||||
|
if(Team == "Infected")
|
||||||
|
{
|
||||||
|
self giveWeapon(level.infectedPrimary);
|
||||||
|
self giveWeapon(level.infectedSecondary);
|
||||||
|
self giveWeapon(level.infectedTactical);
|
||||||
|
self switchToWeapon(level.infectedPrimary);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self giveWeapon(level.survivorWeapons[level.survivorPrimary]);
|
||||||
|
self giveWeapon(level.survivorSecondary);
|
||||||
|
self switchToWeapon(level.survivorWeapons[level.survivorPrimary]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
monitorWeapons()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("death");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(isDefined(self.infected))
|
||||||
|
{
|
||||||
|
if(level.infectedCount == 1)
|
||||||
|
{
|
||||||
|
if(self getCurrentWeapon() != (level.survivorWeapons[level.survivorPrimary]) && self getCurrentWeapon() != level.survivorSecondary && self getCurrentWeapon() != "none")
|
||||||
|
self thread giveWeapons("Survivor");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(self getCurrentWeapon() != level.infectedPrimary && self getCurrentWeapon() != level.infectedSecondary && self getCurrentWeapon() != level.infectedTactical && self getCurrentWeapon() != "none")
|
||||||
|
self thread giveWeapons("Infected");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(self getCurrentWeapon() != (level.survivorWeapons[level.survivorPrimary]) && self getCurrentWeapon() != level.survivorSecondary && self getCurrentWeapon() != "none")
|
||||||
|
self thread giveWeapons("Survivor");
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
waitForDeath()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("first_infected");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
self waittill("death");
|
||||||
|
|
||||||
|
self.infected = true;
|
||||||
|
level.totalAlive -=1;
|
||||||
|
level.infectedCount += 1;
|
||||||
|
level notify("update_text");
|
||||||
|
self maps\mp\teams\_teams::changeteam("allies");
|
||||||
|
self thread saveName(self.name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
givePerks()
|
||||||
|
{
|
||||||
|
self ClearPerks();
|
||||||
|
self setperk("specialty_additionalprimaryweapon");
|
||||||
|
self setperk("specialty_fallheight");
|
||||||
|
self setperk("specialty_fastequipmentuse");
|
||||||
|
self setperk("specialty_fastladderclimb");
|
||||||
|
self setperk("specialty_fastmantle");
|
||||||
|
self setperk("specialty_fastmeleerecovery");
|
||||||
|
self setperk("specialty_fasttoss");
|
||||||
|
self setperk("specialty_fastweaponswitch");
|
||||||
|
self setperk("specialty_longersprint");
|
||||||
|
self setperk("specialty_sprintrecovery");
|
||||||
|
self setperk("specialty_twogrenades");
|
||||||
|
self setperk("specialty_twoprimaries");
|
||||||
|
self setperk("specialty_unlimitedsprint");
|
||||||
|
}
|
||||||
|
|
||||||
|
EndInfected()
|
||||||
|
{
|
||||||
|
level endon("game_ended");
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
wait 0.05;
|
||||||
|
if(level.totalAlive == 0 && isDefined(level.gameStarted))
|
||||||
|
thread endgame( "allies", "^7The Infected Win!" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onScreenText()
|
||||||
|
{
|
||||||
|
self.onScreenText = self createFontString("objective", 1.75);
|
||||||
|
self.onScreenText setPoint("CENTER", "CENTER", -355, 150);
|
||||||
|
self.onScreenText setText( "Survivors Left: ^5"+level.totalAlive);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateText()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill("update_text");
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
if(level.totalAlive == 1 || level.totalAlive == 0)
|
||||||
|
player.onScreenText setText( "Survivors Left: ^1"+level.totalAlive);
|
||||||
|
else
|
||||||
|
player.onScreenText setText( "Survivors Left: ^5"+level.totalAlive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spawnBot(value)
|
||||||
|
{
|
||||||
|
for(i = 0; i < value; i++)
|
||||||
|
{
|
||||||
|
self thread maps\mp\bots\_bot::spawn_bot( "axis" );
|
||||||
|
}
|
||||||
|
}
|
6
Multiplayer Mods/Vote Kick System/README.md
Normal file
6
Multiplayer Mods/Vote Kick System/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# VOTEKICK SYSTEM
|
||||||
|
|
||||||
|
## DIRECTIONS
|
||||||
|
- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes/_clientids.gsc**_
|
||||||
|
|
||||||
|
**DOES NOT INCLUDE OVERFLOW FIX**
|
322
Multiplayer Mods/Vote Kick System/_clientids.gsc
Normal file
322
Multiplayer Mods/Vote Kick System/_clientids.gsc
Normal file
@ -0,0 +1,322 @@
|
|||||||
|
/*/////////////////////////////////
|
||||||
|
// SIMPLE VOTE KICK SYSTEM BO2 //
|
||||||
|
// DEVELOPED BY @ITSCAHZ //
|
||||||
|
////////////////////////////////
|
||||||
|
|
||||||
|
THANKS @THEHIDDENHOUR FOR THE HELP AND ANSWERING QUESTIONS WHEN I HAD THEM
|
||||||
|
|
||||||
|
VERSION 1.1 ADDED A DVAR FOR BANNING TO PREVENT SOMEONE FROM REJOINING AFTER BEING VOTEKICKED
|
||||||
|
ADDED VOTE KICK LIMIT: ONE VOTE KICK PER PERSON, PER MAP*/
|
||||||
|
|
||||||
|
#include maps\mp\_utility;
|
||||||
|
#include common_scripts\utility;
|
||||||
|
#include maps\mp\gametypes\_hud_util;
|
||||||
|
#include maps\mp\gametypes\_hud_message;
|
||||||
|
|
||||||
|
init()
|
||||||
|
{
|
||||||
|
level thread onPlayerConnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlayerConnect()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill("connected", player);
|
||||||
|
player thread activateVoteKickSystem();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
activateVoteKickSystem()
|
||||||
|
{
|
||||||
|
if(getPlayerDvar(self, "banned") == "")
|
||||||
|
{}
|
||||||
|
else if(getPlayerDvar(self, "banned") == true)
|
||||||
|
{
|
||||||
|
kick(self getEntityNumber(),"EXE_PLAYERKICKED");
|
||||||
|
}
|
||||||
|
self endon("disconnect");
|
||||||
|
level endon("game_ended");
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(self adsbuttonpressed() && self actionslottwobuttonpressed() && !isDefined(level.voting) && !isDefined(self.checkingToVote))
|
||||||
|
{
|
||||||
|
self thread votekickText();
|
||||||
|
self thread func_whotokick();
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func_whotokick()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("close_voting");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
self.checkingToVote = true;
|
||||||
|
level thread recountPlayers();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
self.VoteKickTopString setText("Vote Kick Who?");
|
||||||
|
self.VoteKickBottomString setText("[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]");
|
||||||
|
self.VoteKickInfoString setText("^5Press [{+gostand}] to Select, [{+melee}] to Close");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(self actionslotfourbuttonpressed())
|
||||||
|
{
|
||||||
|
if(i != (level.players.size - 1))
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText("[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText("[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(self actionslotthreebuttonpressed())
|
||||||
|
{
|
||||||
|
if(i == 0)
|
||||||
|
{
|
||||||
|
i = (level.players.size - 1);
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText("[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText("[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(self meleebuttonpressed())
|
||||||
|
{
|
||||||
|
self.checkingToVote = undefined;
|
||||||
|
self.VoteKickTopString destroy();
|
||||||
|
self.VoteKickBottomString destroy();
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
self notify("close_voting");
|
||||||
|
}
|
||||||
|
if(self jumpbuttonpressed())
|
||||||
|
self thread CheckIfCanVoteKick(player);
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckIfCanVoteKick(badplayer)
|
||||||
|
{
|
||||||
|
if(!isDefined(level.voting))
|
||||||
|
{
|
||||||
|
|
||||||
|
if(isDefined(self.VoteKickedAlready)) //only lets a player votekick once per game to prevent abuse
|
||||||
|
self iprintln("^1You cannot vote kick more than once a game!");
|
||||||
|
/*
|
||||||
|
-----------------------------------------------
|
||||||
|
| *USE THIS IF USING A VERFICATION SYSTEM* |
|
||||||
|
| TO STOP VERIFIED USERS FROM BEING VOTEKICKED |
|
||||||
|
-----------------------------------------------
|
||||||
|
else if(badplayer isVerified())
|
||||||
|
{
|
||||||
|
self iprintln("^1Cannot vote kick verified users!");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
else
|
||||||
|
{
|
||||||
|
level.voting = true;
|
||||||
|
self.VoteKickedAlready = true;
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
player.VoteKickTopString destroy();
|
||||||
|
player.VoteKickBottomString destroy();
|
||||||
|
player.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
level thread StartVoteKick(badplayer);
|
||||||
|
self.checkingToVote = undefined;
|
||||||
|
self notify("close_voting");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self iprintln("^1Voting taking place! Please wait until it has finished!");
|
||||||
|
}
|
||||||
|
|
||||||
|
StartVoteKick(badplayer)
|
||||||
|
{
|
||||||
|
level endon("voting_ended");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
level thread StartVoteKickTimeLimit(badplayer);
|
||||||
|
level thread KickIfVotesAreEnough(badplayer);
|
||||||
|
|
||||||
|
level.votesneeded = ceil(level.numberOfPlayers / 2);
|
||||||
|
level.votestokick = 0;
|
||||||
|
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
player thread votekickText();
|
||||||
|
if(player.name == badplayer.name)
|
||||||
|
{
|
||||||
|
player freezeControls(true);
|
||||||
|
player.VoteKickTopString setText("^1Vote Kicking "+badplayer.name);
|
||||||
|
player.VoteKickBottomString setText("^1( "+level.votestokick+" / "+level.votesneeded+" ) ^7votes needed!");
|
||||||
|
player.VoteKickInfoString setText("The lobby is vote kicking you please wait");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player thread VotingButtonMonitor(badplayer);
|
||||||
|
player.VoteKickTopString setText("^1Vote Kicking "+badplayer.name);
|
||||||
|
player.VoteKickBottomString setText("^1( "+level.votestokick+" / "+level.votesneeded+" ) ^7votes needed!");
|
||||||
|
player.VoteKickInfoString setText("^5Prone [{+actionslot 1}] ^1Vote to Kick\n^5Prone [{+actionslot 2}] ^2Vote to Stay");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VotingButtonMonitor(badplayer)
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
level endon("voting_ended");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(self getStance() == "prone" && self actionslotonebuttonpressed() && !isDefined(self.menu.open) && !isDefined(self.voted))
|
||||||
|
{
|
||||||
|
self.voted = true;
|
||||||
|
level.votestokick += 1;
|
||||||
|
level notify("update_vote_text");
|
||||||
|
self iprintln("^1You voted for ^5"+badplayer.name+" to get kicked!");
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
if(self getStance() == "prone" && self actionslottwobuttonpressed() && !isDefined(self.menu.open) && !isDefined(self.voted))
|
||||||
|
{
|
||||||
|
self.voted = true;
|
||||||
|
self iprintln("^2You voted for ^5"+badplayer.name+" to stay!");
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KickIfVotesAreEnough(badplayer)
|
||||||
|
{
|
||||||
|
level endon("voting_ended");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
wait 0.05;
|
||||||
|
if(level.votestokick >= level.votesneeded)
|
||||||
|
{
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
player iprintln("^5Vote Passed! ^1"+badplayer.name+" got Kicked!");
|
||||||
|
player.voted = undefined;
|
||||||
|
player.checkingToVote = undefined;
|
||||||
|
}
|
||||||
|
setPlayerDvar(badplayer, "banned", true); //this dvar is sticky, and will "ban" the player until
|
||||||
|
//the server is reset
|
||||||
|
kick(badplayer getentitynumber());
|
||||||
|
level.votestokick = undefined;
|
||||||
|
level.voting = undefined;
|
||||||
|
level notify("voting_ended");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StartVoteKickTimeLimit(badplayer)
|
||||||
|
{
|
||||||
|
level endon("voting_ended");
|
||||||
|
level endon("game_ended");
|
||||||
|
|
||||||
|
level thread updateText();
|
||||||
|
level thread removeText();
|
||||||
|
level.votesneeded = ceil(level.numberOfPlayers / 2);
|
||||||
|
level.votestokick = 0;
|
||||||
|
wait 15;
|
||||||
|
if(level.votestokick < level.votesneeded)
|
||||||
|
{
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
player.voted = undefined;
|
||||||
|
player.checkingToVote = undefined;
|
||||||
|
if(player.name == badplayer.name)
|
||||||
|
{
|
||||||
|
player iprintln("^1Not Enough votes to kick you!");
|
||||||
|
player freezeControls(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
player iprintln("^1Not Enough Votes to Kick ^5"+badplayer.name+"!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
level.votestokick = undefined;
|
||||||
|
level.voting = undefined;
|
||||||
|
level notify("voting_ended");
|
||||||
|
}
|
||||||
|
|
||||||
|
updateText()
|
||||||
|
{
|
||||||
|
level endon("voting_ended");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill("update_vote_text");
|
||||||
|
foreach(player in level.players)
|
||||||
|
player.VoteKickBottomString setText("^1( "+level.votestokick+" / "+level.votesneeded+" ) ^7votes needed!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
removeText()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill("voting_ended");
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
player.VoteKickTopString destroy();
|
||||||
|
player.VoteKickBottomString destroy();
|
||||||
|
player.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
votekickText()
|
||||||
|
{
|
||||||
|
self.VoteKickTopString = self createFontString("objective", 1.2);
|
||||||
|
self.VoteKickTopString setPoint("CENTER", "CENTER", -345, -100);
|
||||||
|
self.VoteKickBottomString = self createFontString("objective", 1.2);
|
||||||
|
self.VoteKickBottomString setPoint("CENTER", "CENTER", -345, -85);
|
||||||
|
self.VoteKickInfoString = self createFontString("objective", 1);
|
||||||
|
self.VoteKickInfoString setPoint("CENTER", "CENTER", -345, -70);
|
||||||
|
}
|
||||||
|
|
||||||
|
recountPlayers()
|
||||||
|
{
|
||||||
|
level.numberOfBots = 0;
|
||||||
|
level.numberOfPlayers = 0;
|
||||||
|
foreach(player in level.players)
|
||||||
|
{
|
||||||
|
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
|
||||||
|
level.numberOfBots += 1;
|
||||||
|
else
|
||||||
|
level.numberOfPlayers += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setPlayerDvar(player, dvar, value)
|
||||||
|
{
|
||||||
|
thedvar = player getXUID() + "_" + dvar;
|
||||||
|
setDvar(thedvar, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
getPlayerDvar(player, dvar)
|
||||||
|
{
|
||||||
|
thedvar = player getXUID() + "_" + dvar;
|
||||||
|
|
||||||
|
return getDvar(thedvar);
|
||||||
|
}
|
6
Zombies Mods/Grenade Cluster/README.md
Normal file
6
Zombies Mods/Grenade Cluster/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# GRENADE CLUSTER
|
||||||
|
|
||||||
|
## DIRECTIONS
|
||||||
|
- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes_zm/_clientids.gsc**_
|
||||||
|
|
||||||
|
To add to your own script, copy **watch_for_grenade_throw** and **multiply_grenades**, then thread **watch_for_grenade_throw** inside your onPlayerConnect function
|
49
Zombies Mods/Grenade Cluster/_clientids.gsc
Normal file
49
Zombies Mods/Grenade Cluster/_clientids.gsc
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include maps/mp/_utility;
|
||||||
|
#include common_scripts/utility;
|
||||||
|
#include maps/mp/gametypes_zm/_hud_util;
|
||||||
|
#include maps/mp/zombies/_zm;
|
||||||
|
#include maps/mp/zombies/_zm_utility;
|
||||||
|
|
||||||
|
init()
|
||||||
|
{
|
||||||
|
level thread onplayerconnected();
|
||||||
|
}
|
||||||
|
|
||||||
|
onplayerconnected()
|
||||||
|
{
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
level waittill( "connected", player );
|
||||||
|
player thread watch_for_grenade_throw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
watch_for_grenade_throw()
|
||||||
|
{
|
||||||
|
self endon ( "disconnect" );
|
||||||
|
level endon ( "end_game" );
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
self waittill ("grenade_fire", grenade, weapname);
|
||||||
|
if ( weapname == "frag_grenade_zm" )
|
||||||
|
{
|
||||||
|
grenade thread multiply_grenades();
|
||||||
|
}
|
||||||
|
wait 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
multiply_grenades()
|
||||||
|
{
|
||||||
|
self endon ( "death" );
|
||||||
|
wait 1.25;
|
||||||
|
self magicgrenadetype( "frag_grenade_zm", self.origin + ( 20, 0, 0 ), ( 50, 0, 400 ), 2.5 );
|
||||||
|
wait 0.25;
|
||||||
|
self magicgrenadetype( "frag_grenade_zm", self.origin + ( -20, 0, 0 ), ( -50, 0, 400 ), 2.5 );
|
||||||
|
wait 0.25;
|
||||||
|
self magicgrenadetype( "frag_grenade_zm", self.origin + ( 0, 20, 0 ), ( 0, 50, 400 ), 2.5 );
|
||||||
|
wait 0.25;
|
||||||
|
self magicgrenadetype( "frag_grenade_zm", self.origin + ( 0, -20, 0 ), ( 0, -50, 400 ), 2.5 );
|
||||||
|
wait 0.25;
|
||||||
|
self magicgrenadetype( "frag_grenade_zm", self.origin, ( 0, 0, 400 ), 2.5 );
|
||||||
|
}
|
6
Zombies Mods/Vote Kick System/README.md
Normal file
6
Zombies Mods/Vote Kick System/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# VOTEKICK SYSTEM
|
||||||
|
|
||||||
|
## DIRECTIONS
|
||||||
|
- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes_zm/_clientids.gsc**_
|
||||||
|
|
||||||
|
**DOES NOT INCLUDE OVERFLOW FIX**
|
328
Zombies Mods/Vote Kick System/_clientids.gsc
Normal file
328
Zombies Mods/Vote Kick System/_clientids.gsc
Normal file
@ -0,0 +1,328 @@
|
|||||||
|
/*/////////////////////////////////
|
||||||
|
// SIMPLE VOTE KICK SYSTEM BO2 //
|
||||||
|
// DEVELOPED BY @ITSCAHZ //
|
||||||
|
////////////////////////////////
|
||||||
|
|
||||||
|
VERSION 1.1 ( ZOMBIES )
|
||||||
|
|
||||||
|
THANKS @THEHIDDENHOUR FOR THE HELP AND ANSWERING QUESTIONS WHEN I HAD THEM
|
||||||
|
|
||||||
|
VERSION 1.1 ADDED A DVAR FOR BANNING TO PREVENT SOMEONE FROM REJOINING AFTER BEING VOTEKICKED
|
||||||
|
ADDED VOTE KICK LIMIT: ONE VOTE KICK PER PERSON, PER MAP*/
|
||||||
|
|
||||||
|
#include maps/mp/_utility;
|
||||||
|
#include common_scripts/utility;
|
||||||
|
#include maps/mp/gametypes_zm/_hud_util;
|
||||||
|
#include maps/mp/zombies/_zm;
|
||||||
|
#include maps/mp/zombies/_zm_utility;
|
||||||
|
|
||||||
|
init()
|
||||||
|
{
|
||||||
|
level thread onPlayerConnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlayerConnect()
|
||||||
|
{
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
level waittill( "connected", player );
|
||||||
|
player thread activateVoteKick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
activateVoteKick()
|
||||||
|
{
|
||||||
|
if( getPlayerDvar( player, "banned" ) == "" )
|
||||||
|
{}
|
||||||
|
else if( getPlayerDvar( player, "banned" ) == true )
|
||||||
|
{
|
||||||
|
kick( player getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||||
|
}
|
||||||
|
self endon( "disconnect" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if( self adsbuttonpressed() && self actionslottwobuttonpressed() && !isDefined( level.voting ) && !isDefined( self.checkingToVote ) && level.players.size >= 3 )
|
||||||
|
{
|
||||||
|
self thread votekickText();
|
||||||
|
self thread func_whotokick();
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func_whotokick()
|
||||||
|
{
|
||||||
|
self endon( "disconnect" );
|
||||||
|
self endon( "close_voting" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
|
||||||
|
self.checkingToVote = true;
|
||||||
|
level thread recountPlayers();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
self.VoteKickTopString setText( "Vote Kick Who?" );
|
||||||
|
self.VoteKickBottomString setText( "[{+actionslot 3}] << ^1"+player.name+"^7 >> [{+actionslot 4}]" );
|
||||||
|
self.VoteKickInfoString setText( "^5Press [{+gostand}] to Select, [{+melee}] to Close" );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
if( self actionslotfourbuttonpressed() )
|
||||||
|
{
|
||||||
|
if( i != ( level.players.size - 1) )
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText( "[{+actionslot 3}] << ^1" + player.name + "^7 >> [{+actionslot 4}]" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText( "[{+actionslot 3}] << ^1" + player.name + "^7 >> [{+actionslot 4}]" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( self actionslotthreebuttonpressed() )
|
||||||
|
{
|
||||||
|
if( i == 0 )
|
||||||
|
{
|
||||||
|
i = (level.players.size - 1);
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText( "[{+actionslot 3}] << ^1" + player.name + "^7 >> [{+actionslot 4}]" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
player = level.players[i];
|
||||||
|
self.VoteKickBottomString setText( "[{+actionslot 3}] << ^1" + player.name + "^7 >> [{+actionslot 4}]" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( self meleebuttonpressed() )
|
||||||
|
{
|
||||||
|
self.checkingToVote = undefined;
|
||||||
|
self.VoteKickTopString destroy();
|
||||||
|
self.VoteKickBottomString destroy();
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
self notify("close_voting");
|
||||||
|
}
|
||||||
|
if( self jumpbuttonpressed() )
|
||||||
|
{
|
||||||
|
self thread CheckIfCanVoteKick( player );
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckIfCanVoteKick( badplayer )
|
||||||
|
{
|
||||||
|
if( !isDefined( level.voting ) )
|
||||||
|
{
|
||||||
|
|
||||||
|
if( isDefined( self.VoteKickedAlready ) )
|
||||||
|
{
|
||||||
|
self iprintln( "^1You cannot vote kick more than once a game!" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
level.voting = true;
|
||||||
|
self.VoteKickedAlready = true;
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player.VoteKickTopString destroy();
|
||||||
|
player.VoteKickBottomString destroy();
|
||||||
|
player.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
level thread StartVoteKick( badplayer );
|
||||||
|
self.checkingToVote = undefined;
|
||||||
|
self notify( "close_voting" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self iprintln( "^1Voting taking place! Please wait until it has finished!" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StartVoteKick( badplayer )
|
||||||
|
{
|
||||||
|
level endon( "voting_ended" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
|
||||||
|
level thread StartVoteKickTimeLimit( badplayer );
|
||||||
|
level thread KickIfVotesAreEnough( badplayer );
|
||||||
|
|
||||||
|
level.votesneeded = ceil( level.numberOfPlayers / 2 );
|
||||||
|
level.votestokick = 0;
|
||||||
|
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player thread votekickText();
|
||||||
|
if( player.name == badplayer.name )
|
||||||
|
{
|
||||||
|
player freezeControls( true );
|
||||||
|
player.VoteKickTopString setText( "^1Vote Kicking " + badplayer.name );
|
||||||
|
player.VoteKickBottomString setText( "^1( " + level.votestokick + " / " + level.votesneeded + " ) ^7votes needed!" );
|
||||||
|
player.VoteKickInfoString setText( "The lobby is vote kicking you please wait" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player thread VotingButtonMonitor( badplayer );
|
||||||
|
player.VoteKickTopString setText( "^1Vote Kicking " + badplayer.name );
|
||||||
|
player.VoteKickBottomString setText( "^1( " + level.votestokick + " / " + level.votesneeded + " ) ^7votes needed!" );
|
||||||
|
player.VoteKickInfoString setText( "^5Prone [{+actionslot 1}] ^1Vote to Kick\n^5Prone [{+actionslot 2}] ^2Vote to Stay" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VotingButtonMonitor( badplayer )
|
||||||
|
{
|
||||||
|
self endon( "disconnect" );
|
||||||
|
level endon( "voting_ended" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
if( self getStance() == "prone" && self actionslotonebuttonpressed() && !isDefined( self.menu.open ) && !isDefined( self.voted ) )
|
||||||
|
{
|
||||||
|
self.voted = true;
|
||||||
|
level.votestokick += 1;
|
||||||
|
level notify( "update_vote_text" );
|
||||||
|
self iprintln("^1You voted for ^5"+badplayer.name+" to get kicked!" );
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
if( self getStance() == "prone" && self actionslottwobuttonpressed() && !isDefined( self.menu.open ) && !isDefined( self.voted ) )
|
||||||
|
{
|
||||||
|
self.voted = true;
|
||||||
|
self iprintln( "^2You voted for ^5"+badplayer.name+" to stay!" );
|
||||||
|
self.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KickIfVotesAreEnough( badplayer )
|
||||||
|
{
|
||||||
|
level endon( "voting_ended" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
if( level.votestokick >= level.votesneeded )
|
||||||
|
{
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player iprintln( "^5Vote Passed! ^1" + badplayer.name + " got Kicked!" );
|
||||||
|
player.voted = undefined;
|
||||||
|
player.checkingToVote = undefined;
|
||||||
|
}
|
||||||
|
setPlayerDvar( badplayer, "banned", true ); //this dvar is sticky, and will "ban" the player until
|
||||||
|
//the server is reset
|
||||||
|
kick( badplayer getentitynumber() );
|
||||||
|
level.votestokick = undefined;
|
||||||
|
level.voting = undefined;
|
||||||
|
level notify( "voting_ended" );
|
||||||
|
}
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StartVoteKickTimeLimit( badplayer )
|
||||||
|
{
|
||||||
|
level endon( "voting_ended" );
|
||||||
|
level endon( "end_game" );
|
||||||
|
|
||||||
|
level thread updateText();
|
||||||
|
level thread removeText();
|
||||||
|
level.votesneeded = ceil( level.numberOfPlayers / 2 );
|
||||||
|
level.votestokick = 0;
|
||||||
|
wait 15;
|
||||||
|
if( level.votestokick < level.votesneeded )
|
||||||
|
{
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player.voted = undefined;
|
||||||
|
player.checkingToVote = undefined;
|
||||||
|
if( player.name == badplayer.name )
|
||||||
|
{
|
||||||
|
player iprintln( "^1Not Enough votes to kick you!" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player iprintln("^1Not Enough Votes to Kick ^5" + badplayer.name + "!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
level.votestokick = undefined;
|
||||||
|
level.voting = undefined;
|
||||||
|
level notify( "voting_ended" );
|
||||||
|
}
|
||||||
|
|
||||||
|
updateText()
|
||||||
|
{
|
||||||
|
level endon( "voting_ended" );
|
||||||
|
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
level waittill( "update_vote_text" );
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player.VoteKickBottomString setText( "^1( " + level.votestokick + " / " + level.votesneeded + " ) ^7votes needed!" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
removeText()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill( "voting_ended" );
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
player.VoteKickTopString destroy();
|
||||||
|
player.VoteKickBottomString destroy();
|
||||||
|
player.VoteKickInfoString destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
votekickText()
|
||||||
|
{
|
||||||
|
self.VoteKickTopString = self createFontString( "objective", 1.2 );
|
||||||
|
self.VoteKickTopString setPoint( "CENTER", "CENTER", -345, -100 );
|
||||||
|
self.VoteKickBottomString = self createFontString( "objective", 1.2 );
|
||||||
|
self.VoteKickBottomString setPoint( "CENTER", "CENTER", -345, -85 );
|
||||||
|
self.VoteKickInfoString = self createFontString( "objective", 1 );
|
||||||
|
self.VoteKickInfoString setPoint( "CENTER", "CENTER", -345, -70 );
|
||||||
|
}
|
||||||
|
|
||||||
|
recountPlayers()
|
||||||
|
{
|
||||||
|
level.numberOfBots = 0;
|
||||||
|
level.numberOfPlayers = 0;
|
||||||
|
foreach( player in level.players )
|
||||||
|
{
|
||||||
|
if( isDefined( player.pers[ "isBot" ] ) && player.pers[ "isBot" ] )
|
||||||
|
{
|
||||||
|
level.numberOfBots += 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
level.numberOfPlayers += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setPlayerDvar( player, dvar, value )
|
||||||
|
{
|
||||||
|
thedvar = player getXUID() + "_" + dvar;
|
||||||
|
setDvar( thedvar, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
getPlayerDvar( player, dvar )
|
||||||
|
{
|
||||||
|
thedvar = player getXUID() + "_" + dvar;
|
||||||
|
|
||||||
|
return getDvar( thedvar );
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
16
Zombies Mods/Zombies++ v1.2/README.md
Normal file
16
Zombies Mods/Zombies++ v1.2/README.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# ZOMBIES++
|
||||||
|
If you want to just run the mod, use the precompiled version of the files to save time. If you want to change anything about Z++, you need to edit the open source code.
|
||||||
|
## DIRECTIONS
|
||||||
|
###### PRECOMPILED
|
||||||
|
- Take the **maps** folder containing the precompiled files and directories and place it in your **t6r/data** folder
|
||||||
|
- Make sure to replace your _**dedicated_zm.cfg**_ file with the one for Z++
|
||||||
|
###### EDITING SOURCE CODE
|
||||||
|
- Compile _**_clientids.gsc**_ as _**_clientids.gsc**_ and place it in the directory _**maps/mp/gametypes_zm/_clientids.gsc**_
|
||||||
|
- Compile _**_zm_powerups.gsc**_ as _**_zm_powerups.gsc**_ and place it in the directory _**map/mp/zombies/_zm_powerups.gsc**_
|
||||||
|
- Make sure to replace your _**dedicated_zm.cfg**_ file with the one for Z++
|
||||||
|
###### UPDATES V1.2
|
||||||
|
- _**_zm_powerups.gsc**_ now holds all functions for custom powerups
|
||||||
|
- _**_clientids.gsc**_ now holds all other functions for Z++
|
||||||
|
- Fixed Zombie Blood
|
||||||
|
- Fixed Zombie Counter
|
||||||
|
- Optimized Code for Stability
|
1157
Zombies Mods/Zombies++ v1.2/Source Code/_clientids.gsc
Normal file
1157
Zombies Mods/Zombies++ v1.2/Source Code/_clientids.gsc
Normal file
File diff suppressed because it is too large
Load Diff
3124
Zombies Mods/Zombies++ v1.2/Source Code/_zm_powerups.gsc
Normal file
3124
Zombies Mods/Zombies++ v1.2/Source Code/_zm_powerups.gsc
Normal file
File diff suppressed because it is too large
Load Diff
249
Zombies Mods/Zombies++ v1.2/dedicated_zm.cfg
Normal file
249
Zombies Mods/Zombies++ v1.2/dedicated_zm.cfg
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
//////////////////////////////////////////////////
|
||||||
|
/// PlutoT6 ZM ServerConfiguration file //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// This config best view with Notepad++ OR //
|
||||||
|
// Other *nix compatible editors of your choice.//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// 0.1 Basic version //
|
||||||
|
// 0.2 Added map list and map rotation //
|
||||||
|
// 0.3 Added Colors and B3/Log/RCon section //
|
||||||
|
// 0.4 Added gametype to map list and rotation //
|
||||||
|
// 0.5 Added location to map list and rotation //
|
||||||
|
// 0.6 Added Sharp Shooter and Gun game //
|
||||||
|
// 0.7 Clean up //
|
||||||
|
// 0.8 Additional gts -Fry //
|
||||||
|
// 0.9 Cleaned up the mess Fry merged, //
|
||||||
|
// added more comments //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// SERVER NAME & COLORS TIPS //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// ^0 Black //
|
||||||
|
// ^1 Red //
|
||||||
|
// ^2 Green //
|
||||||
|
// ^3 Yellow //
|
||||||
|
// ^4 Blue //
|
||||||
|
// ^5 Cyan //
|
||||||
|
// ^6 Pink //
|
||||||
|
// ^7 White //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
sv_hostname "^5ZOMBIES++ ^3[Dev:@ItsCahz]" //Give your server a name so you can spot it on the serverlist.
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// GENERAL SETTINGS //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
sv_offline "0" // Enables the offline mode. 1 = offline, 0 = online useful for LANs or in the case we get shut down.
|
||||||
|
//g_password "" // Password protected Game Server
|
||||||
|
party_maxplayers "4" // Maximum players that are allowed in your server (1-8)
|
||||||
|
//sv_minPing "0" // Minimum ping neede to the server? (Terribly broken and inaccurate since ages!)
|
||||||
|
//sv_maxPing "400" // Maximum ping allowed to the server? (Terribly broken and inaccurate since ages!)
|
||||||
|
//zm_gungame "1" // Enable Pluto's custom Gun Game?
|
||||||
|
//zm_sharpshooter "1" // Enable Pluto's custom Sharp Shooter?
|
||||||
|
gts zmDifficulty "1" // Difficulty? 0 = Easy, 1 = Normal
|
||||||
|
gts startRound "1" // Starting Round. Only Survival and Grief have this option!
|
||||||
|
//gts autoTeamBalance "1" // Auto team balancing
|
||||||
|
//gts teamCount "2" // Turn this on for grief only!
|
||||||
|
//gts magic "0" // Remove all supernatural assistance? Only Survival and Grief have this option!
|
||||||
|
//gts headshotsonly "1" // Headshots only? Only Survival and Grief have this option!
|
||||||
|
//gts allowdogs "1" // Allow Hellhounds? Only Survival has this option!
|
||||||
|
//gts cleansedLoadout "1" // Allow players to choose their Loadout? Only Turned has this option!
|
||||||
|
//set g_loadScripts "0"
|
||||||
|
|
||||||
|
//Welcome to Zombies++! you can enable or disable all functions in this file!
|
||||||
|
//almost no need to edit the GSC
|
||||||
|
//Developed by @ItsCahz
|
||||||
|
//huge credits to _Ox and JezuzLizard! without their releases, this wouldn't be possible!
|
||||||
|
//Zombies++ is not meant to be an "over the top" modded experience
|
||||||
|
//I wanted this to be an addition to the vanilla zombies
|
||||||
|
//credit to JezuzLizard! huge thanks for the server config base!
|
||||||
|
//game options
|
||||||
|
set playerStartingPoints 500 //staring points
|
||||||
|
set perkLimit 9 //perk limit *NOTE CUSTOM PERKS COUNT TOWARDS THE PERK LIMIT! EXCEPT PHD FLOPPER
|
||||||
|
set zombieAiLimit 24 //32 = hard mode fuck yes
|
||||||
|
set zombieActorLimit 32 //32 zombies tryna eat ur face haha get fuckd
|
||||||
|
set midroundDogs 0 //mid round puppers
|
||||||
|
set noEndGameCheck 0 //noendgamecheck
|
||||||
|
set soloLaststandWeapon "m1911_upgraded_zm" //Solo last stand weapon (so like if ur reviving urself with quick revive typ shit)
|
||||||
|
set coopLaststandWeapon "m1911_zm" //last stand weapon is in co-op
|
||||||
|
set startWeaponZm "m1911_zm" //weapon player starts with
|
||||||
|
set disableWalkers 0 //make all zombies runners (theyre fast af boi)
|
||||||
|
set roundNumber 1 //round number to start on
|
||||||
|
set soloModeDisabled 1 //disable solo mode - fixes quick revive price and Mob of the Dead Afterlife count to 1 instead of 3
|
||||||
|
//main Zombies++ options
|
||||||
|
set enableZombieCounter 1 //enable or disable on screen zombie counter
|
||||||
|
set customMysteryBoxPriceEnabled 0 //override mystery box price
|
||||||
|
set customMysteryBoxPrice 10 //custom mystery box price
|
||||||
|
set disableAllCustomPerks 0 //override any enabled custom perks and disable all
|
||||||
|
set zmPowerupsNoPowerupDrops 0 //override powerup drops
|
||||||
|
//Zombies++ options
|
||||||
|
|
||||||
|
//custom perk machines
|
||||||
|
set enablePHDFlopper 1 //enable custom phdflopper perk machine on maps (Nuketown, Tranzit, Buried, MOTD, Die Rise)
|
||||||
|
set enableStaminUp 1 //enable custom staminup perk machine on maps (Nuketown, Tranzit, MOTD, Die Rise)
|
||||||
|
set enableDeadshot 1 //enable custom deadshot perk machine on maps (Nuketown, Tranzit, Buried, Die Rise)
|
||||||
|
set enableMuleKick 1 //enable custom mulekick perk machine on maps (Nuketown, Tranzit)
|
||||||
|
|
||||||
|
//custom powerup drops
|
||||||
|
set zmPowerupsMoneyDropEnabled 1
|
||||||
|
set zmPowerupsPackAPunchEnabled 0
|
||||||
|
set zmPowerupsUnlimitedAmmoEnabled 1
|
||||||
|
set zmPowerupsFastFeetEnabled 1
|
||||||
|
|
||||||
|
//powerups properties
|
||||||
|
set maxPowerupsPerRound 4 //max number of powerups in any 1 round
|
||||||
|
set powerupDropRate 6000 //drop rate for powerups (lower is faster) 2000 is default(?) but that feels too easy
|
||||||
|
set zombiesAlwaysDropPowerups 0 //zombies always drop powerups (will stop dropping after max limit is hit)
|
||||||
|
set fourPlayerPowerupScore 50 //powerup score per kill with 4 players
|
||||||
|
set threePlayerPowerupScore 50 //powerup score per kill with 3 players
|
||||||
|
set twoPlayerPowerupScore 50 //powerup score per kill with 2 players
|
||||||
|
set onePlayerPowerupScore 50 //powerup score per kill with 1 player
|
||||||
|
set powerupScoreMeleeKill 80 //powerup score per melee kill
|
||||||
|
set powerupScoreHeadshotKill 50 //powerup score per headshot kill
|
||||||
|
set powerupScoreNeckKill 20 //powerup score per neck kill
|
||||||
|
set powerupScoreTorsoKill 10 //powerup score per torso kill
|
||||||
|
|
||||||
|
//enable or disable powerups
|
||||||
|
set zmPowerupsNukeEnabled 1 //enable nuke powerup
|
||||||
|
set zmPowerupsInstaKillEnabled 1 //enable insta kill powerup
|
||||||
|
set zmPowerupsMaxAmmoEnabled 1 //enable max ammo powerup
|
||||||
|
set zmPowerupsDoublePointsEnabled 1 //enable double points powerup
|
||||||
|
set zmPowerupsCarpenterEnabled 1 //enable carpenter powerup
|
||||||
|
set zmPowerupsFireSaleEnabled 1 //enable fire sale powerup
|
||||||
|
set zmPowerupsPerkBottleEnabled 1 //enable perk bottle powerup
|
||||||
|
set zmPowerupsZombieBloodEnabled 1 //enable zombie blood powerup
|
||||||
|
|
||||||
|
//zombie properties dvars
|
||||||
|
set overrideZombieTotalPermanently 0
|
||||||
|
set overrideZombieTotalPermanentlyValue 100
|
||||||
|
set overrideZombieHealthPermanently 0
|
||||||
|
set overrideZombieHealthPermanentlyValue 150
|
||||||
|
set overrideZombieMaxHealth 0
|
||||||
|
set overrideZombieMaxHealthValue 150
|
||||||
|
set zombieSpawnRate 1.75 //2 is default 1.75 feels slightly nicer
|
||||||
|
set zombieSpawnRateMultiplier 0.95
|
||||||
|
set zombieSpawnRateLocked 0
|
||||||
|
set zombiesPerPlayer 6
|
||||||
|
set zombieHealthIncreaseFlat 100
|
||||||
|
set zombieHealthIncreaseMultiplier 0.1
|
||||||
|
set zombieHealthStart 150
|
||||||
|
set zombieNewRunnerInterval 10
|
||||||
|
set zombieMoveSpeed 10
|
||||||
|
set zombieMoveSpeedLocked 1
|
||||||
|
set zombieMoveSpeedCap 0
|
||||||
|
set zombieMoveSpeedCapValue 1
|
||||||
|
set zombieMoveSpeedMultiplier 10
|
||||||
|
set zombieMoveSpeedMultiplierEasy 8
|
||||||
|
set zombieMaxAi 24
|
||||||
|
set belowWorldCheck -1000
|
||||||
|
|
||||||
|
//round properties
|
||||||
|
set customSpectatorsRespawn 1
|
||||||
|
set zombieIntermissionTime 10
|
||||||
|
set zombieBetweenRoundTime 15
|
||||||
|
set roundStartDelay 0
|
||||||
|
|
||||||
|
//player properties
|
||||||
|
set bleedoutPointsLostAllPlayers 0.1
|
||||||
|
set bleedoutPointsLostSelf 0.1
|
||||||
|
set downedPointsLostSelf 0.05
|
||||||
|
set playerStartingLives 1
|
||||||
|
set fourPlayerScorePerZombieKill 50
|
||||||
|
set threePlayerScorePerZombieKill 50
|
||||||
|
set twoPlayerScorePerZombieKill 50
|
||||||
|
set onePlayerScorePerZombieKill 50
|
||||||
|
set pointsPerNormalAttack 10
|
||||||
|
set pointsPerLightAttack 10
|
||||||
|
set shouldZombifyPlayer 0
|
||||||
|
set alliesPointsMultiplier 1
|
||||||
|
set axisPointsMultiplier 1
|
||||||
|
|
||||||
|
//perk properties
|
||||||
|
set empPerkExplosionRadius 420
|
||||||
|
set empPerkOffDuration 90
|
||||||
|
set riotshieldHitPoints 2250
|
||||||
|
set juggHealthBonus 160
|
||||||
|
set permaJuggHealthBonus 190
|
||||||
|
set minPhdExplosionDamage 1000
|
||||||
|
set maxPhdExplosionDamage 5000
|
||||||
|
set phdDamageRadius 300
|
||||||
|
|
||||||
|
//builtin dvars
|
||||||
|
//sets whether the mystery box moves ever
|
||||||
|
set magic_chest_movable 1
|
||||||
|
//sets how close players have to be to revive another player
|
||||||
|
set revive_trigger_radius 75
|
||||||
|
//sets the amount time before a player will bleedout after going down
|
||||||
|
set player_lastStandBleedoutTime 90
|
||||||
|
//sets speed colas reload multiplier lower is better WARNING: animation doesn't sync
|
||||||
|
set perk_weapReloadMultiplier 0.5
|
||||||
|
//sets double taps firing speed multiplier lower is better
|
||||||
|
set perk_weapRateMultiplier 0.75
|
||||||
|
//sets deadshot crosshair size multiplier lower is better
|
||||||
|
set perk_weapSpreadMultiplier 0.70
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// B3, GAME LOG & RCON SETTINGS //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
g_logSync 2 // 0 only flush on game end, 1 flush when buffer full, 2 always flush after a write, 3 append to old logs.
|
||||||
|
g_log "" // Disable logs per default.
|
||||||
|
g_log "logs\games_zm.log" // If you choose to use this make sure the filename is unique for each server!
|
||||||
|
rcon_password "" // RemoteCONtrol password, needed for most management tools.
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// MAP LIST WITH ALL GAME MODES AND LOCATIONS //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// At the moment only the first game mode of //
|
||||||
|
// each map works on dedicated servers (31/3/18)//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Buried aka Resolution 1295 //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zclassic loc processing map zm_buried//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Die Rise aka Great Leap Forward //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zclassic loc rooftop map zm_highrise//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Nuketown //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zstandard loc nuked map zm_nuked //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Mob of the Dead //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zclassic loc prison map zm_prison//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Origins //
|
||||||
|
//Make sure you don't allow more than 4 players!//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zclassic loc tomb map zm_tomb //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Diner (Turned only) //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zcleansed loc diner map zm_transit_dr//
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// Green Run aka Bus Depot aka Farm aka Town //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//gametype zclassic loc transit map zm_transit //
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
//g_gametype zgrief
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//Unlike in other games/MP you should always define the game type and location. //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//Die Rise
|
||||||
|
sv_maprotation "gametype zclassic loc rooftop map zm_highrise"
|
||||||
|
|
||||||
|
//Buried
|
||||||
|
//sv_maprotation "gametype zclassic loc processing map zm_buried"
|
||||||
|
|
||||||
|
//Alcatraz
|
||||||
|
//sv_maprotation "gametype zclassic loc prison map zm_prison"
|
||||||
|
|
||||||
|
//Tranzit
|
||||||
|
//sv_maprotation "gametype zclassic loc transit map zm_transit"
|
||||||
|
|
||||||
|
//Origins
|
||||||
|
//sv_maprotation "gametype zclassic loc tomb map zm_tomb"
|
||||||
|
|
||||||
|
//Nuketown
|
||||||
|
//sv_maprotation "gametype zstandard loc nuked map zm_nuked"
|
||||||
|
|
||||||
|
map_rotate
|
Loading…
x
Reference in New Issue
Block a user