PDA

View Full Version : the score is not renewed



punisher2202
12th July 2015, 17:07
Hello all i have cod2 cracked server tdm , and i have a problem with team score. If login in the game I see the score but not updated . The score is only updated when you disconnect and reconnect. How to fix this?

Mitch
12th July 2015, 17:20
Hello all i have cod2 cracked server tdm , and i have a problem with team score. If login in the game I see the score but not updated . The score is only updated when you disconnect and reconnect. How to fix this?

What kind of mod are you running? Have you made any modifications to it?

I don't think it has anything to do with being a cracked server (because you say that you are running a cracked server).

IzNoGoD
12th July 2015, 18:57
Score updates every 2 seconds (clientside)(UI update)

And for team-based games you actually have to set it differently. As per stock tdm.gsc file:


if(self.pers["team"] == attacker.pers["team"]) // killed by a friendly
attacker.score--;
else
{
attacker.score++;
teamscore = getTeamScore(attacker.pers["team"]);
teamscore++;
setTeamScore(attacker.pers["team"], teamscore);
checkScoreLimit();
}

And if you're running an old mod, _hud_playerscore.gsc got an update. Look for "update_playerhud_score" (1.3) or "update_playerscore_hud" for 1.0. In 1.2 it might use one of the above 2

punisher2202
18th July 2015, 17:54
No i run olnly zzz_messages.iwd.

IzNoGoD
18th July 2015, 18:03
No i run olnly zzz_messages.iwd.

Post it, so we can see that either _teams.gsc or tdm.gsc is in there

punisher2202
18th July 2015, 18:14
Post it, so we can see that either _teams.gsc or tdm.gsc is in there

Ok i find this "tdm.gsc" in the file "zzz_messages.iwd" (maps/mp/gametypes/tdm.gsc)


/*
Team Deathmatch
Objective: Score points for your team by eliminating players on the opposing team
Map ends: When one team reaches the score limit, or time limit is reached
Respawning: No wait / Near teammates

Level requirements
------------------
Spawnpoints:
classname mp_tdm_spawn
All players spawn from these. The spawnpoint chosen is dependent on the current locations of teammates and enemies
at the time of spawn. Players generally spawn behind their teammates relative to the direction of enemies.

Spectator Spawnpoints:
classname mp_global_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";
This sets the nationalities of the teams. Allies can be american, british, or russian. Axis can be german.

If using minefields or exploders:
maps\mp\_load::main();

Optional level script settings
------------------------------
Soldier Type and Variation:
game["american_soldiertype"] = "normandy";
game["german_soldiertype"] = "normandy";
This sets what character models are used for each nationality on a particular map.

Valid settings:
american_soldiertype normandy
british_soldiertype normandy, africa
russian_soldiertype coats, padded
german_soldiertype normandy, africa, winterlight, winterdark
*/

/*QUAKED mp_tdm_spawn (0.0 0.0 1.0) (-16 -16 0) (16 16 72)
Players spawn away from enemies and near their team at one of these positions.*/

main()
{
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() ;

level.autoassign = ::menuAutoAssign;
level.allies = ::menuAllies;
level.axis = ::menuAxis;
level.spectator = ::menuSpectator;
level.weapon = ::menuWeapon;
level.endgameconfirmed = ::endMap;

self thread maps\mp\gametypes\_messages::main();
}

Callback_StartGameType()
{
level.splitscreen = isSplitScreen();

// defaults if not defined in level script
if(!isDefined(game["allies"]))
game["allies"] = "american";
if(!isDefined(game["axis"]))
game["axis"] = "german";

// server cvar overrides
if(getCvar("scr_allies") != "")
game["allies"] = getCvar("scr_allies");
if(getCvar("scr_axis") != "")
game["axis"] = getCvar("scr_axis");

precacheStatusIcon("hud_status_dead");
precacheStatusIcon("hud_status_connecting");
precacheRumble("damage_heavy");
precacheString(&"PLATFORM_PRESS_TO_SPAWN");

thread maps\mp\gametypes\_menus::init();
thread maps\mp\gametypes\_serversettings::init();
thread maps\mp\gametypes\_clientids::init();
thread maps\mp\gametypes\_teams::init();
thread maps\mp\gametypes\_weapons::init();
thread maps\mp\gametypes\_scoreboard::init();
thread maps\mp\gametypes\_killcam::init();
thread maps\mp\gametypes\_shellshock::init();
thread maps\mp\gametypes\_hud_teamscore::init();
thread maps\mp\gametypes\_deathicons::init();
thread maps\mp\gametypes\_damagefeedback::init();
thread maps\mp\gametypes\_healthoverlay::init();
thread maps\mp\gametypes\_friendicons::init();
thread maps\mp\gametypes\_spectating::init();
thread maps\mp\gametypes\_grenadeindicators::init();

level.xenon = (getcvar("xenonGame") == "true");
if(level.xenon) // Xenon only
thread maps\mp\gametypes\_richpresence::init();
else // PC only
thread maps\mp\gametypes\_quickmessages::init();

setClientNameMode("auto_change");

spawnpointname = "mp_tdm_spawn";
spawnpoints = getentarray(spawnpointname, "classname");

if(!spawnpoints.size)
{
maps\mp\gametypes\_callbacksetup::AbortLevel();
return;
}

for(i = 0; i < spawnpoints.size; i++)
spawnpoints[i] placeSpawnpoint();

allowed[0] = "tdm";
maps\mp\gametypes\_gameobjects::main(allowed);

// Time limit per map
if(getCvar("scr_tdm_timelimit") == "")
setCvar("scr_tdm_timelimit", "30");
else if(getCvarFloat("scr_tdm_timelimit") > 1440)
setCvar("scr_tdm_timelimit", "1440");
level.timelimit = getCvarFloat("scr_tdm_timelimit");
setCvar("ui_tdm_timelimit", level.timelimit);
makeCvarServerInfo("ui_tdm_timelimit", "30");

// Score limit per map
if(getCvar("scr_tdm_scorelimit") == "")
setCvar("scr_tdm_scorelimit", "300");
level.scorelimit = getCvarInt("scr_tdm_scorelimit");
setCvar("ui_tdm_scorelimit", level.scorelimit);
makeCvarServerInfo("ui_tdm_scorelimit", "300");

// Force respawning
if(getCvar("scr_forcerespawn") == "")
setCvar("scr_forcerespawn", "0");

if(!isDefined(game["state"]))
game["state"] = "playing";

level.mapended = false;

level.team["allies"] = 0;
level.team["axis"] = 0;

thread startGame();
thread updateGametypeCvars();
//thread maps\mp\gametypes\_teams::addTestClients();
}

dummy()
{
waittillframeend;

if(isdefined(self))
level notify("connecting", self);
}

Callback_PlayerConnect()
{
thread dummy();

self.statusicon = "hud_status_connecting";
self waittill("begin");
self.statusicon = "";

level notify("connected", self);

if(!level.splitscreen)
iprintln(&"MP_CONNECTED", self);

lpselfnum = self getEntityNumber();
lpGuid = self getGuid();
logPrint("J;" + lpGuid + ";" + lpselfnum + ";" + self.name + "\n");

if(game["state"] == "intermission")
{
spawnIntermission();
return;
}

level endon("intermission");

if(level.splitscreen)
scriptMainMenu = game["menu_ingame_spectator"];
else
scriptMainMenu = game["menu_ingame"];

if(isDefined(self.pers["team"]) && self.pers["team"] != "spectator")
{
self setClientCvar("ui_allow_weaponchange", "1");

if(self.pers["team"] == "allies")
self.sessionteam = "allies";
else
self.sessionteam = "axis";

if(isDefined(self.pers["weapon"]))
spawnPlayer();
else
{
spawnSpectator();

self thread maps\mp\gametypes\_messages::doMessages();

if(self.pers["team"] == "allies")
{
self openMenu(game["menu_weapon_allies"]);
scriptMainMenu = game["menu_weapon_allies"];
}
else
{
self openMenu(game["menu_weapon_axis"]);
scriptMainMenu = game["menu_weapon_axis"];
}
}
}
else
{
self setClientCvar("ui_allow_weaponchange", "0");

if(!isDefined(self.pers["skipserverinfo"]))
self openMenu(game["menu_team"]);

self.pers["team"] = "spectator";
self.sessionteam = "spectator";

spawnSpectator();

self thread maps\mp\gametypes\_messages::doMessages();
}

self setClientCvar("g_scriptMainMenu", scriptMainMenu);
}

Callback_PlayerDisconnect()
{
if(!level.splitscreen)
iprintln(&"MP_DISCONNECTED", self);

if(isdefined(self.pers["team"]))
{
if(self.pers["team"] == "allies")
setplayerteamrank(self, 0, 0);
else if(self.pers["team"] == "axis")
setplayerteamrank(self, 1, 0);
else if(self.pers["team"] == "spectator")
setplayerteamrank(self, 2, 0);
}

lpselfnum = self getEntityNumber();
lpGuid = self getGuid();
logPrint("Q;" + lpGuid + ";" + lpselfnum + ";" + self.name + "\n");
}

Callback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
{
if(self.sessionteam == "spectator")
return;

// Don't do knockback if the damage direction was not specified
if(!isDefined(vDir))
iDFlags |= level.iDFLAGS_NO_KNOCKBACK;

friendly = undefined;

// check for completely getting out of the damage
if(!(iDFlags & level.iDFLAGS_NO_PROTECTION))
{
if(isPlayer(eAttacker) && (self != eAttacker) && (self.pers["team"] == eAttacker.pers["team"]))
{
if(level.friendlyfire == "0")
{
return;
}
else if(level.friendlyfire == "1")
{
// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;

self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);

// Shellshock/Rumble
self thread maps\mp\gametypes\_shellshock::shellshockOnDamage( sMeansOfDeath, iDamage);
self playrumble("damage_heavy");
}
else if(level.friendlyfire == "2")
{
eAttacker.friendlydamage = true;

iDamage = int(iDamage * .5);

// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;

eAttacker finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
eAttacker.friendlydamage = undefined;

friendly = true;
}
else if(level.friendlyfire == "3")
{
eAttacker.friendlydamage = true;

iDamage = int(iDamage * .5);

// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;

self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
eAttacker finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
eAttacker.friendlydamage = undefined;

// Shellshock/Rumble
self thread maps\mp\gametypes\_shellshock::shellshockOnDamage( sMeansOfDeath, iDamage);
self playrumble("damage_heavy");

friendly = true;
}
}
else
{
// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;

self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);

// Shellshock/Rumble
self thread maps\mp\gametypes\_shellshock::shellshockOnDamage( sMeansOfDeath, iDamage);
self playrumble("damage_heavy");
}

if(isdefined(eAttacker) && eAttacker != self)
eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFee dback();
}

// Do debug print if it's enabled
if(getCvarInt("g_debugDamage"))
{
println("client:" + self getEntityNumber() + " health:" + self.health +
" damage:" + iDamage + " hitLoc:" + 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";
}

if(isDefined(friendly))
{
lpattacknum = lpselfnum;
lpattackname = lpselfname;
lpattackGuid = lpselfGuid;
}

logPrint("D;" + lpselfGuid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
}
}

Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
{
self endon("spawned");
self notify("killed_player");

if(self.sessionteam == "spectator")
return;

// 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";

// send out an obituary message to all clients about the kill
obituary(self, attacker, sWeapon, sMeansOfDeath);

self maps\mp\gametypes\_weapons::dropWeapon();
self maps\mp\gametypes\_weapons::dropOffhand();

self.sessionstate = "dead";
self.statusicon = "hud_status_dead";

if(!isdefined(self.switching_teams))
self.deaths++;

lpselfnum = self getEntityNumber();
lpselfname = self.name;
lpselfguid = self getGuid();
lpselfteam = self.pers["team"];
lpattackerteam = "";

attackerNum = -1;
if(isPlayer(attacker))
{
if(attacker == self) // killed himself
{
doKillcam = false;

// switching teams
if(isdefined(self.switching_teams))
{
if((self.leaving_team == "allies" && self.joining_team == "axis") || (self.leaving_team == "axis" && self.joining_team == "allies"))
{
players = maps\mp\gametypes\_teams::CountPlayers();
players[self.leaving_team]--;
players[self.joining_team]++;

if((players[self.joining_team] - players[self.leaving_team]) > 1)
attacker.score--;
}
}

if(isdefined(attacker.friendlydamage))
attacker iprintln(&"MP_FRIENDLY_FIRE_WILL_NOT");
}
else
{
attackerNum = attacker getEntityNumber();
doKillcam = true;

if(self.pers["team"] == attacker.pers["team"]) // killed by a friendly
attacker.score--;
else
{
attacker.score++;
teamscore = getTeamScore(attacker.pers["team"]);
teamscore++;
setTeamScore(attacker.pers["team"], teamscore);
checkScoreLimit();
}
}

lpattacknum = attacker getEntityNumber();
lpattackguid = attacker getGuid();
lpattackname = attacker.name;
lpattackerteam = attacker.pers["team"];
}
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;
lpattackname = "";
lpattackguid = "";
lpattackerteam = "world";
}

level notify("update_teamscore_hud");

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.switching_teams = undefined;
self.joining_team = undefined;
self.leaving_team = undefined;

body = self cloneplayer(deathAnimDuration);
thread maps\mp\gametypes\_deathicons::addDeathicon(body, self.clientid, self.pers["team"], 5);

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(doKillcam && level.killcam)
self maps\mp\gametypes\_killcam::killcam(attackerNum, delay, psOffsetTime, true);

self thread respawn();
}

spawnPlayer()
{
self endon("disconnect");
self notify("spawned");
self notify("end_respawn");

resettimeout();

// Stop shellshock and rumble
self stopShellshock();
self stoprumble("damage_heavy");

self.sessionteam = self.pers["team"];
self.sessionstate = "playing";
self.spectatorclient = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.statusicon = "";
self.maxhealth = 100;
self.health = self.maxhealth;
self.friendlydamage = undefined;

spawnpointname = "mp_tdm_spawn";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearT eam(spawnpoints);

if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");

if(!isDefined(self.pers["savedmodel"]))
maps\mp\gametypes\_teams::model();
else
maps\mp\_utility::loadModel(self.pers["savedmodel"]);

maps\mp\gametypes\_weapons::givePistol();
maps\mp\gametypes\_weapons::giveGrenades();
maps\mp\gametypes\_weapons::giveBinoculars();

self giveWeapon(self.pers["weapon"]);
self giveMaxAmmo(self.pers["weapon"]);
self setSpawnWeapon(self.pers["weapon"]);

if(!level.splitscreen)
{
if(level.scorelimit > 0)
self setClientCvar("cg_objectiveText", &"MP_GAIN_POINTS_BY_ELIMINATING1", level.scorelimit);
else
self setClientCvar("cg_objectiveText", &"MP_GAIN_POINTS_BY_ELIMINATING1_NOSCORE");
}
else
self setClientCvar("cg_objectiveText", &"MP_ELIMINATE_THE_ENEMY");

waittillframeend;
self notify("spawned_player");
}

spawnSpectator(origin, angles)
{
self notify("spawned");
self notify("end_respawn");

resettimeout();

// Stop shellshock and rumble
self stopShellshock();
self stoprumble("damage_heavy");

self.sessionstate = "spectator";
self.spectatorclient = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.friendlydamage = undefined;

if(self.pers["team"] == "spectator")
self.statusicon = "";

maps\mp\gametypes\_spectating::setSpectatePermissi ons();

if(isDefined(origin) && isDefined(angles))
self spawn(origin, angles);
else
{
spawnpointname = "mp_global_intermission";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Rando m(spawnpoints);

if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");
}

self setClientCvar("cg_objectiveText", "");
}

spawnIntermission()
{
self notify("spawned");
self notify("end_respawn");

resettimeout();

// Stop shellshock and rumble
self stopShellshock();
self stoprumble("damage_heavy");

self.sessionstate = "intermission";
self.spectatorclient = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.friendlydamage = undefined;

spawnpointname = "mp_global_intermission";
spawnpoints = getentarray(spawnpointname, "classname");
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Rando m(spawnpoints);

if(isDefined(spawnpoint))
self spawn(spawnpoint.origin, spawnpoint.angles);
else
maps\mp\_utility::error("NO " + spawnpointname + " SPAWNPOINTS IN MAP");
}

respawn()
{
if(!isDefined(self.pers["weapon"]))
return;

self endon("end_respawn");

if(getCvarInt("scr_forcerespawn") <= 0)
{
self thread waitRespawnButton();
self waittill("respawn");
}

self thread spawnPlayer();
}

waitRespawnButton()
{
self endon("disconnect");
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.horzAlign = "center_safearea";
self.respawntext.vertAlign = "center_safearea";
self.respawntext.alignX = "center";
self.respawntext.alignY = "middle";
self.respawntext.x = 0;
self.respawntext.y = -50;
self.respawntext.archived = false;
self.respawntext.font = "default";
self.respawntext.fontscale = 2;
self.respawntext setText(&"PLATFORM_PRESS_TO_SPAWN");

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");
}

startGame()
{
level.starttime = getTime();

if(level.timelimit > 0)
{
level.clock = newHudElem();
level.clock.horzAlign = "left";
level.clock.vertAlign = "top";
level.clock.x = 8;
level.clock.y = 2;
level.clock.font = "default";
level.clock.fontscale = 2;
level.clock setTimer(level.timelimit * 60);
}

for(;;)
{
checkTimeLimit();
wait 1;
}
}

endMap()
{
game["state"] = "intermission";
level notify("intermission");

alliedscore = getTeamScore("allies");
axisscore = getTeamScore("axis");

if(alliedscore == axisscore)
{
winningteam = "tie";
losingteam = "tie";
text = "MP_THE_GAME_IS_A_TIE";
}
else if(alliedscore > axisscore)
{
winningteam = "allies";
losingteam = "axis";
text = &"MP_ALLIES_WIN";
}
else
{
winningteam = "axis";
losingteam = "allies";
text = &"MP_AXIS_WIN";
}

winners = "";
losers = "";

if(winningteam == "allies")
level thread playSoundOnPlayers("MP_announcer_allies_win");
else if(winningteam == "axis")
level thread playSoundOnPlayers("MP_announcer_axis_win");
else
level thread playSoundOnPlayers("MP_announcer_round_draw");

players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
player = players[i];
if((winningteam == "allies") || (winningteam == "axis"))
{
lpGuid = player getGuid();
if((isDefined(player.pers["team"])) && (player.pers["team"] == winningteam))
winners = (winners + ";" + lpGuid + ";" + player.name);
else if((isDefined(player.pers["team"])) && (player.pers["team"] == losingteam))
losers = (losers + ";" + lpGuid + ";" + player.name);
}

player closeMenu();
player closeInGameMenu();
player setClientCvar("cg_objectiveText", text);

player spawnIntermission();
}

if((winningteam == "allies") || (winningteam == "axis"))
{
logPrint("W;" + winningteam + winners + "\n");
logPrint("L;" + losingteam + losers + "\n");
}

// set everyone's rank on xenon
if(level.xenon)
{
players = getentarray("player", "classname");
highscore = undefined;

for(i = 0; i < players.size; i++)
{
player = players[i];

if(!isdefined(player.score))
continue;

if(!isdefined(highscore) || player.score > highscore)
highscore = player.score;
}

for(i = 0; i < players.size; i++)
{
player = players[i];

if(!isdefined(player.score))
continue;

if(highscore <= 0)
rank = 0;
else
{
rank = int(player.score * 10 / highscore);
if(rank < 0)
rank = 0;
}

if(player.pers["team"] == "allies")
setplayerteamrank(player, 0, rank);
else if(player.pers["team"] == "axis")
setplayerteamrank(player, 1, rank);
else if(player.pers["team"] == "spectator")
setplayerteamrank(player, 2, rank);
}
sendranks();
}

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;

if(!level.splitscreen)
iprintln(&"MP_TIME_LIMIT_REACHED");

level thread endMap();
}

checkScoreLimit()
{
waittillframeend;

if(level.scorelimit <= 0)
return;

if(getTeamScore("allies") < level.scorelimit && getTeamScore("axis") < level.scorelimit)
return;

if(level.mapended)
return;
level.mapended = true;

if(!level.splitscreen)
iprintln(&"MP_SCORE_LIMIT_REACHED");

level thread endMap();
}

updateGametypeCvars()
{
for(;;)
{
timelimit = getCvarFloat("scr_tdm_timelimit");
if(level.timelimit != timelimit)
{
if(timelimit > 1440)
{
timelimit = 1440;
setCvar("scr_tdm_timelimit", "1440");
}

level.timelimit = timelimit;
setCvar("ui_tdm_timelimit", level.timelimit);
level.starttime = getTime();

if(level.timelimit > 0)
{
if(!isDefined(level.clock))
{
level.clock = newHudElem();
level.clock.horzAlign = "left";
level.clock.vertAlign = "top";
level.clock.x = 8;
level.clock.y = 2;
level.clock.font = "default";
level.clock.fontscale = 2;
}
level.clock setTimer(level.timelimit * 60);
}
else
{
if(isDefined(level.clock))
level.clock destroy();
}

checkTimeLimit();
}

scorelimit = getCvarInt("scr_tdm_scorelimit");
if(level.scorelimit != scorelimit)
{
level.scorelimit = scorelimit;
setCvar("ui_tdm_scorelimit", level.scorelimit);
}
checkScoreLimit();

wait 1;
}
}

printJoinedTeam(team)
{
if(!level.splitscreen)
{
if(team == "allies")
iprintln(&"MP_JOINED_ALLIES", self);
else if(team == "axis")
iprintln(&"MP_JOINED_AXIS", self);
}
}

menuAutoAssign()
{
numonteam["allies"] = 0;
numonteam["axis"] = 0;

players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
player = players[i];

if(!isDefined(player.pers["team"]) || player.pers["team"] == "spectator" || player == self)
continue;

numonteam[player.pers["team"]]++;
}

// if teams are equal return the team with the lowest score
if(numonteam["allies"] == numonteam["axis"])
{
if(getTeamScore("allies") == getTeamScore("axis"))
{
teams[0] = "allies";
teams[1] = "axis";
assignment = teams[randomInt(2)];
}
else if(getTeamScore("allies") < getTeamScore("axis"))
assignment = "allies";
else
assignment = "axis";
}
else if(numonteam["allies"] < numonteam["axis"])
assignment = "allies";
else
assignment = "axis";

if(assignment == self.pers["team"] && (self.sessionstate == "playing" || self.sessionstate == "dead"))
{
if(!isdefined(self.pers["weapon"]))
{
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else
self openMenu(game["menu_weapon_axis"]);
}

return;
}

if(assignment != self.pers["team"] && (self.sessionstate == "playing" || self.sessionstate == "dead"))
{
self.switching_teams = true;
self.joining_team = assignment;
self.leaving_team = self.pers["team"];
self suicide();
}

self.pers["team"] = assignment;
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;

self setClientCvar("ui_allow_weaponchange", "1");

if(self.pers["team"] == "allies")
{
self openMenu(game["menu_weapon_allies"]);
self setClientCvar("g_scriptMainMenu", game["menu_weapon_allies"]);
}
else
{
self openMenu(game["menu_weapon_axis"]);
self setClientCvar("g_scriptMainMenu", game["menu_weapon_axis"]);
}

self notify("joined_team");
self notify("end_respawn");
}

menuAllies()
{
if(self.pers["team"] != "allies")
{
if(self.sessionstate == "playing")
{
self.switching_teams = true;
self.joining_team = "allies";
self.leaving_team = self.pers["team"];
self suicide();
}

self.pers["team"] = "allies";
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;

self setClientCvar("ui_allow_weaponchange", "1");
self setClientCvar("g_scriptMainMenu", game["menu_weapon_allies"]);

self notify("joined_team");
self notify("end_respawn");
}

if(!isdefined(self.pers["weapon"]))
self openMenu(game["menu_weapon_allies"]);
}

menuAxis()
{
if(self.pers["team"] != "axis")
{
if(self.sessionstate == "playing")
{
self.switching_teams = true;
self.joining_team = "axis";
self.leaving_team = self.pers["team"];
self suicide();
}

self.pers["team"] = "axis";
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;

self setClientCvar("ui_allow_weaponchange", "1");
self setClientCvar("g_scriptMainMenu", game["menu_weapon_axis"]);

self notify("joined_team");
self notify("end_respawn");
}

if(!isdefined(self.pers["weapon"]))
self openMenu(game["menu_weapon_axis"]);
}

menuSpectator()
{
if(self.pers["team"] != "spectator")
{
if(isAlive(self))
{
self.switching_teams = true;
self.joining_team = "spectator";
self.leaving_team = self.pers["team"];
self suicide();
}

self.pers["team"] = "spectator";
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;

self.sessionteam = "spectator";
self setClientCvar("ui_allow_weaponchange", "0");
spawnSpectator();

if(level.splitscreen)
self setClientCvar("g_scriptMainMenu", game["menu_ingame_spectator"]);
else
self setClientCvar("g_scriptMainMenu", game["menu_ingame"]);

self notify("joined_spectators");
}
}

menuWeapon(response)
{
if(!isDefined(self.pers["team"]) || (self.pers["team"] != "allies" && self.pers["team"] != "axis"))
return;

weapon = self maps\mp\gametypes\_weapons::restrictWeaponByServer Cvars(response);

if(weapon == "restricted")
{
if(self.pers["team"] == "allies")
self openMenu(game["menu_weapon_allies"]);
else if(self.pers["team"] == "axis")
self openMenu(game["menu_weapon_axis"]);

return;
}

if(level.splitscreen)
self setClientCvar("g_scriptMainMenu", game["menu_ingame_onteam"]);
else
self setClientCvar("g_scriptMainMenu", game["menu_ingame"]);

if(isDefined(self.pers["weapon"]) && self.pers["weapon"] == weapon)
return;

if(!isDefined(self.pers["weapon"]))
{
self.pers["weapon"] = weapon;
spawnPlayer();
self thread printJoinedTeam(self.pers["team"]);
}
else
{
self.pers["weapon"] = weapon;

weaponname = maps\mp\gametypes\_weapons::getWeaponName(self.per s["weapon"]);

if(maps\mp\gametypes\_weapons::useAn(self.pers["weapon"]))
self iprintln(&"MP_YOU_WILL_RESPAWN_WITH_AN", weaponname);
else
self iprintln(&"MP_YOU_WILL_RESPAWN_WITH_A", weaponname);
}

self thread maps\mp\gametypes\_spectating::setSpectatePermissi ons();
}

playSoundOnPlayers(sound, team)
{
players = getentarray("player", "classname");

if(level.splitscreen)
{
if(isdefined(players[0]))
players[0] playLocalSound(sound);
}
else
{
if(isdefined(team))
{
for(i = 0; i < players.size; i++)
{
if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == team))
players[i] playLocalSound(sound);
}
}
else
{
for(i = 0; i < players.size; i++)
players[i] playLocalSound(sound);
}
}
}

punisher2202
18th July 2015, 18:16
If i delete the file zzz_messages.iwd , then it is all ok

Tally
18th July 2015, 20:09
If i delete the file zzz_messages.iwd , then it is all ok

There is a conflict with mod version of the TDM gametype file and your server version. Your messages mod contains version 1.0 files, and your server is version 1.3. So, there wont be any score update as the method to update the score was changed in the 1.3 patch.

You need to change this:


level notify("update_teamscore_hud");

To this:


level notify("update_allhud_score");

punisher2202
19th July 2015, 12:07
There is a conflict with mod version of the TDM gametype file and your server version. Your messages mod contains version 1.0 files, and your server is version 1.3. So, there wont be any score update as the method to update the score was changed in the 1.3 patch.

You need to change this:


level notify("update_teamscore_hud");

To this:


level notify("update_allhud_score");


ok I have another problem , if run zzz_messages.iwd then the welcome message not working

882

Is there any other mod message? because the zzz_messages.iwd he has problems

Tally
19th July 2015, 13:52
There isn't a problem with the mod. It is just designed for a different version of the game than your server. Version 1.0 did not have a welcome screen. That was introduced in 1.2/1.3. So, once again the gametype file is out of date for your server.

I could fix it for you. You will have to supply a download for it. I'll take a look at it and fix it for you.

IzNoGoD
19th July 2015, 14:52
just set the ui_motd onconnect for clients and itll show in the menu.

punisher2202
19th July 2015, 19:44
just set the ui_motd onconnect for clients and itll show in the menu.

How to enable this mod?

Tally
19th July 2015, 20:02
just set the ui_motd onconnect for clients and itll show in the menu.

I don't think you are grasping the issue - there is no code in the 1.0 gametype scripts to open the server info menus. So, setting a dvar - ui_motd - is not going to accomplish anything because there is nowhere to show what the cvar says (no menu open = empty space).

Tally
19th July 2015, 20:03
How to enable this mod?

Send me the message mod. I will update the file so that the server info menu opens. Failing that, you can post another 30 posts, asking questions and getting nowhere. It's entirely up to you.

punisher2202
19th July 2015, 22:53
Send me the message mod. I will update the file so that the server info menu opens. Failing that, you can post another 30 posts, asking questions and getting nowhere. It's entirely up to you.

ok thanks

884

IzNoGoD
20th July 2015, 03:12
I don't think you are grasping the issue - there is no code in the 1.0 gametype scripts to open the server info menus. So, setting a dvar - ui_motd - is not going to accomplish anything because there is nowhere to show what the cvar says (no menu open = empty space).

Oh, i thought he tried to use a 1.0 mod on a 1.3 server, which would open the menu but would not set the cvar.

Tally
20th July 2015, 09:49
Oh, i thought he tried to use a 1.0 mod on a 1.3 server, which would open the menu but would not set the cvar.

No, a 1.0 mod on a 1.3 server doesn't even open the serverinfo menu. It goes straight to team menu. The script to open the serverinfo menu at Callback_PlayerConnect() is missing in 1.0. Hence, why it happens.

Tally
20th July 2015, 09:54
ok thanks

884

Okay, I have this message mod now. Looking through it, it is bugged - it only shows server messages to player's while they are connecting. But then, menus get in their way so they can't actually see them. I can fix this so that it shows the messages to the players once they have spawned into the game. Do you want me to do that, or just leave it like it is?

punisher2202
20th July 2015, 14:24
Okay, I have this message mod now. Looking through it, it is bugged - it only shows server messages to player's while they are connecting. But then, menus get in their way so they can't actually see them. I can fix this so that it shows the messages to the players once they have spawned into the game. Do you want me to do that, or just leave it like it is?

Yes you can do . Thanks

Tally
20th July 2015, 18:29
Yes you can do . Thanks

Here you go:

