ok im trying another mod because the other simply wont work.. i use this script atm
my dm.gsc atm
Code:
/*
Deathmatch
Objective: Score points by eliminating other players
Map ends: When one player reaches the score limit, or time limit is reached
Respawning: No wait / Away from other players
Level requirements
------------------
Spawnpoints:
classname mp_deathmatch_spawn
All players spawn from these. The spawnpoint chosen is dependent on the current locations of enemies at the time of spawn.
Players generally spawn away from enemies.
Spectator Spawnpoints:
classname mp_deathmatch_intermission
Spectators spawn from these and intermission is viewed from these positions.
Atleast one is required, any more and they are randomly chosen between.
Level script requirements
-------------------------
Team Definitions:
game["allies"] = "american";
game["axis"] = "german";
Because Deathmatch doesn't have teams with regard to gameplay or scoring, this effectively sets the available weapons.
If using minefields or exploders:
maps\mp\_load::main();
Optional level script settings
------------------------------
Soldier Type and Variation:
game["american_soldiertype"] = "airborne";
game["american_soldiervariation"] = "normal";
game["german_soldiertype"] = "wehrmacht";
game["german_soldiervariation"] = "normal";
This sets what models are used for each nationality on a particular map.
Valid settings:
american_soldiertype airborne
american_soldiervariation normal, winter
british_soldiertype airborne, commando
british_soldiervariation normal, winter
russian_soldiertype conscript, veteran
russian_soldiervariation normal, winter
german_soldiertype waffen, wehrmacht, fallschirmjagercamo, fallschirmjagergrey, kriegsmarine
german_soldiervariation normal, winter
Layout Image:
game["layoutimage"] = "yourlevelname";
This sets the image that is displayed when players use the "View Map" button in game.
Create an overhead image of your map and name it "hud@layout_yourlevelname".
Then move it to main\levelshots\layouts. This is generally done by taking a screenshot in the game.
Use the outsideMapEnts console command to keep models such as trees from vanishing when noclipping outside of the map.
*/
/*QUAKED mp_deathmatch_spawn (1.0 0.5 0.0) (-16 -16 0) (16 16 72)
Players spawn away from enemies at one of these positions.
*/
/*QUAKED mp_deathmatch_intermission (1.0 0.0 1.0) (-16 -16 -16) (16 16 16)
Intermission is randomly viewed from one of these positions.
Spectators spawn randomly at one of these positions.
*/
main()
{
spawnpointname = "mp_deathmatch_spawn";
spawnpoints = getentarray(spawnpointname, "classname");
if(!spawnpoints.size)
{
maps\mp\gametypes\_callbacksetup::AbortLevel();
return;
}
for(i = 0; i < spawnpoints.size; i++)
spawnpoints[i] placeSpawnpoint();
level.callbackStartGameType = ::Callback_StartGameType;
level.callbackPlayerConnect = ::Callback_PlayerConnect;
level.callbackPlayerDisconnect = ::Callback_PlayerDisconnect;
level.callbackPlayerDamage = ::Callback_PlayerDamage;
level.callbackPlayerKilled = ::Callback_PlayerKilled;
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);
if(getCvar("scr_dm_timelimit") == "") // Time limit per map
setCvar("scr_dm_timelimit", "30");
else if(getCvarFloat("scr_dm_timelimit") > 1440)
setCvar("scr_dm_timelimit", "1440");
level.timelimit = getCvarFloat("scr_dm_timelimit");
setCvar("ui_dm_timelimit", level.timelimit);
makeCvarServerInfo("ui_dm_timelimit", "30");
if(getCvar("scr_dm_scorelimit") == "") // Score limit per map
setCvar("scr_dm_scorelimit", "50");
level.scorelimit = getCvarInt("scr_dm_scorelimit");
setCvar("ui_dm_scorelimit", level.scorelimit);
makeCvarServerInfo("ui_dm_scorelimit", "50");
if(getCvar("scr_forcerespawn") == "") // Force respawning
setCvar("scr_forcerespawn", "0");
////// Added by AWE ////
if(getCvar("scr_drophealth") == "") // Free look spectator
setCvar("scr_drophealth", "1");
////////////////////////
killcam = getCvar("scr_killcam");
if(killcam == "") // Kill cam
killcam = "1";
setCvar("scr_killcam", killcam, true);
level.killcam = getCvarInt("scr_killcam");
if(!isDefined(game["state"]))
game["state"] = "playing";
level.QuickMessageToAll = true;
level.mapended = false;
level.healthqueue = [];
level.healthqueuecurrent = 0;
if(level.killcam >= 1)
setarchive(true);
}
Callback_StartGameType()
{
////////// Added by AWE ///////////////
maps\mp\gametypes\_awe::Callback_StartGameType();
///////////////////////////////////////
// defaults if not defined in level script
if(!isDefined(game["allies"]))
game["allies"] = "american";
if(!isDefined(game["axis"]))
game["axis"] = "german";
if(!isDefined(game["layoutimage"]))
game["layoutimage"] = "default";
layoutname = "levelshots/layouts/hud@layout_" + game["layoutimage"];
precacheShader(layoutname);
setCvar("scr_layoutimage", layoutname);
makeCvarServerInfo("scr_layoutimage", "");
// server cvar overrides
if(getCvar("scr_allies") != "")
game["allies"] = getCvar("scr_allies");
if(getCvar("scr_axis") != "")
game["axis"] = getCvar("scr_axis");
game["menu_serverinfo"] = "serverinfo_" + getCvar("g_gametype");
game["menu_team"] = "team_" + game["allies"] + game["axis"];
game["menu_weapon_allies"] = "weapon_" + game["allies"];
game["menu_weapon_axis"] = "weapon_" + game["axis"];
game["menu_viewmap"] = "viewmap";
game["menu_callvote"] = "callvote";
game["menu_quickcommands"] = "quickcommands";
game["menu_quickstatements"] = "quickstatements";
game["menu_quickresponses"] = "quickresponses";
precacheString(&"MPSCRIPT_PRESS_ACTIVATE_TO_RESPAWN");
precacheString(&"MPSCRIPT_KILLCAM");
precacheMenu(game["menu_serverinfo"]);
precacheMenu(game["menu_team"]);
precacheMenu(game["menu_weapon_allies"]);
precacheMenu(game["menu_weapon_axis"]);
precacheMenu(game["menu_viewmap"]);
precacheMenu(game["menu_callvote"]);
precacheMenu(game["menu_quickcommands"]);
precacheMenu(game["menu_quickstatements"]);
precacheMenu(game["menu_quickresponses"]);
precacheShader("black");
precacheShader("hudScoreboard_mp");
precacheShader("gfx/hud/hud@mpflag_none.tga");
precacheShader("gfx/hud/hud@mpflag_spectator.tga");
precacheStatusIcon("gfx/hud/hud@status_dead.tga");
precacheStatusIcon("gfx/hud/hud@status_connecting.tga");
precacheItem("item_health");
maps\mp\gametypes\_teams::modeltype();
maps\mp\gametypes\_teams::precache();
maps\mp\gametypes\_teams::initGlobalCvars();
maps\mp\gametypes\_teams::initWeaponCvars();
maps\mp\gametypes\_teams::restrictPlacedWeapons();
thread maps\mp\gametypes\_teams::updateGlobalCvars();
thread maps\mp\gametypes\_teams::updateWeaponCvars();
thread maps\mp\gametypes\_damagefeedback::init();
setClientNameMode("auto_change");
thread startGame();
// thread addBotClients(); // For development testing
thread updateGametypeCvars();
}
Callback_PlayerConnect()
{
self.statusicon = "gfx/hud/hud@status_connecting.tga";
self waittill("begin");
self.statusicon = "";
iprintln(&"MPSCRIPT_CONNECTED", self);
lpselfnum = self getEntityNumber();
lpselfguid = self getGuid();
logPrint("J;" + lpselfguid + ";" + lpselfnum + ";" + self.name + "\n");
if(game["state"] == "intermission")
{
spawnIntermission();
return;
}
level endon("intermission");
if(isDefined(self.pers["team"]) && self.pers["team"] != "spectator")
{
self setClientCvar("ui_weapontab", "1");
self.sessionteam = "none";
if(self.pers["team"] == "allies")
self setClientCvar("g_scriptMainMenu", game["menu_weapon_allies"]);
else
self setClientCvar("g_scriptMainMenu", game["menu_weapon_axis"]);
if(isDefined(self.pers["weapon"]))
spawnPlayer();
else
{
spawnSpectator();
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else
self openMenu(game["menu_weapon_axis"]);
}
}
else
{
self setClientCvar("g_scriptMainMenu", game["menu_team"]);
self setClientCvar("ui_weapontab", "0");
if(!isDefined(self.pers["skipserverinfo"]))
self openMenu(game["menu_serverinfo"]);
self.pers["team"] = "spectator";
self.sessionteam = "spectator";
spawnSpectator();
}
for(;;)
{
self waittill("menuresponse", menu, response);
if(menu == game["menu_serverinfo"] && response == "close")
{
self.pers["skipserverinfo"] = true;
self openMenu(game["menu_team"]);
}
if(response == "open" || response == "close")
continue;
if(menu == game["menu_team"])
{
switch(response)
{
case "allies":
case "axis":
case "autoassign":
if(response == "autoassign")
{
teams[0] = "allies";
teams[1] = "axis";
response = teams[randomInt(2)];
}
if(response == self.pers["team"] && self.sessionstate == "playing")
break;
if(response != self.pers["team"] && self.sessionstate == "playing")
self suicide();
self notify("end_respawn");
self.pers["team"] = response;
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;
self setClientCvar("ui_weapontab", "1");
if(self.pers["team"] == "allies")
{
self setClientCvar("g_scriptMainMenu", game["menu_weapon_allies"]);
self openMenu(game["menu_weapon_allies"]);
}
else
{
self setClientCvar("g_scriptMainMenu", game["menu_weapon_axis"]);
self openMenu(game["menu_weapon_axis"]);
}
break;
case "spectator":
if(self.pers["team"] != "spectator")
{
self.pers["team"] = "spectator";
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;
self.sessionteam = "spectator";
self setClientCvar("g_scriptMainMenu", game["menu_team"]);
self setClientCvar("ui_weapontab", "0");
spawnSpectator();
}
break;
case "weapon":
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else if(self.pers["team"] == "axis")
self openMenu(game["menu_weapon_axis"]);
break;
case "viewmap":
self openMenu(game["menu_viewmap"]);
break;
case "callvote":
self openMenu(game["menu_callvote"]);
break;
}
}
else if(menu == game["menu_weapon_allies"] || menu == game["menu_weapon_axis"])
{
if(response == "team")
{
self openMenu(game["menu_team"]);
continue;
}
else if(response == "viewmap")
{
self openMenu(game["menu_viewmap"]);
continue;
}
else if(response == "callvote")
{
self openMenu(game["menu_callvote"]);
continue;
}
if(!isDefined(self.pers["team"]) || (self.pers["team"] != "allies" && self.pers["team"] != "axis"))
continue;
weapon = self maps\mp\gametypes\_teams::restrict(response);
if(weapon == "restricted")
{
self openMenu(menu);
continue;
}
if(isDefined(self.pers["weapon"]) && self.pers["weapon"] == weapon)
continue;
if(!isDefined(self.pers["weapon"]))
{
self.pers["weapon"] = weapon;
spawnPlayer();
}
else
{
self.pers["weapon"] = weapon;
weaponname = maps\mp\gametypes\_teams::getWeaponName(self.pers["weapon"]);
if(maps\mp\gametypes\_teams::useAn(self.pers["weapon"]))
self iprintln(&"MPSCRIPT_YOU_WILL_RESPAWN_WITH_AN", weaponname);
else
self iprintln(&"MPSCRIPT_YOU_WILL_RESPAWN_WITH_A", weaponname);
}
}
else if(menu == game["menu_viewmap"])
{
switch(response)
{
case "team":
self openMenu(game["menu_team"]);
break;
case "weapon":
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else if(self.pers["team"] == "axis")
self openMenu(game["menu_weapon_axis"]);
break;
case "callvote":
self openMenu(game["menu_callvote"]);
break;
}
}
else if(menu == game["menu_callvote"])
{
switch(response)
{
case "team":
self openMenu(game["menu_team"]);
break;
case "weapon":
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else if(self.pers["team"] == "axis")
self openMenu(game["menu_weapon_axis"]);
break;
case "viewmap":
self openMenu(game["menu_viewmap"]);
break;
}
}
else if(menu == game["menu_quickcommands"])
maps\mp\gametypes\_teams::quickcommands(response);
else if(menu == game["menu_quickstatements"])
maps\mp\gametypes\_teams::quickstatements(response);
else if(menu == game["menu_quickresponses"])
maps\mp\gametypes\_teams::quickresponses(response);
}
}
Callback_PlayerDisconnect()
{
///// Added by AWE ////////
self maps\mp\gametypes\_awe::PlayerDisconnect();
///////////////////////////
iprintln(&"MPSCRIPT_DISCONNECTED", self);
lpselfnum = self getEntityNumber();
lpselfguid = self getGuid();
logPrint("Q;" + lpselfguid + ";" + lpselfnum + ";" + self.name + "\n");
}
Callback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc)
{
if(self.sessionteam == "spectator")
return;
// Don't do knockback if the damage direction was not specified
if(!isDefined(vDir))
iDFlags |= level.iDFLAGS_NO_KNOCKBACK;
// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;
// Do debug print if it's enabled
if(getCvarInt("g_debugDamage"))
{
println("client:" + self getEntityNumber() + " health:" + self.health +
" damage:" + iDamage + " hitLoc:" + sHitLoc);
}
// Apply the damage to the player
self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc);
////////////// Added by AWE //////////////////
self maps\mp\gametypes\_awe::DoPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc);
//////////////////////////////////////////////
if(self.sessionstate != "dead")
{
lpselfnum = self getEntityNumber();
lpselfname = self.name;
lpselfteam = self.pers["team"];
lpselfGuid = self getGuid();
lpattackerteam = "";
if(isPlayer(eAttacker))
{
lpattacknum = eAttacker getEntityNumber();
lpattackGuid = eAttacker getGuid();
lpattackname = eAttacker.name;
lpattackerteam = eAttacker.pers["team"];
}
else
{
lpattacknum = -1;
lpattackGuid = "";
lpattackname = "";
lpattackerteam = "world";
}
logPrint("D;" + lpselfGuid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
}
}
Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc)
{
self endon("spawned");
if(self.sessionteam == "spectator")
return;
/////////// Added by AWE ///////////
self thread maps\mp\gametypes\_awe::PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc);
////////////////////////////////////
// If the player was killed by a head shot, let players know it was a head shot kill
if(sHitLoc == "head" && sMeansOfDeath != "MOD_MELEE")
sMeansOfDeath = "MOD_HEAD_SHOT";
if(sMeansOfDeath == "MOD_HEAD_SHOT")
{
attacker maps\mp\gametypes\_damagefeedback::headshotsound();
self maps\mp\gametypes\_damagefeedback::headshotsound();
}
if(sMeansOfDeath == "MOD_MELEE")
{
attacker maps\mp\gametypes\_damagefeedback::brutalitysound();
self maps\mp\gametypes\_damagefeedback::brutalitysound();
}
if(sMeansOfDeath == "MOD_GRENADE_SPLASH")
{
attacker maps\mp\gametypes\_damagefeedback::fatalitysound();
self maps\mp\gametypes\_damagefeedback::fatalitysound();
}
if(sMeansOfDeath == "MOD_SUICIDE")
{
self maps\mp\gametypes\_damagefeedback::humiliationsound();
}
self thread Check_for_EndofRampage(self);
{
hitlocation = "";
if(sHitLoc == "head")
hitlocation = "Head ";
if(sHitLoc == "helmet")
hitlocation = "Helmet ";
if(sHitLoc == "neck")
hitlocation = "Neck ";
if(sHitLoc == "torso_upper")
hitlocation = "Upper Torso ";
if(sHitLoc == "torso_lower")
hitlocation = "Lower Torso ";
if(sHitLoc == "right_arm_upper")
hitlocation = "Upper Right Arm ";
if(sHitLoc == "right_arm_lower")
hitlocation = "Lower Right Arm ";
if(sHitLoc == "right_hand")
hitlocation = "Right Hand ";
if(sHitLoc == "left_arm_upper")
hitlocation = "Upper Left Arm ";
if(sHitLoc == "left_arm_lower")
hitlocation = "Lower Left Arm ";
if(sHitLoc == "left_hand")
hitlocation = "Left Hand ";
if(sHitLoc == "right_leg_upper")
hitlocation = "Upper Right Leg ";
if(sHitLoc == "right_leg_lower")
hitlocation = "Lower Right Leg ";
if(sHitLoc == "right_foot")
hitlocation = "Right Foot ";
if(sHitLoc == "left_leg_upper")
hitlocation = "Upper Left Leg ";
if(sHitLoc == "left_leg_lower")
hitlocation = "Lower Left Leg ";
if(sHitLoc == "left_foot")
hitlocation = "Left Foot ";
distance = distance(Attacker.origin , self.origin);
meters = (int(distance * 0.254))/10;
attacker iprintln("^1" + hitlocation + " Shot ^7from a Distance of ^2" + meters + " ^7meters!");
self iprintln("^1" + hitlocation + " Shot ^7from a Distance of ^2" + meters + " ^7meters!");
}
// send out an obituary message to all clients about the kill
////////// Removed by AWE ///////
// obituary(self, attacker, sWeapon, sMeansOfDeath);
/////////////////////////////////
self.sessionstate = "dead";
self.statusicon = "gfx/hud/hud@status_dead.tga";
self.deaths++;
lpselfnum = self getEntityNumber();
lpselfname = self.name;
lpselfteam = "";
lpselfguid = self getGuid();
lpattackerteam = "";
attackerNum = -1;
if(isPlayer(attacker))
{
if(attacker == self) // killed himself
{
doKillcam = false;
attacker.score--;
}
else
{
attackerNum = attacker getEntityNumber();
doKillcam = true;
attacker.score++;
attacker checkScoreLimit();
}
lpattacknum = attacker getEntityNumber();
lpattackguid = attacker getGuid();
lpattackname = attacker.name;
}
else // If you weren't killed by a player, you were in the wrong place at the wrong time
{
doKillcam = false;
self.score--;
lpattacknum = -1;
lpattackguid = "";
lpattackname = "";
}
logPrint("K;" + lpselfguid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
// Stop thread if map ended on this death
if(level.mapended)
return;
// self updateDeathArray();
// Make the player drop his weapon
///// Removed by AWE /////
// self dropItem(self getcurrentweapon());
//////////////////////////
// Make the player drop health
self dropHealth();
///// Removed by AWE /////
// body = self cloneplayer();
//////////////////////////
delay = 2; // Delay the player becoming a spectator till after he's done dying
wait delay; // ?? Also required for Callback_PlayerKilled to complete before respawn/killcam can execute
if((getCvarInt("scr_killcam") <= 0) || (getCvarInt("scr_forcerespawn") > 0))
doKillcam = false;
if(doKillcam)
self thread killcam(attackerNum, delay);
else
self thread respawn();
}
updateDeathArray()
{
if(!isDefined(level.deatharray))
{
level.deatharray[0] = self.origin;
level.deatharraycurrent = 1;
return;
}
if(level.deatharraycurrent < 31)
level.deatharray[level.deatharraycurrent] = self.origin;
else
{
level.deatharray[0] = self.origin;
level.deatharraycurrent = 1;
return;
}
level.deatharraycurrent++;
}
spawnPlayer()
{
self notify("spawned");
self notify("end_respawn");
resettimeout();
// if(isDefined(self.shocked))
// {
// self stopShellshock();
// self.shocked = undefined;
// }
self.sessionteam = "none";
self.sessionstate = "playing";
self.spectatorclient = -1;
self.archivetime = 0;
spawnpointname = "mp_deathmatch_spawn";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM(spawnpoints);
if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");
self.statusicon = "";
self.maxhealth = 100;
self.health = self.maxhealth;
if(!isDefined(self.pers["savedmodel"]))
maps\mp\gametypes\_teams::model();
else
maps\mp\_utility::loadModel(self.pers["savedmodel"]);
maps\mp\gametypes\_teams::givePistol();
maps\mp\gametypes\_teams::giveGrenades(self.pers["weapon"]);
self giveWeapon(self.pers["weapon"]);
self giveMaxAmmo(self.pers["weapon"]);
self setSpawnWeapon(self.pers["weapon"]);
self setClientCvar("cg_objectiveText", &"DM_KILL_OTHER_PLAYERS");
////////////// Added by AWE /////////////////
self maps\mp\gametypes\_awe::spawnPlayer();
/////////////////////////////////////////////
}
spawnSpectator(origin, angles)
{
self notify("spawned");
self notify("end_respawn");
resettimeout();
// if(isDefined(self.shocked))
// {
// self stopShellshock();
// self.shocked = undefined;
// }
self.sessionstate = "spectator";
self.spectatorclient = -1;
self.archivetime = 0;
if(self.pers["team"] == "spectator")
self.statusicon = "";
if(isDefined(origin) && isDefined(angles))
self spawn(origin, angles);
else
{
spawnpointname = "mp_deathmatch_intermission";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(spawnpoints);
if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");
}
self setClientCvar("cg_objectiveText", &"DM_KILL_OTHER_PLAYERS");
}
spawnIntermission()
{
self notify("spawned");
self notify("end_respawn");
resettimeout();
// if(isDefined(self.shocked))
// {
// self stopShellshock();
// self.shocked = undefined;
// }
self.sessionstate = "intermission";
self.spectatorclient = -1;
self.archivetime = 0;
spawnpointname = "mp_deathmatch_intermission";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(spawnpoints);
if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");
}
Check_for_Rampage()
{
name = self.name;
if (self.pers["kill_spree"] == 8)
{
wait 0.9;
iprintln("^7"+ name +"^7 is ^3Dominating^7: with 8 kills in a row");
self maps\mp\gametypes\_damagefeedback::dominatingsound();
}
else if (self.pers["kill_spree"] == 5)
{
wait 0.9;
iprintln("^7"+ name +"^7 is on a ^3Rampage^7: with 5 kills in a row");
self maps\mp\gametypes\_damagefeedback::rampagesound();
}
else if (self.pers["kill_spree"] == 3)
{
wait 0.9;
iprintln("^7"+ name +"^7 is on a ^3Killing Spree^7 with 3 kills in a row");
self maps\mp\gametypes\_damagefeedback::killingspreesound();
}
else if (self.pers["kill_spree"] == 11)
{
wait 0.9;
iprintln("^7"+ name +"^7 is ^3Unstoppable^7: 11 kills in a row");
self maps\mp\gametypes\_damagefeedback::unstoppablesound();
}
else if (self.pers["kill_spree"] == 30)
{
wait 0.9;
iprintln("^7"+ name +"^7 is ^3Godlike^7: 30 kills in a row");
self maps\mp\gametypes\_damagefeedback::godlikesound();
}
else if (self.pers["kill_spree"] == 20)
{
wait 0.9;
iprintln("^7"+ name +" ^3Wicked Sick^7: 20 kills in a row");
self maps\mp\gametypes\_damagefeedback::wickedsicksound();
}
else if (self.pers["kill_spree"] == 25)
{
wait 0.9;
iprintln("^7"+ name +"^7 : ^3HOLY poo-poo^7: 25 kills in a row");
self maps\mp\gametypes\_damagefeedback::holyshitsound();
}
else if (self.pers["kill_spree"] == 15)
{
wait 0.9;
iprintln("^7"+ name +"^7 is ^3Slaughtering^7: 15 kills in a row");
self maps\mp\gametypes\_damagefeedback::slaughtersound();
}
}
///////////////////Killing Spree Messages and Sounds/////////////////////////////////
Check_for_EndofRampage(attacker)
{
if (self.pers["kill_spree"] == 3)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Killing Spree");
self maps\mp\gametypes\_damagefeedback::dohsound();
}
else if (self.pers["kill_spree"] == 4)
{
self maps\mp\gametypes\_damagefeedback::dohsound();
iprintln(attacker.name + " Has Ended " + self.name + "'s Killing Spree");
}
else if (self.pers["kill_spree"] == 5)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Rampage");
self maps\mp\gametypes\_damagefeedback::enditsound();
}
else if (self.pers["kill_spree"] == 6)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Rampage");
self maps\mp\gametypes\_damagefeedback::enditsound();
}
else if (self.pers["kill_spree"] == 7)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Rampage");
self maps\mp\gametypes\_damagefeedback::enditsound();
}
else if (self.pers["kill_spree"] == 8)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Domination");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 9)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Domination");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 10)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Domination");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 11)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Unstoppable Killing Spree");
self maps\mp\gametypes\_damagefeedback::killspree_endsound();
}
else if (self.pers["kill_spree"] == 12)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Unstoppable Killing Spree");
self maps\mp\gametypes\_damagefeedback::killspree_endsound();
}
else if (self.pers["kill_spree"] == 13)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Unstoppable Killing Spree");
self maps\mp\gametypes\_damagefeedback::killspree_endsound();
}
else if (self.pers["kill_spree"] == 14)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Unstoppable Killing Spree");
self maps\mp\gametypes\_damagefeedback::killspree_endsound();
}
else if (self.pers["kill_spree"] == 15)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Slaughter Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 16)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Slaughter Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 17)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Slaughter Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 18)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Slaughter Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 19)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Slaughter Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 20)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Wicked Sick Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 21)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Wicked Sick Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 22)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Wicked Sick Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 23)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Wicked Sick Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 24)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Wicked Sick Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 25)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Holy poo-poo Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 26)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Holy poo-poo Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 27)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Holy poo-poo Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 28)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Holy poo-poo Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 29)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s Holy poo-poo Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 30)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 31)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 32)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 33)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 34)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
else if (self.pers["kill_spree"] == 35)
{
iprintln(attacker.name + " Has Ended " + self.name + "'s God Like Killing Spree");
self maps\mp\gametypes\_damagefeedback::hallelujah();
}
}
respawn()
{
if(!isDefined(self.pers["weapon"]))
return;
self endon("end_respawn");
if(getCvarInt("scr_forcerespawn") > 0)
{
self thread waitForceRespawnTime();
self thread waitRespawnButton();
self waittill("respawn");
}
else
{
self thread waitRespawnButton();
self waittill("respawn");
}
self thread spawnPlayer();
}
waitForceRespawnTime()
{
self endon("end_respawn");
self endon("respawn");
wait getCvarInt("scr_forcerespawn");
self notify("respawn");
}
waitRespawnButton()
{
self endon("end_respawn");
self endon("respawn");
wait 0; // Required or the "respawn" notify could happen before it's waittill has begun
self.respawntext = newClientHudElem(self);
self.respawntext.alignX = "center";
self.respawntext.alignY = "middle";
self.respawntext.x = 320;
self.respawntext.y = 70;
self.respawntext.archived = false;
self.respawntext setText(&"MPSCRIPT_PRESS_ACTIVATE_TO_RESPAWN");
thread removeRespawnText();
thread waitRemoveRespawnText("end_respawn");
thread waitRemoveRespawnText("respawn");
while(self useButtonPressed() != true)
wait .05;
self notify("remove_respawntext");
self notify("respawn");
}
removeRespawnText()
{
self waittill("remove_respawntext");
if(isDefined(self.respawntext))
self.respawntext destroy();
}
waitRemoveRespawnText(message)
{
self endon("remove_respawntext");
self waittill(message);
self notify("remove_respawntext");
}
killcam(attackerNum, delay)
{
self endon("spawned");
// previousorigin = self.origin;
// previousangles = self.angles;
// killcam
if(attackerNum < 0)
return;
self.sessionstate = "spectator";
self.spectatorclient = attackerNum;
self.archivetime = delay + 7;
// wait till the next server frame to allow code a chance to update archivetime if it needs trimming
wait 0.05;
if(self.archivetime <= delay)
{
self.spectatorclient = -1;
self.archivetime = 0;
self.sessionstate = "dead";
self thread respawn();
return;
}
if(!isDefined(self.kc_topbar))
{
self.kc_topbar = newClientHudElem(self);
self.kc_topbar.archived = false;
self.kc_topbar.x = 0;
self.kc_topbar.y = 0;
self.kc_topbar.alpha = 0.5;
self.kc_topbar setShader("black", 640, 112);
}
if(!isDefined(self.kc_bottombar))
{
self.kc_bottombar = newClientHudElem(self);
self.kc_bottombar.archived = false;
self.kc_bottombar.x = 0;
self.kc_bottombar.y = 368;
self.kc_bottombar.alpha = 0.5;
self.kc_bottombar setShader("black", 640, 112);
}
if(!isDefined(self.kc_title))
{
self.kc_title = newClientHudElem(self);
self.kc_title.archived = false;
self.kc_title.x = 320;
self.kc_title.y = 40;
self.kc_title.alignX = "center";
self.kc_title.alignY = "middle";
self.kc_title.sort = 1; // force to draw after the bars
self.kc_title.fontScale = 3.5;
}
self.kc_title setText(&"MPSCRIPT_KILLCAM");
if(!isDefined(self.kc_skiptext))
{
self.kc_skiptext = newClientHudElem(self);
self.kc_skiptext.archived = false;
self.kc_skiptext.x = 320;
self.kc_skiptext.y = 70;
self.kc_skiptext.alignX = "center";
self.kc_skiptext.alignY = "middle";
self.kc_skiptext.sort = 1; // force to draw after the bars
}
self.kc_skiptext setText(&"MPSCRIPT_PRESS_ACTIVATE_TO_RESPAWN");
if(!isDefined(self.kc_timer))
{
self.kc_timer = newClientHudElem(self);
self.kc_timer.archived = false;
self.kc_timer.x = 320;
self.kc_timer.y = 428;
self.kc_timer.alignX = "center";
self.kc_timer.alignY = "middle";
self.kc_timer.fontScale = 3.5;
self.kc_timer.sort = 1;
}
self.kc_timer setTenthsTimer(self.archivetime - delay);
self thread spawnedKillcamCleanup();
self thread waitSkipKillcamButton();
self thread waitKillcamTime();
self waittill("end_killcam");
self removeKillcamElements();
self.spectatorclient = -1;
self.archivetime = 0;
self.sessionstate = "dead";
//self thread spawnSpectator(previousorigin + (0, 0, 60), previousangles);
self thread respawn();
}
waitKillcamTime()
{
self endon("end_killcam");
wait(self.archivetime - 0.05);
self notify("end_killcam");
}
waitSkipKillcamButton()
{
self endon("end_killcam");
while(self useButtonPressed())
wait .05;
while(!(self useButtonPressed()))
wait .05;
self notify("end_killcam");
}
removeKillcamElements()
{
if(isDefined(self.kc_topbar))
self.kc_topbar destroy();
if(isDefined(self.kc_bottombar))
self.kc_bottombar destroy();
if(isDefined(self.kc_title))
self.kc_title destroy();
if(isDefined(self.kc_skiptext))
self.kc_skiptext destroy();
if(isDefined(self.kc_timer))
self.kc_timer destroy();
}
spawnedKillcamCleanup()
{
self endon("end_killcam");
self waittill("spawned");
self removeKillcamElements();
}
startGame()
{
level.starttime = getTime();
if(level.timelimit > 0)
{
level.clock = newHudElem();
level.clock.x = 320;
level.clock.y = 460;
level.clock.alignX = "center";
level.clock.alignY = "middle";
level.clock.font = "bigfixed";
level.clock setTimer(level.timelimit * 60);
}
for(;;)
{
checkTimeLimit();
wait 1;
}
}
endMap()
{
////// Added by AWE ///////////
maps\mp\gametypes\_awe::endMap();
/////////////////////////////////
game["state"] = "intermission";
level notify("intermission");
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
player = players[i];
if(isDefined(player.pers["team"]) && player.pers["team"] == "spectator")
continue;
if(!isDefined(highscore))
{
highscore = player.score;
playername = player;
name = player.name;
guid = player getGuid();
continue;
}
if(player.score == highscore)
tied = true;
else if(player.score > highscore)
{
tied = false;
highscore = player.score;
playername = player;
name = player.name;
guid = player getGuid();
}
}
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
player = players[i];
player closeMenu();
player setClientCvar("g_scriptMainMenu", "main");
if(isDefined(tied) && tied == true)
player setClientCvar("cg_objectiveText", &"MPSCRIPT_THE_GAME_IS_A_TIE");
else if(isDefined(playername))
player setClientCvar("cg_objectiveText", &"MPSCRIPT_WINS", playername);
player spawnIntermission();
}
if(isDefined(name))
logPrint("W;;" + guid + ";" + name + "\n");
wait 10;
exitLevel(false);
}
checkTimeLimit()
{
if(level.timelimit <= 0)
return;
timepassed = (getTime() - level.starttime) / 1000;
timepassed = timepassed / 60.0;
if(timepassed < level.timelimit)
return;
if(level.mapended)
return;
level.mapended = true;
iprintln(&"MPSCRIPT_TIME_LIMIT_REACHED");
level thread endMap();
}
checkScoreLimit()
{
if(level.scorelimit <= 0)
return;
if(self.score < level.scorelimit)
return;
if(level.mapended)
return;
level.mapended = true;
iprintln(&"MPSCRIPT_SCORE_LIMIT_REACHED");
level thread endMap();
}
updateGametypeCvars()
{
for(;;)
{
timelimit = getCvarFloat("scr_dm_timelimit");
if(level.timelimit != timelimit)
{
if(timelimit > 1440)
{
timelimit = 1440;
setCvar("scr_dm_timelimit", "1440");
}
level.timelimit = timelimit;
setCvar("ui_dm_timelimit", level.timelimit);
level.starttime = getTime();
if(level.timelimit > 0)
{
if(!isDefined(level.clock))
{
level.clock = newHudElem();
level.clock.x = 320;
level.clock.y = 440;
level.clock.alignX = "center";
level.clock.alignY = "middle";
level.clock.font = "bigfixed";
}
level.clock setTimer(level.timelimit * 60);
}
else
{
if(isDefined(level.clock))
level.clock destroy();
}
checkTimeLimit();
}
scorelimit = getCvarInt("scr_dm_scorelimit");
if(level.scorelimit != scorelimit)
{
level.scorelimit = scorelimit;
setCvar("ui_dm_scorelimit", level.scorelimit);
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
players[i] checkScoreLimit();
}
killcam = getCvarInt("scr_killcam");
if (level.killcam != killcam)
{
level.killcam = getCvarInt("scr_killcam");
if(level.killcam >= 1)
setarchive(true);
else
setarchive(false);
}
wait 1;
}
}
dropHealth()
{
//// Added by AWE ////
if ( !getcvarint("scr_drophealth") )
return;
if(isdefined(self.awe_nohealthpack))
return;
self.awe_nohealthpack = true;
//////////////////////
if(isDefined(level.healthqueue[level.healthqueuecurrent]))
level.healthqueue[level.healthqueuecurrent] delete();
level.healthqueue[level.healthqueuecurrent] = spawn("item_health", self.origin + (0, 0, 1));
level.healthqueue[level.healthqueuecurrent].angles = (0, randomint(360), 0);
level.healthqueuecurrent++;
if(level.healthqueuecurrent >= 16)
level.healthqueuecurrent = 0;
}
addBotClients()
{
wait 5;
for(;;)
{
if(getCvarInt("scr_numbots") > 0)
break;
wait 1;
}
iNumBots = getCvarInt("scr_numbots");
for(i = 0; i < iNumBots; i++)
{
ent[i] = addtestclient();
wait 0.5;
if(isPlayer(ent[i]))
{
if(i & 1)
{
ent[i] notify("menuresponse", game["menu_team"], "axis");
wait 0.5;
ent[i] notify("menuresponse", game["menu_weapon_axis"], "kar98k_mp");
}
else
{
ent[i] notify("menuresponse", game["menu_team"], "allies");
wait 0.5;
ent[i] notify("menuresponse", game["menu_weapon_allies"], "springfield_mp");
}
}
}
}
but when i start server and switch to DM i get this error
Quote:
******* script compile error *******
unknown (builtin) function 'int': (file 'maps\mp\gametypes\dm.gsc', line 584)
meters = (int(distance * 0.254))/10;
*
************************************
********************