Advertisement
ShomyScript

Central Project DM v1.0 by Shomy

Apr 4th, 2019
706
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.44 KB | None | 0 0
  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.  
  25. enum {
  26. DIALOG_REGISTER,
  27. DIALOG_LOGIN,
  28. DIALOG_NORESPONSE,
  29. DIALOG_HELP,
  30. DIALOG_DMARENE,
  31. DIALOG_DUEL
  32. }
  33.  
  34.  
  35. // - ENUM
  36.  
  37. enum 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.  
  55. new PI[ MAX_PLAYERS ][ PLAYER_INFO ];
  56. new MySQL:Database, Corrupt_Check[ MAX_PLAYERS ];
  57.  
  58. new Text:InGameTD[9], PlayerText:KillsTD[ MAX_PLAYERS ], PlayerText:DeathsTD[ MAX_PLAYERS ],
  59. PlayerText:RankTD[ MAX_PLAYERS ], PlayerText:NickTD[ MAX_PLAYERS ];
  60.  
  61. new 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.  
  68. new 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.  
  79. new 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.  
  89. new 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. };
  100. new 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. };
  110. new 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.  
  123. main() { }
  124.  
  125. public 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.  
  254. public 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. }
  267. public 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. }
  282. public 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.  
  346. public 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.  
  366. public 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.  
  517. public OnPlayerRequestSpawn(playerid)
  518. {
  519. if(!UlogovanIgrac[ playerid ]) return 0;
  520. return 1;
  521. }
  522.  
  523. public 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. }
  743. public 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. }
  765. public 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. }
  780. public 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.  
  796. forward DuelOTimer(playerid, id);
  797. public 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. }
  813. forward OnCheatDetected(playerid, ip_address[], type, code);
  814. public 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. }
  823. forward public OnPlayerDataCheck(playerid, corrupt_check);
  824. public 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.  
  859. forward public OnPlayerRegister(playerid);
  860. public 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. }
  867. forward Shomy_Kick(playerid);
  868. public Shomy_Kick(playerid) {
  869.  
  870. SetTimerEx("KickIgraca", 500, false, "d", playerid);
  871. return 1;
  872. }
  873. forward KickIgraca(playerid);
  874. public KickIgraca(playerid) {
  875.  
  876. Kick(playerid);
  877. return 1;
  878. }
  879.  
  880. // - FUNCTIONS
  881.  
  882. SendAdminMessage(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. }
  891. ImeIgraca( 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.  
  901. CMD: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. }
  960. CMD: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. }
  992. CMD: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. }
  1003. CMD: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.  
  1031. CMD: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. }
  1040. CMD: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. }
  1064. CMD: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. }
  1074. CMD: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. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement