· 9 years ago · Nov 22, 2016, 09:28 PM
1#include <a_samp>
2#include <a_mysql>
3
4
5enum {
6 DIALOG_REGISTER,
7 DIALOG_LOGIN
8}
9
10forward jig_OnPlayerConnect(playerid);
11forward jig_OnPlayerLogin(playerid);
12
13new
14 jDB,
15 jString[256],
16 jName[MAX_PLAYERS][24],
17 bool:jLogged[MAX_PLAYERS],
18 jTries[MAX_PLAYERS]
19;
20
21public OnFilterScriptInit() {
22 jDB = mysql_connect("localhost", "root", "jigRegister", "44134413");
23 if(mysql_ping(jDB) < 1)
24 return SendRconCommand("unloadfs jigRegister");
25
26 print("Connected!");
27 mysql_function_query(jDB, "CREATE TABLE IF NOT EXISTS `jUsers` (`Name` VARCHAR(24) NOT NULL,`Password` VARCHAR(32) NOT NULL, `Skin` INT(11) NOT NULL DEFAULT '299',`Money` INT(11) NOT NULL DEFAULT '5000',`Score` INT(11) NOT NULL DEFAULT '0')", false, "", "");
28
29 return 1;
30}
31
32public OnFilterScriptExit() {
33 mysql_close(jDB);
34 return 1;
35}
36
37public OnPlayerConnect(playerid) {
38 jTries[playerid] = 0;
39 GetPlayerName(playerid, jName[playerid], 24);
40
41 mysql_format(jDB, jString, "SELECT * FROM `jUsers` WHERE `Name` = '%s'", jName[playerid]);
42 mysql_function_query(jDB, jString, true, "jig_OnPlayerConnect", "i", playerid);
43 return 1;
44}
45
46public jig_OnPlayerConnect(playerid) {
47 new
48 jRows,
49 jFields
50 ;
51
52 cache_get_data(jRows, jFields, jDB);
53 if(!jRows) {
54 format(jString, sizeof(jString), "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nVocê ainda não é registrado no servidor.\nDigite uma senha para se registrar.", jName[playerid]);
55 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registro", jString, "Registrar", "Cancelar");
56 return 1;
57 }
58 format(jString, sizeof(jString), "{FFFFFF}Olá denovo {1E90FF}%s{FFFFFF}\nDigite sua senha para fazer login no servidor.", jName[playerid]);
59 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
60 return 1;
61}
62
63public OnPlayerDisconnect(playerid, reason) {
64 #pragma unused reason
65 if(jLogged[playerid]) {
66 mysql_format(jDB, jString,
67 "UPDATE `jUsers` SET `Skin` = %d, `Money` = %d, Score = %d WHERE `Name` = '%s'",
68 GetPlayerSkin(playerid),
69 GetPlayerMoney(playerid),
70 GetPlayerScore(playerid),
71 jName[playerid]
72 );
73 mysql_function_query(jDB, jString, false, "", "");
74 jLogged[playerid] = false;
75 }
76 return 1;
77}
78
79public OnPlayerSpawn(playerid)
80{
81 return (jLogged[playerid]) ? (1) : (Kick(playerid));
82}
83
84public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
85 switch(dialogid) {
86 case DIALOG_REGISTER: {
87 if(!response)
88 Kick(playerid);
89
90 else {
91 if(1 < strlen(inputtext) > 32) {
92 format(jString, sizeof(jString), "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nVocê ainda não é registrado no servidor.\nDigite uma senha para se registrar.\n\n{E31919}Erro: Sua senha deve conter entre 1 e 32 caracteres.", jName[playerid]);
93 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registro", jString, "Registrar", "Cancelar");
94 } else {
95 mysql_format(jDB, jString, "INSERT INTO `jUsers` (`Name`,`Password`) VALUES ('%s','%s')", jName[playerid], inputtext);
96 mysql_function_query(jDB, jString, false, "", "");
97
98 format(jString, sizeof(jString), "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nConta registrada com sucesso.\nDigite sua senha para fazer login.", jName[playerid]);
99 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
100 }
101 }
102 }
103 case DIALOG_LOGIN: {
104 if(!response)
105 Kick(playerid);
106
107 else {
108 mysql_format(jDB, jString, "SELECT * FROM `jUsers` WHERE `Name` = '%s' AND `Password` = '%s'", jName[playerid], inputtext);
109 mysql_function_query(jDB, jString, true, "jig_OnPlayerLogin", "i", playerid);
110 }
111 }
112 }
113 return 1;
114}
115
116public jig_OnPlayerLogin(playerid) {
117 new
118 jRows,
119 jFields
120 ;
121
122 cache_get_data(jRows, jFields, jDB);
123 if(!jRows)
124 {
125 ++ jTries[playerid];
126 if(jTries[playerid] == 5)
127 return BanEx(playerid, "5 erros de senha");
128
129 format(jString, sizeof(jString), "{FFFFFF}Senha incorreta {1E90FF}%s{FFFFFF}\nDigite sua verdadeira senha.\nChances: {E31919}%d", jName[playerid], (5 - jTries[playerid]));
130 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", jString, "Login", "Cancelar");
131 return 1;
132 }
133 jLogged[playerid] = true;
134
135
136 cache_get_field_content(0, "Money", jString, jDB);
137 ResetPlayerMoney(playerid); GivePlayerMoney(playerid, strval(jString));
138
139 cache_get_field_content(0, "Score", jString, jDB);
140 SetPlayerScore(playerid, strval(jString));
141
142 cache_get_field_content(0, "Skin", jString, jDB);
143
144 SetSpawnInfo(playerid, 0, strval(jString), 1568.2737, -1892.3541, 13.5595, 0.8003, 0, 0, 0, 0, 0, 0);
145 SpawnPlayer(playerid);
146 return 1;
147}