Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <ZCMD>
- #define DHOST "PUT YOUR HOST INFO HERE"
- #define DUSER "PUT YOUR PHPMYADMIN USERNAME HERE"
- #define DPASS "PUT YOUR PHPMYADMIN PASSWORD HERE"
- #define DDB "PUT THE DATABASE NAME HERE (IN OUR CASE sa-mp)"
- #define DIALOG_LOGIN 100
- #define DIALOG_REGISTER 101
- #define gLOGIN 1
- #define gREGISTRATION 2
- #define gINIT 3
- #define gSAVE 4
- #define gNEWUSER 5
- #define GREEN 0x33AA33AA
- #define RED 0xAA3333AA
- #define YELLOW 0xFFFF00AA
- #define ORANGE 0xFF9900AA
- #define WHITE 0xFFFFFFAA
- main(){}
- enum pInfo
- {
- Username[25],
- Password[50],
- PlayerIP[19],
- pScore[9],
- pMoney[9]
- };
- new PlayerInfo[MAX_PLAYERS][pInfo];
- public OnGameModeInit()
- {
- mysql_debug(1);
- mysql_connect(DHOST, DUSER, DDB, DPASS);
- SetGameModeText("Server");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- CheckUser(playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- SaveUser(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- stock GetName(playerid)
- {
- new pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, sizeof(pName));
- return pName;
- }
- stock GetIp(playerid)
- {
- new Ip[16];
- GetPlayerIp(playerid, Ip, sizeof(Ip));
- return Ip;
- }
- stock CheckUserLogin(playerid, password[])
- {
- new Query[400]; format(Query, sizeof(Query), "SELECT * FROM `names` WHERE username = '%s' AND password = '%s';",GetName(playerid), password);
- mysql_query(Query);
- return 1;
- }
- stock CreateUser(playerid, password[])
- {
- new Query[400];
- format(Query, sizeof(Query), "INSERT INTO `names` (`Username`, `Password`, `PlayerIP`) VALUES('%s', '%s', '%s')", GetName(playerid), password, GetIp(playerid));
- mysql_query(Query, gNEWUSER, playerid);
- SendClientMessage(playerid, YELLOW, "Account created, you should be logged in any second now.");
- LoginUser(playerid);
- }
- stock SaveUser(playerid)
- {
- new query[400];
- format(query, sizeof(query), "UPDATE `names` SET `Score` = %d WHERE `Username` = '%s'", GetPlayerScore(playerid), GetName(playerid));
- mysql_query(query, gSAVE);
- }
- stock CheckUser(playerid)
- {
- new Query[400];
- format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'",GetName(playerid));
- mysql_query(Query, gINIT, playerid);
- return 1;
- }
- stock LoginUser(playerid)
- {
- new Query[400];
- format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'", GetName(playerid));
- mysql_query(Query, gLOGIN, playerid);
- return 1;
- }
- public OnQueryFinish(query[], resultid, extraid, connectionHandle)
- {
- switch(resultid)
- {
- case gINIT:
- {
- mysql_store_result();
- if(mysql_num_rows() > 0) ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Server", "Please enter your password to login", "Login", "Cancel");
- else ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Server", "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
- mysql_free_result();
- }
- case gLOGIN:
- {
- mysql_store_result();
- sscanf(query, "p<|>s[24]s[16]s[19]d[9]d[9]", PlayerInfo[extraid]);
- print(query);
- mysql_free_result();
- SetPlayerScore(extraid, PlayerInfo[extraid][pScore]);
- SendClientMessage(extraid, YELLOW, "You have successfully logged in!");
- new query2[128];
- format(query2, sizeof(query2), "UPDATE `names` SET `PlayerIP` = '%s' WHERE `Username` = '%s'", GetIp(extraid), GetName(extraid));
- mysql_query(query2);
- }
- case gSAVE: return 1;
- case gREGISTRATION: return 1;
- case gNEWUSER: return 1;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_LOGIN:
- {
- if(CheckUserLogin(playerid,inputtext)) LoginUser(playerid);
- SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
- GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
- else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "That account is not in the database!", "I'm sorry, That password was incorrect! Try again!", "Login", "Cancel");
- }
- case DIALOG_REGISTER:
- {
- if(response)
- {
- if(strlen(inputtext) >= 3 && strlen(inputtext) <= 15) CreateUser(playerid, inputtext);
- else
- {
- SendClientMessage(playerid, YELLOW, "Password has to contain between 3 and 15 letters / numbers.");
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Server", "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
- }
- }
- }
- }
- return 0;
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs();
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if (ch >= '0' && ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return 1;
- }
- }
- while ((ch = string[stringPos]) && ch != ' ');
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- ch,
- num = 0;
- while ((ch = string[stringPos++]))
- {
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- case ' ':
- {
- break;
- }
- default:
- {
- return 1;
- }
- }
- }
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new tmp[25];
- strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
- setarg(paramPos, 0, _:floatstr(tmp));
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != ' ')
- {
- setarg(paramPos, i++, ch);
- }
- if (!i) return 1;
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != ' ')
- {
- stringPos++;
- }
- while (string[stringPos] == ' ')
- {
- stringPos++;
- }
- paramPos++;
- }
- while (format[formatPos] == 'z') formatPos++;
- return format[formatPos];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement