· 6 years ago · Jul 12, 2019, 11:36 PM
1#include <a_samp>
2#include <a_mysql>
3
4#define DIALOG_REGISTRO 1
5#define DIALOG_LOGIN 2
6
7new MySQL:IDConexao;
8
9enum pInfo
10{
11 pID,
12 pNome[24],
13 pIP[26],
14 pSenha[20],
15 pLevel,
16 pDinheiro,
17 pSkin,
18 pMatou,
19 pMorreu,
20 pAdmin,
21 bool:pLogado
22};
23new PlayerInfo[MAX_PLAYERS][pInfo];
24
25
26#define HOST "localhost"
27#define USUARIO "root"
28#define DATABASE "sayden"
29#define SENHA ""
30
31
32main(){}
33
34public OnGameModeInit()
35{
36 IDConexao = mysql_connect(HOST, USUARIO, SENHA, DATABASE);
37 mysql_query(IDConexao, "CREATE TABLE IF NOT EXISTS `Contas`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nome`varchar(24) NOT NULL,`Senha` varchar(20) NOT NULL,`Level` int(20) NOT NULL,`Matou` int(10) NOT NULL,`Morreu` int(10) NOT NULL,`Skin` int(10) NOT NULL,`Admin` int(10) NOT NULL,`Dinheiro` int(20) NOT NULL)", false);
38 if(mysql_errno(IDConexao) != 0)
39 {
40 print("Falha na conexão ao banco de dados Mysql");
41 } else {
42 print("Conexão ao banco de dado Mysql efetuada com sucesso");
43 }
44 return 1;
45}
46
47public OnGameModeExit()
48{
49 for(new i = 0; i < MAX_PLAYERS; i++) SalvarDados(i);
50 mysql_close(IDConexao);
51 return 1;
52}
53
54public OnPlayerConnect(playerid)
55{
56 GetPlayerName(playerid, PlayerInfo[playerid][pNome], 24);
57 GetPlayerIp(playerid, PlayerInfo[playerid][pIP], 26);
58 new Query[90];
59 mysql_format(IDConexao, Query, sizeof(Query), "SELECT `Senha`, `ID` FROM `Contas` WHERE `Nome`='%s'", PlayerInfo[playerid][pNome]);
60 mysql_tquery(IDConexao, Query, "VerificarContas", "i", playerid);
61 return 1;
62}
63
64forward VerificarContas(playerid);
65public VerificarContas(playerid)
66{
67 new Dialog[240];
68 if(cache_num_rows() > 0)
69 {
70 cache_get_value(0, "Senha", PlayerInfo[playerid][pSenha], 20);
71 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
72 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Logar", "Cancelar");
73 } else {
74
75 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê não tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
76 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
77 }
78 return 1;
79}
80
81public OnPlayerDisconnect(playerid, reason)
82{
83 SalvarDados(playerid);
84 return 1;
85}
86
87public OnPlayerDeath(playerid, killerid, reason)
88{
89 PlayerInfo[playerid][pMorreu]++;
90 PlayerInfo[killerid][pMatou]++;
91 return 1;
92}
93
94public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
95{
96 switch(dialogid)
97 {
98 case DIALOG_REGISTRO:
99 {
100 if(!response) return Kick(playerid);
101
102 if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
103 {
104 SendClientMessage(playerid, -1, "ERRO:{FFFFFF} A senha deve conter de 4 a 20 caracteres!");
105 new Dialog[240];
106 format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocê não tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
107 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
108 } else {
109 new Query[100];
110 mysql_format(IDConexao, Query, sizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')", PlayerInfo[playerid][pNome], inputtext);
111 mysql_tquery(IDConexao, Query, "DadosRegistrados", "i", playerid);
112 RegistrarDados(playerid);
113 }
114 }
115
116 case DIALOG_LOGIN:
117 {
118 if(!response) return Kick(playerid);
119 if(!strlen(inputtext))
120 {
121 SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Você não digitou a senha !");
122 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
123 return 1;
124 }
125 if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20))
126 {
127 new Query[70];
128 mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", PlayerInfo[playerid][pNome]);
129 mysql_tquery(IDConexao, Query, "CarregarContas", "d", playerid);
130 } else {
131 SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
132 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
133 }
134 }
135 }
136 return 1;
137}
138
139forward DadosRegistrados(playerid);
140public DadosRegistrados(playerid)
141{
142 PlayerInfo[playerid][pID] = cache_insert_id();
143 printf("-> Nova conta registrada ID: %d", PlayerInfo[playerid][pID]);
144 return 1;
145}
146
147forward CarregarContas(playerid);
148public CarregarContas(playerid)
149{
150 cache_get_value_int(0, "ID", PlayerInfo[playerid][pID]);
151 cache_get_value_int(0, "Admin", PlayerInfo[playerid][pAdmin]);
152 cache_get_value_int(0, "Level", PlayerInfo[playerid][pLevel]);
153 cache_get_value_int(0, "Matou", PlayerInfo[playerid][pMatou]);
154 cache_get_value_int(0, "Morreu", PlayerInfo[playerid][pMorreu]);
155 cache_get_value_int(0, "Skin", PlayerInfo[playerid][pSkin]);
156 cache_get_value_int(0, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
157 CarregarDados(playerid);
158 return 1;
159}
160
161stock RegistrarDados(playerid)
162{
163 PlayerInfo[playerid][pDinheiro] = 5000;
164 PlayerInfo[playerid][pAdmin] = 0;
165 PlayerInfo[playerid][pLevel] = 2;
166 PlayerInfo[playerid][pSkin] = 45;
167 PlayerInfo[playerid][pMorreu] = 0;
168 PlayerInfo[playerid][pMatou] = 0;
169 CarregarDados(playerid);
170 return 1;
171}
172
173stock CarregarDados(playerid)
174{
175 PlayerInfo[playerid][pLogado] = true;
176 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
177 GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
178 SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
179 SpawnPlayer(playerid);
180 return 1;
181}
182
183stock SalvarDados(playerid)
184{
185 PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
186 new Query[350];
187 mysql_format(IDConexao, Query, sizeof(Query), "UPDATE `Contas` SET `Nome`='%s', `Level`=%d, `Admin`=%d, `Skin`=%d, `Matou`=%d, `Morreu`=%d, `Dinheiro`=%d WHERE `ID`=%d",
188 PlayerInfo[playerid][pNome],
189 PlayerInfo[playerid][pLevel],
190 PlayerInfo[playerid][pAdmin],
191 PlayerInfo[playerid][pSkin],
192 PlayerInfo[playerid][pMatou],
193 PlayerInfo[playerid][pMorreu],
194 PlayerInfo[playerid][pDinheiro],
195 PlayerInfo[playerid][pID]);
196 mysql_tquery(IDConexao, Query, "DadosSalvos","d", playerid);
197 PlayerInfo[playerid][pLevel] = 0;
198 PlayerInfo[playerid][pAdmin] = 0;
199 PlayerInfo[playerid][pMatou] = 0;
200 PlayerInfo[playerid][pMorreu] = 0;
201 PlayerInfo[playerid][pDinheiro] = 0;
202 PlayerInfo[playerid][pLogado] = false;
203 return 1;
204}
205
206forward DadosSalvos(playerid);
207public DadosSalvos(playerid) return printf("-> Conta salva ID: %d", PlayerInfo[playerid][pID]);