· 6 years ago · Apr 04, 2019, 03:08 PM
1/*
2 Central Project DM
3 v1.0 by Shomy
4*/
5
6// - INCLUDE FILES
7
8#include < a_samp >
9#include < nex-ac >
10#include < streamer >
11#include < a_mysql >
12#include < foreach >
13#include < Pawn.CMD >
14#include < sscanf2 >
15
16// - DEFINES
17
18#define MYSQL_HOST "127.0.0.1"
19#define MYSQL_USER "root"
20#define MYSQL_PASSWORD ""
21#define MYSQL_DATABASE "cpdm_db"
22
23// - DIALOGS
24
25enum {
26 DIALOG_REGISTER,
27 DIALOG_LOGIN,
28 DIALOG_NORESPONSE,
29 DIALOG_HELP,
30 DIALOG_DMARENE,
31 DIALOG_DUEL
32}
33
34
35// - ENUM
36
37enum PLAYER_INFO {
38 pID,
39 pName[25],
40 pPassword[65],
41 pSalt[11],
42 pPasswordFails,
43 pKills,
44 pDeaths,
45 pScore,
46 pCash,
47 pAdmin,
48 pBanned,
49 pBanReason[ 50 ],
50 Cache:Player_Cache
51}
52
53// - NEWS
54
55new PI[ MAX_PLAYERS ][ PLAYER_INFO ];
56new MySQL:Database, Corrupt_Check[ MAX_PLAYERS ];
57
58new Text:InGameTD[9], PlayerText:KillsTD[ MAX_PLAYERS ], PlayerText:DeathsTD[ MAX_PLAYERS ],
59 PlayerText:RankTD[ MAX_PLAYERS ], PlayerText:NickTD[ MAX_PLAYERS ];
60
61new bool:NexACDetect[ MAX_PLAYERS ], bool:UlogovanIgrac[ MAX_PLAYERS ], TextCD[ MAX_PLAYERS ],
62 UDMAreni[ MAX_PLAYERS ], CMDCD[ MAX_PLAYERS ], DuelIgrac[ MAX_PLAYERS ], ZahtevZaDuel[ MAX_PLAYERS ],
63 InDM1, InDM2, InDM3, InDM4, InDM5, IgracevRank[ MAX_PLAYERS ][ 30 ], DuelOpcije[ MAX_PLAYERS ][ 4 ],
64 Float:DuelHP[ MAX_PLAYERS ], Float:DuelArmour[ MAX_PLAYERS ], SekundeDuel[ MAX_PLAYERS ], TimerODuel[ MAX_PLAYERS ];
65
66// Random DM Arene spawns
67
68new Float:LVPD[7][3]=
69{
70 {289.4713,168.9777,1007.1719},
71 {296.6701,187.1066,1007.1719},
72 {255.0509,189.9045,1008.1719},
73 {213.5514,141.5470,1003.0234},
74 {191.8244,158.4517,1003.0234},
75 {190.1116,179.0616,1003.0234},
76 {230.2902,179.1490,1003.0313}
77};
78
79new Float:GTOWN[6][3]=
80{
81 {-372.0640,2269.2002,42.1420},
82 {-350.4502,2241.4490,42.4844},
83 {-350.8359,2216.3533,42.4844},
84 {-361.0794,2203.4553,42.4844},
85 {-402.6833,2199.9370,42.4297},
86 {-443.3412,2220.3752,42.4297}
87};
88
89new Float:RCRAND[8][3]=
90{
91 {-974.9233,1089.6772,1344.9744},
92 {-974.8738,1060.5751,1345.6719},
93 {-1010.3456,1099.0929,1341.9373},
94 {-1067.5536,1094.2667,1343.1432},
95 {-1054.7448,1021.2515,1343.1893},
96 {-1102.0070,1019.5742,1342.0938},
97 {-1132.0172,1029.3613,1345.7325},
98 {-1130.7610,1057.9550,1346.4141}
99};
100new Float:JM[7][3]=
101{
102 {2224.3181,-1143.9808,1025.7969},
103 {2215.2036,-1150.2555,1025.7969},
104 {2220.6833,-1138.9036,1027.7969},
105 {2235.7795,-1193.9183,1029.8043},
106 {2240.5454,-1192.5084,1033.7969},
107 {2227.5332,-1183.2355,1029.8043},
108 {2188.3896,-1181.7401,1029.7969}
109};
110new Float:MF[7][3]=
111{
112 {963.418762,2108.292480,1011.030273},
113 {961.1073,2099.6902,1011.0250},
114 {948.4927,2105.8589,1011.0234},
115 {959.3273,2145.4019,1011.0289},
116 {934.0167,2144.2883,1011.0234},
117 {933.7863,2164.0837,1011.0303},
118 {954.0387,2176.6511,1011.0234}
119};
120
121// - PUBLIC
122
123main() { }
124
125public OnGameModeInit()
126{
127 new MySQLOpt: option_id = mysql_init_options();
128 mysql_set_option(option_id, AUTO_RECONNECT, true);
129
130 Database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
131
132 if(Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0)
133 {
134 print("I couldn't connect to the MySQL server, closing.");
135
136 SendRconCommand("exit");
137 return 1;
138 }
139
140 print("I have connected to the MySQL server.");
141
142 InGameTD[0] = TextDrawCreate(557.357421, 395.333343, "LD_SPAC:white");
143 TextDrawLetterSize(InGameTD[0], 0.000000, 0.000000);
144 TextDrawTextSize(InGameTD[0], 83.000000, 71.000000);
145 TextDrawAlignment(InGameTD[0], 1);
146 TextDrawColor(InGameTD[0], 255);
147 TextDrawSetShadow(InGameTD[0], 0);
148 TextDrawSetOutline(InGameTD[0], 0);
149 TextDrawBackgroundColor(InGameTD[0], 255);
150 TextDrawFont(InGameTD[0], 4);
151 TextDrawSetProportional(InGameTD[0], 0);
152 TextDrawSetShadow(InGameTD[0], 0);
153
154 InGameTD[1] = TextDrawCreate(559.231567, 397.666687, "LD_SPAC:white");
155 TextDrawLetterSize(InGameTD[1], 0.000000, 0.000000);
156 TextDrawTextSize(InGameTD[1], 83.000000, 71.000000);
157 TextDrawAlignment(InGameTD[1], 1);
158 TextDrawColor(InGameTD[1], 303174399);
159 TextDrawSetShadow(InGameTD[1], 0);
160 TextDrawSetOutline(InGameTD[1], 0);
161 TextDrawBackgroundColor(InGameTD[1], 255);
162 TextDrawFont(InGameTD[1], 4);
163 TextDrawSetProportional(InGameTD[1], 0);
164 TextDrawSetShadow(InGameTD[1], 0);
165
166 InGameTD[2] = TextDrawCreate(561.574157, 402.333343, "LD_SPAC:white");
167 TextDrawLetterSize(InGameTD[2], 0.000000, 0.000000);
168 TextDrawTextSize(InGameTD[2], 76.000000, 10.000000);
169 TextDrawAlignment(InGameTD[2], 1);
170 TextDrawColor(InGameTD[2], 255);
171 TextDrawSetShadow(InGameTD[2], 0);
172 TextDrawSetOutline(InGameTD[2], 0);
173 TextDrawBackgroundColor(InGameTD[2], 255);
174 TextDrawFont(InGameTD[2], 4);
175 TextDrawSetProportional(InGameTD[2], 0);
176 TextDrawSetShadow(InGameTD[2], 0);
177
178 InGameTD[3] = TextDrawCreate(561.574218, 415.166748, "LD_SPAC:white");
179 TextDrawLetterSize(InGameTD[3], 0.000000, 0.000000);
180 TextDrawTextSize(InGameTD[3], 76.000000, 10.000000);
181 TextDrawAlignment(InGameTD[3], 1);
182 TextDrawColor(InGameTD[3], 255);
183 TextDrawSetShadow(InGameTD[3], 0);
184 TextDrawSetOutline(InGameTD[3], 0);
185 TextDrawBackgroundColor(InGameTD[3], 255);
186 TextDrawFont(InGameTD[3], 4);
187 TextDrawSetProportional(InGameTD[3], 0);
188 TextDrawSetShadow(InGameTD[3], 0);
189
190 InGameTD[4] = TextDrawCreate(561.574218, 427.416778, "LD_SPAC:white");
191 TextDrawLetterSize(InGameTD[4], 0.000000, 0.000000);
192 TextDrawTextSize(InGameTD[4], 76.000000, 10.000000);
193 TextDrawAlignment(InGameTD[4], 1);
194 TextDrawColor(InGameTD[4], 255);
195 TextDrawSetShadow(InGameTD[4], 0);
196 TextDrawSetOutline(InGameTD[4], 0);
197 TextDrawBackgroundColor(InGameTD[4], 255);
198 TextDrawFont(InGameTD[4], 4);
199 TextDrawSetProportional(InGameTD[4], 0);
200 TextDrawSetShadow(InGameTD[4], 0);
201
202 InGameTD[5] = TextDrawCreate(557.357543, 440.250091, "LD_SPAC:white");
203 TextDrawLetterSize(InGameTD[5], 0.000000, 0.000000);
204 TextDrawTextSize(InGameTD[5], 131.000000, 10.000000);
205 TextDrawAlignment(InGameTD[5], 1);
206 TextDrawColor(InGameTD[5], 255);
207 TextDrawSetShadow(InGameTD[5], 0);
208 TextDrawSetOutline(InGameTD[5], 0);
209 TextDrawBackgroundColor(InGameTD[5], 255);
210 TextDrawFont(InGameTD[5], 4);
211 TextDrawSetProportional(InGameTD[5], 0);
212 TextDrawSetShadow(InGameTD[5], 0);
213
214 InGameTD[6] = TextDrawCreate(564.085144, 402.916564, "Kills:");
215 TextDrawLetterSize(InGameTD[6], 0.252415, 0.765833);
216 TextDrawAlignment(InGameTD[6], 1);
217 TextDrawColor(InGameTD[6], -1);
218 TextDrawSetShadow(InGameTD[6], 0);
219 TextDrawSetOutline(InGameTD[6], 0);
220 TextDrawBackgroundColor(InGameTD[6], 255);
221 TextDrawFont(InGameTD[6], 1);
222 TextDrawSetProportional(InGameTD[6], 1);
223 TextDrawSetShadow(InGameTD[6], 0);
224
225 InGameTD[7] = TextDrawCreate(564.085083, 416.333251, "Deaths:");
226 TextDrawLetterSize(InGameTD[7], 0.252415, 0.765833);
227 TextDrawAlignment(InGameTD[7], 1);
228 TextDrawColor(InGameTD[7], -1);
229 TextDrawSetShadow(InGameTD[7], 0);
230 TextDrawSetOutline(InGameTD[7], 0);
231 TextDrawBackgroundColor(InGameTD[7], 255);
232 TextDrawFont(InGameTD[7], 1);
233 TextDrawSetProportional(InGameTD[7], 1);
234 TextDrawSetShadow(InGameTD[7], 0);
235
236 InGameTD[8] = TextDrawCreate(564.553588, 428.583312, "Rank:");
237 TextDrawLetterSize(InGameTD[8], 0.252415, 0.765833);
238 TextDrawAlignment(InGameTD[8], 1);
239 TextDrawColor(InGameTD[8], -1);
240 TextDrawSetShadow(InGameTD[8], 0);
241 TextDrawSetOutline(InGameTD[8], 0);
242 TextDrawBackgroundColor(InGameTD[8], 255);
243 TextDrawFont(InGameTD[8], 1);
244 TextDrawSetProportional(InGameTD[8], 1);
245 TextDrawSetShadow(InGameTD[8], 0);
246
247 SetGameModeText("- CP DeathMatch v1.0 -");
248
249 mysql_tquery(Database, "CREATE TABLE IF NOT EXISTS `PLAYERS` (`ID` int(11) NOT NULL AUTO_INCREMENT,`USERNAME` varchar(24) NOT NULL,`PASSWORD` char(65) NOT NULL,`SALT` char(11) NOT NULL,`RANK` varchar(30) NOT NULL, `SCORE` mediumint(7), `ADMIN` mediumint(7), `CASH` mediumint(7) NOT NULL DEFAULT '0', `KILLS` mediumint(7),`DEATHS` mediumint(7) NOT NULL DEFAULT '0', `BANNED` mediumint(7), `BANREASON` varchar(50) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `USERNAME` (`USERNAME`))");
250
251 return 1;
252}
253
254public OnGameModeExit()
255{
256 foreach(new i: Player)
257 {
258 if(IsPlayerConnected(i))
259 {
260 OnPlayerDisconnect(i, 1);
261 }
262 }
263
264 mysql_close(Database);
265 return 1;
266}
267public OnPlayerText(playerid, text[]) {
268
269 if(!UlogovanIgrac[ playerid ]) return SendClientMessage(playerid, 0x0077C7FF, "[CP-AC] {FFFFFF}Morate biti ulogovani da biste pisali.");
270 new chatcd = gettime();
271 if(chatcd < (TextCD[ playerid ] + 3) && PI[ playerid ][ pAdmin ] < 1) {
272 SendClientMessage(playerid, 0x0077C7FF, "[CP-AC] {FFFFFF}Mozete pisati svakih 3 sekunde.");
273 return 0;
274 }
275 TextCD[ playerid ] = gettime();
276 new str[ 200 ];
277 if(PI[ playerid ][ pAdmin ] < 1) format(str, sizeof(str), "[%s] {FFFFFF}%s: %s.", IgracevRank[ playerid ], ImeIgraca(playerid), text);
278 else format(str, sizeof(str), "[Admin %d] {FFFFFF}%s: %s.", PI[ playerid ][ pAdmin ], ImeIgraca(playerid), text);
279 SendClientMessageToAll(0x0077C7FF, str);
280 return 0;
281}
282public OnPlayerConnect(playerid)
283{
284 new DB_Query[115];
285
286 PI[playerid][pKills] = 0;
287 PI[playerid][pDeaths] = 0;
288 PI[playerid][pPasswordFails] = 0;
289 NexACDetect[ playerid ] = false;
290 UDMAreni[ playerid ] = 0;
291 DuelIgrac[ playerid ] = -1;
292 ZahtevZaDuel[ playerid ] = -1;
293
294 KillsTD[ playerid ] = CreatePlayerTextDraw(playerid, 583.763183, 403.499816, "1000");
295 PlayerTextDrawLetterSize(playerid, KillsTD[ playerid ], 0.252415, 0.765833);
296 PlayerTextDrawAlignment(playerid, KillsTD[ playerid ], 1);
297 PlayerTextDrawColor(playerid, KillsTD[ playerid ], 7849983);
298 PlayerTextDrawSetShadow(playerid, KillsTD[ playerid ], 0);
299 PlayerTextDrawSetOutline(playerid, KillsTD[ playerid ], 0);
300 PlayerTextDrawBackgroundColor(playerid, KillsTD[ playerid ], 255);
301 PlayerTextDrawFont(playerid, KillsTD[ playerid ], 1);
302 PlayerTextDrawSetProportional(playerid, KillsTD[ playerid ], 1);
303 PlayerTextDrawSetShadow(playerid, KillsTD[ playerid ], 0);
304
305 DeathsTD[ playerid ] = CreatePlayerTextDraw(playerid, 595.007629, 416.333129, "1000");
306 PlayerTextDrawLetterSize(playerid, DeathsTD[ playerid ], 0.252415, 0.765833);
307 PlayerTextDrawAlignment(playerid, DeathsTD[ playerid ], 1);
308 PlayerTextDrawColor(playerid, DeathsTD[ playerid ], 7849983);
309 PlayerTextDrawSetShadow(playerid, DeathsTD[ playerid ], 0);
310 PlayerTextDrawSetOutline(playerid, DeathsTD[ playerid ], 0);
311 PlayerTextDrawBackgroundColor(playerid, DeathsTD[ playerid ], 255);
312 PlayerTextDrawFont(playerid, DeathsTD[ playerid ], 1);
313 PlayerTextDrawSetProportional(playerid, DeathsTD[ playerid ], 1);
314 PlayerTextDrawSetShadow(playerid, DeathsTD[ playerid ], 0);
315
316 RankTD[ playerid ] = CreatePlayerTextDraw(playerid, 587.979858, 428.583221, "Transformer");
317 PlayerTextDrawLetterSize(playerid, RankTD[ playerid ], 0.242108, 0.742500);
318 PlayerTextDrawAlignment(playerid, RankTD[ playerid ], 1);
319 PlayerTextDrawColor(playerid, RankTD[ playerid ], 7849983);
320 PlayerTextDrawSetShadow(playerid, RankTD[ playerid ], 0);
321 PlayerTextDrawSetOutline(playerid, RankTD[ playerid ], 0);
322 PlayerTextDrawBackgroundColor(playerid, RankTD[ playerid ], 255);
323 PlayerTextDrawFont(playerid, RankTD[ playerid ], 1);
324 PlayerTextDrawSetProportional(playerid, RankTD[ playerid ], 1);
325 PlayerTextDrawSetShadow(playerid, RankTD[ playerid ], 0);
326
327 NickTD[ playerid ] = CreatePlayerTextDraw(playerid, 599.224670, 440.833221, "Shomy_Falconee");
328 PlayerTextDrawLetterSize(playerid, NickTD[ playerid ], 0.203689, 0.567500);
329 PlayerTextDrawAlignment(playerid, NickTD[ playerid ], 2);
330 PlayerTextDrawColor(playerid, NickTD[ playerid ], 7849983);
331 PlayerTextDrawSetShadow(playerid, NickTD[ playerid ], 0);
332 PlayerTextDrawSetOutline(playerid, NickTD[ playerid ], 0);
333 PlayerTextDrawBackgroundColor(playerid, NickTD[ playerid ], 255);
334 PlayerTextDrawFont(playerid, NickTD[ playerid ], 1);
335 PlayerTextDrawSetProportional(playerid, NickTD[ playerid ], 1);
336 PlayerTextDrawSetShadow(playerid, NickTD[ playerid ], 0);
337
338 GetPlayerName(playerid, PI[playerid][pName], MAX_PLAYER_NAME);
339 Corrupt_Check[playerid]++;
340
341 mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `PLAYERS` WHERE `USERNAME` = '%e' LIMIT 1", PI[playerid][pName]);
342 mysql_tquery(Database, DB_Query, "OnPlayerDataCheck", "ii", playerid, Corrupt_Check[playerid]);
343 return 1;
344}
345
346public OnPlayerDisconnect(playerid, reason)
347{
348 Corrupt_Check[playerid]++;
349
350 new DB_Query[256];
351 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `SCORE` = %d, `CASH` = %d, `KILLS` = %d, `DEATHS` = %d WHERE `ID` = %d LIMIT 1",
352 PI[playerid][pScore], PI[playerid][pCash], PI[playerid][pKills], PI[playerid][pDeaths], PI[playerid][pID]);
353
354 mysql_tquery(Database, DB_Query);
355
356 if(cache_is_valid(PI[playerid][Player_Cache]))
357 {
358 cache_delete(PI[playerid][Player_Cache]);
359 PI[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
360 }
361
362 UlogovanIgrac[ playerid ] = false;
363 return 1;
364}
365
366public OnPlayerDeath(playerid, killerid, reason)
367{
368 if(UDMAreni[ playerid ] > 0) {
369 switch(UDMAreni[ playerid ]) {
370 case 1:
371 {
372 new rand = random(sizeof(LVPD));
373 SetPlayerVirtualWorld(playerid, 1001);
374 SetPlayerInterior(playerid, 3);
375 SetSpawnInfo(playerid, 0, 121, LVPD[rand][0], LVPD[rand][1], LVPD[rand][2], 0.0, 24, 200, 0, 0, 0, 0);
376 SpawnPlayer(playerid);
377 SetPlayerHealth(playerid, 99.0);
378 SetPlayerArmour(playerid, 99.0);
379 UDMAreni[ playerid ] = 1;
380 }
381 case 2:
382 {
383 new rand = random(sizeof(GTOWN));
384 SetPlayerVirtualWorld(playerid, 1001);
385 SetPlayerInterior(playerid, 3);
386 SetSpawnInfo(playerid, 0, 121, GTOWN[rand][0], GTOWN[rand][1], GTOWN[rand][2], 0.0, 24, 200, 0, 0, 0, 0);
387 SpawnPlayer(playerid);
388 SetPlayerHealth(playerid, 99.0);
389 SetPlayerArmour(playerid, 99.0);
390 UDMAreni[ playerid ] = 2;
391 }
392 case 3:
393 {
394 new rand = random(sizeof(RCRAND));
395 SetPlayerVirtualWorld(playerid, 1001);
396 SetPlayerInterior(playerid, 3);
397 SetSpawnInfo(playerid, 0, 121, RCRAND[rand][0], RCRAND[rand][1], RCRAND[rand][2], 0.0, 24, 200, 0, 0, 0, 0);
398 SpawnPlayer(playerid);
399 SetPlayerHealth(playerid, 99.0);
400 SetPlayerArmour(playerid, 99.0);
401 UDMAreni[ playerid ] = 3;
402 }
403 case 4:
404 {
405 new rand = random(sizeof(JM));
406 SetPlayerVirtualWorld(playerid, 1001);
407 SetPlayerInterior(playerid, 3);
408 SetSpawnInfo(playerid, 0, 121, JM[rand][0], JM[rand][1], JM[rand][2], 0.0, 24, 200, 0, 0, 0, 0);
409 SpawnPlayer(playerid);
410 SetPlayerHealth(playerid, 99.0);
411 SetPlayerArmour(playerid, 99.0);
412 UDMAreni[ playerid ] = 4;
413 }
414 case 5:
415 {
416 new rand = random(sizeof(MF));
417 SetPlayerVirtualWorld(playerid, 1001);
418 SetPlayerInterior(playerid, 3);
419 SetSpawnInfo(playerid, 0, 121, MF[rand][0], MF[rand][1], MF[rand][2], 0.0, 24, 200, 0, 0, 0, 0);
420 SpawnPlayer(playerid);
421 SetPlayerHealth(playerid, 99.0);
422 SetPlayerArmour(playerid, 99.0);
423 UDMAreni[ playerid ] = 5;
424 }
425 }
426 }
427 if(DuelIgrac[ playerid ] != -1) {
428 new i = DuelIgrac[ playerid ], str[ 100 ];
429 ResetPlayerWeapons(i);
430 SetPlayerPos(i, 1958.33, 1343.12, 15.36);
431 SetPlayerVirtualWorld(i, 0);
432 SetPlayerInterior(i, 0);
433 format(str, sizeof(str), "[DUEL] {FFFFFF}Igrac %s je pobedio %s u duelu.", ImeIgraca(i), ImeIgraca(playerid));
434 SendClientMessageToAll(0x0077C7FF, str);
435 SetSpawnInfo(playerid, 0, 121, 1958.33, 1343.12, 15.36, 0.0, 24, 200, 0, 0, 0, 0);
436 SpawnPlayer(playerid);
437 DuelIgrac[ i ] = -1;
438 DuelIgrac[ playerid ] = -1;
439 }
440 if(killerid != INVALID_PLAYER_ID)
441 {
442 PI[killerid][pKills]++;
443 PI[playerid][pDeaths]++;
444 new str1[ 30 ];
445 format(str1, sizeof(str1), "%d", PI[ killerid ][ pKills ]);
446 PlayerTextDrawSetString(killerid, KillsTD[ killerid ], str1);
447 format(str1, sizeof(str1), "%d", PI[ playerid ][ pDeaths ]);
448 PlayerTextDrawSetString(playerid, DeathsTD[ playerid ], str1);
449 switch(PI[ killerid ][ pKills ]) {
450 case 20: {
451 new DB_Query[ 250 ], str[ 30 ];
452 IgracevRank[ killerid ] = "Pee-Wee";
453 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'Pee-Wee' !");
454 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
455 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
456 mysql_tquery(Database, DB_Query);
457 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
458 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
459 }
460 case 40: {
461 new DB_Query[ 250 ], str[ 30 ];
462 IgracevRank[ killerid ] = "Transformer";
463 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'Transformer' !");
464 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
465 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
466 mysql_tquery(Database, DB_Query);
467 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
468 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
469 }
470 case 60: {
471 new DB_Query[ 250 ], str[ 30 ];
472 IgracevRank[ killerid ] = "HomeBoy";
473 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'HomeBoy' !");
474 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
475 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
476 mysql_tquery(Database, DB_Query);
477 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
478 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
479 }
480 case 80: {
481 new DB_Query[ 250 ], str[ 30 ];
482 IgracevRank[ killerid ] = "Soldier";
483 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'Soldier' !");
484 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
485 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
486 mysql_tquery(Database, DB_Query);
487 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
488 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
489 }
490 case 100: {
491 new DB_Query[ 250 ], str[ 30 ];
492 IgracevRank[ killerid ] = "High Roller";
493 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'High Roller' !");
494 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
495 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
496 mysql_tquery(Database, DB_Query);
497 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
498 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
499 }
500 case 120: {
501 new DB_Query[ 250 ], str[ 150 ];
502 IgracevRank[ killerid ] = "GodFather";
503 SendClientMessage(killerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Cestitamo, unapredjeni ste u rank 'GodFather' !");
504 format(str, sizeof(str), "[CPDM-INFO] {FFFFFF}Cestitamo ! Igrac %s je dostigao najveci rank - GodFather !", ImeIgraca(killerid));
505 SendClientMessageToAll(0x0077C7FF, str);
506 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `RANK` = '%s' WHERE `ID` = %d LIMIT 1",
507 IgracevRank[ killerid ], PI[ killerid ][ pID ]);
508 mysql_tquery(Database, DB_Query);
509 format(str, sizeof(str), "%s", IgracevRank[ killerid ]);
510 PlayerTextDrawSetString(playerid, RankTD[ killerid ], str);
511 }
512 }
513 }
514 return 1;
515}
516
517public OnPlayerRequestSpawn(playerid)
518{
519 if(!UlogovanIgrac[ playerid ]) return 0;
520 return 1;
521}
522
523public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
524{
525 switch (dialogid)
526 {
527 case DIALOG_LOGIN:
528 {
529 if(!response) return Kick(playerid);
530
531 new Salted_Key[65];
532 SHA256_PassHash(inputtext, PI[playerid][pSalt], Salted_Key, 65);
533
534 if(strcmp(Salted_Key, PI[playerid][pPassword]) == 0)
535 {
536
537 cache_set_active(PI[playerid][Player_Cache]);
538
539 cache_get_value_int(0, "ID", PI[ playerid ][ pID ]);
540
541 cache_get_value_name(0, "RANK", IgracevRank[ playerid ], 30);
542 cache_get_value_int(0, "ADMIN", PI[ playerid ][ pAdmin ]);
543
544 cache_get_value_int(0, "KILLS", PI[ playerid ][ pKills ]);
545 cache_get_value_int(0, "DEATHS", PI[ playerid ][ pDeaths ]);
546
547 cache_get_value_int(0, "SCORE", PI[ playerid ][ pScore ]);
548 cache_get_value_int(0, "CASH", PI[ playerid ][ pCash ]);
549
550 SetPlayerScore(playerid, PI[ playerid ][ pScore ]);
551
552 ResetPlayerMoney(playerid);
553 GivePlayerMoney(playerid, PI[ playerid ][ pCash ]);
554
555
556 cache_delete(PI[playerid][Player_Cache]);
557 PI[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
558
559 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Uspesno ste se prijavili.");
560 SetSpawnInfo( playerid, 0, 121, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
561 SpawnPlayer(playerid);
562 }
563 else
564 {
565 new String[150];
566
567 PI[playerid][pPasswordFails] += 1;
568
569 if (PI[playerid][pPasswordFails] >= 3)
570 {
571 format(String, sizeof(String), "[CP-AC] {FFFFFF}%s je izbacen sa servera. Razlog: {0077C7}(3/3) Login greski.", PI[playerid][pName]);
572 SendAdminMessage(0x0077C7FF, String);
573 Kick(playerid);
574 }
575 else
576 {
577 format(String, sizeof(String), "Pogresna sifra, imas jos %d pokusaja.", 3-PI[playerid][pPasswordFails]);
578 SendClientMessage(playerid, 0xFF0000FF, String);
579
580 format(String, sizeof(String), "{FFFFFF}Dobrodosao nazad, {0077C7}%s.\n\n{FFFFFF}Upisite lozinku kako biste nastavili sa igrom.", PI[playerid][pName]);
581 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", String, "Login", "Izlaz");
582 }
583 }
584 }
585 case DIALOG_REGISTER:
586 {
587 if(!response) return Kick(playerid);
588
589 if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
590 {
591
592 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Lozinka mora sadrzati najmanje 5 slova, a najvise 60.");
593
594 new String[150];
595
596 format(String, sizeof(String), "{FFFFFF}Dobrodosao {0077C7}%s.\n\n{FFFFFF}Upisite zeljenu lozinku kako biste napravili nalog.\n\n", PI[playerid][pName]);
597 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", String, "Register", "Izlaz");
598 }
599 else
600 {
601
602
603 for (new i = 0; i < 10; i++)
604 {
605 PI[playerid][pSalt][i] = random(79) + 47;
606 }
607
608 PI[playerid][pSalt][10] = 0;
609 SHA256_PassHash(inputtext, PI[playerid][pSalt], PI[playerid][pPassword], 65);
610
611 new DB_Query[350], str[ 13 ];
612 format(str, sizeof(str), "NIJE BANOVAN");
613 IgracevRank[ playerid ] = "Newbie";
614
615 mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `RANK`, `ADMIN`, `SALT`, `SCORE`, `KILLS`, `CASH`, `DEATHS`, `BANNED`, `BANREASON`)\
616 VALUES ('%e', '%s', '%e', '0', '%e', '0', '0', '0', '0', '0', '%s')", PI[playerid][pName], PI[playerid][pPassword], IgracevRank[ playerid ], PI[playerid][pSalt], str);
617 mysql_tquery(Database, DB_Query, "OnPlayerRegister", "d", playerid);
618 }
619 }
620 case DIALOG_DMARENE: {
621 if(!response) return 1;
622 switch(listitem) {
623 case 0:
624 {
625 if(InDM1 == 10) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ta arena je puna (10/10).");
626 new rand = random(sizeof(LVPD));
627 SetPlayerVirtualWorld(playerid, 1001);
628 SetPlayerInterior(playerid, 3);
629 SetPlayerPos(playerid, LVPD[rand][0], LVPD[rand][1], LVPD[rand][2]);
630 GivePlayerWeapon(playerid, 24, 200);
631 SetPlayerHealth(playerid, 99.0);
632 SetPlayerArmour(playerid, 99.0);
633 UDMAreni[ playerid ] = 1;
634 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Usao si u DM Arenu 1 (LVPD).");
635 InDM1 += 1;
636
637 }
638 case 1:
639 {
640 if(InDM2 == 10) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ta arena je puna (10/10).");
641 new rand = random(sizeof(GTOWN));
642 SetPlayerVirtualWorld(playerid, 1002);
643 SetPlayerInterior(playerid, 0);
644 SetPlayerPos(playerid, GTOWN[rand][0], GTOWN[rand][1], GTOWN[rand][2]);
645 GivePlayerWeapon(playerid, 24, 200);
646 GivePlayerWeapon(playerid, 25, 150);
647 GivePlayerWeapon(playerid, 33,50);
648 SetPlayerHealth(playerid, 99.0);
649 SetPlayerArmour(playerid, 99.0);
650 UDMAreni[ playerid ] = 2;
651 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Usao si u DM Arenu 2 (Ghost Town).");
652 InDM2 += 1;
653 }
654 case 2:
655 {
656 if(InDM3 == 10) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ta arena je puna (10/10).");
657 new rand = random(sizeof(RCRAND));
658 SetPlayerVirtualWorld(playerid, 1003);
659 SetPlayerInterior(playerid, 10);
660 SetPlayerPos(playerid, RCRAND[rand][0], RCRAND[rand][1], RCRAND[rand][2]);
661 GivePlayerWeapon(playerid, 24, 200);
662 GivePlayerWeapon(playerid, 25, 150);
663 GivePlayerWeapon(playerid, 31, 300);
664 GivePlayerWeapon(playerid, 34,50);
665 SetPlayerHealth(playerid, 99.0);
666 SetPlayerArmour(playerid, 99.0);
667 UDMAreni[ playerid ] = 3;
668 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Usao si u DM Arenu 3 (RC Battlefield).");
669 InDM3 += 1;
670 }
671 case 3:
672 {
673 if(InDM4 == 10) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ta arena je puna (10/10).");
674 new rand = random(sizeof(JM));
675 SetPlayerVirtualWorld(playerid, 1004);
676 SetPlayerInterior(playerid, 15);
677 SetPlayerPos(playerid, JM[rand][0], JM[rand][1], JM[rand][2]);
678 GivePlayerWeapon(playerid, 24, 200);
679 GivePlayerWeapon(playerid, 25, 150);
680 SetPlayerHealth(playerid, 99.0);
681 SetPlayerArmour(playerid, 99.0);
682 UDMAreni[ playerid ] = 4;
683 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Usao si u DM Arenu 4 (Jefferson Motel).");
684 InDM4 += 1;
685 }
686 case 4:
687 {
688 if(InDM5 == 10) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ta arena je puna (10/10).");
689 new rand = random(sizeof(MF));
690 SetPlayerVirtualWorld(playerid, 1005);
691 SetPlayerInterior(playerid, 1);
692 SetPlayerPos(playerid, MF[rand][0], MF[rand][1], MF[rand][2]);
693 GivePlayerWeapon(playerid, 24, 200);
694 GivePlayerWeapon(playerid, 25, 150);
695 SetPlayerHealth(playerid, 99.0);
696 SetPlayerArmour(playerid, 99.0);
697 UDMAreni[ playerid ] = 5;
698 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Usao si u DM Arenu 5 (Meat Factory).");
699 InDM5 += 1;
700 }
701 }
702 }
703 case DIALOG_DUEL: {
704 if(response) {
705 SetPlayerPos(playerid, 1560.6750,-1347.2893,329.4609);
706 SetPlayerPos(ZahtevZaDuel[ playerid ], 1526.8954,-1358.4513,329.4609);
707 DuelIgrac[ playerid ] = ZahtevZaDuel[ playerid ];
708 DuelIgrac[ ZahtevZaDuel[ playerid ] ] = playerid;
709 ZahtevZaDuel[ playerid ] = -1;
710 ZahtevZaDuel[ DuelIgrac[ playerid ] ] = -1;
711 GivePlayerWeapon(playerid, DuelOpcije[ DuelIgrac[ playerid ] ][ 0 ], DuelOpcije[ DuelIgrac[ playerid ] ][ 2 ]);
712 GivePlayerWeapon(DuelIgrac[ playerid ], DuelOpcije[ DuelIgrac[ playerid ] ][ 0 ], DuelOpcije[ DuelIgrac[ playerid ] ][ 2 ]);
713 GivePlayerWeapon(playerid, DuelOpcije[ DuelIgrac[ playerid ] ][ 1 ], DuelOpcije[ DuelIgrac[ playerid ] ][ 3 ]);
714 GivePlayerWeapon(DuelIgrac[ playerid ], DuelOpcije[ DuelIgrac[ playerid ] ][ 1 ], DuelOpcije[ DuelIgrac[ playerid ] ][ 3 ]);
715 SetPlayerHealth(playerid, DuelHP[ DuelIgrac[ playerid ] ]);
716 SetPlayerArmour(playerid, DuelArmour[ DuelIgrac[ playerid ] ]);
717 SetPlayerHealth(DuelIgrac[ playerid ], DuelHP[ DuelIgrac[ playerid ] ]);
718 SetPlayerArmour(DuelIgrac[ playerid ], DuelArmour[ DuelIgrac[ playerid ] ]);
719 SetPlayerVirtualWorld(playerid, 1006);
720 SetPlayerVirtualWorld(DuelIgrac[ playerid ], 1006);
721 SetPlayerInterior(playerid, 0);
722 SetPlayerInterior(DuelIgrac[ playerid ], 0);
723 UDMAreni[ playerid ] = 0;
724 SekundeDuel[ playerid ] = 3;
725 TimerODuel[ playerid ] = SetTimerEx("DuelOTimer", 1000, true, "uu", playerid, DuelIgrac[ playerid ]);
726 GameTextForPlayer(playerid, "~r~3", 1000, 3);
727 GameTextForPlayer(DuelIgrac[ playerid ], "~r~3", 1000, 3);
728 TogglePlayerControllable(playerid, 0);
729 TogglePlayerControllable(DuelIgrac[ playerid ], 0);
730 }
731 else {
732 SendClientMessage(ZahtevZaDuel[ playerid ], 0x0077C7FF, "Igrac je odbio Vas zahtev za duel.");
733 DuelOpcije[ ZahtevZaDuel[ playerid ] ][ 0 ] = 0; DuelOpcije[ ZahtevZaDuel[ playerid ] ][ 1 ] = 0;
734 DuelOpcije[ ZahtevZaDuel[ playerid ] ][ 2 ] = 0; DuelOpcije[ ZahtevZaDuel[ playerid ] ][ 3 ] = 0;
735 DuelHP[ ZahtevZaDuel[ playerid ] ] = 0; DuelArmour[ ZahtevZaDuel[ playerid ] ] = 0;
736 ZahtevZaDuel[ ZahtevZaDuel[ playerid ] ] = -1;
737 ZahtevZaDuel[ playerid ] = -1;
738 }
739 }
740 }
741 return 1;
742}
743public OnPlayerSpawn(playerid) {
744
745 UlogovanIgrac[ playerid ] = true;
746 SendClientMessage(playerid, 0x0077C7FF, "========== {FFFFFF}Central Project DM {0077C7}==========");
747 SendClientMessage(playerid, 0x0077C7FF, "Dobrodosli na {FFFFFF}Central Project DM !");
748 SendClientMessage(playerid, 0x0077C7FF, "Da vidite listu komadni, kucajte {FFFFFF}/help");
749 SendClientMessage(playerid, 0x0077C7FF, "Ugodnu igru na serveru zeli vam {FFFFFF}CPDM Staff Team !");
750
751 for(new i; i < 9; i++) TextDrawShowForPlayer(playerid, InGameTD[ i ]);
752 PlayerTextDrawShow(playerid, KillsTD[ playerid ]); PlayerTextDrawShow(playerid, DeathsTD[ playerid ]);
753 PlayerTextDrawShow(playerid, RankTD[ playerid ]); PlayerTextDrawShow(playerid, NickTD[ playerid ]);
754 new str[ 30 ];
755 format(str, sizeof(str), "%d", PI[ playerid ][ pKills ]);
756 PlayerTextDrawSetString(playerid, KillsTD[ playerid ], str);
757 format(str, sizeof(str), "%d", PI[ playerid ][ pDeaths ]);
758 PlayerTextDrawSetString(playerid, DeathsTD[ playerid ], str);
759 format(str, sizeof(str), "%s", IgracevRank[ playerid ]);
760 PlayerTextDrawSetString(playerid, RankTD[ playerid ], str);
761 format(str, sizeof(str), "%s", ImeIgraca(playerid));
762 PlayerTextDrawSetString(playerid, NickTD[ playerid ], str);
763 return 1;
764}
765public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {
766
767 if(UDMAreni[ playerid ] == 0 && UDMAreni[ issuerid ] == 0) {
768 new Float:hp;
769 GetPlayerHealth(playerid, hp);
770 SetPlayerHealth(playerid, hp+amount);
771 if(weaponid > 0) {
772 new str[ 150 ];
773 format(str, sizeof(str), "[CP-AC] {FFFFFF}Igrac %s ima oruzije ID: %d na spawnu!", ImeIgraca(issuerid), weaponid);
774 ResetPlayerWeapons(issuerid);
775 SendAdminMessage(0x0077C7FF, str);
776 }
777 }
778 return 1;
779}
780public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
781{
782 if(!UlogovanIgrac[ playerid ]) {
783 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Morate biti ulogovani kako biste koristili komande.");
784 return 0;
785 }
786 if(result == -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Nepoznata komanda, za listu komandi - /help !");
787 new chatcd = gettime();
788 if(chatcd < (CMDCD[ playerid ] + 3) && PI[ playerid ][ pAdmin ] < 1) {
789 SendClientMessage(playerid, 0x0077C7FF, "[CP-AC] {FFFFFF}Mozete koristiti komandu svakih 3 sekunde.");
790 return 0;
791 }
792 CMDCD[ playerid ] = gettime();
793 return 1;
794} // - FORWARD + PUBLIC
795
796forward DuelOTimer(playerid, id);
797public DuelOTimer(playerid, id) {
798
799 new str[ 10 ];
800 SekundeDuel[ playerid ]--;
801 format(str, sizeof(str), "~r~%d", SekundeDuel[ playerid ]);
802 GameTextForPlayer(playerid, str, 1000, 3);
803 GameTextForPlayer(id, str, 1000, 3);
804 if(SekundeDuel[ playerid ] == 0) {
805 GameTextForPlayer(playerid, "~g~GO!!!", 2000, 3);
806 GameTextForPlayer(id, "~g~GO!!!", 2000, 3);
807 TogglePlayerControllable(playerid, true);
808 KillTimer(TimerODuel[ playerid ]);
809 TogglePlayerControllable(id, true);
810 }
811 return 1;
812}
813forward OnCheatDetected(playerid, ip_address[], type, code);
814public OnCheatDetected(playerid, ip_address[], type, code) {
815
816 if(!NexACDetect[ playerid ]) {
817 new str[ 200 ];
818 format(str, sizeof(str), "[CP-AC] {FFFFFF}Igrac %s moguce da ima %d hack, koristi /spec %d !", ImeIgraca(playerid), playerid);
819 SendAdminMessage(0x0077C7FF, str);
820 }
821 return 1;
822}
823forward public OnPlayerDataCheck(playerid, corrupt_check);
824public OnPlayerDataCheck(playerid, corrupt_check)
825{
826 if (corrupt_check != Corrupt_Check[playerid]) return Kick(playerid);
827
828 new String[150];
829
830 if(cache_num_rows() > 0)
831 {
832
833 cache_get_value(0, "PASSWORD", PI[playerid][pPassword], 65);
834 cache_get_value(0, "SALT", PI[playerid][pSalt], 11);
835 cache_get_value_name_int(0, "BANNED", PI[ playerid ][ pBanned ]);
836 cache_get_value(0, "BANREASON", PI[ playerid ][ pBanReason ], 50);
837
838 if(PI[ playerid ][ pBanned ] == 1) {
839 new str[ 200 ];
840 format(str, sizeof(str), "{FFFFFF}BANNED !\n\nAdmin Vas je banovao. Razlog: %s.\nUkoliko ovo smatrate greskom, prijavite na forum.\nForum:www.cpdm-ogc.com", PI[ playerid ][ pBanReason ]);
841 ShowPlayerDialog(playerid, DIALOG_NORESPONSE, DIALOG_STYLE_MSGBOX, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", str, "U redu","");
842 Shomy_Kick(playerid);
843 return 1;
844 }
845
846 PI[playerid][Player_Cache] = cache_save();
847
848 format(String, sizeof(String), "{FFFFFF}Dobrodosao nazad, {0077C7}%s.\n\n{FFFFFF}Upisite lozinku kako biste nastavili sa igrom.", PI[playerid][pName]);
849 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", String, "Login", "Izlaz");
850 }
851 else
852 {
853 format(String, sizeof(String), "{FFFFFF}Dobrodosao {0077C7}%s.\n\n{FFFFFF}Upisite zeljenu lozinku kako biste napravili nalog.\n\n", PI[playerid][pName]);
854 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", String, "Register", "Izlaz");
855 }
856 return 1;
857}
858
859forward public OnPlayerRegister(playerid);
860public OnPlayerRegister(playerid)
861{
862 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Uspesno ste kreirali nalog.");
863 SetSpawnInfo( playerid, 0, 121, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
864 SpawnPlayer(playerid);
865 return 1;
866}
867forward Shomy_Kick(playerid);
868public Shomy_Kick(playerid) {
869
870 SetTimerEx("KickIgraca", 500, false, "d", playerid);
871 return 1;
872}
873forward KickIgraca(playerid);
874public KickIgraca(playerid) {
875
876 Kick(playerid);
877 return 1;
878}
879
880// - FUNCTIONS
881
882SendAdminMessage(color, string[]) {
883
884 for(new i; i < MAX_PLAYERS; i++) {
885 if(IsPlayerConnected(i) && PI[ i ][ pAdmin ] > 0) {
886 SendClientMessage(i, color, string);
887 }
888 }
889 return 1;
890}
891ImeIgraca( id ) {
892 new ime[ MAX_PLAYER_NAME ];
893 GetPlayerName( id, ime, sizeof ime);
894 return ime;
895}
896
897// - COMMANDS
898
899// Admin Commands
900
901CMD:makeadmin(playerid, params[]) {
902
903 new id, lvl, str[ 250 ], DB_Query[ 200 ];
904 if(PI[ playerid ][ pAdmin ] < 3 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Niste ovlasceni.");
905 if(sscanf(params, "ud", id, lvl)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}/makeadmin [ID] [Level 0-3]");
906 if(!UlogovanIgrac[ id ]) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Taj igrac nije ulogovan.");
907 if(lvl < 0 || lvl > 3) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Level admina - 0-3.");
908 if(lvl == PI[ id ][ pAdmin ]) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Taj igrac vec ima admina tog levela.");
909 if(!strcmp(ImeIgraca(id), "Shomy", true) && lvl < PI[ id ][ pAdmin ]) {
910 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pokusao si Shomiju da spustis admin level? Prijavljen si!");
911 format(str, sizeof(str), "Igrac %s je pokusao da ti spusti admin level na %d !", ImeIgraca(playerid), lvl);
912 SendClientMessage(id, 0xFF1414FF, str);
913 return 1;
914 }
915 new Year, Month, Day, Hour, Minute, Second;
916 getdate(Year, Month, Day);
917 gettime(Hour, Minute, Second);
918 if(lvl == 0) {
919 PI[ id ][ pAdmin ] = 0;
920 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je skinuo admina igracu %s.", ImeIgraca(playerid), ImeIgraca(id));
921 SendAdminMessage(0x0077C7FF, str);
922 format(str, sizeof(str), "[CP-DM] {FFFFFF}Admin %s Vam je skinuo admina.", ImeIgraca(playerid));
923 SendClientMessage(id, 0x0077C7FF, "============= {FFFFFF}SKIDANJE ADMINA {0077C7}=============");
924 SendClientMessage(id, 0x0077C7FF, str);
925 SendClientMessage(id, 0x0077C7FF, "[CP-DM] {FFFFFF}Ukoliko imate zalbu, postavite na forum.");
926 SendClientMessage(id, 0x0077C7FF, "[CP-DM] {FFFFFF}www.cpdm-ogc.com");
927 format(str, sizeof(str), "[CP-DM] {FFFFFF}%d.%d.%d. %d:%d:%d", Day, Month, Year, Hour, Minute, Second);
928 SendClientMessage(id, 0x0077C7FF, str);
929 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `ADMIN` = %d WHERE `ID` = %d LIMIT 1",
930 PI[ id ][ pAdmin ], PI[ id ][ pID ]);
931 mysql_tquery(Database, DB_Query);
932 }
933 else if(lvl < PI[ id ][ pAdmin ]) {
934 PI[ id ][ pAdmin ] = lvl;
935 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je spustio admina igracu %s na %d.", ImeIgraca(playerid), ImeIgraca(id), lvl);
936 SendAdminMessage(0x0077C7FF, str);
937 format(str, sizeof(str), "[CP-DM] {FFFFFF}Admin %s Vam je spustio admin level na %d.", ImeIgraca(playerid), lvl);
938 SendClientMessage(id, 0x0077C7FF, "============= {FFFFFF}SPUSTANJE ADMIN LEVELA {0077C7}=============");
939 SendClientMessage(id, 0x0077C7FF, str);
940 SendClientMessage(id, 0x0077C7FF, "[CP-DM] {FFFFFF}Ukoliko imate zalbu, postavite na forum.");
941 SendClientMessage(id, 0x0077C7FF, "[CP-DM] {FFFFFF}www.cpdm-ogc.com");
942 format(str, sizeof(str), "[CP-DM] {FFFFFF}%d.%d.%d. %d:%d:%d", Day, Month, Year, Hour, Minute, Second);
943 SendClientMessage(id, 0x0077C7FF, str);
944 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `ADMIN` = %d WHERE `ID` = %d LIMIT 1",
945 PI[ id ][ pAdmin ], PI[ id ][ pID ]);
946 mysql_tquery(Database, DB_Query);
947 }
948 else if(lvl > PI[ id ][ pAdmin ]) {
949 format(str, sizeof(str), "{FFFFFF}Cestitamo!\n\nPostali ste admin level {0077C7}%d{FFFFFF}.\nAdmina %d Vam je dao admin %s.\n\nSrecno, opdavdajte svoju poziciju!", lvl, lvl, ImeIgraca(playerid));
950 ShowPlayerDialog(id, DIALOG_NORESPONSE, DIALOG_STYLE_MSGBOX, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", str, "U redu","");
951 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je dao admina level %d igracu %s.", ImeIgraca(playerid), lvl, ImeIgraca(id));
952 SendAdminMessage(0x0077C7FF, str);
953 PI[ id ][ pAdmin ] = lvl;
954 mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `ADMIN` = %d WHERE `ID` = %d LIMIT 1",
955 PI[ id ][ pAdmin ], PI[ id ][ pID ]);
956 mysql_tquery(Database, DB_Query);
957 }
958 return 1;
959}
960CMD:ban(playerid, params[]) {
961
962 new id, razlog[ 50 ], str[ 200 ];
963 if(PI[ playerid ][ pAdmin ] < 1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Niste ovlasceni.");
964 if(sscanf(params, "us[50]", id, razlog)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}/ban [ID] [Razlog]");
965 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pogresan ID.");
966 if(!strcmp(ImeIgraca(id), "Shomy", true)) {
967 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pokusao si Shomija da banujes? Prijavljen si!");
968 format(str, sizeof(str), "Igrac %s je pokusao da te banuje !", ImeIgraca(playerid));
969 SendClientMessage(id, 0xFF1414FF, str);
970 return 1;
971 }
972 if(PI[ id ][ pAdmin ] > PI[ playerid ][ pAdmin ]) {
973 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pokusao si veceg admina od sebe da banujes? Prijavljen si!");
974 format(str, sizeof(str), "Igrac %s je pokusao da te banuje !", ImeIgraca(playerid));
975 SendClientMessage(id, 0xFF1414FF, str);
976 return 1;
977 }
978 new Year, Month, Day, Hour, Minute, Second, query[ 150 ];
979 getdate(Year, Month, Day);
980 gettime(Hour, Minute, Second);
981 format(str, sizeof(str), "[BAN] {FFFFFF}Igrac %s je banovan od strane admina. Razlog: {0077C7}%s.", ImeIgraca(id), razlog);
982 SendClientMessageToAll(0x0077C7FF, str);
983 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je banovao %s. Razlog: %s.", ImeIgraca(playerid), ImeIgraca(id), razlog);
984 SendAdminMessage(0x0077C7FF, str);
985 format(str, sizeof(str), "{FFFFFF}BANNED !\n\nAdmin %s Vas je banovao. Razlog: %s.\nUkoliko ovo smatrate greskom, prijavite na forum.\nForum:www.cpdm-ogc.com\n\n%d.%d.%d. %d:%d:%d", ImeIgraca(playerid), razlog, Day, Month, Year, Hour, Minute, Second);
986 ShowPlayerDialog(playerid, DIALOG_NORESPONSE, DIALOG_STYLE_MSGBOX, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", str, "U redu","");
987 mysql_format(Database, query, sizeof(query), "UPDATE `PLAYERS` SET `BANNED` = '1', `BANREASON` = '%s' WHERE `ID` = %d LIMIT 1", razlog, PI[ id ][ pID ]);
988 mysql_tquery(Database, query);
989 Shomy_Kick(id);
990 return 1;
991}
992CMD:unban(playerid, params[]) {
993
994 new pname[ MAX_PLAYER_NAME ], str[ 80 ], query[ 130 ];
995 if(PI[ playerid ][ pAdmin ] < 1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Niste ovlasceni.");
996 if(sscanf(params, "s[MAX_PLAYER_NAME]", pname)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}/unban [Ime Igraca]");
997 mysql_format(Database, query, sizeof(query), "UPDATE `PLAYERS` SET `BANNED` = '0', `BANREASON` = 'NIJE BANOVAN' WHERE `USERNAME` = '%s' LIMIT 1", pname);
998 mysql_tquery(Database, query);
999 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je unban %s.", ImeIgraca(playerid), pname);
1000 SendAdminMessage(0x0077C7FF, str);
1001 return 1;
1002}
1003CMD:kick(playerid, params[]) {
1004
1005 new id, razlog[ 50 ], str[ 200 ];
1006 if(PI[ playerid ][ pAdmin ] < 1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Niste ovlasceni.");
1007 if(sscanf(params, "us[50]", id, razlog)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}/kick [ID] [Razlog]");
1008 if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pogresan ID.");
1009 if(!strcmp(ImeIgraca(id), "Shomy", true)) {
1010 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pokusao si Shomija da kickujes? Prijavljen si!");
1011 format(str, sizeof(str), "Igrac %s je pokusao da te kickuje !", ImeIgraca(playerid));
1012 SendClientMessage(id, 0xFF1414FF, str);
1013 return 1;
1014 }
1015 if(PI[ id ][ pAdmin ] > PI[ playerid ][ pAdmin ]) {
1016 SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Pokusao si veceg admina od sebe da kickujes? Prijavljen si!");
1017 format(str, sizeof(str), "Igrac %s je pokusao da te kickuje !", ImeIgraca(playerid));
1018 SendClientMessage(id, 0xFF1414FF, str);
1019 return 1;
1020 }
1021 format(str, sizeof(str), "[KICK] {FFFFFF}Izbaceni ste sa servera. Razlog: {0077C7}%s.", razlog);
1022 SendClientMessage(playerid, 0x0077C7FF, str);
1023 format(str, sizeof(str), "[CP-AC] {FFFFFF}Admin %s je kick %s. Razlog: %s.", ImeIgraca(playerid), ImeIgraca(id), razlog);
1024 SendAdminMessage(0x0077C7FF, str);
1025 Shomy_Kick(id);
1026 return 1;
1027}
1028
1029// Player's commands
1030
1031CMD:dm(playerid, params[]) {
1032
1033 if(UDMAreni[ playerid ] > 0) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Prvo izadjite iz DM arene, /lobby !");
1034 if(DuelIgrac[ playerid ] != -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Prvo izadjite iz duela, /napustiduel !");
1035 new string[280];
1036 format(string, sizeof(string), "LVPD (%d/10 igraca)\nGhost town (%d/10 igraca)\nRC Battlefield (%d/10 igraca)\nJeferson Motel (%d/10 igraca)\nMeat Factory (%d/10 igraca)", InDM1, InDM2, InDM3, InDM4, InDM5);
1037 ShowPlayerDialog(playerid, DIALOG_DMARENE, DIALOG_STYLE_LIST, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", string, "Izaberi","Izlaz");
1038 return 1;
1039}
1040CMD:duel(playerid, params[]) {
1041
1042 new id, w1, w2, wa1, wa2, Float:hp, Float:ar, str[ 150 ];
1043 if(sscanf(params, "uddddff", id, w1, w2, wa1, wa2, hp, ar)) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}/duel [ID] [Weapon 1] [Weapon 2] [Weapon Ammo 1] [Weapon Ammo 2] [Health] [Armour]");
1044 if(w1 < 1 || w1 > 34 || w2 < 1 || w2 > 34) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}ID Oruzija 1-34");
1045 if(wa1 < 50 || wa2 < 50) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Municija oruzija (Ammo) ne sme biti manja od 50.");
1046 if(hp < 10 || hp > 100 || ar > 100 || ar < 0) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Health 10-100, Armour 0-100");
1047 if(!UlogovanIgrac[ id ]) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Taj igrac nije ulogovan.");
1048 if(UDMAreni[ playerid ] > 0) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Prvo izadjite iz DM arene, /lobby !");
1049 if(DuelIgrac[ playerid ] != -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Vec ste u duelu.");
1050 if(DuelIgrac[ id ] != -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Taj igrac je vec u duelu.");
1051 if(ZahtevZaDuel[ playerid ] != -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Vec ste poslali zahtev.");
1052 if(ZahtevZaDuel[ id ] != -1) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Taj igrac je vec primio zahtev za duel.");
1053 if(playerid == id) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Ne mozete samog sebe pozvati na duel.");
1054 format(str, sizeof(str), "{FFFFFF}Igrac %s Vas je izazvao na duel.\nDa prihvatite, pritisnite 'Prihvati'.\nDa odbijete, pritisnite 'Odbij'.", ImeIgraca(playerid));
1055 ShowPlayerDialog(id, DIALOG_DUEL, DIALOG_STYLE_MSGBOX, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", str, "Prihvati","Odbij");
1056 ZahtevZaDuel[ id ] = playerid;
1057 ZahtevZaDuel[ playerid ] = id;
1058 DuelOpcije[ playerid ][ 0 ] = w1; DuelOpcije[ playerid ][ 1 ] = w2;
1059 DuelOpcije[ playerid ][ 2 ] = wa1; DuelOpcije[ playerid ][ 3 ] = wa2;
1060 DuelHP[ playerid ] = hp; DuelArmour[ playerid ] = ar;
1061 SendClientMessage(playerid, 0x0077C7FF, "Poslali ste zahtev za duel.");
1062 return 1;
1063}
1064CMD:lobby(playerid, params[]) {
1065
1066 if(UDMAreni[ playerid ] == 0) return SendClientMessage(playerid, 0x0077C7FF, "[CP-DM] {FFFFFF}Niste u DM areni.");
1067 ResetPlayerWeapons(playerid);
1068 UDMAreni[ playerid ] = 0;
1069 SetPlayerPos(playerid, 1958.33, 1343.12, 15.36);
1070 SetPlayerVirtualWorld(playerid, 0);
1071 SetPlayerInterior(playerid, 0);
1072 return 1;
1073}
1074CMD:help(playerid, params[]) {
1075
1076 ShowPlayerDialog(playerid, DIALOG_NORESPONSE, DIALOG_STYLE_MSGBOX, "{0077C7}Central {FFFFFF}Project {0077C7}D{FFFFFF}M", "/dm /duel /lobby", "U redu","");
1077 return 1;
1078}
1079
1080/*
1081
1082 Zavrsetak skripte Central Project DM v1.0 by Shomy
1083 © All rights reserved
1084
1085*/