SA-MP Forums Archive
Bugs! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Bugs! (/showthread.php?tid=153519)



Bugs! - ColdXX - 09.06.2010

Hey guys!
I have few bugs on ma server!

Ok so i have a ranking system on the GM,with 5 ranks ok so at 100 points the player should get the Newbie rank but it doesnt work for everyone,but sometimes when some players join they receive Newbie rank tho they dont have 100 score!

Ow yea and there is another bug! When the player that has a rank connects it sends the message and gives him the Money and the rank again!

Code here

pawn Код:
public score100(playerid)
{
    if(ScoreUpdate[playerid] == 0)
    {
        if(GetPlayerScore(playerid) >= 100)
        {
            SendClientMessage(playerid,lgreen,"Congratulation! You won 100k for achieving 100 points.");
      new name[MAX_PLAYER_NAME];
            GetPlayerName(playerid,name,MAX_PLAYER_NAME);
            format(msg,sizeof(msg),"~~%s has won 10k for achieving 100 points.",name,playerid);
            SendClientMessageToAll(0xFF0000F,msg);
            GivePlayerMoney(playerid, 100000);
            ScoreUpdate[playerid] = 1;
            pRank[playerid] = 1;
            GetPlayerName(playerid,name,MAX_PLAYER_NAME);
            format(msg,sizeof(msg),"~~%s was advanced to Rank *Newbie* for achieving 100 points.",name,playerid);
            SendClientMessageToAll(green,msg);
      Attach3DTextLabelToPlayer(newbie[playerid],playerid, 0.0, 0.0, 0.7);
        }
    }
}



Re: Bugs! - ¤Adas¤ - 09.06.2010

check timer score100, check if the player wasn't replaced by another (he disconnected and another with his ID connected)
hope it will work


Re: Bugs! - DJDhan - 09.06.2010

Put this under OnGameModeInit

Код:
SetTimer("RankUpdate",4000,1);
Then anywhere in the script:
Код:
forward RankUpdate();

public RankUpdate()
{
    for(new i=0;i<MAX_PLAYERS;i++)
    {
	if(IsPlayerConnected(i))
       {

		if(GetPlayerScore(i) == 100 && pRank[i] == 0)
		{

		new msg[256]; 
		new name[MAX_PLAYER_NAME];		
		GetPlayerName(i,name,MAX_PLAYER_NAME);

		SendClientMessage(i,lgreen,"Congratulation! You won 100k for achieving 100 points.");
      		
		format(msg,sizeof(msg),"~~%s (ID:%d) has won 10k for achieving 100 points.",name,i);
		SendClientMessageToAll(0xFF0000AA,msg);
		
		GivePlayerMoney(i, 100000);
		pRank[i] = 1;

		format(msg,sizeof(msg),"~~%s (ID:%d) was advanced to Rank *Newbie* for achieving 100 points.",name,i);
		SendClientMessageToAll(green,msg);
      		Attach3DTextLabelToPlayer(newbie[i],i, 0.0, 0.0, 0.7);

		}
      }
    }

		//here you can add other ranks for scores like 200, 300 and more. Same as above.

		return 1;

	
}
And I must say, You really need to learn the basics coz your code sucked :P


Re: Bugs! - ColdXX - 09.06.2010

Alright thanks


Re: Bugs! - NewTorran - 09.06.2010

Quote:
Originally Posted by DJDhan
Put this under OnGameModeInit

Код:
SetTimer("RankUpdate",4000,1);
Then anywhere in the script:
Код:
forward RankUpdate(playerid);

public RankUpdate(playerid)
{
	

		if(GetPlayerScore(playerid) >= 100 && pRank[playerid] < 1)
		{

		new msg[256]; 
		new name[MAX_PLAYER_NAME];		
		GetPlayerName(playerid,name,MAX_PLAYER_NAME);

		SendClientMessage(playerid,lgreen,"Congratulation! You won 100k for achieving 100 points.");
      		
		format(msg,sizeof(msg),"~~%s (ID:%d) has won 10k for achieving 100 points.",name,playerid);
		SendClientMessageToAll(0xFF0000AA,msg);
		
		GivePlayerMoney(playerid, 100000);
		pRank[playerid] = 1;

		format(msg,sizeof(msg),"~~%s (ID:%d) was advanced to Rank *Newbie* for achieving 100 points.",name,playerid);
		SendClientMessageToAll(green,msg);
      		Attach3DTextLabelToPlayer(newbie[playerid],playerid, 0.0, 0.0, 0.7);

		}

		//here you can add other ranks for scores like 200, 300 and more. Same as above.

		return 1;

	
}
And I must say, You really need to learn the basics coz your code sucked :P
Maybe you shoudl learn because that aint goiung to work


Re: Bugs! - DJDhan - 09.06.2010

Quote:
Originally Posted by Joe Torran C
Maybe you shoudl learn because that aint goiung to work
And why is that?

EDIT: I edited my code.


Re: Bugs! - NewTorran - 09.06.2010

Quote:
Originally Posted by DJDhan
Quote:
Originally Posted by Joe Torran C
Maybe you shoudl learn because that aint goiung to work
And why is that?

EDIT: I edited my code.
Because using SetTimer and then adding (playerid) it will only work for ID 0


Re: Bugs! - DJDhan - 09.06.2010

OOOO XD Sry I forgot to add a for loop. :P

I am editing my post again


Re: Bugs! - ColdXX - 09.06.2010

The timer isnt good cause now it tells me each 4 seconds that i won that rank ,and when i relog it also tells me that i won that rank :S


Re: Bugs! - DJDhan - 09.06.2010

Try now.