· 6 years ago · Jul 10, 2019, 04:04 PM
1#include <a_samp>
2#include <a_mysql>
3#include <easyDialog>
4
5#define MYSQL_HOST "localhost"
6#define MYSQL_PASS ""
7#define MYSQL_USER "root"
8#define MYSQL_DB "abcd"
9
10new MySQL:Database;
11
12enum {
13 Dialog_Register = 1,
14 Dialog_Login
15}
16
17enum E_PLAYER_INFO {
18 ID,
19 Admin,
20 Skin,
21 Password[128]
22}
23
24new playerInfo[MAX_PLAYERS][E_PLAYER_INFO];
25
26// #include <YSI\y_hooks>
27public OnGameModeInit(){
28 Database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);
29
30 if(mysql_errno(Database) != 0){
31 printf("Connexion à la Base de Données échouée (Code d'erreur : %d)", mysql_errno(Database));
32 return SendRconCommand("exit");
33 } else
34 print("Connexion à la base de données réussie!");
35
36 InitTables();
37
38 return 1;
39}
40
41InitTables(){
42 mysql_tquery(Database, "CREATE TABLE IF NOT EXISTS `Players`\
43 (`ID` int(11) NOT NULL AUTO_INCREMENT,\
44 `Username` varchar(24) NOT NULL,\
45 `Password` varchar(128) NOT NULL,\
46 `Admin` int(11) NOT NULL,\
47 PRIMARY KEY (`ID`),\
48 UNIQUE KEY `Username` (`Username`))");
49
50 return 1;
51}
52
53ReturnName(playerid){
54 new name[MAX_PLAYER_NAME];
55 GetPlayerName(playerid, name, 24);
56 return name;
57}
58
59public OnPlayerConnect(playerid){
60 print("onplayerconnect");
61 new query[256];
62 mysql_format(Database, query, sizeof query, "SELECT Password FROM Players WHERE Username = '%s' LIMIT 1", ReturnName(playerid));
63 mysql_tquery(Database, query, "CheckPlayer", "d", playerid);
64 return 1;
65}
66
67forward CheckPlayer(playerid);
68public CheckPlayer(playerid){
69
70 if(!cache_num_rows()){
71 print("Oui");
72 return Dialog_Show(playerid, Dialog_Register, DIALOG_STYLE_INPUT, "Inscription", "Entrez un mot de passe", "Confirmer", "Quitter");
73 }
74
75 else {
76 print("Non");
77 cache_get_value_name(0, "Password", playerInfo[playerid][Password]);
78 return Dialog_Show(playerid, Dialog_Login, DIALOG_STYLE_INPUT, "Connexion", "Entrez votre mot de passe", "Confirmer", "Quitter");
79 }
80}
81
82forward LoadPlayer(playerid);
83public LoadPlayer(playerid){
84 cache_get_value_name(0, "Admin", playerInfo[playerid][Admin]);
85
86 if(playerInfo[playerid][Admin])
87 SendClientMessage(playerid, -1, "SERVEUR: Vous vous êtes connecté en tant que membre du staff!");
88 else
89 SendClientMessage(playerid, -1, "SERVEUR: Bienvenue sur le serveur!");
90
91 // a changer par le nom du serveur
92
93 SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], 0, 0, 0, 0, 24, 50, 0, 0, 0, 0);
94 SpawnPlayer(playerid);
95
96 return 1;
97}
98
99new gPlayerAttempts[MAX_PLAYERS];
100Dialog:Dialog_Login(playerid, response, listitem, inputtext[]){
101 if(!strcmp(inputtext, playerInfo[playerid][Password])){
102 new query[128];
103 mysql_format(Database, query, sizeof query, "SELECT * FROM Players WHERE `Username` = '%s'", ReturnName(playerid));
104 mysql_tquery(Database, query, "LoadPlayer", "d", playerid);
105 gPlayerAttempts[playerid] = 0;
106 return 1;
107 } else {
108 if(gPlayerAttempts[playerid] != 3){
109 gPlayerAttempts[playerid]++;
110 return Dialog_Show(playerid, Dialog_Login, DIALOG_STYLE_INPUT, "Connexion", "Mot de passe erroné!", "Confirmer", "Quitter");
111 } else {
112 gPlayerAttempts[playerid] = 0;
113 SendClientMessage(playerid, -1, "SERVEUR: Vous avez été kick après de nombreuses tentatives de connexion erronées!");
114 return Kick(playerid);
115 }
116 }
117}
118
119Dialog:Dialog_Register(playerid, response, listitem, inputtext[]){
120 if(!response) return Kick(playerid);
121
122 if(strlen(inputtext) < 6 || strlen(inputtext) > 65)
123 return Dialog_Show(playerid, Dialog_Register, DIALOG_STYLE_INPUT, "Inscription", "Veuillez entrer un mot de passe entre 6 caractères et 65!", "Confirmer", "Quitter");
124
125 new query[512];
126 strcat(playerInfo[playerid][Password], inputtext);
127 mysql_format(Database, query, sizeof query, "INSERT INTO Players (`Username`, `Password`) VALUES ('%s', '%s')", ReturnName(playerid), playerInfo[playerid][Password]);
128 mysql_tquery(Database, query, "OnPlayerRegister", "d", playerid);
129 return 1;
130}
131// SpawnPlayer(playerid);
132
133forward OnPlayerRegister(playerid);
134public OnPlayerRegister(playerid){
135 cache_get_value_name_int(0, "ID", playerInfo[playerid][ID]);
136 printf("Le joueur %s vient de s'enregistrer avec l'ID %d", ReturnName(playerid), playerInfo[playerid][ID]);
137}