10.12.2011, 11:37
I don't know why but this GM have a big problem with the database.
As you can see in this picture, I've made my 1st account, and i registred another 2 accounts and the database set the last 2 account admin level 1, without doing something.

Here is the GM.
As you can see in this picture, I've made my 1st account, and i registred another 2 accounts and the database set the last 2 account admin level 1, without doing something.

Here is the GM.
Код:
#include <a_samp> #include <zcmd> #include <sscanf2> #include <foreach> #include <a_mysql> //============================================================================// // Define s // //============================================================================// #define SERVER_NAME "" #define SERVER_TIME "" #define SERVER_GRAVITY "" #define SERVER_MAP "" #define SERVER_WEBSITE "" #define SQL_HOST "" #define SQL_USER "" #define SQL_PASS "" #define SQL_DB "" #define Blue "{003DF5}" #define Red "{FF0000}" #define Green "{66FF00}" #define White "{FFFFFF}" #define COLOR_RED 0xFF0000FF #define COLOR_LIME 0xFF000000 #define DIALOG_REGISTER 100 #define DIALOG_LOGIN 101 #define DIALOG_POS 102 //============================================================================// // New's // //============================================================================// enum pInfo { pScore, pMoney, pLevel, pVIP, pKMA, pRank, pKills, pDeaths, pMuted, pJailed, pFrozen, pMutedTimes, pJailedTimes, pFrozenTimes, pBanned, pBannedBy[24], pLogins, pCookies, Float:pPosX, Float:pPosY, Float:pPosZ, Float:pPosA } new PlayerInfo[MAX_PLAYERS][pInfo]; new MoneyGiven[MAX_PLAYERS]; new IsRegistered[MAX_PLAYERS]; new Logged[MAX_PLAYERS]; new JustLogged[MAX_PLAYERS]; new Text:Textdraw1; //============================================================================// // Forwards // //============================================================================// forward HideMessage1(playerid); //============================================================================// // Main // //============================================================================// main(){} //============================================================================// // Publics // //============================================================================// public OnGameModeInit() { new stuff[128]; format(stuff, 128, "hostname %s", SERVER_NAME); SendRconCommand(stuff); format(stuff, 128, "mapname %s", SERVER_MAP); SendRconCommand(stuff); format(stuff, 128, "worldtime %s", SERVER_WEBSITE); SendRconCommand(stuff); SetGameModeText("Drift/Race/Freeroam"); AddPlayerClass(1, 1694.3789,1447.9192,10.7634,269.8285, 0, 0, 0, 0, 0, 0); //================================================================// // MySQL part // //================================================================// mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS); mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(40), score INT(20), money INT(20), level INT(20), vip INT(20), kma INT(20), rank INT(20), kills INT(20), deaths INT(20), muted INT(20), jailed INT(20), frozen INT(20), mutedtimes INT(20), jailedtimes INT(20), frozentimes INT(20), banned INT(20), bannedby VARCHAR(24), logins INT(20), posx INT(20), posy INT(20), posz INT(20), posa INT(20), IP VARCHAR(15) )"); mysql_debug(1); return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestSpawn(playerid) { //================================================================// // MySQL part // //================================================================// if(!Logged[playerid]) { if(!IsRegistered[playerid]) { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel"); return 0; } if(IsRegistered[playerid] == 1) { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel"); return 0; } } return 1; } public OnPlayerSpawn(playerid) { //================================================================// // MySQL part // //================================================================// if(MoneyGiven[playerid] != -1) { GivePlayerMoney(playerid, MoneyGiven[playerid]); MoneyGiven[playerid] = -1; } if(JustLogged[playerid] == 1) { ShowPlayerDialog(playerid, DIALOG_POS, DIALOG_STYLE_MSGBOX, ""Blue"Sucessfully logged-in!", ""White"You have sucessfully logged-in to your account!\n\n"White"Would you like to load you previous possition?", "Yes", "No"); JustLogged[playerid] = 0; } return 1; } public OnPlayerConnect(playerid) { RemoveUnderScore(playerid); TextDrawHideForPlayer(playerid, Textdraw1); //================================================================// // MySQL part // //================================================================// MoneyGiven[playerid] = -1; JustLogged[playerid] = 0; new query[300], pname[24]; GetPlayerName(playerid, pname, 24); format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", pname); mysql_query(query); mysql_store_result(); new rows = mysql_num_rows(); if(!rows) { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel"); } if(rows == 1) { new IP[2][15]; mysql_fetch_field_row(IP[0],"IP"); GetPlayerIp(playerid, IP[1], 15); if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true)) { MySQL_Login(playerid); } else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true)) { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel"); IsRegistered[playerid] = 1; } } mysql_free_result(); return 1; } public OnPlayerDisconnect(playerid, reason) { //================================================================// // MySQL part // //================================================================// if(Logged[playerid] == 1) { new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); PlayerInfo[playerid][pPosX] = x; PlayerInfo[playerid][pPosY] = y; PlayerInfo[playerid][pPosZ] = z; PlayerInfo[playerid][pPosA] = a; new score = GetPlayerScore(playerid); new money = GetPlayerMoney(playerid); new query[300], pname[24]; GetPlayerName(playerid, pname, 24); format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d, level=%d, vip=%d, kma=%d, rank=%d, kills=%d, deaths=%d, muted=%d, jailed=%d, frozen=%d, mutedtimes=%d, jailedtimes=%d, frozentimes=%d, banned=%d, bannedby='%s', logins=%d, posx=%f, posy=%f, posz=%f, posa=%f WHERE user='%s'", score, money, PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pVIP], PlayerInfo[playerid][pKMA], PlayerInfo[playerid][pRank], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pMuted], PlayerInfo[playerid][pJailed], PlayerInfo[playerid][pFrozen], PlayerInfo[playerid][pMutedTimes], PlayerInfo[playerid][pJailedTimes], PlayerInfo[playerid][pFrozenTimes], PlayerInfo[playerid][pBanned], PlayerInfo[playerid][pBannedBy], PlayerInfo[playerid][pLogins], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], pname); mysql_query(query); } return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_POS) { if(response) { SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]); SendMessage(playerid, "~g~Info: ~w~Sucessfully loaded your last possition!"); } else if(!response) { return 1; } } //================================================================// // MySQL part // //================================================================// if(dialogid == DIALOG_REGISTER) { if(response) { if(!strlen(inputtext) || strlen(inputtext) > 100) { SendMessage(playerid, "~r~Error: ~w~You must insert a password between 1-100 characters!"); ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel"); } else if(strlen(inputtext) > 0 && strlen(inputtext) < 100) { new escpass[100]; mysql_real_escape_string(inputtext, escpass); MySQL_Register(playerid, escpass); } } if(!response) { SendMessage(playerid, "~r~Error: ~w~You must register before logging in!"); ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel"); } } if(dialogid == DIALOG_LOGIN) { if(!response) { SendMessage(playerid, "~r~Error: ~w~You must login before you spawn!"); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel"); } if(response) { new query[200], pname[24], escapepass[100]; GetPlayerName(playerid, pname, 24); mysql_real_escape_string(inputtext, escapepass); format(query, sizeof(query), "SELECT `user` FROM playerdata WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass); mysql_query(query); mysql_store_result(); new numrows = mysql_num_rows(); if(numrows == 1) MySQL_Login(playerid); if(!numrows) { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel"); SendMessage(playerid, "~r~Error: ~w~Incorrect password!"); } mysql_free_result(); } } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } //============================================================================// // Player Commands // //============================================================================// CMD:savepossition(playerid, params[]) { new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); PlayerInfo[playerid][pPosX] = x; PlayerInfo[playerid][pPosY] = y; PlayerInfo[playerid][pPosZ] = z; PlayerInfo[playerid][pPosA] = a; SendMessage(playerid, "~g~Info: ~w~Possition saved!"); return 1; } CMD:sp(playerid, params[]) { return cmd_savepossition(playerid, params); } CMD:loadpossition(playerid, params[]) { SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]); SendMessage(playerid, "~g~Info: ~w~Possition loaded!"); return 1; } CMD:lp(playerid, params[]) { return cmd_loadpossition(playerid, params); } //============================================================================// // Admin Commands // //============================================================================// CMD:setadmin(playerid, params[]) { new alevel, str[128], pname[24], Nam[24], ID; if(!(PlayerInfo[playerid][pLevel] > 1)) return 0; if(sscanf(params,"ui",ID,alevel)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFFF} /setadmin [ID] [Level 1-2]"); if(alevel > 3) return SendClientMessage(playerid,COLOR_RED," ERROR:{FFFFFF} Levels avalible 1-2!"); if(!IsPlayerConnected(ID))return SendClientMessage(playerid,COLOR_RED,"ERROR: {FFFFFF}That user is not connected."); if(PlayerInfo[ID][pLevel] == alevel) return SendClientMessage(playerid,COLOR_RED, "ERROR: {FFFFFF}That person is already this admin level!"); GetPlayerName(playerid,Nam, MAX_PLAYER_NAME); GetPlayerName(ID,pname,MAX_PLAYER_NAME); if(alevel == 0) { format(str, sizeof(str),"%s has your Admin level to %d on the server.",Nam,alevel); SendClientMessage(ID,COLOR_RED,str); format(str, sizeof(str),"You had set {FFFFFF}%s {FF0000}admin level to {FFFFFF}%d!",pname,alevel); SendClientMessage(playerid,COLOR_RED,str); PlayerInfo[ID][pLevel] = alevel; return 1; } format(str, sizeof(str),"{FFFFFF}%s {FF0000}has set your admin level to {FFFFFF}%d {FF0000}on the server.",Nam,alevel); SendClientMessage(ID,COLOR_RED,str); format(str, sizeof(str),"You have set {FFFFFF}%s {FF0000}admin level {FFFFFF}%d!",pname,alevel); SendClientMessage(playerid,COLOR_RED,str); format(str,sizeof(str),"Administrator %s has set %s Admin level to %d",Nam,pname,alevel); MessageToAdmins(COLOR_LIME,str); PlayerInfo[ID][pLevel] = alevel; return 1; } //============================================================================// // Stocks / Publics // //============================================================================// public HideMessage1(playerid) { TextDrawHideForPlayer(playerid, Textdraw1); return 1; } stock RemoveUnderScore(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); for(new i = 0; i < MAX_PLAYER_NAME; i++) { if(name[i] == '_') name[i] = ' '; } return name; } stock SendMessage(playerid, message[]) { TextDrawHideForPlayer(playerid, Textdraw1); TextDrawSetString(Textdraw1, message); TextDrawShowForPlayer(playerid, Textdraw1); SetTimer("HideMessage1", 5000, false); return 1; } stock ErrorMessage(playerid, message[]) { new string[128]; format(string, sizeof string, ""Red"[Error] "White"%s", message); SendClientMessage(playerid, -1, string); return 1; } stock MySQL_Register(playerid, passwordstring[]) { new query[350], pname[24], IP[15]; new Bannedby[20]; format(Bannedby, 20, "Not Banned"); GetPlayerName(playerid, pname, 24); GetPlayerIp(playerid, IP, 15); format(query, sizeof(query), "INSERT INTO playerdata (user, password, score, money, level, vip, kma, rank, kills, deaths, muted, jailed, frozen, mutedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa, IP) VALUES('%s', SHA1('%s'), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '%s', 0, 0, 0, 0, 0, '%s')", pname, passwordstring, Bannedby, IP); mysql_query(query); SendMessage(playerid, "~g~Info: ~w~You have been registered on this server!"); Logged[playerid] = 1; return 1; } stock MySQL_Login(playerid) { new query[300], pname[24], savingstring[20]; GetPlayerName(playerid, pname, 24); format(query, sizeof(query), "SELECT score, money, level, vip, kma, rank, kills, deaths, muted, jailed, frozen, mutedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa FROM playerdata WHERE user = '%s'", pname); mysql_query(query); mysql_store_result(); while(mysql_fetch_row_format(query,"|")) { mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring)); mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring); mysql_fetch_field_row(savingstring, "level"); PlayerInfo[playerid][pLevel] = strval(savingstring); mysql_fetch_field_row(savingstring, "vip"); PlayerInfo[playerid][pVIP] = strval(savingstring); mysql_fetch_field_row(savingstring, "kma"); PlayerInfo[playerid][pKMA] = strval(savingstring); mysql_fetch_field_row(savingstring, "rank"); PlayerInfo[playerid][pRank] = strval(savingstring); mysql_fetch_field_row(savingstring, "kills"); PlayerInfo[playerid][pKills] = strval(savingstring); mysql_fetch_field_row(savingstring, "deaths"); PlayerInfo[playerid][pDeaths] = strval(savingstring); mysql_fetch_field_row(savingstring, "muted"); PlayerInfo[playerid][pMuted] = strval(savingstring); mysql_fetch_field_row(savingstring, "jailed"); PlayerInfo[playerid][pJailed] = strval(savingstring); mysql_fetch_field_row(savingstring, "frozen"); PlayerInfo[playerid][pFrozen] = strval(savingstring); mysql_fetch_field_row(savingstring, "mutedtimes"); PlayerInfo[playerid][pMutedTimes] = strval(savingstring); mysql_fetch_field_row(savingstring, "jailedtimes"); PlayerInfo[playerid][pJailedTimes] = strval(savingstring); mysql_fetch_field_row(savingstring, "frozentimes"); PlayerInfo[playerid][pFrozenTimes] = strval(savingstring); mysql_fetch_field_row(savingstring, "banned"); PlayerInfo[playerid][pBanned] = strval(savingstring); mysql_fetch_field_row(savingstring, "bannedby"); PlayerInfo[playerid][pBannedBy] = strval(savingstring); mysql_fetch_field_row(savingstring, "logins"); PlayerInfo[playerid][pLogins] = strval(savingstring); mysql_fetch_field_row(savingstring, "posx"); PlayerInfo[playerid][pPosX] = strval(savingstring); mysql_fetch_field_row(savingstring, "posy"); PlayerInfo[playerid][pPosY] = strval(savingstring); mysql_fetch_field_row(savingstring, "posz"); PlayerInfo[playerid][pPosZ] = strval(savingstring); mysql_fetch_field_row(savingstring, "posa"); PlayerInfo[playerid][pPosA] = strval(savingstring); } mysql_free_result(); JustLogged[playerid] = 1; Logged[playerid] = 1; PlayerInfo[playerid][pLogins]++; SendMessage(playerid, "~g~Info: ~w~You have been logged-in!"); return 1; } stock GetName(playerid) { new pname[24]; GetPlayerName(playerid, pname, 24); return pname; } forward MessageToAdmins(color,const string[]); public MessageToAdmins(color,const string[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i) == 1) if(PlayerInfo[i][pLevel] > 0) SendClientMessage(i, COLOR_LIME ,string); } return 1; }