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, "", ""); }