28.04.2010, 15:50
FIXED
#include <a_samp> #include <dudb> #define COLOR_GRAD1 0xB4B5B7FF #define COLOR_GRAD2 0xBFC0C2FF #define COLOR_GRAD3 0xCBCCCEFF #define COLOR_GRAD4 0xD8D8D8FF #define COLOR_GRAD5 0xE3E3E3FF #define COLOR_GRAD6 0xF0F0F0FF #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_GREY 0xAFAFAFAA #define COLOR_PINK 0xFF008096 #define COLOR_BLUE 0x0000FFFF #define COLOR_GREEN 0x00A80096 #define COLOR_RED 0xFF0000AA #define COLOR_ORANGE 0xFF800096 #define COLOR_CYAN 0xFF808096 #define COLOR_YELLOW 0xFFFF00AA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_FADE1 0xE6E6E6E6 #define COLOR_FADE2 0xC8C8C8C8 #define COLOR_DARKBLUE 0x0000A096 #define COLOR_BLACK 0x00000096 #define COLOR_DARKGOLD 0x80800096 #define COLOR_FADE3 0xAAAAAAAA #define COLOR_FADE4 0x8C8C8C8C #define COLOR_FADE5 0x6E6E6E6E #define COLOR_PURPLE 0xFF00FF96 #define COLOR_BROWN 0x80400096 #define COLOR_DBLUE 0x2641FEAA #define COLOR_ALLDEPT 0xFF8282AA new logged[MAX_PLAYERS]; new adminlevel[MAX_PLAYERS]; new money[MAX_PLAYERS]; new playername[MAX_PLAYER_NAME]; public OnPlayerConnect(playerid) { logged[playerid] = 0; return 1; } public OnPlayerSpawn(playerid) { if(logged[playerid] == 0){ SendClientMessage(playerid, COLOR_ORANGE, "You are not logged in yet! USAGE: /login [password]!"); } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256],tmp[256], tmp2[256]; new idx; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(playerid, playername, sizeof(playername)); if(strcmp(cmd, "/register", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /register (password)"); }else { if (!dini_Exists(udb_encode(playername))) { dini_Create(udb_encode(playername)); dini_IntSet(udb_encode(playername), "password", udb_hash(tmp)); dini_IntSet(udb_encode(playername), "adminlevel", 0); dini_IntSet(udb_encode(playername), "money", 0); format(string, sizeof(string), "Account %s is made! You can now login with the password: %s.", playername, tmp); SendClientMessage(playerid, COLOR_ORANGE, string); } else { format(string, sizeof(string), "%s is already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); }} return 1; } if(strcmp(cmd, "/login", true) == 0) { GetPlayerName(playerid, playername, sizeof(playername)); if(logged[playerid] == 1) { SendClientMessage(playerid, COLOR_ORANGE, "You are already logged in!"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, COLOR_GREY, "USAGE: /login (password)"); }else{ if (dini_Exists(udb_encode(playername))) { tmp2 = dini_Get(udb_encode(playername), "password"); if (udb_hash(tmp) != strval(tmp2)) { SendClientMessage(playerid, COLOR_RED, "WRONG PASSWORD!."); }else{ logged[playerid] = 1; money[playerid] = dini_Int(udb_encode(playername), "money"); adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel"); format(string, sizeof(string), "%s, You are now logged in. You have adminlevel: %d and you have %d dollar(s)", playername, adminlevel[playerid], money[playerid]); SendClientMessage(playerid, COLOR_GREEN, string); GivePlayerMoney(playerid, money[playerid]); } }else{ format(string, sizeof(string), "The account %s does not exist yet. Type /register [password] to make an account.", playername); SendClientMessage(playerid, COLOR_ORANGE, string); }} return 1; } if(strcmp(cmd, "/makemeadmin", true) == 0) { if(IsPlayerAdmin(playerid)) { if(logged[playerid] == 1) { if(adminlevel[playerid] != 3) { adminlevel[playerid] = 3; SendClientMessage(playerid, COLOR_GREEN, "You are now HeadAdmin, Congratulations!"); } else { SendClientMessage(playerid, COLOR_RED, "You are already a Headadmin!"); } }else{ SendClientMessage(playerid, COLOR_RED, "You are not logged in yet, USAGE: /login password"); } }else{ SendClientMessage(playerid, COLOR_RED, "You are not a rcon admin!"); } return 1; } public OnPlayerDisconnect(playerid, reason) { if(adminlevel[playerid] >= 1) { GetPlayerName(playerid, playername, sizeof(playername)); money[playerid] = GetPlayerMoney(playerid); dini_IntSet(udb_encode(playername), "money", money[playerid]); dini_IntSet(udb_encode(playername), "adminlevel", adminlevel[playerid]); logged[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "(%d)Admin %s has logged out."); }else{ GetPlayerName(playerid, playername, sizeof(playername)); money[playerid] = GetPlayerMoney(playerid); dini_IntSet(udb_encode(playername), "money", money[playerid]); dini_IntSet(udb_encode(playername), "adminlevel", adminlevel[playerid]); logged[playerid] = 0; return 1; } }