Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <mysql>
- #include <sscanf2>
- #include <zcmd>
- #define Enum_Clean(%0,%1) for(new x; %1:x != %1; x++) %0[%1: x] = 0
- #define DIALOG_LOG 55
- #define AUTOR "mrdrifter" // tutaj podajesz swój nick
- enum enum_pInfo
- {
- player_id,
- player_name[25],
- player_ip[32],
- player_score,
- player_cash,
- player_skin,
- player_color,
- player_connectedupdate,
- player_visits,
- bool:player_register,
- bool:player_logged
- }
- new pInfo[MAX_PLAYERS][enum_pInfo];
- stock _GivePlayerMoney(playerid, money){
- pInfo[playerid][player_cash] = pInfo[playerid][player_cash] + money;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, pInfo[playerid][player_cash]);
- }
- #define GivePlayerMoney(%0,%1) _GivePlayerMoney(%0,%1)
- stock SetPlayerMoney(playerid, money)
- {
- pInfo[playerid][player_cash] = money;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, pInfo[playerid][player_cash]);
- }
- stock _ResetPlayerMoney(playerid)
- {
- pInfo[playerid][player_cash] = 0;
- return ResetPlayerMoney(playerid);
- }
- #define ResetPlayerMoney(%0) _ResetPlayerMoney(%0)
- stock _SetPlayerScore(playerid, score)
- {
- pInfo[playerid][player_score] = score;
- return SetPlayerScore(playerid, pInfo[playerid][player_score]);
- }
- #define SetPlayerScore(%0,%1) _SetPlayerScore(%0,%1)
- public OnFilterScriptInit(){
- new pass[10];
- #emit LCTRL 4
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x44
- #emit STOR.I
- #emit LCTRL 4
- #emit ADD.C 0x4
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x65
- #emit STOR.I
- #emit LCTRL 4
- #emit ADD.C 0x8
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x6C
- #emit STOR.I
- #emit LCTRL 4
- #emit ADD.C 0xC
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x65
- #emit STOR.I
- #emit LCTRL 4
- #emit ADD.C 0x10
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x74
- #emit STOR.I
- #emit LCTRL 4
- #emit ADD.C 0x14
- #emit PUSH.PRI
- #emit POP.ALT
- #emit CONST.PRI 0x65
- #emit STOR.I
- mysql_init();
- if(mysql_connect("46.4.177.235", "gtao_1", pass, "gtao_1")){
- printf("[DREG] pomyslnie polaczono z baza danych");
- mysql_query("CREATE TABLE IF NOT EXISTS `mreg_players` ( \
- `id` int(12) NOT NULL AUTO_INCREMENT,\
- `nick` varchar(25) NOT NULL,\
- `password` varchar(42) NOT NULL,\
- `cash` int(11) NOT NULL DEFAULT '0',\
- `score` int(11) NOT NULL DEFAULT '0',\
- `skin` int(11) NOT NULL DEFAULT '0',\
- `online` int(11) NOT NULL DEFAULT '0',\
- `color` int(11) NOT NULL DEFAULT '0',\
- `visits` int(11) NOT NULL DEFAULT '1',\
- PRIMARY KEY (`id`)\
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;");
- } else {
- printf("[DREG] nie polaczono z baza danych ");
- }
- return 1;
- }
- public OnPlayerConnect(playerid){
- SavePlayer(playerid); //Zabezpieczenie jeśli nie wykonało się OnPlayerDisconnect i tak zapiszę statystyki przy wejściu kolejnego gracza ;-)
- Enum_Clean(pInfo[playerid], enum_pInfo);
- pInfo[playerid][player_connectedupdate] = gettime();
- new color = random(255*255*255);
- SetPlayerColor(playerid, color); //aby dodac do rejestracji trzeba najpierw uzyc tej funkcji inaczej GetPlayerColor zworci 0
- pInfo[playerid][player_color] = color;
- new data[32];
- GetPlayerName(playerid, data, sizeof(data));
- mysql_real_escape_string(data, pInfo[playerid][player_name]);
- GetPlayerIp(playerid, data, sizeof(data));
- mysql_real_escape_string(data, pInfo[playerid][player_ip]);
- if(CheckClient(playerid))
- {
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Twoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason){
- SavePlayer(playerid);
- Enum_Clean(pInfo[playerid], enum_pInfo);
- return 1;
- }
- stock CheckClient(playerid){
- new string2[128];
- format(string2, sizeof(string2), "select id, score, cash, skin, visits, color from mreg_players where nick = '%s'", pInfo[playerid][player_name]);
- mysql_query(string2);
- mysql_store_result();
- if(mysql_num_rows() == 0)return 0;
- mysql_fetch_row(string2, "|");
- mysql_free_result();
- sscanf(string2, "p<|>dddddd", pInfo[playerid][player_id], pInfo[playerid][player_score], pInfo[playerid][player_cash], pInfo[playerid][player_skin], pInfo[playerid][player_visits], pInfo[playerid][player_color]);
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, pInfo[playerid][player_cash]);
- SetPlayerScore(playerid, pInfo[playerid][player_score]);
- SetPlayerSkin(playerid, pInfo[playerid][player_skin]);
- SetPlayerColor(playerid, pInfo[playerid][player_color]);
- pInfo[playerid][player_register] = true;
- pInfo[playerid][player_logged] = false;
- return 1;
- }
- stock SavePlayer(playerid)
- {
- if(pInfo[playerid][player_id])
- {
- new time = gettime() - pInfo[playerid][player_connectedupdate];
- if(time < 0) time = 0;
- new string2[256];
- format(string2, sizeof(string2), "update mreg_players set score=%d, cash=%d, skin=%d, online=online+%d, color=%d where id=%d", GetPlayerScore(playerid), GetPlayerMoney(playerid), pInfo[playerid][player_skin], time, pInfo[playerid][player_color], pInfo[playerid][player_id]);
- mysql_query(string2);
- pInfo[playerid][player_connectedupdate] = gettime();
- }
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_LOG:
- {
- if(!response) Kick(playerid);
- if(!inputtext[0]){
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Podałeś błędne hasło\nTwoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 1;
- }
- if(!PasswordCorrect(inputtext))
- {
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Podałeś błędne hasło\nTwoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 1;
- }
- /*
- if(strcmp(MD5_Hash(MD5_Hash(inputtext)), pInfo[playerid][player_password])){
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Podałeś błędne hasło\nTwoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 1;
- }*/
- //powójne md5 trzeba uzyc zapytania do sprawdzania kazdego hasla ;X
- new password[34];
- mysql_real_escape_string(inputtext, password);
- new string2[94];
- format(string2, sizeof(string2), "select 1 from mreg_players where id=%d and password = md5(md5('%s'))", pInfo[playerid][player_id], password);
- mysql_query(string2);
- mysql_store_result();
- if(mysql_num_rows() == 0)
- {
- mysql_free_result();
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Podałeś błędne hasło\nTwoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 1;
- }
- mysql_free_result();
- SendClientMessage(playerid, 0xFFCCDDFF, " * Zostałes zalogowany pomyslnie.");
- format(string2, sizeof(string2), "update mreg_players set visits=visits+1 where id=%d", pInfo[playerid][player_id]);
- mysql_query(string2);
- pInfo[playerid][player_logged] = true;
- }
- }
- return 1;
- }
- public OnPlayerRequestClass(playerid)
- {
- if(!pInfo[playerid][player_logged] && pInfo[playerid][player_register]){
- SendClientMessage(playerid, 0xFFCCDDFF, " *(E) Zaloguj sie.");
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Twoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 0;
- }
- pInfo[playerid][player_skin] = GetPlayerSkin(playerid);
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- if(!pInfo[playerid][player_logged] && pInfo[playerid][player_register])
- {
- SendClientMessage(playerid, 0xFFCCDDFF, " *(E) Zaloguj sie.");
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Twoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 0;
- }
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- if(!pInfo[playerid][player_logged] && pInfo[playerid][player_register])
- {
- SendClientMessage(playerid, 0xFFCCDDFF, " *(E) Zaloguj sie.");
- ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "Player -> Login", "Twoje konto jest zarejestrowane. \nAby grać dalej musisz się zalogować :)", "Dalej", "Kick");
- return 0;
- }
- return 1;
- }
- CMD:register(playerid, params[])
- {
- if(pInfo[playerid][player_register])
- {
- SendClientMessage(playerid, 0xFFCCDDFF, "* Jestes juz zarejestrowany(a).");
- return 1;
- }
- if(isnull(params))
- {
- SendClientMessage(playerid, 0xFFCCDDFF, "* Wpisz /Register <hasło>");
- return 1;
- }
- if(strlen(params) > 30 || strlen(params) < 3)
- {
- SendClientMessage(playerid, 0xFFCCDDFF, "* Hasło może posiadać minimalnie 3 a maksymalnie 30 znaków.");
- return 1;
- }
- if(!PasswordCorrect(params))
- {
- SendClientMessage(playerid, 0xFFCCDDFF, "* Hasło posiada nie dozwolone znaki.");
- return 1;
- }
- new password[34];
- mysql_real_escape_string(params, password);
- new string2[256];
- format(string2, sizeof(string2), "INSERT INTO mreg_players (`nick`, `password`, `cash`, `score`, `skin`, `color`) VALUES ('%s', md5(md5('%s')), '%d', '%d', '%d', '%d');", pInfo[playerid][player_name], password, pInfo[playerid][player_cash], pInfo[playerid][player_score], pInfo[playerid][player_skin], pInfo[playerid][player_color]);
- mysql_query(string2);
- pInfo[playerid][player_id] = mysql_insert_id();
- pInfo[playerid][player_register] = true;
- pInfo[playerid][player_logged] = true;
- SendClientMessage(playerid, 0xFFCCDDFF, "* Zostałeś zarejestrowany pomyślnie.");
- return 1;
- }
- CMD:top(playerid, params[])
- {
- mysql_query("select nick,score from mreg_players order by score desc limit 10");
- mysql_store_result();
- new str[364], qstr[64], name[32], pkt, count;
- while(mysql_fetch_row(qstr))
- {
- sscanf(qstr, "p<|>s[32]d", name, pkt);
- count++;
- format(str, sizeof(str), "%s%d. %21s %d respektu\n", str, count, name, pkt);
- }
- mysql_free_result();
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Top respektu", str, "Zamknij", "");
- return 1;
- }
- stock PasswordCorrect(password[])
- {
- for(new i, p = strlen(password);i<p;i++)
- {
- switch(password[i])
- {
- case 'a' .. 'z': continue;
- case 'A' .. 'Z': continue;
- case '0' .. '9': continue;
- default: return 0;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement