Results 1 to 4 of 4

Thread: [CoD 1.1] My alive players counter is insane

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts
    Why are you storing client hud elems in level variables?
    "Does not work" is an error report for a bug between keyboard and chair.

    All hail Artie Effem

  2. The Following User Says Thank You to IzNoGoD For This Useful Post:

    raphael (22nd March 2023)

  3. #2
    Deleter/Deleted
    Join Date
    Jan 2023
    Posts
    76
    Thanks
    40
    Thanked 9 Times in 9 Posts
    Quote Originally Posted by IzNoGoD View Post
    Why are you storing client hud elems in level variables?
    I'm sorry I maybe shouldn't have deleted my message
    Few minutes after posting, I found something and I thought maybe I should have think/search more before posting

    This is the post I found and I think this is the way I should do to make my counter to work normally : https://www.ugx-mods.com/forum/scrip...7144#msg147144

    Ftr, here is the insane code that I deleted in first post :

    Code:
    main(phase, register)
    {
    	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/main");
    	switch(phase)
    	{
    		case "init": _init(register); break;
    	}
    }
    _init(register)
    {
    	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/_init");
    	
    	if (isdefined(level.showaliveplayerscount))
    		return;
    	level.showaliveplayerscount = true;
    
    	if (codam\utils::getVar("promod", "alivecounter", "bool", 1|2, false))
    	{
    		if (getCvar("g_gametype") == "sd")
    		{
    			[[register]]("spawnPlayer", ::spawnPlayer, "thread");
    			[[register]]("gt_spawnSpectator", ::spawnSpectator, "thread");
    		}
    	}
    }
    
    spawnPlayer(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
    {
    	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/spawnPlayer");
    
    	/*//Clean counter
    	if (isdefined(level.promod_score))
    	{
    		if (isdefined(level.promod_score["alivefriends"]))
    		{
    			level.promod_score["alivefriends"] destroy();
    		}
    		if (isdefined(level.promod_score["aliveenemies"]))
    		{
    			level.promod_score["aliveenemies"] destroy();
    		}
    	}*/
    
    	thread hudAlivePlayersCount();
    }
    spawnSpectator(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
    {
    	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/spawnSpectator");
    
    	/*//Clean counter
    	if (isdefined(level.promod_score))
    	{
    		if (isdefined(level.promod_score["alivefriends"]))
    		{
    			level.promod_score["alivefriends"] destroy();
    		}
    		if (isdefined(level.promod_score["aliveenemies"]))
    		{
    			level.promod_score["aliveenemies"] destroy();
    		}
    	}*/
    }
    
    hudAlivePlayersCount()
    {
    	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/hudAlivePlayersCount");
    
    	level endon("intermission");
    	wait(0.05);
    	if (isdefined(level.gtd_call))
    		teams = [[level.gtd_call ]]("teamsPlaying");
    
    	if (!isdefined(teams) || (teams.size < 1))
    	{
    		teams = [];
    		teams[teams.size] = "allies";
    		teams[teams.size] = "axis";
    	}
    	level.promod_score = [];
    	iter = 0;
    	for (;;)
    	{
    		displayAlivePlayersCount(teams, iter);
    		iter = 1 - iter;
    		wait(0.5);
    	}
    }
    
    displayAlivePlayersCount(teams, iter)
    {
    	numonteam = [];
    	aliveonteam = [];
    	players = getentarray("player", "classname");
    	for (i = 0; i < players.size; i++)
    	{
    		player = players[i];
    		team = player.sessionteam;
    
    		if (!isdefined(team) || (team == "none"))
    		{
    			team = player.pers["team"];
    			if (!isdefined(team))
    				continue;
    		}
    
    		if (isdefined(numonteam[team]))
    			numonteam[team ]++;
    		else
    			numonteam[team] = 1;
    
    		if (player.sessionstate != "playing")
    			continue;
    
    		if (isdefined(aliveonteam[team]))
    			aliveonteam[team]++;
    		else
    			aliveonteam[team] = 1;
    	}
    	
    	for (i = 0; i < teams.size; i++)
    	{
    		_team = teams[i];
    
    		if (isPlayer(self) && isdefined(self.pers["team"]))
    		{
    			if (self.pers["team"] != "spectator")
    			{
    				if (self.pers["team"] == _team)
    				{
    					//FRIENDS
    					if (!isdefined(level.promod_score["alivefriends"]))
    					{
    						//CREATE COUNTER
    						_cf = newClientHudElem(self);
    						_cf.x = 570;
    						_cf.y = 75;
    						_cf.fontScale = 1.5;
    						_cf.color = (0.6, 1, 0);
    						level.promod_score["alivefriends"] = _cf;
    					}
    					else
    					{
    						_cf = level.promod_score["alivefriends"];
    					}
    					
    					//SET COUNT
    					if (isdefined(aliveonteam[_team]))
    					{
    						_cf setValue(aliveonteam[_team]);
    					}
    					else
    					{
    						_cf setValue(0);
    					}
    				}
    				else
    				{
    					//ENEMIES
    					if (!isdefined(level.promod_score["aliveenemies"]))
    					{
    						//CREATE COUNTER
    						_ce = newClientHudElem(self);
    						_ce.x = 610;
    						_ce.y = 75;
    						_ce.fontScale = 1.5;
    						_ce.color = (1, 0.2, 0);
    						level.promod_score["aliveenemies"] = _ce;
    					}
    					else
    					{
    						_ce = level.promod_score["aliveenemies"];
    					}
    
    					//SET COUNT
    					if (isdefined(aliveonteam[_team]))
    					{
    						_ce setValue(aliveonteam[_team]);
    					}
    					else
    					{
    						_ce setValue(0);
    					}
    				}
    			}
    		}
    	}
    
    	return;
    }
    The issue is that values don't get updated properly

    I will post the working code here if I manage to fix it

    Thanks IzNoGoD, your question confirms that I should not store client hud elems in level variables (I'm new with gsc)

Posting Permissions

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