Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #include <zcmd>
- #define FormatQuery(%0,%1,%2) format((%0), sizeof(%0), (%1), %2)
- enum P_ENUM_DATA
- {
- Score,
- Money,
- PlayerIP,
- bool:Logged
- }
- new
- P_DATA[MAX_PLAYERS] [P_ENUM_DATA],
- DB:Database;
- public OnFilterScriptInit( )
- {
- Database = db_open("SArcr.db");
- db_free_result(db_query(Database, "CREATE TABLE IF NOT EXISTS `Users` (`IP`,`Name`,`Password`,`Money`,`Score`)"));
- return 1;
- }
- public OnFilterScriptExit( )
- {
- db_close(Database);
- return 1;
- }
- CMD:register(playerid,params[])
- {
- if(P_DATA[playerid][Logged]) return SendClientMessage(playerid, ~1, "You are already logged in!");
- new Query[256], DBResult:Result;
- format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
- Result = db_query(Database,Query);
- if(!db_num_rows(Result))
- {
- if(strlen(params))
- {
- if(strlen(params) > 5 && strlen(params) < 24)
- {
- FormatQuery( Query, "INSERT INTO `Users` (`IP`,`Name`,`Password`,`Money`,`Score`) VALUES('%s','%s','%s','%d','%d')", GetPlayerIPEx(playerid), Name(playerid), params, GetPlayerMoney(playerid), GetPlayerScore(playerid) );
- db_free_result( db_query(Database, Query) );
- SendClientMessage(playerid, ~1, "Your account has been succesfully registered!");
- format(Query, 256, "Your password is: %s.", params);
- SendClientMessage(playerid, ~1, Query);
- }
- else return SendClientMessage(playerid, ~1, "Password must contain at least 5 characters and maximum 24.");
- }
- else return SendClientMessage(playerid, ~1, "USAGE: /register <password>");
- }
- else return SendClientMessage(playerid, ~1, "Your account already exists, use / login <password>");
- return 1;
- }
- CMD:login(playerid,params[])
- {
- if(P_DATA[playerid][Logged]) return SendClientMessage(playerid, ~1, "You're already logged in!");
- if(strlen(params))
- {
- new Query[256], DBResult:Result ;
- FormatQuery(Query, "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
- Result = db_query(Database,Query);
- if(db_num_rows(Result))
- {
- FormatQuery(Query, "SELECT * FROM `Users` WHERE `Name` = '%s' AND `Password` = '%s'", Name(playerid), params);
- Result = db_query(Database,Query);
- if(db_num_rows(Result))
- {
- new Field[30] ;
- db_get_field_assoc(Result, "Money", Field, 30 );
- P_DATA[playerid][Money] = strval(Field);
- db_get_field_assoc(Result, "Score", Field, 30 );
- P_DATA[playerid][Score] = strval(Field);
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, P_DATA[playerid][Money]);
- SetPlayerScore(playerid, P_DATA[playerid][Score]);
- new Str[129];
- format(Str, sizeof(Str), "You've successfully logged in! You have %d and %d Score Money", P_DATA[playerid][Money], P_DATA[playerid][Score] );
- SendClientMessage(playerid, ~1, Str);
- P_DATA[playerid][Logged] = true;
- }
- else SendClientMessage(playerid, ~1, "Password does not match the database password! Please try again!");
- db_free_result(Result);
- }
- else
- {
- new Str[129];
- format(Str, sizeof(Str), "Account %s does not exist in the database! Use /register <password>", Name(playerid));
- SendClientMessage(playerid, ~1, Str);
- }
- db_free_result(Result);
- }
- else SendClientMessage(playerid, ~1, "USAGE: /login <password>");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new Query[256], DBResult:Result ;
- format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
- Result = db_query(Database,Query);
- if(db_num_rows(Result))
- SendClientMessage(playerid, ~1, "This name is registered! Use /login <password>");
- else
- SendClientMessage(playerid, ~1, "This name is not registered! Use /register <password>");
- db_free_result(Result);
- P_DATA[playerid][Logged] = false;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(P_DATA[playerid][Logged])
- {
- new Query[256] ;
- format(Query, sizeof(Query), "UPDATE `Users` SET (`Money` = '%d', `Score` = '%d') WHERE `Name` = '%s'",P_DATA[playerid][Money], P_DATA[playerid][Score], Name(playerid));
- db_free_result(db_query(Database, Query));
- P_DATA[playerid][Logged] = false;
- }
- return 1;
- }
- GetPlayerIPEx(playerid)
- {
- new IP[24];
- GetPlayerIp(playerid, IP, 24);
- return IP;
- }
- Name(i)
- {
- new n[24];
- GetPlayerName(i,n,24);
- return n;
- }
Advertisement
Add Comment
Please, Sign In to add comment