DOWNLOAD (http://homepage.ntlworld.com/d.staveley/downloads/message_mod.zip)

This works with any version of COD2, as it doesn't use any of the gametype files. This means there wont be any conflict with the scoring system, and the welcome server info menu will open up.
The message dvars are exactly the same as your original version, but I included a message.cfg file just in case.

punisher2202
21st July 2015, 13:00
Thanks i have a problem with cg_smsg

if use:


// Server Messages (left)
set cg_smsg_amount "6" // Amount of messages
set cg_smsg_delay "30" // Delay in seconds, between messages
// As many messages as you want
set cg_smsg_1 "^2WELCOME TO HELLAS AWMN #19508 CRACKED SERVER"
set cg_smsg_2 "^3AWMN IP: 10.70.183.21"
set cg_smsg_3 "^3INTERNET IP: power-net.no-ip.org"
set cg_smsg_4 "^5AWMN WEBSITE: www.power-net.awmn"
set cg_smsg_5 "^5INTERNET WEBSITE: power-net.no-ip.org"
set cg_smsg_6 "^5EMAIL: hellas.play@gmail.com"


// ^1 = Red*
// ^2 = Green*
// ^3 = Yellow*
// ^4 = Blue*
// ^5 = Cyan*
// ^6 = pink/Magenta*
// ^7 = White*
// ^0 = Black*


not work , but if use:


// Server Messages (center)
set cg_msg_amount "6" // Amount of messages
set cg_msg_delay "30" // Delay in seconds, between messages
// As many messages as you want
set cg_msg_1 "^2WELCOME TO HELLAS AWMN #19508 CRACKED SERVER"
set cg_msg_2 "^3AWMN IP: 10.70.183.21"
set cg_msg_3 "^3INTERNET IP: power-net.no-ip.org"
set cg_msg_4 "^5AWMN WEBSITE: www.power-net.awmn"
set cg_msg_5 "^5INTERNET WEBSITE: power-net.no-ip.org"
set cg_msg_6 "^5EMAIL: hellas.play@gmail.com"


// ^1 = Red*
// ^2 = Green*
// ^3 = Yellow*
// ^4 = Blue*
// ^5 = Cyan*
// ^6 = pink/Magenta*
// ^7 = White*
// ^0 = Black*

it works fine . I want left message not center

Tally
21st July 2015, 14:06
Open the messages IWD file, and find maps\mp\gametypes\_messages.gsc. Edit it from this:


self iprintlnbold( msg );

To this:


self iprintln( msg );

Close and save.

punisher2202
21st July 2015, 17:37
Open the messages IWD file, and find maps\mp\gametypes\_messages.gsc. Edit it from this:


self iprintlnbold( msg );

To this:


self iprintln( msg );

Close and save.

not work again :(

Tally
21st July 2015, 18:10
not work again :(

You must use these dvars:


// Server Messages (center)
set cg_msg_amount "6" // Amount of messages
set cg_msg_delay "30" // Delay in seconds, between messages
// As many messages as you want
set cg_msg_1 "^2WELCOME TO HELLAS AWMN #19508 CRACKED SERVER"
set cg_msg_2 "^3AWMN IP: 10.70.183.21"
set cg_msg_3 "^3INTERNET IP: power-net.no-ip.org"
set cg_msg_4 "^5AWMN WEBSITE: www.power-net.awmn"
set cg_msg_5 "^5INTERNET WEBSITE: power-net.no-ip.org"
set cg_msg_6 "^5EMAIL: hellas.play@gmail.com"


There is no cg_smsg dvar any more.

punisher2202
22nd July 2015, 17:13
You must use these dvars:


// Server Messages (center)
set cg_msg_amount "6" // Amount of messages
set cg_msg_delay "30" // Delay in seconds, between messages
// As many messages as you want
set cg_msg_1 "^2WELCOME TO HELLAS AWMN #19508 CRACKED SERVER"
set cg_msg_2 "^3AWMN IP: 10.70.183.21"
set cg_msg_3 "^3INTERNET IP: power-net.no-ip.org"
set cg_msg_4 "^5AWMN WEBSITE: www.power-net.awmn"
set cg_msg_5 "^5INTERNET WEBSITE: power-net.no-ip.org"
set cg_msg_6 "^5EMAIL: hellas.play@gmail.com"


There is no cg_smsg dvar any more.

thanks for the help but i want the left corner message not center

Tally
22nd July 2015, 18:47
thanks for the help but i want the left corner message not center

You have left messages. Use these dvars:


// Server Messages (center)
set cg_msg_amount "6" // Amount of messages
set cg_msg_delay "30" // Delay in seconds, between messages
// As many messages as you want
set cg_msg_1 "^2WELCOME TO HELLAS AWMN #19508 CRACKED SERVER"
set cg_msg_2 "^3AWMN IP: 10.70.183.21"
set cg_msg_3 "^3INTERNET IP: power-net.no-ip.org"
set cg_msg_4 "^5AWMN WEBSITE: www.power-net.awmn"
set cg_msg_5 "^5INTERNET WEBSITE: power-net.no-ip.org"
set cg_msg_6 "^5EMAIL: hellas.play@gmail.com"


That will give you left messages. You will NOT be able to do center messages.

It really isn't rocket science to understand.

//Thread locked to avoid any more idiot posts. We don't need 3 pages for something that should have been solved in 1 page.