Page 1 of 3 123 LastLast
Results 1 to 10 of 26

Thread: the score is not renewed

  1. #1
    Private
    Join Date
    Mar 2015
    Posts
    32
    Thanks
    0
    Thanked 1 Time in 1 Post

    the score is not renewed

    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?

  2. #2
    Global Mossaderator Mitch's Avatar
    Join Date
    Nov 2012
    Posts
    654
    Thanks
    204
    Thanked 450 Times in 305 Posts
    Quote Originally Posted by punisher2202 View Post
    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).

  3. #3
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts
    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:
    PHP Code:
                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
    "Does not work" is an error report for a bug between keyboard and chair.

    All hail Artie Effem

  4. #4
    Private
    Join Date
    Mar 2015
    Posts
    32
    Thanks
    0
    Thanked 1 Time in 1 Post
    No i run olnly zzz_messages.iwd.

  5. #5
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts
    Quote Originally Posted by punisher2202 View Post
    No i run olnly zzz_messages.iwd.
    Post it, so we can see that either _teams.gsc or tdm.gsc is in there
    "Does not work" is an error report for a bug between keyboard and chair.

    All hail Artie Effem

  6. #6
    Private
    Join Date
    Mar 2015
    Posts
    32
    Thanks
    0
    Thanked 1 Time in 1 Post
    Quote Originally Posted by IzNoGoD View Post
    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)

    Code:
    /*
    	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::updateDamageFeedback();
    	}
    
    	// 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_NearTeam(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::setSpectatePermissions();
    
    	if(isDefined(origin) && isDefined(angles))
    		self spawn(origin, angles);
    	else
    	{
    		spawnpointname = "mp_global_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", "");
    }
    
    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_Random(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::restrictWeaponByServerCvars(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.pers["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::setSpectatePermissions();
    }
    
    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);
    		}
    	}
    }

  7. #7
    Private
    Join Date
    Mar 2015
    Posts
    32
    Thanks
    0
    Thanked 1 Time in 1 Post
    If i delete the file zzz_messages.iwd , then it is all ok

  8. #8
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    Quote Originally Posted by punisher2202 View Post
    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:

    Code:
    level notify("update_teamscore_hud");
    To this:

    Code:
    level notify("update_allhud_score");

  9. The Following 3 Users Say Thank You to Tally For This Useful Post:

    kung foo man (18th July 2015),Mitch (19th July 2015),ysniper (10th April 2016)

  10. #9
    Private
    Join Date
    Mar 2015
    Posts
    32
    Thanks
    0
    Thanked 1 Time in 1 Post
    Quote Originally Posted by Tally View Post
    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:

    Code:
    level notify("update_teamscore_hud");
    To this:

    Code:
    level notify("update_allhud_score");

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

    Click image for larger version. 

Name:	Χωρίς τίτλο.jpg 
Views:	102 
Size:	77.9 KB 
ID:	882

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

  11. #10
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •