· 7 years ago · Sep 07, 2018, 05:50 PM
1#include <a_samp>
2
3/* ** Colours ** */
4#define COL_GREEN "{6EF83C}" // Zelebna boja
5#define COL_RED "{F81414}" // Crvena boja
6#define COL_BLUE "{00C0FF}" // Plava boja
7
8/* ** Player Data ** */
9new
10 Ulogovan[MAX_PLAYERS],
11 AdminLevel[MAX_PLAYERS],
12 DB: Database
13;
14
15main()
16{
17 print("\n----------------------------------");
18 print(" Blank Gamemode by your name here");
19 print("----------------------------------\n");
20}
21
22
23public OnGameModeInit()
24{
25 Database = db_open("ServerDatabase.db"); // Ovo ce otvoriti databasu pod imenom , 'ServerDatabase.db'
26 //Ako tablica ne postoji, naparvit cemo ju u gamemodu
27 db_query(Database, "CREATE TABLE IF NOT EXISTS `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`)");
28 SetGameModeText("ST TDM v0.1");
29 AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
30 return 1;
31}
32
33public OnGameModeExit()
34{
35 for(new i; i != MAX_PLAYERS; i++) OnPlayerDisconnect(i, 1);
36 db_close(Database);
37 return 1;
38}
39
40public OnPlayerRequestClass(playerid, classid)
41{
42 SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
43 SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
44 SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
45 return 1;
46}
47
48public OnPlayerConnect(playerid)
49{
50 new
51 Query[ 150 ],
52 DBResult: Result,
53 name[ MAX_PLAYER_NAME ]
54 ;
55 GetPlayerName(playerid, name, sizeof(name));
56
57 Ulogovan[playerid] = false;
58
59 format(Query, sizeof(Query), "SELECT `NAME` FROM `USERS` WHERE `NAME` = '%s'", DB_Escape(name));
60 Result = db_query(Database, Query);
61 if(db_num_rows(Result))
62 {
63 format(Query, sizeof(Query), "{FFFFFF}Dobrodosli "COL_BLUE"%s(%d){FFFFFF} na server, vi ste registrirani\n\nMolimo vas da se logirate s vasom lozinkom.", name, playerid);
64 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Register System", Query, "Login", "Leave");
65 }
66 else
67 {
68 format(Query, sizeof(Query), "{FFFFFF}Dobrodosli "COL_BLUE"%s(%d){FFFFFF} na server, vi "COL_RED"niste{FFFFFF} registrirani\n\n napisite vasu lozinku da vas mozemo registrirati.", name, playerid);
69 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "{FFFFFF}Register System", Query, "Register", "Leave");
70 }
71 db_free_result(Result);
72 return 1;
73}
74
75public OnPlayerDisconnect(playerid, reason)
76{
77 new
78 Query[ 200 ],
79 name[MAX_PLAYER_NAME];
80 GetPlayerName(playerid, name, sizeof(name));
81
82 if(Ulogovan[playerid] == 1)
83 {
84 format(Query,sizeof(Query),"UPDATE `USERS` SET SCORE = '%d', CASH = '%d', ADMINLEVEL = '%d' WHERE `NAME` = '%s'",
85 GetPlayerScore(playerid),
86 GetPlayerMoney(playerid),
87 AdminLevel[playerid],
88 DB_Escape(name));
89 db_query(Database, Query);
90 Ulogovan[playerid] = false;
91 }
92 return 1;
93}
94
95public OnPlayerSpawn(playerid)
96{
97 return 1;
98}
99
100public OnPlayerDeath(playerid, killerid, reason)
101{
102 return 1;
103}
104
105public OnVehicleSpawn(vehicleid)
106{
107 return 1;
108}
109
110public OnVehicleDeath(vehicleid, killerid)
111{
112 return 1;
113}
114
115public OnPlayerText(playerid, text[])
116{
117 return 1;
118}
119
120public OnPlayerCommandText(playerid, cmdtext[])
121{
122 if (strcmp("/mycommand", cmdtext, true, 10) == 0)
123 {
124 // Do something here
125 return 1;
126 }
127 return 0;
128}
129
130public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
131{
132 return 1;
133}
134
135public OnPlayerExitVehicle(playerid, vehicleid)
136{
137 return 1;
138}
139
140public OnPlayerStateChange(playerid, newstate, oldstate)
141{
142 return 1;
143}
144
145public OnPlayerEnterCheckpoint(playerid)
146{
147 return 1;
148}
149
150public OnPlayerLeaveCheckpoint(playerid)
151{
152 return 1;
153}
154
155public OnPlayerEnterRaceCheckpoint(playerid)
156{
157 return 1;
158}
159
160public OnPlayerLeaveRaceCheckpoint(playerid)
161{
162 return 1;
163}
164
165public OnRconCommand(cmd[])
166{
167 return 1;
168}
169
170public OnPlayerRequestSpawn(playerid)
171{
172 return 1;
173}
174
175public OnObjectMoved(objectid)
176{
177 return 1;
178}
179
180public OnPlayerObjectMoved(playerid, objectid)
181{
182 return 1;
183}
184
185public OnPlayerPickUpPickup(playerid, pickupid)
186{
187 return 1;
188}
189
190public OnVehicleMod(playerid, vehicleid, componentid)
191{
192 return 1;
193}
194
195public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
196{
197 return 1;
198}
199
200public OnVehicleRespray(playerid, vehicleid, color1, color2)
201{
202 return 1;
203}
204
205public OnPlayerSelectedMenuRow(playerid, row)
206{
207 return 1;
208}
209
210public OnPlayerExitedMenu(playerid)
211{
212 return 1;
213}
214
215public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
216{
217 return 1;
218}
219
220public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
221{
222 return 1;
223}
224
225public OnRconLoginAttempt(ip[], password[], success)
226{
227 return 1;
228}
229
230public OnPlayerUpdate(playerid)
231{
232 return 1;
233}
234
235public OnPlayerStreamIn(playerid, forplayerid)
236{
237 return 1;
238}
239
240public OnPlayerStreamOut(playerid, forplayerid)
241{
242 return 1;
243}
244
245public OnVehicleStreamIn(vehicleid, forplayerid)
246{
247 return 1;
248}
249
250public OnVehicleStreamOut(vehicleid, forplayerid)
251{
252 return 1;
253}
254
255public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
256{
257 new
258 Query[ 256 ],
259 DBResult: Result,
260 name[ MAX_PLAYER_NAME ],
261 ip[ 16 ];
262 GetPlayerName(playerid, name, sizeof(name));
263 GetPlayerIp(playerid, ip, sizeof(ip));
264
265 if(dialogid == 1)
266 {
267 if(response)
268 {
269 format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s' AND `PASSWORD` = '%s'", DB_Escape(name), DB_Escape(inputtext));
270 Result = db_query(Database, Query);
271 if(db_num_rows(Result))
272 {
273 new Field[ 20 ];
274 db_get_field_assoc(Result, "SCORE", Field, 30);
275 SetPlayerScore(playerid, strval(Field));
276
277 db_get_field_assoc(Result, "CASH", Field, 30);
278 GivePlayerMoney(playerid, strval(Field));
279
280 db_get_field_assoc(Result, "ADMINLEVEL", Field, 30);
281 AdminLevel[playerid] = strval(Field);
282
283 Ulogovan[playerid] = true;
284
285 SendClientMessage(playerid, -1, "Vi ste "COL_GREEN"uspjesno{FFFFFF} logirani! ");
286 }
287 else
288 {
289 format(Query, sizeof(Query), "{FFFFFF}Dobrodosli "COL_BLUE"%s(%d){FFFFFF} na server, vi ste registirani\n\nLogirajte se s vasom lozinkom.", name, playerid);
290 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Register System", Query, "Login", "Leave");
291 SendClientMessage(playerid, -1, ""COL_RED"Kriva{FFFFFF} lozinka, pokusaj ponovo!");
292 }
293 db_free_result(Result);
294 }
295 else return Kick(playerid);
296 }
297 if(dialogid == 0)
298 {
299 if(response)
300 {
301 if(strlen(inputtext) > 24 || strlen(inputtext) < 3)
302 {
303 format(Query, sizeof(Query), "{FFFFFF}Dobrodosli "COL_BLUE"%s(%d){FFFFFF} na server, vi ste "COL_RED"not{FFFFFF} registrirani\n\nNapisite vasu lozinku.", name, playerid);
304 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "{FFFFFF}Register System", Query, "Register", "Leave");
305 SendClientMessage(playerid, -1, "Vasa lozinka mora imati najmanje 3 slova/brojka");
306 }
307 else
308 {
309 format(Query, sizeof(Query), "INSERT INTO `USERS` (`NAME`, `PASSWORD`, `IP`, `SCORE`, `CASH`, `ADMINLEVEL`) VALUES('%s','%s','%s', '0', '500', '0')", DB_Escape(name), DB_Escape(inputtext), DB_Escape(ip));
310 db_query(Database, Query);
311 Ulogovan[playerid] = true;
312 GivePlayerMoney(playerid, 500);
313 SetPlayerScore(playerid, 0);
314 SendClientMessage(playerid, -1, "Vi ste "COL_GREEN"uspjesno{FFFFFF} registirani! automatski ste registrirani!");
315 }
316 }
317 else return Kick(playerid);
318 }
319 return 1;
320}
321
322public OnPlayerClickPlayer(playerid, clickedplayerid, source)
323{
324 return 1;
325}
326
327
328
329
330stock DB_Escape(text[])
331{
332 new
333 ret[80 * 2],
334 ch,
335 i,
336 j;
337 while ((ch = text[i++]) && j < sizeof (ret))
338 {
339 if (ch == '\'')
340 {
341 if (j < sizeof (ret) - 2)
342 {
343 ret[j++] = '\'';
344 ret[j++] = '\'';
345 }
346 }
347 else if (j < sizeof (ret))
348 {
349 ret[j++] = ch;
350 }
351 else
352 {
353 j++;
354 }
355 }
356 ret[sizeof (ret) - 1] = '\0';
357 return ret;
358}