· 8 years ago · Jun 18, 2018, 01:38 PM
1#include <a_samp>
2
3//------------
4#define PV_ZALOGOWANY "GraczZalogowanyNaKonto"
5
6#define Z_NIEZALOGOWANY -1
7#define Z_NIEZAREJESTROWANY 0
8#define Z_ZALOGOWANY 1
9
10new DB:dbase;
11new Text:PIENIADZEdraw[200];
12
13main(){}
14
15public OnGameModeInit()
16{
17 dbase = db_open("BazaGraczy.db");
18 db_query(dbase, "CREATE TABLE IF NOT EXISTS `konta_graczy` (`nick` VARCHAR(24) PRIMARY KEY, `haslo` VARCHAR(32), `pieniadze` INT, `respekt` INT, `level` INT);");
19 for(new g=0;g<200;g++){
20 PIENIADZEdraw[g] = TextDrawCreate(330.0, 430.0, "_");
21 TextDrawFont (PIENIADZEdraw[g], 3);
22 TextDrawSetOutline(PIENIADZEdraw[g], 1);
23 }
24 SetTimer("TextDraw",100,1);
25 return 1;
26}
27
28public OnGameModeExit()
29{
30 db_close(dbase);
31 return 1;
32}
33
34public OnPlayerConnect(playerid)
35{
36 new str[64], pName[24];
37 GetPlayerName(playerid, pName, sizeof(pName));
38 format(str, sizeof(str),"SELECT * FROM `konta_graczy` WHERE `nick` = '%s' LIMIT 1", pName);
39 if(db_num_rows(db_query(dbase, str))) SetPVarInt(playerid, PV_ZALOGOWANY, Z_NIEZALOGOWANY);
40
41 if(GetPVarInt(playerid, PV_ZALOGOWANY) == Z_NIEZALOGOWANY)
42 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Logowanie na konto", "Podaj haslo do konta", "Zaloguj", "Wyjdz");
43 return 1;
44}
45public OnPlayerDisconnect(playerid)
46 {
47 if(GetPVarInt(playerid, PV_ZALOGOWANY) == Z_ZALOGOWANY)
48 {
49 new str[128], pName[24];
50 GetPlayerName(playerid, pName, sizeof(pName));
51 format(str, sizeof(str),"UPDATE `konta_graczy` SET `pieniadze` = '%d', `respekt` = '%d', `level` = '%d' WHERE `nick` = '%s'", GetPVarInt(playerid, "pieniadze"), GetPVarInt(playerid, "respekt"), GetPVarInt(playerid, "level"), pName);
52 db_query(dbase, str);
53 }
54 return 1;
55 }
56
57public OnPlayerSpawn(playerid)
58{
59 TextDrawShowForPlayer(playerid, PIENIADZEdraw[playerid]);
60 return 1;
61}
62
63public OnPlayerRequestClass(playerid, classid)
64{
65 TextDrawHideForPlayer(playerid, PIENIADZEdraw[playerid]);
66 return 1;
67}
68
69public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
70{
71 if(dialogid == 0)
72 {
73 if(response) LogowanieGraczNaKonto(playerid, inputtext);
74 else
75 {
76 Kick(playerid);
77 }
78 }
79 else if(dialogid == 1)
80 {
81 if(response) ZarejestrujNoweKonto(playerid, inputtext);
82 }
83 return 1;
84}
85
86public OnPlayerCommandText(playerid, cmdtext[])
87{
88 if(strcmp(cmdtext, "/zarejestruj", false, 13) == 0)
89 {
90 if(GetPVarInt(playerid, PV_ZALOGOWANY) == Z_NIEZAREJESTROWANY)
91 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Rejestracja konta", "Podaj haslo ktorego bedziesz uzywal do logowania", "Zarejestruj", "Anuluj");
92 return 1;
93 }
94 return 0;
95}
96
97forward TextDraw();
98public TextDraw()
99 {
100 new str[128], DBResult:Res, pName[24];
101 for(new i; i < MAX_PLAYERS; i ++)
102 {
103 if(IsPlayerConnected(i))
104 {
105 GetPlayerName(i, pName, 24);
106 format(str, sizeof(str),"SELECT * FROM `konta_graczy` WHERE `nick` = '%s' LIMIT 1", pName);
107 Res = db_query(dbase, str);
108 if(db_num_rows(Res))
109 {
110 db_get_field_assoc(Res, "pieniadze", str, 32); SetPVarInt(i, "pieniadze", strval(str));
111 format(str, sizeof(str),"~r~Pieniadze: ~w~%d$", GetPVarInt(i, "pieniadze"));
112 TextDrawSetString(PIENIADZEdraw[i], str);
113 }
114 }
115 }
116
117 }
118
119ZarejestrujNoweKonto(playerid, haslo[])
120{
121 if(32 > strlen(haslo) > 0)
122 {
123 new str[128], pName[24];
124 GetPlayerName(playerid, pName, sizeof(pName));
125 format(str, sizeof(str),"SELECT `nick` FROM `konta_graczy` WHERE `nick` = '%s' LIMIT 1", pName);
126 if(!db_num_rows(db_query(dbase, str)))
127 {
128 format(str, sizeof(str),"INSERT INTO `konta_graczy` VALUES ('%s', '%s', '0', '0', '0');", pName, haslo);
129 db_query(dbase, str);
130 SetPVarInt(playerid, PV_ZALOGOWANY, Z_ZALOGOWANY);
131 }
132 else
133 {
134 }
135 }
136 else
137 {
138 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Rejestracja konta", "Podaj haslo ktorego bedziesz uzywal do logowania\n\nNiepoprawny format hasla.", "Zarejestruj", "Anuluj");
139 }
140}
141
142
143LogowanieGraczNaKonto(playerid, haslo[])
144{
145 if(32 > strlen(haslo) > 0)
146 {
147 new str[128], pName[24],
148 DBResult:Res;
149 GetPlayerName(playerid, pName, sizeof(pName));
150 format(str, sizeof(str),"SELECT * FROM `konta_graczy` WHERE `nick` = '%s' LIMIT 1", pName);
151 if(db_num_rows((Res = db_query(dbase, str))))
152 {
153 new dhaslo[32];
154 db_get_field_assoc(Res, "haslo", dhaslo, 32);
155 if(strcmp(haslo, dhaslo) == 0)
156 {
157 SetPVarInt(playerid, PV_ZALOGOWANY, Z_ZALOGOWANY);
158
159 db_get_field_assoc(Res, "pieniadze", str, 32); SetPVarInt(playerid, "pieniadze", strval(str));
160 db_get_field_assoc(Res, "respekt", str, 32); SetPVarInt(playerid, "respekt", strval(str));
161 db_get_field_assoc(Res, "level", str, 32); SetPVarInt(playerid, "level", strval(str));
162 }
163 else
164 {
165 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Logowanie na konto", "Podaj haslo do konta\nNiepoprawne haslo", "Zaloguj", "Wyjdz");
166 }
167
168 }
169 }
170 else
171 {
172 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Logowanie na konto", "Podaj haslo do konta\nPodaj haslo", "Zaloguj", "Wyjdz");
173 }
174}