My Rank System Is Not Working Properly
#1

My rank System that I got "Zcmd" or w/e has a problem: If I had 301 score and I needed to reach 400 score to become Major, then I wouldn't need 400 score because I would already be Major Once I go anywhere above 300 It automatically promotes the person without even having to reach the next score. It's the same thing on ALL of my Ranks.

Here is what I got:

Код:
//===========================GetPlayerRankInfo Function==================================//
forward GetPlayerRankInfo(playerid);

public GetPlayerRankInfo(playerid)

{
           	new Pname[50];
           	GetPlayerName(playerid, Pname, 50);
            new string[250];
			if(GetPlayerScore(playerid) <= 0)

			{
			
			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#" Private");

			format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);

			}
            else if(GetPlayerScore(playerid) <= 30)
            {

			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#" Corporal");

			format(string, sizeof(string),"Name:%s [Your Currect Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);
            }

			else if(GetPlayerScore(playerid) <= 50)
            {

			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank Is "#COL_GREEN#" Sergeant");

			format(string, sizeof(string),"Name:%s [Your score is: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);
            }

			else if(GetPlayerScore(playerid) <= 85)
            {

			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#" Officer");

   			format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);
            }

			else if(GetPlayerScore(playerid) <= 250)
            {

			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#" Lieutenant Major");

			format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);
            }

			else if(GetPlayerScore(playerid) <= 300)
            {

			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#" Captain");

			format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);

            }

            else if(GetPlayerScore(playerid) <= 400)

            {
			SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank "#COL_GREEN#"Major");

			format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);

			}

            else if(GetPlayerScore(playerid) <= 500)

			{

            SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#"Colonel");

            format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

			SendClientMessage(playerid, COLOR_WHITE, string);

            }

            else if(GetPlayerScore(playerid) <= 750)

            {

            SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#"General");

            format(string, sizeof(string),"Name:%s [Your Current Score is: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

            SendClientMessage(playerid, COLOR_WHITE, string);

            }

            else if(GetPlayerScore(playerid) <= 1000)

            {

            SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#"Field Marshall");

            format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

            SendClientMessage(playerid, COLOR_WHITE, string);

            }

            else if(GetPlayerScore(playerid) <= 1500)

            {

            SendClientMessage(playerid, COLOR_WHITE, "Your Current Rank: "#COL_GREEN#"Master Of War");

            format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, GetPlayerScore(playerid));

            SendClientMessage(playerid, COLOR_WHITE, string);

            }

        	return 1;

}
Reply
#2

EDIT: His was better :P

V
V
V
V
V
V
V
Reply
#3

pawn Код:
forward GetPlayerRankInfo(playerid);
public GetPlayerRankInfo(playerid)
{
    new Pname[50], string[250], tmp[32] = "Your Current Rank: "#COL_GREEN#"", rank[18], score;
    GetPlayerName(playerid, Pname, 50);
    score = GetPlayerScore(playerid);
    switch(score) {
        case 0..29: {
            rank = "Private";
        }
        case 30..49: {
            rank = "Corporal";
        }
        case 50..84: {
            rank = "Sergeant";
        }
        case 85..249: {
            rank = "Officer";
        }
        case 250..299: {
            rank = "Lieutenant Major";
        }
        case 300..399: {
            rank = "Captain";
        }
        case 400..499: {
            rank = "Major";
        }
        case 500..749: {
            rank = "Colonel";
        }
        case 750..999: {
            rank = "General";
        }
        case 1000..1499: {
            rank = "Field Marshall";
        }
        default: {
            rank = "Master Of War";
        }
    }
    strcat(tmp, rank);
    SendClientMessage(playerid, COLOR_WHITE, tmp);
    format(string, sizeof(string),"Name:%s [Your Current Score: "#COL_GREEN#"%d]",Pname, score);
    SendClientMessage(playerid, COLOR_WHITE, string);
    return 1;
}
Use this OP (v2, some edits)
Reply
#4

Thanks Misiur, but for some reason when I enter that, it only shows my rank as like "Majo" or "Priv" it only shows 4 letters?
Reply
#5

Change tmp[32] to tmp[50]
Reply
#6

It works, thanks a ton. How would I make this appear when the person spawns?

I put this, but I got 1 error about symbol already defined: SendClientMessage.


Код:
public OnPlayerSpawn(playerid)
{
SendClientMessage(playerid, COLOR_WHITE, tmp);
    format(string, sizeof(string),"Name:%s - Your Current Score: "#COL_GREEN#"%d]",Pname, score);
    SendClientMessage(playerid, COLOR_WHITE, string);
    return 1;
}
Reply
#7

In OnPlayerSpawn just place GetPlayerRankInfo(playerid). The error probably shows because the command is outside any callback
Reply
#8

Btw that last rank problem was part of a filterscript! So. I entered this code under playerspawn

Код:
public OnPlayerSpawn(playerid)
{
		GivePlayerWeapon(playerid,27,1000);
   		GivePlayerWeapon(playerid,25,1000);
    	GivePlayerWeapon(playerid,28,1000);
    	GivePlayerWeapon(playerid,34,500);
    	GivePlayerWeapon(playerid,24,500);
	 }

	GetPlayerRankInfo(playerid)
        {
    	SendClientMessage(playerid, COLOR_WHITE, tmp);
    format(string, sizeof(string),"Name:%s - Your Current Score: "#COL_GREEN#"%d]",Pname, score);
    SendClientMessage(playerid, COLOR_WHITE, string);

But now I get 1 warning! I'm not sure what it means

Код:
C:\Users\Administration\Desktop\My Script\gamemodes\MyScript.pwn(2259) : warning 203: symbol is never used: "GetPlayerRankInfo"
Reply
#9

If you are using this filterscript with this gamemode, use this:

pawn Код:
//Change
public OnPlayerSpawn(playerid)
{
        GivePlayerWeapon(playerid,27,1000);
        GivePlayerWeapon(playerid,25,1000);
        GivePlayerWeapon(playerid,28,1000);
        GivePlayerWeapon(playerid,34,500);
        GivePlayerWeapon(playerid,24,500);
     }

    GetPlayerRankInfo(playerid)

        SendClientMessage(playerid, COLOR_WHITE, tmp);
    format(string, sizeof(string),"Name:%s - Your Current Score: "#COL_GREEN#"%d]",Pname, score);
    SendClientMessage(playerid, COLOR_WHITE, string);
//To
public OnPlayerSpawn(playerid)
{
    GivePlayerWeapon(playerid,27,1000);
    GivePlayerWeapon(playerid,25,1000);
    GivePlayerWeapon(playerid,28,1000);
    GivePlayerWeapon(playerid,34,500);
    GivePlayerWeapon(playerid,24,500);

    CallRemoteFunction("GetPlayerRankInfo", "d", playerid);
}
Reply
#10

It works xD Thanks repped
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)