CMD:rankname(playerid, params[])
{
new playerb,string[128];
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(!PlayerInfo[playerid][pFacLeader]) return SendClientMessage(playerid, COLOR_GREY, "You are not a faction leader.");
if(sscanf(params, "us", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "[Usage]: /rankname [playerid] [rank]");
if(playerid == playerb) return SendClientMessage(playerid, COLOR_GREY, "You can't change your rank.");
if(!IsPlayerLoggedIn(playerb)) return SendClientMessage(playerid, COLOR_GREY, "Invalid player id.");
if(PlayerInfo[playerb][pFac] != PlayerInfo[playerid][pFac]) return SendClientMessage(playerid, COLOR_GREY, "Player is not in your faction.");
format(PlayerInfo[playerb][pFacRanN], 60, "%s", params);
format(string, sizeof(string), "You have changed the Rank Name from %s to %s.", RPN(playerb), params);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "%s has changed your Rank Name to %s", RPN(playerid), params);
SendClientMessage(playerb, COLOR_LIGHTBLUE, string);
return 1;
}
//on stock loadhcar
format(PlayerInfo[playerid][pFacRanN], 60, "%s", dini_Get(file, "FacRanN"));
//on savechar
dini_IntSet(file, "FacRankN", PlayerInfo[playerid][pFacRanN]);
//on clear char
format(PlayerInfo[playerid][pFacRanN], 64, "");
pFacRanN[60],
new playerb, rank[64], string[128]; if(sscanf(params, "us", playerb, rank)) return SendClientMessage(playerid, COLOR_WHITE, "[Usage]: /rankname [playerid] [rank]");
pFacRanN[60], format(PlayerInfo[playerid][pFacRanN], 60, "%s", dini_Get(file, "FacRanN")); format(PlayerInfo[playerid][pFacRanN], 64, "");
dini_IntSet(file, "FacRankN", PlayerInfo[playerid][pFacRanN]);
dini_Set(file, "FacRankN", PlayerInfo[playerid][pFacRanN]);
First off, you should change the sscanf line in your command to something like this: Code: new playerb, rank[64], string[128]; if(sscanf(params, "us", playerb, rank)) return SendClientMessage(playerid, COLOR_WHITE, "[Usage]: /rankname [playerid] [rank]"); Second, make sure your string sizes are all equal (this isn't the cause of the problem, just to prevent irregularities. These should all be the same number (60 or 64) Code: pFacRanN[60], format(PlayerInfo[playerid][pFacRanN], 60, "%s", dini_Get(file, "FacRanN")); format(PlayerInfo[playerid][pFacRanN], 64, ""); Finally, the cause of your problem Code: dini_IntSet(file, "FacRankN", PlayerInfo[playerid][pFacRanN]); Since the faction rank name is a string not an integer this needs to be changed to: Code: dini_Set(file, "FacRankN", PlayerInfo[playerid][pFacRanN]); Hope this helps, good luck. |
First off, you should change the sscanf line in your command to something like this:
Код:
new playerb, rank[64], string[128]; if(sscanf(params, "us", playerb, rank)) return SendClientMessage(playerid, COLOR_WHITE, "[Usage]: /rankname [playerid] [rank]"); Код:
pFacRanN[60], format(PlayerInfo[playerid][pFacRanN], 60, "%s", dini_Get(file, "FacRanN")); format(PlayerInfo[playerid][pFacRanN], 64, ""); Код:
dini_IntSet(file, "FacRankN", PlayerInfo[playerid][pFacRanN]); Код:
dini_Set(file, "FacRankN", PlayerInfo[playerid][pFacRanN]); |