CMD:setvip(playerid, params[])
{
new lookupid, str[128], level;
if(pData[playerid][Admin] == 6)
{
if(sscanf(params,"ud",lookupid,level)) return SendClientMessage(playerid, COLOR_WHITE, "{ff387a}[Admin]:{ffffff} /setvip [ID | Name] [level]");
if(pData[lookupid][VIP] > pData[playerid][VIP]) return SendClientMessage(playerid, COLOR_WHITE, "{ff0000}[Error]: {ffffff}You are not authorized to use this command.");
if(level < 1 ||level > 5) return SendClientMessage(playerid, COLOR_WHITE, "{ff0000}[Error]:{ffffff} You can only set levels 1 to 5.");
if(!IsPlayerConnected(lookupid)) return SendClientMessage(playerid, COLOR_WHITE, "{ff0000}[Error]{ffffff} This player is not connected.");
if(level < pData[lookupid][VIP])
{
format(str, sizeof(str), "{ff387a}[Admin]:{ffffff} %s (ID:%d) has demoted you to VIP level %d!",GetName(playerid), playerid, level);
SendClientMessage(lookupid, COLOR_WHITE, str);
format(str, sizeof(str),"{ff387a}[Admin]:{ffffff} You have demoted %s (ID:%d) to VIP level %d!",GetName(lookupid),lookupid,level);
SendClientMessage(playerid, COLOR_WHITE, str);
pData[lookupid][VIP] = level;
SavePlayerData(lookupid);
}
if(level > pData[lookupid][VIP])
{
format(str, sizeof(str), "{ff387a}[Admin]:{ffffff} %s (ID:%d) has promoted you to VIP level %d!",GetName(playerid), playerid, level);
SendClientMessage(lookupid, COLOR_WHITE, str);
format(str, sizeof(str),"{ff387a}[Admin]:{ffffff} You have promoted %s (ID:%d) to VIP level %d!",GetName(lookupid),lookupid,level);
SendClientMessage(playerid, COLOR_WHITE, str);
pData[lookupid][VIP] = level;
SavePlayerData(lookupid);
}
}
else return SendClientMessage(playerid, COLOR_WHITE, "{ff0000}[Error]{ffffff}You are not authorized to use this command.");
return 1;
}
|
Username should only appear once in the database. While it is technically possible to set up a foreign key relation with a text type field, it is discouraged to do so because string comparison is obviously much slower than integer comparison. Especially for varchar fields where length is not fixed. |
stock SavePlayerData(playerid)
{
new query[512];
mysql_format(mysql, query, sizeof(query), "UPDATE `players` SET `IP`='%s', `Admin`=%i, `VIP`=%i, `EXPE`=%i, `Kills`=%d, `Deaths`=%d, `Score`=%d, `Wanted`=%d, `Money`=%d, `Job`=%d, `Copban`=%d, `Armyban`=%d, WHERE `ID`=%d",
IP[playerid], pData[playerid][Admin], pData[playerid][VIP], pData[playerid][EXPE], pData[playerid][Kills], pData[playerid][Deaths], GetPlayerScore(playerid), GetPlayerWantedLevel(playerid), pData[playerid][Money], pData[playerid][Job], pData[playerid][Copban], pData[playerid][Armyban], pData[playerid][ID]);
mysql_tquery(mysql, query, "", "");
}