Guest User

Untitled

a guest
Jul 23rd, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 376.58 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < cstrike >
  4. #include < sockets >
  5. #include < fun >
  6. #include < hamsandwich >
  7. #include < fakemeta >
  8. #include < engine >
  9. #include < chr_engine >
  10. #include < xs >
  11. #include < sqlx >
  12. #include < nvault >
  13. #include < csstats >
  14. #include < csx >
  15. #include < string >
  16. #include < geoip >
  17. #include < newmenus >
  18. #include < dhudmessage >
  19.  
  20. #pragma tabsize 0
  21. #pragma dynamic 8000000
  22.  
  23. #pragma compress 1
  24.  
  25. //#define USING_SQL
  26.  
  27. #if defined USING_SQL
  28.  
  29. #include < sqlx >
  30.  
  31. #endif
  32.  
  33. #define IP_SERVER_LICENTIAT "89.136.116.1"
  34.  
  35. new g_ServerIP[ 16 ], g_Socket;
  36.  
  37. new const licenseMsg[ 2 ][ ] =
  38. {
  39. "IP-ul serverului este licentiat! Pluginul ruleaza!",
  40. "IP-ul serverului nu este licentiat iar pluginul nu poate rula pe acesta!"
  41. }
  42.  
  43.  
  44. #define ADMIN_LOOKUP (1<<0)
  45.  
  46. #define ADMIN_NORMAL (1<<1)
  47.  
  48. #define ADMIN_STEAM (1<<2)
  49.  
  50. #define ADMIN_IPADDR (1<<3)
  51.  
  52. #define ADMIN_NAME (1<<4)
  53.  
  54. #define CHAT_PREFIX "^4[Zombie Outstanding]^1"
  55.  
  56. #define CONSOLE_PREFIX "[Zombie Outstanding]"
  57.  
  58. #define INT_MAX_PLAYERS_MENU 360
  59.  
  60. new const ADMINS_FILE_NAME [ ] = "Admins.ini";
  61.  
  62. new const TAG[] = "[Zombie Outstanding]"
  63.  
  64. #define TASK_HUD 5345634
  65.  
  66. #define REMINDER_DELAY 25.0
  67.  
  68. #define MAX_PLAYERS 32
  69.  
  70. #define Maximum_Players 32
  71.  
  72. enum _:Colors
  73. {
  74. print_team_default,
  75. print_team_red,
  76. print_team_blue,
  77. print_team_grey
  78. };
  79.  
  80. stock const TeamName [Colors] [ ] =
  81. {
  82. "UNASSIGNED",
  83. "TERRORIST",
  84. "CT",
  85. "SPECTATOR"
  86. };
  87.  
  88. new const BlockTexts [ ] [ ] =
  89. {
  90. "#",
  91. "$",
  92. "%"
  93. };
  94.  
  95. enum
  96. {
  97. INFO_NAME,
  98. INFO_IP,
  99. INFO_AUTHID
  100. };
  101.  
  102. const TASK_ID = 1603;
  103.  
  104. const TASK_HEALTH = 1994;
  105.  
  106. new const Float: iCoords [ ] [ ] =
  107. {
  108. { 0.50, 0.40 },
  109. { 0.56, 0.44 },
  110. { 0.60, 0.50 },
  111. { 0.56, 0.56 },
  112. { 0.50, 0.60 },
  113. { 0.44, 0.56 },
  114. { 0.40, 0.50 },
  115. { 0.44, 0.44 }
  116. };
  117.  
  118. new const Float:sizez [ ] [ 3 ] =
  119. {
  120. {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
  121. {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
  122. {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
  123. {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
  124. {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
  125. }
  126.  
  127. enum (+= 100)
  128. {
  129. TASK_MODEL = 2000,
  130. TASK_TEAM,
  131. TASK_SPAWN,
  132. TASK_BLOOD,
  133. TASK_BURN,
  134. TASK_NVISION,
  135. TASK_SHOWHUD,
  136. TASK_MAKEZOMBIE,
  137. TASK_WELCOMEMSG,
  138. TASK_AMBIENCESOUNDS,
  139. TASK_REGENERATION
  140. };
  141.  
  142. enum
  143. {
  144. INT_STATS_KILLS = 0,
  145. INT_STATS_DEATHS,
  146. INT_STATS_HS,
  147. INT_STATS_TKS,
  148. INT_STATS_SHOTS,
  149. INT_STATS_HITS,
  150. INT_STATS_DAMAGE
  151. };
  152.  
  153. enum
  154. {
  155. INT_STATS_HIT_GENERIC = 0,
  156. INT_STATS_HIT_HEAD,
  157. INT_STATS_HIT_CHEST,
  158. INT_STATS_HIT_STOMACH,
  159. INT_STATS_HIT_LEFTARM,
  160. INT_STATS_HIT_RIGHTARM,
  161. INT_STATS_HIT_LEFTLEG,
  162. INT_STATS_HIT_RIGHTLEG
  163. };
  164.  
  165. new g_msgChannel
  166. new amx_show_activity;
  167. #define MAX_CLR 10
  168. new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
  169. new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
  170. new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}
  171. /* --------------- | Rank mysql | -------------- */
  172.  
  173. #define SQL_Server ""
  174. #define SQL_Person ""
  175. #define SQL_Password ""
  176. #define SQL_Database "Zombie_OutStanding_Stats_Db"
  177.  
  178. #define Date_Format "%d.%m.%Y @ %H:%M" /** %d is day, %m is month, %Y is year, %H is hour and %M is minute. */
  179.  
  180. #define Errors_File "Zombie_OutStanding_Errors.log" /** Where the errors should be logged */
  181.  
  182. #define Chat_Tag "[Zombie OutStanding]"
  183. #define Chat_Tag_Color 4 /** 1 for yellow, 3 for team color and 4 for green. */
  184. #define Chat_Message_For_Victim 1 /** Chat messages for victim. Use 0 to disable. */
  185. #define Chat_Message_For_Killer 1 /** Chat messages for killer. Use 0 to disable */
  186. #define Chat_Detailed_Rank 1 /** Also includes Kills, Deaths, headShots and KpD ratio. */
  187.  
  188. #define Score_Start 1000 /** Score to start with. */
  189. #define Score_For_Suicide 5 /** Loses 5 points if committing suicide. */
  190. #define Score_For_Kill 5 /** Gets 5 points if committing normal kill. */
  191. #define Score_For_Head_Shot 10 /** Gets 10 points if committing headshot kill. */
  192. #define Score_For_Death 3 /** Loses 3 points if getting killed. */
  193.  
  194. #define Name_Kick_Reason "Stop changing your name that fast."
  195. #define Name_Change_Interval 7.5 /** Seconds between changing names. */
  196.  
  197. #define Task_Update_Time 23785321 /** Random offset. */
  198. #define Task_Id_Update_Time (Id - Task_Update_Time) /** TaskId - Offset returns player's Id. */
  199.  
  200. #define Seconds_In_Minute 60
  201. #define Seconds_In_Hour 3600
  202. #define Seconds_In_Day 86400
  203. #define Seconds_In_Week 604800
  204.  
  205. enum timeUnit
  206. {
  207. timeUnit_None = 0,
  208. timeUnit_Seconds,
  209. timeUnit_Minutes,
  210. timeUnit_Hours,
  211. timeUnit_Days,
  212. timeUnit_Weeks,
  213. timeUnit_Count
  214. };
  215.  
  216. static Handle:g_Tuple = Empty_Handle;
  217.  
  218. static g_Query[1024] = { 0, ... };
  219.  
  220. static g_Name[Maximum_Players + 1][64];
  221. static g_Steam[Maximum_Players + 1][64];
  222. static g_Ip[Maximum_Players + 1][64];
  223. static g_seenString[Maximum_Players + 1][64];
  224. static g_timeString[Maximum_Players + 1][64];
  225.  
  226. static g_Time[Maximum_Players + 1] = { 0, ... };
  227. static g_Score[Maximum_Players + 1] = { 0, ... };
  228. static g_Seen[Maximum_Players + 1] = { 0, ... };
  229. static g_Kills[Maximum_Players + 1] = { 0, ... };
  230. static g_Deaths[Maximum_Players + 1] = { 0, ... };
  231. static g_headShots[Maximum_Players + 1] = { 0, ... };
  232. static g_kmdValue[Maximum_Players + 1] = { 0, ... };
  233.  
  234. static Float:g_kpdRatio[Maximum_Players + 1] = { 0.0, ... };
  235.  
  236. static g_maxPlayers = 0;
  237. static g_recordsCount = 0;
  238.  
  239. computeTimeLength(Time, timeUnit:unitType, Output[], outputSize)
  240. {
  241. static Weeks = 0, Days = 0, Hours = 0, Minutes = 0, Seconds = 0, \
  242. maxElementId = 0, timeElement[5][64], Length = 0;
  243.  
  244. if (Time > 0)
  245. {
  246. maxElementId = 0;
  247.  
  248. switch (unitType)
  249. {
  250. case timeUnit_Seconds: Seconds = Time;
  251. case timeUnit_Minutes: Seconds = Time * Seconds_In_Minute;
  252. case timeUnit_Hours: Seconds = Time * Seconds_In_Hour;
  253. case timeUnit_Days: Seconds = Time * Seconds_In_Day;
  254. case timeUnit_Weeks: Seconds = Time * Seconds_In_Week;
  255. }
  256.  
  257. Weeks = Seconds / Seconds_In_Week;
  258. Seconds -= (Weeks * Seconds_In_Week);
  259.  
  260. Days = Seconds / Seconds_In_Day;
  261. Seconds -= (Days * Seconds_In_Day);
  262.  
  263. Hours = Seconds / Seconds_In_Hour;
  264. Seconds -= (Hours * Seconds_In_Hour);
  265.  
  266. Minutes = Seconds / Seconds_In_Minute;
  267. Seconds -= (Minutes * Seconds_In_Minute);
  268.  
  269. if (Weeks > 0)
  270. formatex(timeElement[maxElementId++], charsmax(timeElement[]), "%d w", Weeks);
  271.  
  272. if (Days > 0)
  273. formatex(timeElement[maxElementId++], charsmax(timeElement[]), "%d d", Days);
  274.  
  275. if (Hours > 0)
  276. formatex(timeElement[maxElementId++], charsmax(timeElement[]), "%d h", Hours);
  277.  
  278. if (Minutes > 0)
  279. formatex(timeElement[maxElementId++], charsmax(timeElement[]), "%d m", Minutes);
  280.  
  281. if (Seconds > 0)
  282. formatex(timeElement[maxElementId++], charsmax(timeElement[]), "%d s", Seconds);
  283.  
  284. switch (maxElementId)
  285. {
  286. case 1: Length = formatex(Output, outputSize, "%s", timeElement[0]);
  287. case 2: Length = formatex(Output, outputSize, "%s %s", timeElement[0], timeElement[1]);
  288. case 3: Length = formatex(Output, outputSize, "%s %s %s", timeElement[0], timeElement[1], \
  289. timeElement[2]);
  290. case 4: Length = formatex(Output, outputSize, "%s %s %s %s", timeElement[0], timeElement[1], \
  291. timeElement[2], timeElement[3]);
  292. case 5: Length = formatex(Output, outputSize, "%s %s %s %s %s", timeElement[0], timeElement[1], \
  293. timeElement[2], timeElement[3], timeElement[4]);
  294. }
  295.  
  296. return Length;
  297. }
  298.  
  299. Length = formatex(Output, outputSize, "0 m");
  300.  
  301. return Length;
  302. }
  303.  
  304. bool:isValidPlayer(Player)
  305. {
  306. return bool:(Player >= 1 && Player <= g_maxPlayers);
  307. }
  308.  
  309. resetPlayer(Player)
  310. {
  311. static timeNow = 0;
  312.  
  313. if (isValidPlayer(Player) && !is_user_bot(Player) && !is_user_hltv(Player))
  314. {
  315. timeNow = get_systime();
  316.  
  317. /**
  318. * -----------------------------------------------------
  319. * Players
  320. * -----------------------------------------------------
  321. * Name
  322. * Steam
  323. * Ip
  324. * Score
  325. * Kills
  326. * Deaths
  327. * headShots
  328. * Time - The time spent in minutes.
  329. * timeString - Formatted as a string.
  330. * Seen - get_systime() stamp.
  331. * seenString - get_systime() stamp formatted as a time string including date.
  332. * kpdRatio - Kills/ Deaths ratio.
  333. * kmdValue - Kills - Deaths value.
  334. */
  335.  
  336. g_Score[Player] = Score_Start;
  337. g_Kills[Player] = 0;
  338. g_Deaths[Player] = 0;
  339. g_headShots[Player] = 0;
  340. g_Time[Player] = 0;
  341. computeTimeLength(g_Time[Player], timeUnit_Minutes, g_timeString[Player], charsmax(g_timeString[]));
  342. g_Seen[Player] = timeNow;
  343. format_time(g_seenString[Player], charsmax(g_seenString[]), Date_Format);
  344. g_kpdRatio[Player] = 0.0;
  345. g_kmdValue[Player] = 0;
  346. }
  347. }
  348.  
  349. Float:computeKpdRatio(Player)
  350. {
  351. if (isValidPlayer(Player) && is_user_connected(Player) && \
  352. is_user_bot(Player) == 0 && is_user_hltv(Player) == 0)
  353. {
  354. if (g_Deaths[Player] == 0)
  355. {
  356. return float(g_Kills[Player]);
  357. }
  358.  
  359. else
  360. {
  361. return float(g_Kills[Player] / g_Deaths[Player]);
  362. }
  363. }
  364.  
  365. return 0.0;
  366. }
  367.  
  368. computeKmdValue(Player)
  369. {
  370. if (isValidPlayer(Player) && is_user_connected(Player) && \
  371. is_user_bot(Player) == 0 && is_user_hltv(Player) == 0)
  372. {
  373. return g_Kills[Player] - g_Deaths[Player];
  374. }
  375.  
  376. return 0;
  377. }
  378.  
  379. /**
  380. * Updates player's rank statistics.
  381. */
  382. updateRank(Client)
  383. {
  384. if (isValidPlayer(Client) && is_user_connected(Client) && \
  385. is_user_bot(Client) == 0 && is_user_hltv(Client) == 0)
  386. {
  387. /**
  388. * -----------------------------------------------------
  389. * Players
  390. * -----------------------------------------------------
  391. * Name
  392. * Steam
  393. * Ip
  394. * Score
  395. * Kills
  396. * Deaths
  397. * headShots
  398. * Time - The time spent in minutes.
  399. * timeString - Formatted as a string.
  400. * Seen - get_systime() stamp.
  401. * seenString - get_systime() stamp formatted as a time string including date.
  402. * kpdRatio - Kills/ Deaths ratio.
  403. * kmdValue - Kills - Deaths value.
  404. */
  405. formatex(g_Query, charsmax(g_Query), "UPDATE Players SET Ip = '%s', Score = %d, Kills = %d, Deaths = %d, \
  406. headShots = %d, Seen = %d, seenString = '%s', kpdRatio = %f, kmdValue = %d WHERE Name = '%s';", \
  407. g_Ip[Client], g_Score[Client], g_Kills[Client], g_Deaths[Client], g_headShots[Client], \
  408. g_Seen[Client], g_seenString[Client], g_kpdRatio[Client], g_kmdValue[Client], g_Name[Client]);
  409.  
  410. SQL_ThreadQuery(g_Tuple, "emptyFunction", g_Query);
  411. }
  412. }
  413.  
  414. /**
  415. * Returns the length of the message sent.
  416. */
  417. /**
  418. * Retrieves the name of the best 15 players.
  419. *
  420. * Returns 0 if it fails. Returns how many players have been selected otherwise.
  421. * If there are not 15 ranked players yet, it might return values like 1, 2, 3 and so on.
  422. * Example of use:
  423. *
  424. * new totalPlayers = NewStats_GetTop15(...);
  425. *
  426. * And then you can get the rank statistics for each.
  427. *
  428. * =====================================================================================
  429. *
  430. * native NewStats_GetTop15(_n1[], _n2[], _n3[], _n4[], _n5[], _n6[], _n7[], _n8[], \
  431. * _n9[], _n10[], _n11[], _n12[], _n13[], _n14[], _n15[]);
  432. *
  433. */
  434. public NewStats_GetTop15(pluginId, parametersCount)
  435. {
  436. static Name[15][64], Total, Error[256], errorId, Handle:Connection, \
  437. Handle:Query, Iterator;
  438.  
  439. Connection = SQL_Connect(g_Tuple, errorId, Error, charsmax(Error));
  440.  
  441. if (errorId)
  442. {
  443. log_to_file(Errors_File, "NewStats_GetTop15() failed because SQL has encountered an error.");
  444. log_to_file(Errors_File, "The error is listed below.");
  445. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  446.  
  447. return 0;
  448. }
  449.  
  450. Query = SQL_PrepareQuery(Connection, "SELECT Name FROM Players ORDER BY kmdValue DESC LIMIT 15;");
  451. SQL_Execute(Query);
  452.  
  453. if (SQL_NumResults(Query) == 0)
  454. {
  455. SQL_FreeHandle(Query);
  456. SQL_FreeHandle(Connection);
  457.  
  458. return 0;
  459. }
  460.  
  461. Total = 0;
  462.  
  463. while (SQL_MoreResults(Query))
  464. {
  465. SQL_ReadResult(Query, 0, Name[Total++], charsmax(Name[]));
  466.  
  467. SQL_NextRow(Query);
  468. }
  469.  
  470. SQL_FreeHandle(Query);
  471. SQL_FreeHandle(Connection);
  472.  
  473. for (Iterator = 0; Iterator < Total; Iterator++)
  474. set_string(Iterator + 1, Name[Iterator], charsmax(Name[]));
  475.  
  476. return Total;
  477. }
  478.  
  479. /**
  480. * Retrieves information of a player by name.
  481. *
  482. * Returns 0 if it fails. If the name of the player does not exists and so on.
  483. * Returns 1 otherwise.
  484. * These values are all strings. You can then convert them to numbers and so on.
  485. * Example of use:
  486. *
  487. * new Name[64] = "Hattrick";
  488. * Steam[64], Ip[64], Score[16], Rank[16];
  489. * new Success = NewStats_GetStats(Name, Steam, Ip, Score, ...);
  490. *
  491. * if (Success)
  492. * {
  493. * server_print("Player %s's score is %s. Or numeric, %d.", Name, Score, str_to_num(Score));
  494. * }
  495. *
  496. * =====================================================================================
  497. *
  498. * native NewStats_GetStats(const Name[], Steam[], Ip[], Score[], Kills[], \
  499. * Deaths[], headShots[], Time[], timeString[], Seen[], seenString[], \
  500. * kpdRatio[], kmdValue[], Rank[], totalPositions[]);
  501. *
  502. */
  503. public NewStats_GetStats(pluginId, parametersCount)
  504. {
  505. static Name[64], Error[256], errorId, Handle:Connection, Handle:Query, Kills[16], Deaths[16], \
  506. headShots[16], Score[16], Ip[64], Steam[64], Time[16], timeString[64], Seen[16], \
  507. seenString[64], kpdRatio[16], kmdValue[16], Kills_i, Deaths_i, headShots_i, Score_i, \
  508. Time_i, Seen_i, Float:kpdRatio_f, kmdValue_i, Rank[16], Rank_i, totalPositions[16];
  509.  
  510. get_string(1, Name, charsmax(Name));
  511.  
  512. replace_all(Name, charsmax(Name), "`", "*");
  513. replace_all(Name, charsmax(Name), "'", "*");
  514. replace_all(Name, charsmax(Name), "\", "*");
  515.  
  516. /**
  517. * -----------------------------------------------------
  518. * Players
  519. * -----------------------------------------------------
  520. * Name
  521. * Steam
  522. * Ip
  523. * Score
  524. * Kills
  525. * Deaths
  526. * headShots
  527. * Time - The time spent in minutes.
  528. * timeString - Formatted as a string.
  529. * Seen - get_systime() stamp.
  530. * seenString - get_systime() stamp formatted as a time string including date.
  531. * kpdRatio - Kills/ Deaths ratio.
  532. * kmdValue - Kills - Deaths value.
  533. */
  534. Connection = SQL_Connect(g_Tuple, errorId, Error, charsmax(Error));
  535.  
  536. if (errorId)
  537. {
  538. log_to_file(Errors_File, "NewStats_GetStats() failed because SQL has encountered an error.");
  539. log_to_file(Errors_File, "The error is listed below.");
  540. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  541.  
  542. return 0;
  543. }
  544.  
  545. formatex(g_Query, charsmax(g_Query), "SELECT Steam, Ip, Score, Kills, Deaths, headShots, \
  546. Time, timeString, Seen, seenString, kpdRatio, kmdValue FROM Players WHERE Name = '%s';", Name);
  547.  
  548. Query = SQL_PrepareQuery(Connection, g_Query);
  549. SQL_Execute(Query);
  550.  
  551. if (SQL_NumResults(Query) == 0)
  552. {
  553. SQL_FreeHandle(Query);
  554. SQL_FreeHandle(Connection);
  555.  
  556. return 0;
  557. }
  558.  
  559. SQL_ReadResult(Query, 0, Steam, charsmax(Steam));
  560. SQL_ReadResult(Query, 1, Ip, charsmax(Ip));
  561. Score_i = SQL_ReadResult(Query, 2);
  562. num_to_str(Score_i, Score, charsmax(Score));
  563. Kills_i = SQL_ReadResult(Query, 3);
  564. num_to_str(Kills_i, Kills, charsmax(Kills));
  565. Deaths_i = SQL_ReadResult(Query, 4);
  566. num_to_str(Deaths_i, Deaths, charsmax(Deaths));
  567. headShots_i = SQL_ReadResult(Query, 5);
  568. num_to_str(headShots_i, headShots, charsmax(headShots));
  569. Time_i = SQL_ReadResult(Query, 6);
  570. num_to_str(Time_i, Time, charsmax(Time));
  571. SQL_ReadResult(Query, 7, timeString, charsmax(timeString));
  572. Seen_i = SQL_ReadResult(Query, 8);
  573. num_to_str(Seen_i, Seen, charsmax(Seen));
  574. SQL_ReadResult(Query, 9, seenString, charsmax(seenString));
  575. SQL_ReadResult(Query, 10, kpdRatio_f);
  576. float_to_str(kpdRatio_f, kpdRatio, charsmax(kpdRatio));
  577. kmdValue_i = SQL_ReadResult(Query, 11);
  578. num_to_str(kmdValue_i, kmdValue, charsmax(kmdValue));
  579.  
  580. SQL_FreeHandle(Query);
  581.  
  582. set_string(2, Steam, charsmax(Steam));
  583. set_string(3, Ip, charsmax(Ip));
  584. set_string(4, Score, charsmax(Score));
  585. set_string(5, Kills, charsmax(Kills));
  586. set_string(6, Deaths, charsmax(Deaths));
  587. set_string(7, headShots, charsmax(headShots));
  588. set_string(8, Time, charsmax(Time));
  589. set_string(9, timeString, charsmax(timeString));
  590. set_string(10, Seen, charsmax(Seen));
  591. set_string(11, seenString, charsmax(seenString));
  592. set_string(12, kpdRatio, charsmax(kpdRatio));
  593. set_string(13, kmdValue, charsmax(kmdValue));
  594.  
  595. formatex(g_Query, charsmax(g_Query), "SELECT DISTINCT kmdValue FROM Players \
  596. WHERE kmdValue >= %d ORDER BY kmdValue ASC;", kmdValue_i);
  597.  
  598. Query = SQL_PrepareQuery(Connection, g_Query);
  599. SQL_Execute(Query);
  600.  
  601. Rank_i = SQL_NumResults(Query);
  602. num_to_str(Rank_i, Rank, charsmax(Rank));
  603.  
  604. SQL_FreeHandle(Query);
  605. SQL_FreeHandle(Connection);
  606.  
  607. set_string(14, Rank, charsmax(Rank));
  608.  
  609. num_to_str(g_recordsCount, totalPositions, charsmax(totalPositions));
  610. set_string(15, totalPositions, charsmax(totalPositions));
  611.  
  612. return 1;
  613. }
  614.  
  615. public recordsCount(failState, Handle:Query, Error[], errorId, Data[], dataSize, Float:queueTime)
  616. {
  617. if (failState != 0 || errorId != 0)
  618. {
  619. log_to_file(Errors_File, "SQL_ThreadQuery() failed @ recordsCount()");
  620. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  621. }
  622.  
  623. else if (queueTime > 15.0)
  624. {
  625. log_to_file(Errors_File, "SQL_ThreadQuery() @ recordsCount() : This query took 15.0 seconds. \
  626. Talk to the game host company tell them the MySQL database works too slow.");
  627. }
  628.  
  629. g_recordsCount = SQL_NumResults(Query);
  630. }
  631.  
  632. public emptyFunction(failState, Handle:Query, Error[], errorId, Data[], dataSize, Float:queueTime)
  633. {
  634. if (failState != 0 || errorId != 0)
  635. {
  636. log_to_file(Errors_File, "SQL_ThreadQuery() failed @ emptyFunction()");
  637. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  638. }
  639.  
  640. else if (queueTime > 15.0)
  641. {
  642. log_to_file(Errors_File, "SQL_ThreadQuery() @ emptyFunction() : This query took 15.0 seconds. \
  643. Talk to the game host company tell them the MySQL database works too slow.");
  644. }
  645.  
  646. /**
  647. * Query is now executed.
  648. */
  649. }
  650.  
  651. public retrieveOrCreatePlayer(failState, Handle:Query, Error[], errorId, Data[], dataSize, Float:queueTime)
  652. {
  653. static Client = 0;
  654.  
  655. if (failState != 0 || errorId != 0)
  656. {
  657. log_to_file(Errors_File, "SQL_ThreadQuery() failed @ retrieveOrCreatePlayer()");
  658. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  659. }
  660.  
  661. else if (queueTime > 15.0)
  662. {
  663. log_to_file(Errors_File, "SQL_ThreadQuery() @ retrieveOrCreatePlayer() : This query took 15.0 seconds. \
  664. Talk to the game host company tell them the MySQL database works too slow.");
  665. }
  666.  
  667. Client = str_to_num(Data);
  668.  
  669. if (is_user_connected(Client) == 1 && is_user_bot(Client) == 0 && is_user_hltv(Client) == 0)
  670. {
  671. resetPlayer(Client);
  672.  
  673. /**
  674. * -----------------------------------------------------
  675. * Players
  676. * -----------------------------------------------------
  677. * Name
  678. * Steam
  679. * Ip
  680. * Score
  681. * Kills
  682. * Deaths
  683. * headShots
  684. * Time - The time spent in minutes.
  685. * timeString - formatted time spent
  686. * Seen - get_systime() stamp
  687. * seenString - get_systime() stamp formatted as time string
  688. * kpdRatio - Kills/ Deaths ratio
  689. * kmdValue - Kills - Deaths value
  690. */
  691.  
  692. switch (SQL_NumResults(Query))
  693. {
  694. case 0:
  695. {
  696. formatex(g_Query, charsmax(g_Query), "INSERT INTO Players VALUES ('%s', \
  697. '%s', '%s', %d, %d, %d, %d, %d, '%s', %d, '%s', %f, %d);", g_Name[Client], \
  698. g_Steam[Client], g_Ip[Client], g_Score[Client], g_Kills[Client], \
  699. g_Deaths[Client], g_headShots[Client], g_Time[Client], g_timeString[Client], g_Seen[Client], \
  700. g_seenString[Client], g_kpdRatio[Client], g_kmdValue[Client]);
  701.  
  702. SQL_ThreadQuery(g_Tuple, "emptyFunction", g_Query);
  703.  
  704. g_recordsCount++;
  705. }
  706.  
  707. default:
  708. {
  709. g_Score[Client] = SQL_ReadResult(Query, 0);
  710. g_Kills[Client] = SQL_ReadResult(Query, 1);
  711. g_Deaths[Client] = SQL_ReadResult(Query, 2);
  712. g_headShots[Client] = SQL_ReadResult(Query, 3);
  713. g_Time[Client] = SQL_ReadResult(Query, 4);
  714. SQL_ReadResult(Query, 5, g_timeString[Client], charsmax(g_timeString[]));
  715. g_Seen[Client] = SQL_ReadResult(Query, 6);
  716. SQL_ReadResult(Query, 7, g_seenString[Client], charsmax(g_seenString[]));
  717. SQL_ReadResult(Query, 8, g_kpdRatio[Client]);
  718. g_kmdValue[Client] = SQL_ReadResult(Query, 9);
  719. }
  720. }
  721.  
  722. set_task(5.0, "rankPrepared", Client);
  723. set_task(120.0, "timeUpdate", Client + Task_Update_Time, .flags = "b"); /** Every 2 minutes. */
  724. }
  725. }
  726.  
  727. public timeUpdate(Id)
  728. {
  729. if (is_user_connected(Task_Id_Update_Time) && \
  730. !is_user_bot(Task_Id_Update_Time) && !is_user_hltv(Task_Id_Update_Time))
  731. {
  732. g_Time[Task_Id_Update_Time] += 2; /** 2 minutes. */
  733.  
  734. computeTimeLength(g_Time[Task_Id_Update_Time], \
  735. timeUnit_Minutes, g_timeString[Task_Id_Update_Time], charsmax(g_timeString[]));
  736.  
  737. formatex(g_Query, charsmax(g_Query), \
  738. "UPDATE Players SET Time = %d, timeString = '%s' WHERE Name = '%s';", \
  739. g_Time[Task_Id_Update_Time], g_timeString[Task_Id_Update_Time], g_Name[Task_Id_Update_Time]);
  740.  
  741. SQL_ThreadQuery(g_Tuple, "emptyFunction", g_Query);
  742. }
  743. }
  744.  
  745. public rankPrepared(Client)
  746. {
  747. static queryData[32] = { 0, ... };
  748.  
  749. if (is_user_connected(Client) == 1 && is_user_bot(Client) == 0 && is_user_hltv(Client) == 0)
  750. {
  751.  
  752. set_dhudmessage ( 0, 255, 0, 0.03, 0.60, 2, 6.0, 3.0 );
  753. show_dhudmessage(Client, "You are now ranked!");
  754.  
  755. if ( !access ( Client, read_flags ("m") ) )
  756. {
  757. set_dhudmessage( 0, 255, 0, 0.03, 0.60, 2, 6.0, 3.0 );
  758. show_dhudmessage(Client, "You are now Administrator!");
  759. }
  760.  
  761. num_to_str(Client, queryData, charsmax(queryData));
  762.  
  763. formatex(g_Query, charsmax(g_Query), "SELECT DISTINCT kmdValue \
  764. FROM Players WHERE kmdValue >= %d ORDER BY kmdValue ASC;", g_kmdValue[Client]);
  765.  
  766. SQL_ThreadQuery(g_Tuple, "showRank", g_Query, queryData, sizeof(queryData));
  767. }
  768. }
  769.  
  770. public showRank(failState, Handle:Query, Error[], errorId, Data[], dataSize, Float:queueTime)
  771. {
  772. static Client = 0, Rank = 0, rankString[16], recordsString[16], scoreString[16], \
  773. killsString[16], deathsString[16], headShotsString[16];
  774.  
  775. if (failState != 0 || errorId != 0)
  776. {
  777. log_to_file(Errors_File, "SQL_ThreadQuery() failed @ showRank()");
  778. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  779. }
  780.  
  781. else if (queueTime > 15.0)
  782. {
  783. log_to_file(Errors_File, "SQL_ThreadQuery() @ showRank() : This query took 15.0 seconds. \
  784. Talk to the game host company tell them the MySQL database works too slow.");
  785. }
  786.  
  787. Client = str_to_num(Data);
  788.  
  789. if (is_user_connected(Client) == 1 && is_user_bot(Client) == 0 && is_user_hltv(Client) == 0)
  790. {
  791. Rank = SQL_NumResults(Query);
  792.  
  793. addCommas2(Rank, rankString, charsmax(rankString));
  794. addCommas2(g_recordsCount, recordsString, charsmax(recordsString));
  795. addCommas2(g_Kills[Client], killsString, charsmax(killsString));
  796. addCommas2(g_Deaths[Client], deathsString, charsmax(deathsString));
  797. addCommas2(g_Score[Client], scoreString, charsmax(scoreString));
  798. addCommas2(g_headShots[Client], headShotsString, charsmax(headShotsString));
  799.  
  800. new HostName [64]; get_cvar_string ( "hostname", HostName, charsmax ( HostName ) );
  801.  
  802. set_dhudmessage ( 0, 255, 0, 0.05, 0.22, 2, 0.02, 1.0, 0.05, 6.0 );
  803. show_dhudmessage ( Client, "Welcome, %s^nRank: %s of %s Score: %d^nKills: %s Deaths: %s KPD: %0.2f^nOnline: %s^nWe hope you enjoy!",
  804. g_Name[Client], rankString, recordsString, g_Score[Client] = Score_Start, \
  805. killsString, deathsString, g_kpdRatio[Client], g_timeString[Client]);
  806.  
  807.  
  808. set_dhudmessage ( 212, 42, 255, 0.03, 0.5, 2, 6.0, 10.0 );
  809. show_dhudmessage ( Client, "%s^nDon't forget to add us to your favourites!",HostName);
  810. }
  811. }
  812.  
  813. public printRankChat(failState, Handle:Query, Error[], errorId, Data[], dataSize, Float:queueTime)
  814. {
  815. static Client = 0, Rank = 0, rankString[16], recordsString[16], scoreString[16], \
  816. killsString[16], deathsString[16], headShotsString[16];
  817.  
  818. if (failState != 0 || errorId != 0)
  819. {
  820. log_to_file(Errors_File, "SQL_ThreadQuery() failed @ printRankChat()");
  821. log_to_file(Errors_File, "[%d] %s", errorId, Error);
  822. }
  823.  
  824. else if (queueTime > 15.0)
  825. {
  826. log_to_file(Errors_File, "SQL_ThreadQuery() @ printRankChat() : This query took 15.0 seconds. \
  827. Talk to the game host company tell them the MySQL database works too slow.");
  828. }
  829.  
  830. Client = str_to_num(Data);
  831.  
  832. if (is_user_connected(Client) == 1 && is_user_bot(Client) == 0 && is_user_hltv(Client) == 0)
  833. {
  834. Rank = SQL_NumResults(Query);
  835. addCommas2(Rank, rankString, charsmax(rankString));
  836. addCommas2(g_recordsCount, recordsString, charsmax(recordsString));
  837. addCommas2(g_Kills[Client], killsString, charsmax(killsString));
  838. addCommas2(g_Deaths[Client], deathsString, charsmax(deathsString));
  839. addCommas2(g_Score[Client], scoreString, charsmax(scoreString));
  840. addCommas2(g_headShots[Client], headShotsString, charsmax(headShotsString));
  841.  
  842. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1's rank is^4 %s^1 of ^4%s^1 --^3 %0.2f KPD", g_Name [Client] , rankString, recordsString, g_kpdRatio[Client] );
  843. }
  844. }
  845.  
  846. /* --------------- | For TripMine | -------------- */
  847.  
  848. #define TASK_CREATE 84765
  849. #define TASK_REMOVE 86766
  850.  
  851. #define TASK_REMOVE2 2423423
  852.  
  853. #define entity_get_owner(%0) entity_get_int( %0, EV_INT_iuser2 )
  854. #define entity_get_status(%0) entity_get_int( %0, EV_INT_iuser1 )
  855. #define entity_get_classname(%0,%1) entity_get_string( %0, EV_SZ_classname, %1, charsmax( %1 ) )
  856.  
  857. #define KNOCBACK_DAMAGE
  858.  
  859. #define KNOCBACK_POWER
  860.  
  861. #define KNOCBACK_OBEY_CLASS
  862.  
  863. #define KNOCKBACK_DUCKING 0.25
  864.  
  865. #define KNOCBACK_DISTANCE 500
  866.  
  867. #define KNOCBACK_NEMESIS 0.25
  868.  
  869. #define KNOCBACK_ASSASSIN 0.25
  870.  
  871. /* ------------------------------------------------- */
  872.  
  873. #define ID_MODEL (TaskIndex - TASK_MODEL)
  874. #define ID_TEAM (TaskIndex - TASK_TEAM)
  875. #define ID_SPAWN (TaskIndex - TASK_SPAWN)
  876. #define ID_BLOOD (TaskIndex - TASK_BLOOD)
  877. #define ID_BURN (TaskIndex - TASK_BURN)
  878. #define ID_NVISION (TaskIndex - TASK_NVISION)
  879. #define ID_SHOWHUD (TaskIndex - TASK_SHOWHUD)
  880. #define ID_REGENERATION (TaskIndex - TASK_REGENERATION)
  881.  
  882. enum
  883. {
  884. EXTRA_NAPALM_NADE,
  885. EXTRA_FROST_NADE,
  886. EXTRA_EXPLOSION_NADE,
  887. EXTRA_KILLING_NADE,
  888. EXTRA_M249_PARA_MACHINEGUN,
  889. EXTRA_G3SG1_AUTO_SNIPER,
  890. EXTRA_SG550_AUTO_SNIPER,
  891. EXTRA_AWP_MAGNUM_SNIPER,
  892. EXTRA_NVISION,
  893. EXTRA_JETPACK,
  894. EXTRA_UNLIMITEDCLIP,
  895. EXTRA_ARMOR_100,
  896. EXTRA_ARMOR_200,
  897. EXTRA_MULTIJUMP,
  898. EXTRA_TRYDER,
  899. EXTRA_AK47GOLD,
  900. EXTRA_DEAGLEGOLD,
  901. EXTRA_SURVIVOR,
  902. EXTRA_SNIPER,
  903. EXTRA_NEMESIS,
  904. EXTRA_ASSASSIN,
  905. EXTRA_ANTIDOTE,
  906. EXTRA_INFECTIONBOMB,
  907. EXTRA_MADNESS,
  908. EXTRA_KNIFEBLINK,
  909. EXTRA_TRIPMINE,
  910. EXTRA_WEAPONS_STARTID
  911. };
  912.  
  913. enum
  914. {
  915. ZCLASS_NONE = -1,
  916. ZCLASS_CLASSIC,
  917. ZCLASS_RAPTOR,
  918. ZCLASS_MUTANT,
  919. ZCLASS_FROZEN,
  920. ZCLASS_REGENERATOR,
  921. ZCLASS_PREDATOR,
  922. ZCLASS_HUNTER
  923. }
  924.  
  925. enum
  926. {
  927. MODE_NONE = 0,
  928. MODE_INFECTION,
  929. MODE_NEMESIS,
  930. MODE_ASSASSIN,
  931. MODE_SURVIVOR,
  932. MODE_SNIPER,
  933. MODE_SWARM,
  934. MODE_MULTI,
  935. MODE_PLAGUE,
  936. MODE_ARMAGEDDON,
  937. MODE_APOCALYPSE,
  938. MODE_NIGHTMARE
  939. };
  940.  
  941. const ZRISES_TEAM_NO_ONE = 0;
  942. const ZRISES_TEAM_ANY = 0;
  943. const ZRISES_TEAM_ZOMBIE = (1<<0);
  944. const ZRISES_TEAM_HUMAN = (1<<1) ;
  945. const ZRISES_TEAM_NEMESIS = (1<<2);
  946. const ZRISES_TEAM_SURVIVOR = (1<<3);
  947. const ZRISES_TEAM_SNIPER = (1<<4);
  948. const ZRISES_TEAM_ASSASSIN = (1<<5);
  949.  
  950. #if cellbits == 32
  951. const OFFSET_CLIPAMMO = 51;
  952. #else
  953. const OFFSET_CLIPAMMO = 65;
  954. #endif
  955.  
  956.  
  957. enum
  958. {
  959. FM_CS_TEAM_UNASSIGNED = 0,
  960. FM_CS_TEAM_T,
  961. FM_CS_TEAM_CT,
  962. FM_CS_TEAM_SPECTATOR
  963. };
  964.  
  965. new const CS_TEAM_NAMES [ ] [ ] =
  966. {
  967. "UNASSIGNED",
  968. "TERRORIST",
  969. "CT",
  970. "SPECTATOR"
  971. };
  972.  
  973. new const GetObjectiveEnts [ ] [ ] =
  974. {
  975. "func_bomb_target",
  976. "info_bomb_target",
  977. "info_vip_start",
  978. "func_vip_safetyzone",
  979. "func_escapezone",
  980. "hostage_entity",
  981. "monster_scientist",
  982. "func_hostage_rescue",
  983. "info_hostage_rescue",
  984. "env_fog",
  985. "item_longjump",
  986. "func_vehicle"
  987. }
  988.  
  989. new const MAXBPAMMO [ ] =
  990. {
  991. -1, 254, -1,
  992. 254, 1, 254, 1,
  993. 254, 254, 1, 254,
  994. 254, 254, 254, 254,
  995. 254, 254, 254, 254,
  996. 254, 254, 254, 254,
  997. 254, 254, 2, 254, 254,
  998. 254, -1, 254
  999. };
  1000.  
  1001.  
  1002. new const MAXCLIP [ ] =
  1003. {
  1004. -1, 13, -1,
  1005. 10, -1, 7, -1,
  1006. 30, 30, -1, 30,
  1007. 20, 25, 30, 35,
  1008. 25, 12, 20, 10,
  1009. 30, 100, 8, 30,
  1010. 30, 20, -1, 7, 30,
  1011. 30, -1, 50
  1012. };
  1013.  
  1014. new const AMMOID [ ] =
  1015. {
  1016. -1, 9, -1,
  1017. 2, 12, 5,
  1018. 14, 6, 4,
  1019. 13, 10, 7,
  1020. 6, 4, 4, 4,
  1021. 6, 10, 1, 10,
  1022. 3, 5, 4, 10, 2,
  1023. 11, 8, 4, 2, -1, 7
  1024. };
  1025.  
  1026. new const AMMOTYPE [ ] [ ] =
  1027. {
  1028. "", "357sig", "", "762nato",
  1029. "", "buckshot", "", "45acp",
  1030. "556nato", "", "9mm", "57mm",
  1031. "45acp", "556nato", "556nato",
  1032. "556nato", "45acp", "9mm", "338magnum",
  1033. "9mm", "556natobox", "buckshot", "556nato",
  1034. "9mm", "762nato", "", "50ae", "556nato",
  1035. "762nato", "", "57mm"
  1036. };
  1037.  
  1038. new const AMMOWEAPON [ ] =
  1039. {
  1040. 0,
  1041. CSW_AWP,
  1042. CSW_SCOUT,
  1043. CSW_M249,
  1044. CSW_AUG,
  1045. CSW_XM1014,
  1046. CSW_MAC10,
  1047. CSW_FIVESEVEN,
  1048. CSW_DEAGLE,
  1049. CSW_P228,
  1050. CSW_ELITE,
  1051. CSW_FLASHBANG,
  1052. CSW_HEGRENADE,
  1053. CSW_SMOKEGRENADE,
  1054. CSW_C4
  1055. };
  1056.  
  1057. new const WEAPONENTNAMES [ ] [ ] =
  1058. {
  1059. "",
  1060. "weapon_p228",
  1061. "",
  1062. "weapon_scout",
  1063. "weapon_hegrenade",
  1064. "weapon_xm1014",
  1065. "weapon_c4",
  1066. "weapon_mac10",
  1067. "weapon_aug",
  1068. "weapon_smokegrenade",
  1069. "weapon_elite",
  1070. "weapon_fiveseven",
  1071. "weapon_ump45",
  1072. "weapon_sg550",
  1073. "weapon_galil",
  1074. "weapon_famas",
  1075. "weapon_usp",
  1076. "weapon_glock18",
  1077. "weapon_awp",
  1078. "weapon_mp5navy",
  1079. "weapon_m249",
  1080. "weapon_m3",
  1081. "weapon_m4a1",
  1082. "weapon_tmp",
  1083. "weapon_g3sg1",
  1084. "weapon_flashbang",
  1085. "weapon_deagle",
  1086. "weapon_sg552",
  1087. "weapon_ak47",
  1088. "weapon_knife",
  1089. "weapon_p90"
  1090. };
  1091.  
  1092. new Float:g_fKnockback_Weapon_Power[] =
  1093. {
  1094. -1.0, // ---
  1095. 2.4, // P228
  1096. -1.0, // ---
  1097. 6.5, // SCOUT
  1098. -1.0, // ---
  1099. 8.0, // XM1014
  1100. -1.0, // ---
  1101. 2.3, // MAC10
  1102. 5.0, // AUG
  1103. -1.0, // ---
  1104. 2.4, // ELITE
  1105. 2.0, // FIVESEVEN
  1106. 2.4, // UMP45
  1107. 5.3, // SG550
  1108. 5.5, // GALIL
  1109. 5.5, // FAMAS
  1110. 2.2, // USP
  1111. 2.0, // GLOCK18
  1112. 10.0, // AWP
  1113. 2.5, // MP5NAVY
  1114. 5.2, // M249
  1115. 8.0, // M3
  1116. 5.0, // M4A1
  1117. 2.4, // TMP
  1118. 6.5, // G3SG1
  1119. -1.0, // ---
  1120. 5.3, // DEAGLE
  1121. 5.0, // SG552
  1122. 6.0, // AK47
  1123. -1.0, // ---
  1124. 2.0 // P90
  1125. };
  1126.  
  1127. // Guns
  1128. enum _:WeaponData
  1129. {
  1130. wInfo[ 20 ],
  1131. wName[ 20 ],
  1132. wBpammo
  1133. }
  1134.  
  1135.  
  1136.  
  1137. new g_PrimaryWeapon[ ][ WeaponData ] =
  1138. {
  1139. { "GALIL", "weapon_galil", 1000 },
  1140. { "FAMAS", "weapon_famas", 1000 },
  1141. { "M4A1", "weapon_m4a1", 1000 },
  1142. { "AK47", "weapon_ak47", 1000 },
  1143. { "AUG", "weapon_aug", 1000 },
  1144. { "SG552", "weapon_sg552", 1000 },
  1145. { "XM1014", "weapon_xm1014", 1000 },
  1146. { "M3", "weapon_m3", 1000 },
  1147. { "Schmidt TMP", "weapon_tmp", 1000 },
  1148. { "MP5NAVY", "weapon_mp5navy", 1000 },
  1149. { "P90", "weapon_p90", 1000 }
  1150. }
  1151.  
  1152. new g_SecondaryWeapon[ ][ WeaponData ] =
  1153. {
  1154. { "USP", "weapon_usp", 1000 },
  1155. { "GLOCK18", "weapon_glock18", 1000 },
  1156. { "P228", "weapon_p228", 1000 },
  1157. { "DEAGLE", "weapon_deagle", 1000 },
  1158. { "ELITE", "weapon_elite", 1000 },
  1159. { "FIVESEVEN", "weapon_fiveseven", 1000 }
  1160. }
  1161.  
  1162. new GetHumanModels [ ] [ ] =
  1163. {
  1164. "arctic",
  1165. "guerilla",
  1166. "leet",
  1167. "terror",
  1168. "gign",
  1169. "gsg9",
  1170. "sas",
  1171. "urban"
  1172. };
  1173.  
  1174. new GetNemesisModels [ ] [ ] =
  1175. {
  1176. "z_out_nemesis"
  1177. };
  1178.  
  1179. new GetAssassinModels [ ] [ ] =
  1180. {
  1181. "z_out_assassin"
  1182. };
  1183.  
  1184. new GetSurvivorModels [ ] [ ] =
  1185. {
  1186. "z_out_survivor"
  1187. };
  1188.  
  1189. new GetSniperModels [ ] [ ] =
  1190. {
  1191. "arctic"
  1192. };
  1193.  
  1194. new GetOwnerModels [ ] [ ] =
  1195. {
  1196. "DanDiaconescu"
  1197. };
  1198.  
  1199. new GetAdminModels [ ] [ ] =
  1200. {
  1201. "z_out_admin"
  1202. };
  1203.  
  1204. new GetModelKnifeHuman [ ] =
  1205. {
  1206. "models/v_knife.mdl"
  1207. };
  1208.  
  1209. new GetModelKnifeNemesis [ ] =
  1210. {
  1211. "models/ZombieOutstanding/z_out_nemesis_claws.mdl"
  1212. };
  1213.  
  1214. new GetModelKnifeAssassin [ ] =
  1215. {
  1216. "models/ZombieOutstanding/z_out_assassin_claws.mdl"
  1217. };
  1218.  
  1219. new vGetModelAwpSniper [ ] =
  1220. {
  1221. "models/ZombieOutstanding/z_out_v_awp_sniper.mdl"
  1222. };
  1223.  
  1224. new pGetModelAwpSniper [ ] =
  1225. {
  1226. "models/ZombieOutstanding/z_out_p_awp_sniper.mdl"
  1227. };
  1228.  
  1229. new GetModelGrenadeInfect [ ] =
  1230. {
  1231. "models/v_hegrenade.mdl"
  1232. };
  1233.  
  1234. new GetModelGrenadeExplode [ ] =
  1235. {
  1236. "models/v_hegrenade.mdl"
  1237. };
  1238.  
  1239. new GetModelGrenadeFire [ ] =
  1240. {
  1241. "models/v_flashbang.mdl"
  1242. };
  1243.  
  1244. new GetModelGrenadeFrost [ ] =
  1245. {
  1246. "models/v_smokegrenade.mdl"
  1247. };
  1248.  
  1249. new GetModelTripmine [ ] =
  1250. {
  1251. "models/ZombieOutstanding/z_out_mine.mdl"
  1252. };
  1253.  
  1254. new GetModelRocket [ ] =
  1255. {
  1256. "models/rpgrocket.mdl"
  1257. };
  1258.  
  1259. new Goldenak47_v [ ] =
  1260. {
  1261. "models/ZombieOutstanding/v_golden_ak47.mdl"
  1262. }
  1263.  
  1264. new Goldenak47_p [ ] =
  1265. {
  1266. "models/ZombieOutstanding/v_golden_ak47.mdl"
  1267. }
  1268.  
  1269. new Goldev [ ] =
  1270. {
  1271. "models/ZombieOutstanding/v_golden_deagle.mdl"
  1272. }
  1273.  
  1274.  
  1275. new Goldep [ ] =
  1276. {
  1277. "models/ZombieOutstanding/p_golden_deagle.mdl"
  1278. }
  1279.  
  1280. new GetSoundWinZombies [ 4 ] [ ] =
  1281. {
  1282. "ZombieOutstanding/end_round_win_zombies_01.wav",
  1283. "ZombieOutstanding/end_round_win_zombies_02.wav",
  1284. "ZombieOutstanding/end_round_win_zombies_03.wav",
  1285. "ZombieOutstanding/end_round_win_zombies_04.wav"
  1286. };
  1287.  
  1288. new GetSoundWinHumans [ 3 ] [ ] =
  1289. {
  1290. "ZombieOutstanding/end_round_win_humans_01.wav",
  1291. "ZombieOutstanding/end_round_win_humans_02.wav",
  1292. "ZombieOutstanding/end_round_win_humans_03.wav"
  1293. };
  1294.  
  1295. new GetSoundWinNoOne [ 1 ] [ ] =
  1296. {
  1297. "ZombieOutstanding/end_round_win_no_one.wav"
  1298. };
  1299.  
  1300. new GetSoundZombieInfect [ 5 ] [ ] =
  1301. {
  1302. "ZombieOutstanding/zombie_infect_01.wav",
  1303. "ZombieOutstanding/zombie_infect_02.wav",
  1304. "ZombieOutstanding/zombie_infect_03.wav",
  1305. "ZombieOutstanding/zombie_infect_04.wav",
  1306. "ZombieOutstanding/zombie_infect_05.wav"
  1307. };
  1308.  
  1309. new GetSoundZombiePain [ 5 ] [ ] =
  1310. {
  1311. "ZombieOutstanding/zombie_hit_01.wav",
  1312. "ZombieOutstanding/zombie_hit_02.wav",
  1313. "ZombieOutstanding/zombie_hit_03.wav",
  1314. "ZombieOutstanding/zombie_hit_04.wav",
  1315. "ZombieOutstanding/zombie_hit_05.wav"
  1316. };
  1317.  
  1318. new GetSoundNemesisPain [ 3 ] [ ] =
  1319. {
  1320. "ZombieOutstanding/monster_hit_01.wav",
  1321. "ZombieOutstanding/monster_hit_02.wav",
  1322. "ZombieOutstanding/monster_hit_03.wav"
  1323. };
  1324.  
  1325. new GetSoundAssassinPain [ 3 ] [ ] =
  1326. {
  1327. "ZombieOutstanding/monster_hit_01.wav",
  1328. "ZombieOutstanding/monster_hit_02.wav",
  1329. "ZombieOutstanding/monster_hit_03.wav"
  1330. };
  1331.  
  1332. new GetSoundZombieDie [ 5 ] [ ] =
  1333. {
  1334. "ZombieOutstanding/zombie_die_01.wav",
  1335. "ZombieOutstanding/zombie_die_02.wav",
  1336. "ZombieOutstanding/zombie_die_03.wav",
  1337. "ZombieOutstanding/zombie_die_04.wav",
  1338. "ZombieOutstanding/zombie_die_05.wav"
  1339. };
  1340.  
  1341. new GetSoundZombieFall [ 2 ] [ ] =
  1342. {
  1343. "ZombieOutstanding/zombie_hit_01.wav",
  1344. "ZombieOutstanding/zombie_hit_03.wav"
  1345. };
  1346.  
  1347. new GetSoundZombieMissSlash [ 2 ] [ ] =
  1348. {
  1349. "weapons/knife_slash1.wav",
  1350. "weapons/knife_slash2.wav"
  1351. };
  1352.  
  1353. new GetSoundZombieMissWall [ 1 ] [ ] =
  1354. {
  1355. "weapons/knife_hitwall1.wav"
  1356. };
  1357.  
  1358. new GetSoundZombieHitNormal [ 4 ] [ ] =
  1359. {
  1360. "weapons/knife_hit1.wav",
  1361. "weapons/knife_hit2.wav",
  1362. "weapons/knife_hit3.wav",
  1363. "weapons/knife_hit4.wav"
  1364. };
  1365.  
  1366. new GetSoundZombieHitStab [ 1 ] [ ] =
  1367. {
  1368. "weapons/knife_stab.wav"
  1369. };
  1370.  
  1371. new GetSoundZombieMadness [ 1 ] [ ] =
  1372. {
  1373. "ZombieOutstanding/zombie_madness.wav"
  1374. };
  1375.  
  1376. new GetSoundNemesis [ 2 ] [ ] =
  1377. {
  1378. "ZombieOutstanding/round_start_nemesis_01.wav",
  1379. "ZombieOutstanding/round_start_nemesis_02.wav"
  1380. };
  1381.  
  1382. new GetSoundAssassin [ 1 ] [ ] =
  1383. {
  1384. "ZombieOutstanding/round_start_nemesis_01.wav"
  1385. };
  1386.  
  1387. new GetSoundSurvivor [ 2 ] [ ] =
  1388. {
  1389. "ZombieOutstanding/round_start_survivor_01.wav",
  1390. "ZombieOutstanding/round_start_survivor_02.wav"
  1391. };
  1392.  
  1393. new GetSoundSniper [ 2 ] [ ] =
  1394. {
  1395. "ZombieOutstanding/round_start_survivor_01.wav",
  1396. "ZombieOutstanding/round_start_survivor_02.wav"
  1397. };
  1398.  
  1399. new GetSoundSwarm [ 1 ] [ ] =
  1400. {
  1401. "ZombieOutstanding/round_start_plague.wav"
  1402. };
  1403.  
  1404. new GetSoundMulti [ 1 ] [ ] =
  1405. {
  1406. "ZombieOutstanding/round_start_plague.wav"
  1407. };
  1408.  
  1409. new GetSoundPlague [ 1 ] [ ] =
  1410. {
  1411. "ZombieOutstanding/round_start_plague.wav"
  1412. };
  1413.  
  1414. new GetSoundArmageddon [ 1 ] [ ] =
  1415. {
  1416. "ZombieOutstanding/round_start_nemesis_02.wav"
  1417. };
  1418.  
  1419. new GetSoundApocalypse [ 2 ] [ ] =
  1420. {
  1421. "ZombieOutstanding/round_start_nemesis_01.wav",
  1422. "ZombieOutstanding/round_start_survivor_01.wav"
  1423. };
  1424.  
  1425. new GetSoundNightmare [ 2 ] [ ] =
  1426. {
  1427. "ZombieOutstanding/round_start_nemesis_01.wav",
  1428. "ZombieOutstanding/round_start_survivor_01.wav"
  1429. };
  1430.  
  1431. new GetSoundGrenadeInfect [ 1 ] [ ] =
  1432. {
  1433. "ZombieOutstanding/grenade_infection_explode.wav"
  1434. };
  1435.  
  1436. new GetSoundGrenadeInfectPlayer [ 3 ] [ ] =
  1437. {
  1438. "ZombieOutstanding/human_nade_infect_scream_01.wav",
  1439. "ZombieOutstanding/human_nade_infect_scream_02.wav",
  1440. "ZombieOutstanding/human_nade_infect_scream_03.wav"
  1441. };
  1442.  
  1443. new GetSoundGrenadeFire [ 1 ] [ ] =
  1444. {
  1445. "ZombieOutstanding/grenade_fire_explode.wav"
  1446. };
  1447.  
  1448. new GetSoundGrenadeFirePlayer [ 5 ] [ ] =
  1449. {
  1450. "ZombieOutstanding/zombie_burn_01.wav",
  1451. "ZombieOutstanding/zombie_burn_02.wav",
  1452. "ZombieOutstanding/zombie_burn_03.wav",
  1453. "ZombieOutstanding/zombie_burn_04.wav",
  1454. "ZombieOutstanding/zombie_burn_05.wav"
  1455. };
  1456.  
  1457. new GetSoundGrenadeFrost [ 1 ] [ ] =
  1458. {
  1459. "ZombieOutstanding/grenade_frost_explode.wav"
  1460. };
  1461.  
  1462. new GetSoundGrenadeFrostPlayer [ 1 ] [ ] =
  1463. {
  1464. "ZombieOutstanding/grenade_frost_freeze.wav"
  1465. };
  1466.  
  1467. new GetSoundGrenadeFrostBreak [ 1 ] [ ] =
  1468. {
  1469. "ZombieOutstanding/grenade_frost_break.wav"
  1470. };
  1471.  
  1472. new GetSoundAntidote [ 1 ] [ ] =
  1473. {
  1474. "ZombieOutstanding/antidote.wav"
  1475. };
  1476.  
  1477. new GetSoundAmbienceInfection [ 1 ] [ ] =
  1478. {
  1479. "ZombieOutstanding/ambience_normal.wav"
  1480. };
  1481.  
  1482. new GetSoundAmbienceNemesis [ 1 ] [ ] =
  1483. {
  1484. "ZombieOutstanding/ambience_normal.wav"
  1485. };
  1486.  
  1487. new GetSoundAmbienceAssassin [ 1 ] [ ] =
  1488. {
  1489. "ZombieOutstanding/ambience_normal.wav"
  1490. };
  1491.  
  1492. new GetSoundAmbienceSurvivor [ 1 ] [ ] =
  1493. {
  1494. "ZombieOutstanding/ambience_survivor.wav"
  1495. };
  1496.  
  1497. new GetSoundAmbienceSniper [ 1 ] [ ] =
  1498. {
  1499. "ZombieOutstanding/ambience_normal.wav"
  1500. };
  1501.  
  1502. new GetSoundAmbienceSwarm [ 1 ] [ ] =
  1503. {
  1504. "ZombieOutstanding/ambience_normal.wav"
  1505. };
  1506.  
  1507. new GetSoundAmbiencePlague [ 1 ] [ ] =
  1508. {
  1509. "ZombieOutstanding/ambience_normal.wav"
  1510. };
  1511.  
  1512. new GetSoundAmbienceArmageddon [ 1 ] [ ] =
  1513. {
  1514. "ZombieOutstanding/ambience_normal.wav"
  1515. };
  1516.  
  1517. new GetSoundAmbienceApocalypse [ 1 ] [ ] =
  1518. {
  1519. "ZombieOutstanding/ambience_normal.wav"
  1520. };
  1521.  
  1522. new GetSoundAmbienceNightmare [ 1 ] [ ] =
  1523. {
  1524. "ZombieOutstanding/ambience_normal.wav"
  1525. };
  1526.  
  1527. new GetModelGrenadeKilling [ ] =
  1528. {
  1529. "models/v_smokegrenade.mdl"
  1530. };
  1531.  
  1532. const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
  1533. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);
  1534. const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4);
  1535.  
  1536.  
  1537. const KEYS_GAMEMENU = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
  1538.  
  1539. const KEYS_BUYMENU = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9;
  1540.  
  1541. const ZRISES_PLUGIN_HANDLED = 97;
  1542.  
  1543. enum
  1544. {
  1545. zRisesTryderHealth,
  1546. zRisesTryderArmor,
  1547. zRisesNemesisHealth,
  1548. zRisesAssassinHealth,
  1549. zRisesHumanHealth,
  1550. zRisesNemesisGravity,
  1551. zRisesAssassinGravity,
  1552. zRisesAmmoDamage,
  1553. zRisesZombieArmor,
  1554. zRisesNemesisSpeed,
  1555. zRisesAssassinSpeed,
  1556. zRisesSurvivorHealth,
  1557. zRisesSurvivorSpeed,
  1558. zRisesSniperHealth,
  1559. zRisesSniperSpeed,
  1560. zRisesHumanSpeed,
  1561. zRisesAmmoInfect,
  1562. zRisesSurvivorGravity,
  1563. zRisesSniperGravity,
  1564. zRisesHumanGravity,
  1565. zRisesNightmareNemesisHealth,
  1566. zRisesNightmareAssassinHealth,
  1567. zRisesApocalypseNemesisHealth,
  1568. zRisesApocalypseSurvivorHealth,
  1569. zRisesApocalypseAssassinHealth,
  1570. zRisesApocalypseSniperHealth,
  1571. zRisesNemesisDamage,
  1572. zRisesAssassinDamage,
  1573. zRisesNightmareSurvivorHealth,
  1574. zRisesNightmareSniperHealth,
  1575. zRisesPlagueNemesisHealth,
  1576. zRisesPlagueSurvivorHealth,
  1577. zRisesSniperDamage,
  1578. zRisesStartPacks,
  1579. MAX_CVARS
  1580. }
  1581.  
  1582.  
  1583. new HasTripMines [33], PlantedMines [33], HasPlanting [33], HasRemoving [33],
  1584.  
  1585. Float: iSpeed = 1000.0, Float: iDelay = 1.0, iEnemy [33], InBlink [33], Float: iLastSlash [33], iCanceled [33], iSlash [33], iBlinks [33],
  1586.  
  1587. bool: Fly [33] = false, bool: Rocket [33] = false, bool: RSound [33] = false, bool: Shot [33] = false,
  1588.  
  1589. Float: iTime = 0.0, Float: LastRocket [33] = 0.0,
  1590.  
  1591. Float: JPCal [33] = 0.0, Float: JPSound [33] = 0.0, FlyEnergy [33], HasJet [33],
  1592.  
  1593. JPSmokeSpr, xFireBallSpr, WhiteSpr,
  1594.  
  1595. HasUnlimitedClip [33], JumpNum [33] = 0, bool: DoJump [33] = false, MultiJumps [33] = 0,
  1596.  
  1597. IsTryder [33], UserTotalAmmo [33],g_PrimaryMenu, g_SecondaryMenu, g_iGameMenu, g_Argping[33][3], g_Offset[ 33 ][ 2 ], g_iPoints[33];
  1598.  
  1599. new g_vault=INVALID_HANDLE;
  1600.  
  1601. new g_iSteam[33][64];
  1602.  
  1603. new on_stuck[33];
  1604.  
  1605. new AdminCount, bool: CaseSensitiveName [33], AmxMode, AmxPasswordField, AmxDefaultAccess,
  1606.  
  1607. PlayerGagged [33], PlayerGagTime [33], JoinTime [33],
  1608.  
  1609. gName [32], MsgChannel
  1610.  
  1611. new Array: GetMessages, Handler;
  1612.  
  1613. new PlayerTag [33] [32], bool: PlayerHasTag [33], File [128],
  1614.  
  1615. RestrictedNames [256] [32], WordsCount;
  1616.  
  1617. new g_doubledamage[33], g_bFrozen[33];
  1618.  
  1619. new Array:g_vname, Array:g_vflags, Array:g_vpwd;
  1620.  
  1621. new bool:g_vip[33], g_vip_flags[33][32];
  1622.  
  1623. new cvar_on, cvar_messages;
  1624.  
  1625. new g_iLaser, g_msgSayText;
  1626.  
  1627. new bool:zp_get_gold_ak[MAX_PLAYERS+1], bool:zp_get_gold_de[MAX_PLAYERS+1];
  1628.  
  1629. new cvar_bslot, cvar_bam, cvar_100ap, cvar_200ap, cvar_300ap, cvar_dmg2, cvar_god, cvar_arnd, g_Damage2[MAX_PLAYERS+1], bool:g_Godmode[MAX_PLAYERS+1], bool:g_slotpass[MAX_PLAYERS+1], bool:g_modelpass[MAX_PLAYERS+1];
  1630.  
  1631. new bool:has_item[33], bool:using_item[33], sync_hud1, cvar_deadlyshot_time;
  1632.  
  1633. new SpriteTexture
  1634.  
  1635. new g_iKillsThisRound[33], g_iVariable;
  1636. /* ---------------------- | For GamePlay | --------------------- */
  1637.  
  1638. new MaxPlayers, ModeAssassin, ModeSurvivor, ModeNemesis, ModeSniper,
  1639.  
  1640. CountDown, IsZombie [33], IsNemesis [33],
  1641.  
  1642. IsAssassin [33], IsSurvivor [33], IsSniper [33], FirstZombie [33], LastZombie [33], LastHuman [33],
  1643.  
  1644. IsFrozen [33], NoDamage [33], NVision [33], NVisionEnabled [33], ZombieClass [33],
  1645.  
  1646. ZombieClassNext [33], CanBuy [33], AmmoPacks [33], DamageDealt [33],
  1647.  
  1648. Float: LastLeapTime [33], PlayerModel [33] [32], BurningDuration [33],
  1649.  
  1650. iPosition [33], NewRound, EndRound, NemesisRound, AssassinRound, SurvivorRound, SniperRound, SwarmRound, ArmageddonRound,
  1651.  
  1652. ApocalypseRound, NightmareRound, PlagueRound, ModeStarted, LastMode, ScoreZombies, ScoreHumans, SpawnCount,
  1653.  
  1654. Float: Spawns [128] [3], Float: ModelTargetTime,
  1655.  
  1656. Float: TeamsTargetTime, TrailSpr, ExploSpr, FlameSpr, SmokeSpr, GlassSpr, HExplode, FreezeTime, HamCzBots, fwSpawn, fwPrecacheSound,
  1657.  
  1658. LastPlayerLeaving, SwitchingTeam, iSize,
  1659.  
  1660. fwRoundStart, fwRoundEnd, fwUserInfectedPre, fwUserInfectedPost, fwUserHumanizedPre, fwUserHumanizedPost, fwUserInfectAttempt, fwUserHumanizeAttempt,
  1661.  
  1662. fwUserUnfrozen, fwUserLastZombie, fwUserLastHuman, fwDummyResult,
  1663.  
  1664. DBName [64] [32], DBPacks [64], DBZombieClass [64], DBSlot,
  1665.  
  1666. Array: ExtraItemName_01, Array: ExtraItemCost_01, Array: ExtraItemTeam_01, iExtraItem,
  1667.  
  1668. Array: ExtraItemNew, Array: ZClassName_01, Array: ZClassInfo_01, Array: ZClassModelsStart_01, Array: ZClassModelSend_01, Array: ZClassPlayerModel_01, Array: ZClassModelIndex_01,
  1669.  
  1670. Array: ZClassClawModel_01, Array: ZClassHealth_01, Array: ZClassSpeed_01, Array: ZClassGravity_01, Array: ZClassKnockback_01, iZClass,
  1671.  
  1672. Array: ZClassNew,
  1673.  
  1674. Array: ModelNemesis, Array: ModelAssassin, Array: ModelSurvivor, Array: ModelSniper, Array: ModelHuman, Array: ModelOwnerHuman, Array: ModelAdminHuman,
  1675.  
  1676. Array: SoundWinZombies, Array: SoundWinHumans, Array: SoundWinNoOne, Array: ZombieInfect, Array: ZombiePain, Array: NemesisPain, Array: AssassinPain, Array: ZombieDie, Array: ZombieFall,
  1677.  
  1678. Array: ZombieMissWall, Array: ZombieHitNormal, Array: ZombieHitStab,
  1679.  
  1680. Array: ZombieMadness, Array: SoundNemesis, Array: SoundAssassin, Array: SoundSurvivor, Array: SoundSniper, Array: SoundSwarm, Array: SoundMulti, Array: SoundPlague, Array: SoundArmageddon, Array: SoundApocalypse,
  1681.  
  1682. Array: SoundNightmare, Array: GrenadeInfect, Array: GrenadeInfectPlayer, Array: GrenadeFrost, Array: GrenadeFrostPlayer, Array: GrenadeFrostBreak, Array: GrenadeFire, Array: GrenadeFirePlayer,
  1683.  
  1684. Array: SoundAntidote, Array: SoundAmbience_01, Array: SoundAmbience_02, Array: SoundAmbience_03, Array: SoundAmbience_04, Array: SoundAmbience_05, Array: SoundAmbience_06,
  1685.  
  1686. Array: SoundAmbience_07, Array: SoundAmbience_08, Array: SoundAmbience_09, Array: SoundAmbience_10,
  1687.  
  1688. Array: ObjectiveEnts,
  1689.  
  1690. Array: ZombieMissSlash, IsConnected [33], IsAlive [33], IsBot [33], CurrentWeapon [33], PlayerName [33] [32], Float: ZombieSpeed [33], Float: ZombieKnockback [33], ZombieClassName [33] [32], Float: CachedHumanSpeed,
  1691.  
  1692. Float: CachedNemesisSpeed, Float: CachedAssassinSpeed, Float: CachedSurvivorSpeed, Float: CachedSniperSpeed,
  1693.  
  1694. GetCvar [MAX_CVARS], TaskReward [33], UserIp [33] [64],
  1695.  
  1696. HudMsgSync [4]
  1697.  
  1698. #define is_user_valid_connected(%1) (1 <= %1 <= MaxPlayers && IsConnected[%1])
  1699.  
  1700. #define is_user_valid_alive(%1) (1 <= %1 <= MaxPlayers && IsAlive[%1])
  1701.  
  1702. public plugin_precache ( )
  1703. {
  1704. precache_sound ( "fvox/flatline.wav" );
  1705.  
  1706. precache_sound ( "fvox/one.wav" );
  1707.  
  1708. precache_sound ( "fvox/two.wav" );
  1709.  
  1710. precache_sound ( "fvox/three.wav" );
  1711.  
  1712. precache_sound ( "fvox/four.wav" );
  1713.  
  1714. precache_sound ( "fvox/five.wav" );
  1715.  
  1716. precache_sound ( "fvox/six.wav" );
  1717.  
  1718. precache_sound ( "fvox/seven.wav" );
  1719.  
  1720. precache_sound ( "fvox/eight.wav" );
  1721.  
  1722. precache_sound ( "fvox/nine.wav" );
  1723.  
  1724. precache_sound ( "fvox/ten.wav" );
  1725.  
  1726. ModelHuman = ArrayCreate(32, 1);
  1727.  
  1728. ModelNemesis = ArrayCreate(32, 1);
  1729.  
  1730. ModelAssassin = ArrayCreate(32, 1);
  1731.  
  1732. ModelSurvivor = ArrayCreate(32, 1);
  1733.  
  1734. ModelSniper = ArrayCreate(32, 1);
  1735.  
  1736. ModelOwnerHuman = ArrayCreate(32, 1);
  1737.  
  1738. ModelAdminHuman = ArrayCreate ( 32, 1 );
  1739.  
  1740. SoundWinZombies = ArrayCreate(64, 1);
  1741.  
  1742. SoundWinHumans = ArrayCreate(64, 1);
  1743.  
  1744. SoundWinNoOne = ArrayCreate(64, 1);
  1745.  
  1746. ZombieInfect = ArrayCreate(64, 1);
  1747.  
  1748. ZombiePain = ArrayCreate(64, 1);
  1749.  
  1750. NemesisPain = ArrayCreate(64, 1);
  1751.  
  1752. AssassinPain = ArrayCreate(64, 1);
  1753.  
  1754. ZombieDie = ArrayCreate(64, 1);
  1755.  
  1756. ZombieFall = ArrayCreate(64, 1);
  1757.  
  1758. ZombieMissSlash = ArrayCreate(64, 1);
  1759.  
  1760. ZombieMissWall = ArrayCreate(64, 1);
  1761.  
  1762. ZombieHitNormal = ArrayCreate(64, 1);
  1763.  
  1764. ZombieHitStab = ArrayCreate(64, 1);
  1765.  
  1766. ZombieMadness = ArrayCreate(64, 1);
  1767.  
  1768. SoundNemesis = ArrayCreate(64, 1);
  1769.  
  1770. SoundAssassin = ArrayCreate(64, 1);
  1771.  
  1772. SoundSurvivor = ArrayCreate(64, 1);
  1773.  
  1774. SoundSniper = ArrayCreate(64, 1);
  1775.  
  1776. SoundSwarm = ArrayCreate(64, 1);
  1777.  
  1778. SoundMulti = ArrayCreate(64, 1);
  1779.  
  1780. SoundPlague = ArrayCreate(64, 1);
  1781.  
  1782. SoundArmageddon = ArrayCreate(64, 1);
  1783.  
  1784. SoundApocalypse = ArrayCreate(64, 1);
  1785.  
  1786. SoundNightmare = ArrayCreate(64, 1);
  1787.  
  1788. GrenadeInfect = ArrayCreate(64, 1);
  1789.  
  1790. GrenadeInfectPlayer = ArrayCreate(64, 1);
  1791.  
  1792. GrenadeFire = ArrayCreate(64, 1);
  1793.  
  1794. GrenadeFirePlayer = ArrayCreate(64, 1);
  1795.  
  1796. GrenadeFrost = ArrayCreate(64, 1);
  1797.  
  1798. GrenadeFrostPlayer = ArrayCreate(64, 1);
  1799.  
  1800. GrenadeFrostBreak = ArrayCreate(64, 1);
  1801.  
  1802. SoundAntidote = ArrayCreate(64, 1);
  1803.  
  1804. SoundAmbience_01 = ArrayCreate(64, 1);
  1805.  
  1806. SoundAmbience_02 = ArrayCreate(64, 1);
  1807.  
  1808. SoundAmbience_03 = ArrayCreate(64, 1);
  1809.  
  1810. SoundAmbience_04 = ArrayCreate(64, 1);
  1811.  
  1812. SoundAmbience_05 = ArrayCreate(64, 1);
  1813.  
  1814. SoundAmbience_06 = ArrayCreate(64, 1);
  1815.  
  1816. SoundAmbience_07 = ArrayCreate(64, 1);
  1817.  
  1818. SoundAmbience_08 = ArrayCreate(64, 1);
  1819.  
  1820. SoundAmbience_09 = ArrayCreate(64, 1);
  1821.  
  1822. SoundAmbience_10 = ArrayCreate(64, 1);
  1823.  
  1824. ObjectiveEnts = ArrayCreate(32, 1);
  1825.  
  1826. ExtraItemName_01 = ArrayCreate(32, 1);
  1827.  
  1828. ExtraItemCost_01 = ArrayCreate(1, 1);
  1829.  
  1830. ExtraItemTeam_01 = ArrayCreate(1, 1);
  1831.  
  1832. ExtraItemNew = ArrayCreate(1, 1);
  1833.  
  1834. ZClassName_01 = ArrayCreate(32, 1);
  1835.  
  1836. ZClassInfo_01 = ArrayCreate(32, 1);
  1837.  
  1838. ZClassModelsStart_01 = ArrayCreate(1, 1);
  1839.  
  1840. ZClassModelSend_01 = ArrayCreate(1, 1);
  1841.  
  1842. ZClassPlayerModel_01 = ArrayCreate(32, 1);
  1843.  
  1844. ZClassModelIndex_01 = ArrayCreate(1, 1);
  1845.  
  1846. ZClassClawModel_01 = ArrayCreate(32, 1);
  1847.  
  1848. ZClassHealth_01 = ArrayCreate(1, 1);
  1849.  
  1850. ZClassSpeed_01 = ArrayCreate(1, 1);
  1851.  
  1852. ZClassGravity_01 = ArrayCreate(1, 1);
  1853.  
  1854. ZClassKnockback_01 = ArrayCreate(1, 1);
  1855.  
  1856. ZClassNew = ArrayCreate(1, 1);
  1857.  
  1858. g_vflags = ArrayCreate(64, 1)
  1859.  
  1860. g_vname = ArrayCreate(64, 1)
  1861.  
  1862. g_vpwd = ArrayCreate(64, 1)
  1863.  
  1864. g_iLaser = precache_model ( "sprites/laserbeam.spr" );
  1865.  
  1866. SpriteTexture = precache_model("sprites/dot.spr");
  1867.  
  1868. get_configsdir ( File, charsmax ( File ) );
  1869.  
  1870. formatex ( File, charsmax ( File ), "%s/Tags.ini", File );
  1871.  
  1872. new i, Buffer [100];
  1873.  
  1874. register_item ( "Fire Grenade", 4, ZRISES_TEAM_HUMAN );
  1875.  
  1876. register_item ( "Freeze Grenade", 3, ZRISES_TEAM_HUMAN );
  1877.  
  1878. register_item ( "Explosion Grenade", 4, ZRISES_TEAM_HUMAN );
  1879.  
  1880. register_item ( "Deadly Shot\y (Recommended)", 42, ZRISES_TEAM_HUMAN );
  1881.  
  1882. register_item ( "M249 Machine Gun", 9, ZRISES_TEAM_HUMAN );
  1883.  
  1884. register_item ( "G3SG1 Auto Sniper Rifle", 11, ZRISES_TEAM_HUMAN );
  1885.  
  1886. register_item ( "SG550 Auto Sniper Rifle", 10, ZRISES_TEAM_HUMAN );
  1887.  
  1888. register_item ( "AWP Sniper Rifle", 9, ZRISES_TEAM_HUMAN );
  1889.  
  1890. register_item ( "NightVision Googles", 2, ZRISES_TEAM_HUMAN );
  1891.  
  1892. register_item ( "Jetpack + Bazooka", 32, ZRISES_TEAM_HUMAN );
  1893.  
  1894. register_item ( "Unlimited Clip", 10, ZRISES_TEAM_HUMAN );
  1895.  
  1896. register_item ( "Armor\y (100ap)", 5, ZRISES_TEAM_HUMAN );
  1897.  
  1898. register_item ( "Armor\y (200ap)", 10, ZRISES_TEAM_HUMAN );
  1899.  
  1900. register_item ( "Multijump +1", 5, ZRISES_TEAM_HUMAN );
  1901.  
  1902. register_item ( "Tryder", 30, ZRISES_TEAM_HUMAN );
  1903.  
  1904. register_item ( "Golden Kalashnikov\y (AK-47)", 36, ZRISES_TEAM_HUMAN );
  1905.  
  1906. register_item ( "Golden Desert Eagle\y (Night Hawk)", 20, ZRISES_TEAM_HUMAN );
  1907.  
  1908. register_item ( "Survivor", 180, ZRISES_TEAM_HUMAN );
  1909.  
  1910. register_item ( "Sniper", 175, ZRISES_TEAM_HUMAN );
  1911.  
  1912. register_item ( "Nemesis", 140, ZRISES_TEAM_HUMAN );
  1913.  
  1914. register_item ( "Assassin", 140, ZRISES_TEAM_HUMAN );
  1915.  
  1916.  
  1917. register_item ( "Antidote", 15, ZRISES_TEAM_ZOMBIE );
  1918.  
  1919. register_item ( "Infection Grenade", 20, ZRISES_TEAM_ZOMBIE );
  1920.  
  1921. register_item ( "Zombie Madness", 15, ZRISES_TEAM_ZOMBIE );
  1922.  
  1923. register_item ( "Knife Blink", 20, ZRISES_TEAM_ZOMBIE );
  1924.  
  1925.  
  1926. register_zombie_class ( "Classic", "=Balanced=", "z_out_clasic", "z_out_clasic_claws.mdl", 6000, 264, 1.0, 0.82 );
  1927.  
  1928. register_zombie_class ( "Raptor", "Speed ++", "z_out_raptor", "z_out_raptor_claws.mdl", 5250, 309, 0.94, 1.29 );
  1929.  
  1930. register_zombie_class ( "Mutant", "Health ++", "z_out_mutant", "z_out_mutant_claws.mdl", 7500, 244, 1.09, 0.43 );
  1931.  
  1932. register_zombie_class ( "Tight", "Double Jump", "z_out_tight", "z_out_tight_claws.mdl", 4250, 259, 0.57, 1.0 );
  1933.  
  1934. register_zombie_class ( "Regenerator", "Regeneration", "z_out_regenerator", "z_out_raptor_claws.mdl", 5500, 249, 1.0, 0.88 );
  1935.  
  1936. register_zombie_class ( "Predator Blue", "Powerful", "z_out_predator_blue", "z_out_predator_blue_claws.mdl", 6000, 279, 0.74, 0.68 );
  1937.  
  1938. register_zombie_class ( "Hunter", "Silent Killer", "z_out_hunter", "z_out_hunter_claws.mdl", 5450, 274, 0.60, 0.83 );
  1939.  
  1940.  
  1941. if ( ArraySize ( ObjectiveEnts ) == 0 )
  1942. {
  1943. for ( i = 0; i < sizeof ( GetObjectiveEnts ); i ++ )
  1944.  
  1945. ArrayPushString ( ObjectiveEnts, GetObjectiveEnts [i])
  1946. }
  1947.  
  1948. for ( i = 1; i < sizeof ( WEAPONENTNAMES ); i ++ )
  1949. {
  1950. if ( g_fKnockback_Weapon_Power [i] == -1.0 ) continue;
  1951. }
  1952.  
  1953. if ( ArraySize ( ModelHuman ) == 0 )
  1954. {
  1955. for ( i = 0; i < sizeof ( GetHumanModels ); i ++ )
  1956.  
  1957. ArrayPushString ( ModelHuman, GetHumanModels [i] );
  1958. }
  1959.  
  1960. for ( i = 0; i < ArraySize ( ModelHuman ); i ++ )
  1961. {
  1962. ArrayGetString ( ModelHuman, i, Buffer, charsmax ( Buffer ) );
  1963.  
  1964. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  1965.  
  1966. engfunc ( EngFunc_PrecacheModel, Buffer );
  1967. }
  1968.  
  1969. if ( ArraySize ( ModelNemesis ) == 0 )
  1970. {
  1971. for ( i = 0; i < sizeof GetNemesisModels; i ++ )
  1972.  
  1973. ArrayPushString ( ModelNemesis, GetNemesisModels [i] );
  1974. }
  1975.  
  1976. for ( i = 0; i < ArraySize ( ModelNemesis ); i ++ )
  1977. {
  1978. ArrayGetString( ModelNemesis, i, Buffer, charsmax ( Buffer ) );
  1979.  
  1980. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  1981.  
  1982. engfunc ( EngFunc_PrecacheModel, Buffer );
  1983. }
  1984.  
  1985. if ( ArraySize ( ModelAssassin ) == 0 )
  1986. {
  1987. for ( i = 0; i < sizeof ( GetAssassinModels ); i ++ )
  1988.  
  1989. ArrayPushString ( ModelAssassin, GetAssassinModels [i] );
  1990. }
  1991.  
  1992. for ( i = 0; i < ArraySize ( ModelAssassin ); i ++ )
  1993. {
  1994. ArrayGetString ( ModelAssassin, i, Buffer, charsmax ( Buffer ) );
  1995.  
  1996. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  1997.  
  1998. engfunc ( EngFunc_PrecacheModel, Buffer );
  1999. }
  2000.  
  2001. if ( ArraySize ( ModelSurvivor ) == 0 )
  2002. {
  2003. for ( i = 0; i < sizeof ( GetSurvivorModels ); i ++ )
  2004.  
  2005. ArrayPushString ( ModelSurvivor, GetSurvivorModels [i] );
  2006. }
  2007.  
  2008. for ( i = 0; i < ArraySize ( ModelSurvivor); i ++ )
  2009. {
  2010. ArrayGetString( ModelSurvivor, i, Buffer, charsmax ( Buffer ) );
  2011.  
  2012. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  2013.  
  2014. engfunc ( EngFunc_PrecacheModel, Buffer );
  2015. }
  2016.  
  2017. if ( ArraySize ( ModelSniper ) == 0 )
  2018. {
  2019. for ( i = 0; i < sizeof ( GetSniperModels ); i ++ )
  2020.  
  2021. ArrayPushString ( ModelSniper, GetSniperModels [i] );
  2022. }
  2023.  
  2024. for ( i = 0; i < ArraySize ( ModelSniper ); i ++ )
  2025. {
  2026. ArrayGetString( ModelSniper, i, Buffer, charsmax ( Buffer ) );
  2027.  
  2028. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  2029.  
  2030. engfunc ( EngFunc_PrecacheModel, Buffer );
  2031. }
  2032.  
  2033. if ( ArraySize ( ModelOwnerHuman ) == 0 )
  2034. {
  2035. for ( i = 0; i < sizeof ( GetOwnerModels ); i ++ )
  2036.  
  2037. ArrayPushString ( ModelOwnerHuman, GetOwnerModels [i] );
  2038. }
  2039.  
  2040. for ( i = 0; i < ArraySize ( ModelOwnerHuman ); i ++ )
  2041. {
  2042. ArrayGetString ( ModelOwnerHuman, i, Buffer, charsmax ( Buffer ) );
  2043.  
  2044. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  2045.  
  2046. engfunc ( EngFunc_PrecacheModel, Buffer );
  2047. }
  2048.  
  2049. if ( ArraySize ( ModelAdminHuman ) == 0 )
  2050. {
  2051. for ( i = 0; i < sizeof ( GetAdminModels ); i ++ )
  2052.  
  2053. ArrayPushString ( ModelAdminHuman, GetAdminModels [i] );
  2054. }
  2055.  
  2056. for ( i = 0; i < ArraySize ( ModelAdminHuman ); i ++ )
  2057. {
  2058. ArrayGetString ( ModelAdminHuman, i, Buffer, charsmax ( Buffer ) );
  2059.  
  2060. format ( Buffer, charsmax ( Buffer ), "models/player/%s/%s.mdl", Buffer, Buffer );
  2061.  
  2062. engfunc ( EngFunc_PrecacheModel, Buffer );
  2063. }
  2064.  
  2065. engfunc ( EngFunc_PrecacheModel, GetModelKnifeHuman );
  2066.  
  2067. engfunc ( EngFunc_PrecacheModel, GetModelKnifeNemesis );
  2068.  
  2069. engfunc ( EngFunc_PrecacheModel, GetModelKnifeAssassin );
  2070.  
  2071. engfunc ( EngFunc_PrecacheModel, vGetModelAwpSniper );
  2072.  
  2073. engfunc ( EngFunc_PrecacheModel, pGetModelAwpSniper );
  2074.  
  2075. engfunc ( EngFunc_PrecacheModel, GetModelGrenadeInfect );
  2076.  
  2077. engfunc ( EngFunc_PrecacheModel, GetModelGrenadeExplode );
  2078.  
  2079. engfunc ( EngFunc_PrecacheModel, GetModelGrenadeFire );
  2080.  
  2081. engfunc ( EngFunc_PrecacheModel, GetModelGrenadeFrost );
  2082.  
  2083. engfunc ( EngFunc_PrecacheModel, GetModelGrenadeKilling );
  2084.  
  2085. engfunc ( EngFunc_PrecacheModel, GetModelTripmine );
  2086.  
  2087. engfunc ( EngFunc_PrecacheModel, Goldenak47_v );
  2088.  
  2089. engfunc ( EngFunc_PrecacheModel, Goldenak47_p );
  2090.  
  2091. engfunc ( EngFunc_PrecacheModel, Goldev );
  2092.  
  2093. engfunc ( EngFunc_PrecacheModel, Goldep );
  2094.  
  2095. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/mine_activate.wav" );
  2096.  
  2097. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/mine_charge.wav" );
  2098.  
  2099. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/mine_deploy.wav" );
  2100.  
  2101. TrailSpr = engfunc ( EngFunc_PrecacheModel, "sprites/laserbeam.spr" );
  2102.  
  2103. ExploSpr = engfunc ( EngFunc_PrecacheModel, "sprites/shockwave.spr" );
  2104.  
  2105. FlameSpr = engfunc ( EngFunc_PrecacheModel, "sprites/ZombieOutstanding/z_out_flame.spr" );
  2106.  
  2107. SmokeSpr = engfunc ( EngFunc_PrecacheModel, "sprites/black_smoke3.spr" );
  2108.  
  2109. GlassSpr = engfunc ( EngFunc_PrecacheModel, "models/glassgibs.mdl" );
  2110.  
  2111. HExplode = engfunc ( EngFunc_PrecacheModel, "sprites/zerogxplode.spr" );
  2112.  
  2113. JPSmokeSpr = engfunc ( EngFunc_PrecacheModel, "sprites/smoke.spr" );
  2114.  
  2115. xFireBallSpr = engfunc ( EngFunc_PrecacheModel, "sprites/xfireball3.spr" );
  2116.  
  2117. WhiteSpr = engfunc ( EngFunc_PrecacheModel, "sprites/white.spr" );
  2118.  
  2119. engfunc ( EngFunc_PrecacheSound, "fvox/flatline.wav" );
  2120.  
  2121. engfunc ( EngFunc_PrecacheModel, GetModelRocket );
  2122.  
  2123. precache_model ( "models/p_egon.mdl" );
  2124.  
  2125. precache_model ( "models/v_egon.mdl" );
  2126.  
  2127. precache_model ( "models/w_egon.mdl" );
  2128.  
  2129. if ( ArraySize ( SoundWinZombies ) == 0 )
  2130. {
  2131. for ( i = 0; i < sizeof ( GetSoundWinZombies ); i ++ )
  2132.  
  2133. ArrayPushString ( SoundWinZombies, GetSoundWinZombies [i] );
  2134. }
  2135.  
  2136. for ( i = 0; i < ArraySize ( SoundWinZombies ); i ++ )
  2137. {
  2138. ArrayGetString ( SoundWinZombies, i, Buffer, charsmax ( Buffer ) );
  2139.  
  2140. engfunc ( EngFunc_PrecacheSound, Buffer );
  2141. }
  2142.  
  2143. if ( ArraySize ( SoundWinHumans ) == 0 )
  2144. {
  2145. for ( i = 0; i < sizeof ( GetSoundWinHumans ); i ++ )
  2146.  
  2147. ArrayPushString ( SoundWinHumans, GetSoundWinHumans [i] );
  2148. }
  2149.  
  2150. for ( i = 0; i < ArraySize ( SoundWinHumans ); i ++ )
  2151. {
  2152. ArrayGetString ( SoundWinHumans, i, Buffer, charsmax ( Buffer ) );
  2153.  
  2154. engfunc ( EngFunc_PrecacheSound, Buffer );
  2155. }
  2156.  
  2157. if ( ArraySize ( SoundWinNoOne ) == 0 )
  2158. {
  2159. for ( i = 0; i < sizeof ( GetSoundWinNoOne ); i ++ )
  2160.  
  2161. ArrayPushString ( SoundWinNoOne, GetSoundWinNoOne [i] );
  2162. }
  2163.  
  2164. for ( i = 0; i < ArraySize ( SoundWinNoOne ); i ++ )
  2165. {
  2166. ArrayGetString ( SoundWinNoOne, i, Buffer, charsmax ( Buffer ) );
  2167.  
  2168. engfunc ( EngFunc_PrecacheSound, Buffer );
  2169. }
  2170.  
  2171. if ( ArraySize ( ZombieInfect ) == 0 )
  2172. {
  2173. for ( i = 0; i < sizeof ( GetSoundZombieInfect ); i ++ )
  2174.  
  2175. ArrayPushString ( ZombieInfect, GetSoundZombieInfect [i] );
  2176. }
  2177.  
  2178. for ( i = 0; i < ArraySize ( ZombieInfect ); i ++ )
  2179. {
  2180. ArrayGetString ( ZombieInfect, i, Buffer, charsmax ( Buffer ) );
  2181.  
  2182. engfunc ( EngFunc_PrecacheSound, Buffer );
  2183. }
  2184.  
  2185. if ( ArraySize ( ZombiePain ) == 0 )
  2186. {
  2187. for ( i = 0; i < sizeof ( GetSoundZombiePain ); i ++ )
  2188.  
  2189. ArrayPushString ( ZombiePain, GetSoundZombiePain [i] );
  2190. }
  2191.  
  2192. for ( i = 0; i < ArraySize ( ZombiePain ); i ++ )
  2193. {
  2194. ArrayGetString ( ZombiePain, i, Buffer, charsmax ( Buffer ) );
  2195.  
  2196. engfunc ( EngFunc_PrecacheSound, Buffer );
  2197. }
  2198.  
  2199. if ( ArraySize ( NemesisPain ) == 0 )
  2200. {
  2201. for ( i = 0; i < sizeof ( GetSoundNemesisPain ); i ++ )
  2202.  
  2203. ArrayPushString ( NemesisPain, GetSoundNemesisPain [i] );
  2204. }
  2205.  
  2206. for ( i = 0; i < ArraySize ( NemesisPain ); i ++ )
  2207. {
  2208. ArrayGetString ( NemesisPain, i, Buffer, charsmax ( Buffer ) );
  2209.  
  2210. engfunc ( EngFunc_PrecacheSound, Buffer );
  2211. }
  2212.  
  2213. if ( ArraySize ( AssassinPain ) == 0 )
  2214. {
  2215. for ( i = 0; i < sizeof ( GetSoundAssassinPain ); i ++ )
  2216.  
  2217. ArrayPushString ( AssassinPain, GetSoundAssassinPain [i] );
  2218. }
  2219.  
  2220. for ( i = 0; i < ArraySize ( AssassinPain ); i ++ )
  2221. {
  2222. ArrayGetString ( AssassinPain, i, Buffer, charsmax ( Buffer ) );
  2223.  
  2224. engfunc ( EngFunc_PrecacheSound, Buffer );
  2225. }
  2226.  
  2227. if ( ArraySize ( ZombieDie ) == 0 )
  2228. {
  2229. for ( i = 0; i < sizeof ( GetSoundZombieDie ); i ++ )
  2230.  
  2231. ArrayPushString ( ZombieDie, GetSoundZombieDie [i] );
  2232. }
  2233.  
  2234. for ( i = 0; i < ArraySize ( ZombieDie ); i ++ )
  2235. {
  2236. ArrayGetString ( ZombieDie, i, Buffer, charsmax ( Buffer ) );
  2237.  
  2238. engfunc ( EngFunc_PrecacheSound, Buffer );
  2239. }
  2240.  
  2241. if ( ArraySize ( ZombieFall ) == 0 )
  2242. {
  2243. for ( i = 0; i < sizeof ( GetSoundZombieFall ); i ++ )
  2244.  
  2245. ArrayPushString ( ZombieFall, GetSoundZombieFall [i] );
  2246. }
  2247.  
  2248.  
  2249. for ( i = 0; i < ArraySize ( ZombieFall ); i ++ )
  2250. {
  2251. ArrayGetString ( ZombieFall, i, Buffer, charsmax ( Buffer ) );
  2252.  
  2253. engfunc ( EngFunc_PrecacheSound, Buffer );
  2254. }
  2255.  
  2256. if ( ArraySize ( ZombieMissSlash ) == 0 )
  2257. {
  2258. for ( i = 0; i < sizeof ( GetSoundZombieMissSlash ); i ++ )
  2259.  
  2260. ArrayPushString ( ZombieMissSlash, GetSoundZombieMissSlash [i] );
  2261. }
  2262.  
  2263. for ( i = 0; i < ArraySize ( ZombieMissSlash ); i ++ )
  2264. {
  2265. ArrayGetString ( ZombieMissSlash, i, Buffer, charsmax ( Buffer ) );
  2266.  
  2267. engfunc ( EngFunc_PrecacheSound, Buffer );
  2268. }
  2269.  
  2270. if ( ArraySize ( ZombieMissWall ) == 0 )
  2271. {
  2272. for ( i = 0; i < sizeof ( GetSoundZombieMissWall ); i ++ )
  2273.  
  2274. ArrayPushString ( ZombieMissWall, GetSoundZombieMissWall [i] );
  2275. }
  2276.  
  2277. for ( i = 0; i < ArraySize ( ZombieMissWall ); i ++ )
  2278. {
  2279. ArrayGetString ( ZombieMissWall, i, Buffer, charsmax ( Buffer ) );
  2280.  
  2281. engfunc ( EngFunc_PrecacheSound, Buffer );
  2282. }
  2283.  
  2284. if ( ArraySize ( ZombieHitNormal ) == 0 )
  2285. {
  2286. for ( i = 0; i < sizeof ( GetSoundZombieHitNormal ); i ++ )
  2287.  
  2288. ArrayPushString ( ZombieHitNormal, GetSoundZombieHitNormal [i] );
  2289. }
  2290.  
  2291. for ( i = 0; i < ArraySize ( ZombieHitNormal ); i ++ )
  2292. {
  2293. ArrayGetString ( ZombieHitNormal, i, Buffer, charsmax ( Buffer ) );
  2294.  
  2295. engfunc ( EngFunc_PrecacheSound, Buffer );
  2296. }
  2297.  
  2298. if ( ArraySize ( ZombieHitStab ) == 0 )
  2299. {
  2300. for ( i = 0; i < sizeof ( GetSoundZombieHitStab ); i ++ )
  2301.  
  2302. ArrayPushString ( ZombieHitStab, GetSoundZombieHitStab [i] );
  2303. }
  2304.  
  2305. for ( i = 0; i < ArraySize ( ZombieHitStab ); i ++ )
  2306. {
  2307. ArrayGetString ( ZombieHitStab, i, Buffer, charsmax ( Buffer ) );
  2308.  
  2309. engfunc ( EngFunc_PrecacheSound, Buffer );
  2310. }
  2311.  
  2312. if ( ArraySize ( ZombieMadness ) == 0 )
  2313. {
  2314. for ( i = 0; i < sizeof ( GetSoundZombieMadness ); i ++ )
  2315.  
  2316. ArrayPushString ( ZombieMadness, GetSoundZombieMadness [i] );
  2317. }
  2318.  
  2319. for ( i = 0; i < ArraySize ( ZombieMadness ); i ++ )
  2320. {
  2321. ArrayGetString ( ZombieMadness, i, Buffer, charsmax ( Buffer ) );
  2322.  
  2323. engfunc ( EngFunc_PrecacheSound, Buffer );
  2324. }
  2325.  
  2326. if ( ArraySize ( SoundNemesis ) == 0 )
  2327. {
  2328. for ( i = 0; i < sizeof ( GetSoundNemesis ); i ++ )
  2329.  
  2330. ArrayPushString ( SoundNemesis, GetSoundNemesis [i] );
  2331. }
  2332.  
  2333. for ( i = 0; i < ArraySize ( SoundNemesis ); i ++ )
  2334. {
  2335. ArrayGetString ( SoundNemesis, i, Buffer, charsmax ( Buffer ) );
  2336.  
  2337. engfunc ( EngFunc_PrecacheSound, Buffer );
  2338. }
  2339.  
  2340. if ( ArraySize ( SoundAssassin ) == 0 )
  2341. {
  2342. for ( i = 0; i < sizeof ( GetSoundAssassin ); i ++ )
  2343.  
  2344. ArrayPushString ( SoundAssassin, GetSoundAssassin [i] );
  2345. }
  2346.  
  2347. for ( i = 0; i < ArraySize ( SoundAssassin ); i ++ )
  2348. {
  2349. ArrayGetString ( SoundAssassin, i, Buffer, charsmax ( Buffer ) );
  2350.  
  2351. engfunc ( EngFunc_PrecacheSound, Buffer );
  2352. }
  2353.  
  2354. if ( ArraySize ( SoundSurvivor ) == 0 )
  2355. {
  2356. for ( i = 0; i < sizeof ( GetSoundSurvivor ); i ++ )
  2357.  
  2358. ArrayPushString ( SoundSurvivor, GetSoundSurvivor [i] );
  2359. }
  2360.  
  2361. for ( i = 0; i < ArraySize ( SoundSurvivor ); i ++ )
  2362. {
  2363. ArrayGetString ( SoundSurvivor, i, Buffer, charsmax ( Buffer ) );
  2364.  
  2365. engfunc ( EngFunc_PrecacheSound, Buffer );
  2366. }
  2367.  
  2368. if ( ArraySize ( SoundSniper ) == 0 )
  2369. {
  2370. for ( i = 0; i < sizeof ( GetSoundSniper ); i ++ )
  2371.  
  2372. ArrayPushString ( SoundSniper, GetSoundSniper [i] );
  2373. }
  2374.  
  2375. for ( i = 0; i < ArraySize ( SoundSniper ); i ++ )
  2376. {
  2377. ArrayGetString ( SoundSniper, i, Buffer, charsmax ( Buffer ) );
  2378.  
  2379. engfunc ( EngFunc_PrecacheSound, Buffer );
  2380. }
  2381.  
  2382. if ( ArraySize ( SoundSwarm ) == 0 )
  2383. {
  2384. for ( i = 0; i < sizeof ( GetSoundSwarm ); i ++ )
  2385.  
  2386. ArrayPushString ( SoundSwarm, GetSoundSwarm [i] );
  2387. }
  2388.  
  2389. for ( i = 0; i < ArraySize ( SoundSwarm ); i ++ )
  2390. {
  2391. ArrayGetString ( SoundSwarm, i, Buffer, charsmax ( Buffer ) );
  2392.  
  2393. engfunc ( EngFunc_PrecacheSound, Buffer );
  2394. }
  2395.  
  2396. if ( ArraySize ( SoundMulti ) == 0 )
  2397. {
  2398. for ( i = 0; i < sizeof ( GetSoundMulti ); i ++ )
  2399.  
  2400. ArrayPushString ( SoundMulti, GetSoundMulti [i] );
  2401. }
  2402.  
  2403. for ( i = 0; i < ArraySize ( SoundMulti ); i ++ )
  2404. {
  2405. ArrayGetString ( SoundMulti, i, Buffer, charsmax ( Buffer ) );
  2406.  
  2407. engfunc ( EngFunc_PrecacheSound, Buffer );
  2408. }
  2409.  
  2410. if ( ArraySize ( SoundPlague ) == 0 )
  2411. {
  2412. for ( i = 0; i < sizeof ( GetSoundPlague ); i ++ )
  2413.  
  2414. ArrayPushString ( SoundPlague, GetSoundPlague [i] );
  2415. }
  2416.  
  2417. for ( i = 0; i < ArraySize ( SoundPlague ); i ++ )
  2418. {
  2419. ArrayGetString ( SoundPlague, i, Buffer, charsmax ( Buffer ) );
  2420.  
  2421. engfunc ( EngFunc_PrecacheSound, Buffer );
  2422. }
  2423.  
  2424. if ( ArraySize ( SoundArmageddon ) == 0 )
  2425. {
  2426. for ( i = 0; i < sizeof ( GetSoundArmageddon ); i ++ )
  2427.  
  2428. ArrayPushString ( SoundArmageddon, GetSoundArmageddon [i] );
  2429. }
  2430.  
  2431. for ( i = 0; i < ArraySize ( SoundArmageddon ); i ++ )
  2432. {
  2433. ArrayGetString ( SoundArmageddon, i, Buffer, charsmax ( Buffer ) );
  2434.  
  2435. engfunc ( EngFunc_PrecacheSound, Buffer );
  2436. }
  2437.  
  2438. if ( ArraySize ( SoundApocalypse ) == 0 )
  2439. {
  2440. for ( i = 0; i < sizeof ( GetSoundApocalypse ); i ++ )
  2441.  
  2442. ArrayPushString ( SoundApocalypse, GetSoundApocalypse [i] );
  2443. }
  2444.  
  2445. for ( i = 0; i < ArraySize ( SoundApocalypse ); i ++ )
  2446. {
  2447. ArrayGetString ( SoundApocalypse, i, Buffer, charsmax ( Buffer ) );
  2448.  
  2449. engfunc ( EngFunc_PrecacheSound, Buffer );
  2450. }
  2451.  
  2452. if ( ArraySize ( SoundNightmare ) == 0 )
  2453. {
  2454. for ( i = 0; i < sizeof ( GetSoundNightmare ); i ++ )
  2455.  
  2456. ArrayPushString ( SoundNightmare, GetSoundNightmare [i] );
  2457. }
  2458.  
  2459. for ( i = 0; i < ArraySize ( SoundNightmare ); i ++ )
  2460. {
  2461. ArrayGetString ( SoundNightmare, i, Buffer, charsmax ( Buffer ) );
  2462.  
  2463. engfunc ( EngFunc_PrecacheSound, Buffer );
  2464. }
  2465.  
  2466. if ( ArraySize ( GrenadeInfect ) == 0 )
  2467. {
  2468. for ( i = 0; i < sizeof ( GetSoundGrenadeInfect ); i ++ )
  2469.  
  2470. ArrayPushString ( GrenadeInfect, GetSoundGrenadeInfect [i] );
  2471. }
  2472.  
  2473. for ( i = 0; i < ArraySize ( GrenadeInfect ); i ++ )
  2474. {
  2475. ArrayGetString ( GrenadeInfect, i, Buffer, charsmax ( Buffer ) );
  2476.  
  2477. engfunc ( EngFunc_PrecacheSound, Buffer );
  2478. }
  2479.  
  2480. if ( ArraySize ( GrenadeInfectPlayer ) == 0 )
  2481. {
  2482. for ( i = 0; i < sizeof ( GetSoundGrenadeInfectPlayer ); i ++ )
  2483.  
  2484. ArrayPushString ( GrenadeInfectPlayer, GetSoundGrenadeInfectPlayer [i] );
  2485. }
  2486.  
  2487. for ( i = 0; i < ArraySize ( GrenadeInfectPlayer ); i ++ )
  2488. {
  2489. ArrayGetString ( GrenadeInfectPlayer, i, Buffer, charsmax ( Buffer ) );
  2490.  
  2491. engfunc ( EngFunc_PrecacheSound, Buffer );
  2492. }
  2493.  
  2494. if ( ArraySize ( GrenadeFire ) == 0 )
  2495. {
  2496. for ( i = 0; i < sizeof ( GetSoundGrenadeFire ); i ++ )
  2497.  
  2498. ArrayPushString ( GrenadeFire, GetSoundGrenadeFire [i] );
  2499. }
  2500.  
  2501. for ( i = 0; i < ArraySize ( GrenadeFire ); i ++ )
  2502. {
  2503. ArrayGetString ( GrenadeFire, i, Buffer, charsmax ( Buffer ) );
  2504.  
  2505. engfunc ( EngFunc_PrecacheSound, Buffer );
  2506. }
  2507.  
  2508. if ( ArraySize ( GrenadeFirePlayer ) == 0 )
  2509. {
  2510. for ( i = 0; i < sizeof ( GetSoundGrenadeFirePlayer ); i ++ )
  2511.  
  2512. ArrayPushString ( GrenadeFirePlayer, GetSoundGrenadeFirePlayer [i] );
  2513. }
  2514.  
  2515. for ( i = 0; i < ArraySize ( GrenadeFirePlayer ); i ++ )
  2516. {
  2517. ArrayGetString ( GrenadeFirePlayer, i, Buffer, charsmax ( Buffer ) );
  2518.  
  2519. engfunc ( EngFunc_PrecacheSound, Buffer );
  2520. }
  2521.  
  2522. if ( ArraySize ( GrenadeFrost ) == 0 )
  2523. {
  2524. for ( i = 0; i < sizeof ( GetSoundGrenadeFrost ); i ++ )
  2525.  
  2526. ArrayPushString ( GrenadeFrost, GetSoundGrenadeFrost [i] );
  2527. }
  2528.  
  2529. for ( i = 0; i < ArraySize ( GrenadeFrost ); i ++ )
  2530. {
  2531. ArrayGetString ( GrenadeFrost, i, Buffer, charsmax ( Buffer ) );
  2532.  
  2533. engfunc ( EngFunc_PrecacheSound, Buffer );
  2534. }
  2535.  
  2536. if ( ArraySize ( GrenadeFrostPlayer ) == 0 )
  2537. {
  2538. for ( i = 0; i < sizeof ( GetSoundGrenadeFrostPlayer ); i ++ )
  2539.  
  2540. ArrayPushString ( GrenadeFrostPlayer, GetSoundGrenadeFrostPlayer [i] );
  2541. }
  2542.  
  2543.  
  2544. for ( i = 0; i < ArraySize ( GrenadeFrostPlayer ); i ++ )
  2545. {
  2546. ArrayGetString ( GrenadeFrostPlayer, i, Buffer, charsmax ( Buffer ) );
  2547.  
  2548. engfunc ( EngFunc_PrecacheSound, Buffer );
  2549. }
  2550.  
  2551. if ( ArraySize ( GrenadeFrostBreak ) == 0 )
  2552. {
  2553. for ( i = 0; i < sizeof ( GetSoundGrenadeFrostBreak ); i ++ )
  2554.  
  2555. ArrayPushString ( GrenadeFrostBreak, GetSoundGrenadeFrostBreak [i] );
  2556. }
  2557.  
  2558. for ( i = 0; i < ArraySize ( GrenadeFrostBreak ); i ++ )
  2559. {
  2560. ArrayGetString ( GrenadeFrostBreak, i, Buffer, charsmax ( Buffer ) );
  2561.  
  2562. engfunc ( EngFunc_PrecacheSound, Buffer );
  2563. }
  2564.  
  2565. if ( ArraySize ( SoundAntidote ) == 0 )
  2566. {
  2567. for ( i = 0; i < sizeof ( GetSoundAntidote ); i ++ )
  2568.  
  2569. ArrayPushString ( SoundAntidote, GetSoundAntidote [i] );
  2570. }
  2571.  
  2572. for ( i = 0; i < ArraySize ( SoundAntidote ); i ++ )
  2573. {
  2574. ArrayGetString ( SoundAntidote, i, Buffer, charsmax ( Buffer ) );
  2575.  
  2576. engfunc ( EngFunc_PrecacheSound, Buffer );
  2577. }
  2578.  
  2579. if ( ArraySize ( SoundAmbience_01 ) == 0 )
  2580. {
  2581. for ( i = 0; i < sizeof ( GetSoundAmbienceInfection ); i ++ )
  2582.  
  2583. ArrayPushString ( SoundAmbience_01, GetSoundAmbienceInfection [i] )
  2584.  
  2585. }
  2586.  
  2587. for ( i = 0; i < ArraySize ( SoundAmbience_01 ); i ++ )
  2588. {
  2589. ArrayGetString ( SoundAmbience_01, i, Buffer, charsmax ( Buffer ) );
  2590.  
  2591. engfunc ( EngFunc_PrecacheSound, Buffer );
  2592. }
  2593.  
  2594. if ( ArraySize ( SoundAmbience_02 ) == 0 )
  2595. {
  2596. for ( i = 0; i < sizeof ( GetSoundAmbienceNemesis ); i ++ )
  2597.  
  2598. ArrayPushString ( SoundAmbience_02, GetSoundAmbienceNemesis [i] )
  2599.  
  2600. }
  2601.  
  2602. for ( i = 0; i < ArraySize ( SoundAmbience_02 ); i ++ )
  2603. {
  2604. ArrayGetString ( SoundAmbience_02, i, Buffer, charsmax ( Buffer ) );
  2605.  
  2606. engfunc ( EngFunc_PrecacheSound, Buffer );
  2607. }
  2608.  
  2609. if ( ArraySize ( SoundAmbience_03 ) == 0 )
  2610. {
  2611. for ( i = 0; i < sizeof ( GetSoundAmbienceAssassin ); i ++ )
  2612.  
  2613. ArrayPushString ( SoundAmbience_03, GetSoundAmbienceAssassin [i] )
  2614.  
  2615. }
  2616.  
  2617. for ( i = 0; i < ArraySize ( SoundAmbience_03 ); i ++ )
  2618. {
  2619. ArrayGetString ( SoundAmbience_03, i, Buffer, charsmax ( Buffer ) );
  2620.  
  2621. engfunc ( EngFunc_PrecacheSound, Buffer );
  2622. }
  2623.  
  2624. if ( ArraySize ( SoundAmbience_04 ) == 0 )
  2625. {
  2626. for ( i = 0; i < sizeof ( GetSoundAmbienceNemesis ); i ++ )
  2627.  
  2628. ArrayPushString ( SoundAmbience_04, GetSoundAmbienceSurvivor [i] )
  2629.  
  2630. }
  2631.  
  2632. for ( i = 0; i < ArraySize ( SoundAmbience_04 ); i ++ )
  2633. {
  2634. ArrayGetString ( SoundAmbience_04, i, Buffer, charsmax ( Buffer ) );
  2635.  
  2636. engfunc ( EngFunc_PrecacheSound, Buffer );
  2637. }
  2638.  
  2639. if ( ArraySize ( SoundAmbience_05 ) == 0 )
  2640. {
  2641. for ( i = 0; i < sizeof ( GetSoundAmbienceSniper ); i ++ )
  2642.  
  2643. ArrayPushString ( SoundAmbience_05, GetSoundAmbienceSniper [i] )
  2644.  
  2645. }
  2646.  
  2647. for ( i = 0; i < ArraySize ( SoundAmbience_05 ); i ++ )
  2648. {
  2649. ArrayGetString ( SoundAmbience_05, i, Buffer, charsmax ( Buffer ) );
  2650.  
  2651. engfunc ( EngFunc_PrecacheSound, Buffer );
  2652. }
  2653.  
  2654. if ( ArraySize ( SoundAmbience_06 ) == 0 )
  2655. {
  2656. for ( i = 0; i < sizeof ( GetSoundAmbienceSwarm ); i ++ )
  2657.  
  2658. ArrayPushString ( SoundAmbience_06, GetSoundAmbienceSwarm [i] )
  2659.  
  2660. }
  2661.  
  2662. for ( i = 0; i < ArraySize ( SoundAmbience_06 ); i ++ )
  2663. {
  2664. ArrayGetString ( SoundAmbience_06, i, Buffer, charsmax ( Buffer ) );
  2665.  
  2666. engfunc ( EngFunc_PrecacheSound, Buffer );
  2667. }
  2668.  
  2669. if ( ArraySize ( SoundAmbience_07 ) == 0 )
  2670. {
  2671. for ( i = 0; i < sizeof ( GetSoundAmbiencePlague ); i ++ )
  2672.  
  2673. ArrayPushString ( SoundAmbience_07, GetSoundAmbiencePlague [i] )
  2674.  
  2675. }
  2676.  
  2677. for ( i = 0; i < ArraySize ( SoundAmbience_07 ); i ++ )
  2678. {
  2679. ArrayGetString ( SoundAmbience_07, i, Buffer, charsmax ( Buffer ) );
  2680.  
  2681. engfunc ( EngFunc_PrecacheSound, Buffer );
  2682. }
  2683.  
  2684. if ( ArraySize ( SoundAmbience_08 ) == 0 )
  2685. {
  2686. for ( i = 0; i < sizeof ( GetSoundAmbienceArmageddon); i ++ )
  2687.  
  2688. ArrayPushString ( SoundAmbience_08, GetSoundAmbienceArmageddon [i] )
  2689.  
  2690. }
  2691.  
  2692. for ( i = 0; i < ArraySize ( SoundAmbience_08 ); i ++ )
  2693. {
  2694. ArrayGetString ( SoundAmbience_08, i, Buffer, charsmax ( Buffer ) );
  2695.  
  2696. engfunc ( EngFunc_PrecacheSound, Buffer );
  2697. }
  2698.  
  2699. if ( ArraySize ( SoundAmbience_09 ) == 0 )
  2700. {
  2701. for ( i = 0; i < sizeof ( GetSoundAmbienceApocalypse ); i ++ )
  2702.  
  2703. ArrayPushString ( SoundAmbience_09, GetSoundAmbienceApocalypse [i] )
  2704.  
  2705. }
  2706.  
  2707. for ( i = 0; i < ArraySize ( SoundAmbience_09 ); i ++ )
  2708. {
  2709. ArrayGetString ( SoundAmbience_09, i, Buffer, charsmax ( Buffer ) );
  2710.  
  2711. engfunc ( EngFunc_PrecacheSound, Buffer );
  2712. }
  2713.  
  2714. if ( ArraySize ( SoundAmbience_10 ) == 0 )
  2715. {
  2716. for ( i = 0; i < sizeof ( GetSoundAmbienceNightmare ); i ++ )
  2717.  
  2718. ArrayPushString ( SoundAmbience_10, GetSoundAmbienceNightmare [i] )
  2719.  
  2720. }
  2721.  
  2722. for ( i = 0; i < ArraySize ( SoundAmbience_10 ); i ++ )
  2723. {
  2724. ArrayGetString ( SoundAmbience_10, i, Buffer, charsmax ( Buffer ) );
  2725.  
  2726. engfunc ( EngFunc_PrecacheSound, Buffer );
  2727. }
  2728.  
  2729. engfunc ( EngFunc_PrecacheSound, "items/9mmclip1.wav" );
  2730.  
  2731. engfunc ( EngFunc_PrecacheSound, "player/bhit_helmet-1.wav" );
  2732.  
  2733. engfunc ( EngFunc_PrecacheSound, "items/tr_kevlar.wav" );
  2734.  
  2735. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/rocket_fire.wav" );
  2736.  
  2737. engfunc ( EngFunc_PrecacheSound, "items/gunpickup2.wav" );
  2738.  
  2739. engfunc ( EngFunc_PrecacheSound, "items/9mmclip2.wav" );
  2740.  
  2741. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/jetpack_fly.wav" );
  2742.  
  2743. engfunc ( EngFunc_PrecacheSound, "ZombieOutstanding/jetpack_blow.wav" );
  2744.  
  2745. new Entity;
  2746.  
  2747. Entity = engfunc ( EngFunc_CreateNamedEntity, engfunc ( EngFunc_AllocString, "hostage_entity" ) );
  2748.  
  2749. if ( pev_valid ( Entity ) )
  2750. {
  2751. engfunc ( EngFunc_SetOrigin, Entity, Float: {8192.0,8192.0,8192.0} );
  2752.  
  2753. dllfunc ( DLLFunc_Spawn, Entity );
  2754. }
  2755.  
  2756. Entity = engfunc ( EngFunc_CreateNamedEntity, engfunc ( EngFunc_AllocString, "env_fog" ) );
  2757.  
  2758. if ( pev_valid ( Entity ) )
  2759. {
  2760. fm_set_kvd ( Entity, "density", "0.00084655", "env_fog" );
  2761.  
  2762. fm_set_kvd ( Entity, "rendercolor", "121 121 121", "env_fog" );
  2763. }
  2764.  
  2765. set_lights ( "d" );
  2766.  
  2767. fwSpawn = register_forward ( FM_Spawn, "fmSpawn" );
  2768.  
  2769. fwPrecacheSound = register_forward ( FM_PrecacheSound, "fmPrecacheSound" );
  2770. }
  2771.  
  2772. public AddArmor(id)
  2773. {
  2774. static CsArmorType:at;
  2775. if (IsAlive[id])
  2776. {
  2777. if (containi(g_vip_flags[id], "A") != -1 && cs_get_user_armor(id, at) < 100)
  2778. cs_set_user_armor(id, 65, CS_ARMOR_VESTHELM);
  2779.  
  2780. if (containi(g_vip_flags[id], "H") != -1 && get_user_health(id)<300)
  2781. set_user_health(id, 300);
  2782. }
  2783. }
  2784.  
  2785. public client_authorized(id)
  2786. {
  2787. static pwd[32], field[32], reqname[64], reqpwd[64], reqflags[64], i;
  2788.  
  2789. get_cvar_string("amx_password_field", field, 31);
  2790.  
  2791. get_user_ip(id, UserIp[id], charsmax(UserIp[]), 1);
  2792. get_user_name(id, PlayerName[id], charsmax(PlayerName[]));
  2793. get_user_authid(id, g_iSteam[id], charsmax(g_iSteam[]));
  2794. get_user_info(id, field, pwd, 31);
  2795.  
  2796. g_doubledamage[id] = false;
  2797. g_vip[id] = false;
  2798.  
  2799. for (i = 0; i < ArraySize(g_vname); i++)
  2800. {
  2801. ArrayGetString(g_vname, i, reqname, 63);
  2802. ArrayGetString(g_vpwd, i, reqpwd, 63);
  2803. ArrayGetString(g_vflags, i, reqflags, 63);
  2804.  
  2805. if (equali(PlayerName[id], reqname))
  2806. {
  2807. if (equali(pwd, reqpwd) && strlen(pwd) > 0)
  2808. {
  2809. g_vip[id] = true;
  2810. formatex(g_vip_flags[id], charsmax(g_vip_flags[]), "%s", reqflags);
  2811. break;
  2812. }
  2813.  
  2814. else
  2815. {
  2816. server_cmd("kick #%d INVALiD ViP PASSWORD.", get_user_userid(id));
  2817. break;
  2818. }
  2819. }
  2820.  
  2821. if (equali(UserIp[id], reqname) || equali(g_iSteam[id], reqname))
  2822. {
  2823. g_vip[id] = true;
  2824. formatex(g_vip_flags[id], charsmax(g_vip_flags[]), "%s", reqflags);
  2825. break;
  2826. }
  2827. }
  2828.  
  2829. loadPoints(id);
  2830. get_pcvar_num ( AmxMode) ? accessUser ( id ) : PLUGIN_CONTINUE
  2831. }
  2832.  
  2833. public menu_rank(id, key)
  2834. {
  2835. switch (key)
  2836. {
  2837. default:
  2838. {
  2839. return 0;
  2840. }
  2841. }
  2842. return 0;
  2843. }
  2844.  
  2845.  
  2846. public plugin_init ( )
  2847. {
  2848.  
  2849. /* -------------- | Comand Admin | ------------ */
  2850.  
  2851. register_clcmd ( "amx_freeze", "CmdFreeze" );
  2852.  
  2853. register_clcmd ( "amx_unfreeze", "CmdUnfreeze" );
  2854.  
  2855. register_clcmd ( "amx_destroy", "CmdDestroy" );
  2856.  
  2857. register_clcmd ( "amx_reloadtags", "cmdReloadTags" );
  2858.  
  2859. register_clcmd ( "amx_reloadadmins", "cmdReload" );
  2860.  
  2861. register_clcmd ( "amx_kick", "cmdKick" );
  2862.  
  2863. register_clcmd ( "amx_ban", "cmdBan" );
  2864.  
  2865. register_clcmd ( "amx_addban", "cmdAddBan" );
  2866.  
  2867. register_clcmd ( "amx_unban", "cmdUnban" );
  2868.  
  2869. register_clcmd ( "amx_slay", "cmdSlay" );
  2870.  
  2871. register_clcmd ( "amx_slap", "cmdSlap" );
  2872.  
  2873. register_clcmd ( "amx_map", "cmdMap" );
  2874.  
  2875. register_clcmd ( "amx_nick", "cmdNick" );
  2876.  
  2877. register_clcmd ( "amx_ip", "cmdIp" );
  2878.  
  2879. register_clcmd ( "amx_gag", "cmdGag" );
  2880.  
  2881. register_clcmd ( "amx_ungag", "cmdUnGag" );
  2882.  
  2883. register_clcmd ( "say", "CheckGag" );
  2884.  
  2885. register_clcmd ( "say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message" )
  2886.  
  2887. register_clcmd ( "say_team", "CheckGag" );
  2888.  
  2889. register_clcmd ( "say_team", "cmdSayAdmin" );
  2890.  
  2891. register_clcmd ( "amx_say", "cmdSay" );
  2892.  
  2893. register_clcmd ( "amx_psay", "cmdPsay" );
  2894.  
  2895. register_clcmd ( "amx_tsay", "cmdTsay" );
  2896.  
  2897. register_clcmd ( "amx_chat", "cmdChat" );
  2898.  
  2899. register_clcmd ( "amx_who", "cmdWho" );
  2900.  
  2901. register_clcmd ( "say", "CheckSay" );
  2902.  
  2903. register_clcmd ( "say_team", "CheckSayTeam" );
  2904.  
  2905. register_clcmd ( "amx_points", "cmdPoints")
  2906.  
  2907. register_clcmd ( "amx_human", "cmdMadeHuman" );
  2908.  
  2909. register_clcmd ( "amx_survivor", "cmdMadeSurvivor" );
  2910.  
  2911. register_clcmd ( "amx_sniper", "cmdMadeSniper" );
  2912.  
  2913. register_clcmd ( "amx_zombie", "cmdMadeZombie" );
  2914.  
  2915. register_clcmd ( "amx_nemesis", "cmdMadeNemesis" );
  2916.  
  2917. register_clcmd ( "amx_assassin", "cmdMadeAssassin" );
  2918.  
  2919. register_clcmd ( "amx_respawn", "cmdRespawn" );
  2920.  
  2921. register_clcmd ( "amx_multiple", "cmdMulti" );
  2922.  
  2923. register_clcmd ( "amx_plague", "cmdPlague" );
  2924.  
  2925. register_clcmd ( "amx_swarm", "cmdSwarm" );
  2926.  
  2927. register_clcmd ( "amx_armageddon", "cmdArmageddon" );
  2928.  
  2929. register_clcmd ( "amx_nightmare", "cmdNightmare" );
  2930.  
  2931. register_clcmd ( "amx_assassins_vs_snipers", "cmdApocalypse" );
  2932.  
  2933. /* -------------- | Shop | ------------ */
  2934.  
  2935. cvar_bslot = register_cvar ( "zm_buy_slot_cost", "700" );
  2936. cvar_bam = register_cvar ( "zm_buy_model_cost", "2250" );
  2937. cvar_100ap = register_cvar ( "zm_buy_100ap", "160" );
  2938. cvar_200ap = register_cvar ( "zm_buy_200ap", "200" );
  2939. cvar_300ap = register_cvar ( "zm_buy_300ap", "280" );
  2940. cvar_dmg2 = register_cvar ( "zm_dmg2", "120" );
  2941. cvar_god = register_cvar ( "zm_godmode", "150" );
  2942. cvar_arnd = register_cvar ( "zm_arnd", "180" );
  2943.  
  2944. register_clcmd ( "shophm", "commandhm" );
  2945. register_clcmd ( "shopzm", "commandzm" );
  2946. register_clcmd ( "shophm2", "command_buy2" );
  2947.  
  2948. register_menu ( "menu_hm" , KEYS_BUYMENU , "BuyMenuhm" );
  2949. register_menu ( "menu_zm" , KEYS_BUYMENU , "BuyMenuzm" );
  2950. register_menu ( "secondm" , KEYS_BUYMENU , "BuSubmenu" );
  2951. register_menu ( "RankMenu", 1023, "menu_rank", 0);
  2952.  
  2953. register_clcmd ( "amx_password_for_slot", "slot" );
  2954.  
  2955. register_clcmd ( "amx_password_for_model", "model" );
  2956.  
  2957. g_msgSayText = get_user_msgid ( "SayText" );
  2958.  
  2959. Handler = CreateHudSyncObj ( );
  2960.  
  2961. GetMessages = ArrayCreate ( 512 );
  2962.  
  2963. register_dictionary ( "common.txt" );
  2964.  
  2965. AmxMode = register_cvar ( "amx_mode", "1", FCVAR_PROTECTED );
  2966.  
  2967. AmxPasswordField = register_cvar ( "amx_password_field", "_pw", FCVAR_PROTECTED );
  2968.  
  2969. AmxDefaultAccess = register_cvar ( "amx_default_access", "", FCVAR_PROTECTED );
  2970.  
  2971. register_cvar("amx_vote_ratio", "0.02");
  2972.  
  2973. register_cvar("amx_vote_time", "10");
  2974.  
  2975. register_cvar("amx_vote_answers", "1");
  2976.  
  2977. register_cvar("amx_vote_delay", "60");
  2978.  
  2979. register_cvar("amx_last_voting", "0");
  2980.  
  2981. register_cvar("amx_votemap_ratio", "0.40");
  2982.  
  2983. set_cvar_float ( "amx_last_voting", 0.0 );
  2984.  
  2985. #if defined USING_SQL
  2986. register_srvcmd ( "amx_sqladmins", "adminSql" );
  2987.  
  2988. register_cvar ( "amx_sql_table", "admins", FCVAR_PROTECTED );
  2989. #endif
  2990.  
  2991. register_cvar ( "amx_sql_host", "", FCVAR_PROTECTED );
  2992.  
  2993. register_cvar ( "amx_sql_user", "", FCVAR_PROTECTED );
  2994.  
  2995. register_cvar ( "amx_sql_pass", "", FCVAR_PROTECTED );
  2996.  
  2997. register_cvar ( "amx_sql_db", "", FCVAR_PROTECTED );
  2998.  
  2999. register_cvar ( "amx_sql_type", "mysql", FCVAR_PROTECTED );
  3000.  
  3001. register_cvar ( "amx_sql_timeout", "60", FCVAR_PROTECTED );
  3002.  
  3003. GagThinker ( );
  3004.  
  3005. register_think ( "GagThinker_", "fwGagThinker" );
  3006.  
  3007. new Director [64]; get_configsdir ( Director, charsmax ( Director ) );
  3008.  
  3009. server_cmd ( "exec %s/sql.cfg", Director );
  3010.  
  3011. #if defined USING_SQL
  3012.  
  3013. server_cmd ( "amx_sqladmins" );
  3014.  
  3015. #else
  3016.  
  3017. format ( Director, charsmax ( Director ), "%s/%s", Director, ADMINS_FILE_NAME );
  3018.  
  3019. AdminsLoadSettings ( Director );
  3020.  
  3021. #endif
  3022.  
  3023. cvar_on = register_cvar ( "amx_resetscore", "1" );
  3024. cvar_messages = register_cvar ( "amx_resetmessage", "2" );
  3025.  
  3026. static g_words [ ] [ ] =
  3027. {
  3028. "reset",
  3029. "resetscore",
  3030. "rs",
  3031. "rscore"
  3032. }
  3033.  
  3034. new iString [ 26 ], i;
  3035.  
  3036. for ( i = 0; i < sizeof ( g_words ); i++ )
  3037. {
  3038. formatex ( iString, 25, "say /%s", g_words [ i ] );
  3039. register_clcmd ( iString, "cmdResetScore", -1 );
  3040. }
  3041.  
  3042. g_Tuple = SQL_MakeDbTuple(SQL_Server, SQL_Person, SQL_Password, SQL_Database);
  3043.  
  3044. if (g_Tuple == Empty_Handle)
  3045. {
  3046. g_Tuple = SQL_MakeDbTuple(SQL_Server, SQL_Person, SQL_Password, SQL_Database);
  3047.  
  3048. if (g_Tuple == Empty_Handle)
  3049. {
  3050. log_to_file(Errors_File, "SQL_MakeDbTuple() failed @ plugin_init()");
  3051.  
  3052. return set_fail_state("SQL_MakeDbTuple() failed @ plugin_init()");
  3053. }
  3054. }
  3055.  
  3056. SQL_ThreadQuery(g_Tuple, "emptyFunction", "CREATE TABLE IF NOT EXISTS Players \
  3057. (Name TEXT, Steam TEXT, Ip TEXT, Score NUMERIC, Kills NUMERIC, Deaths NUMERIC, \
  3058. headShots NUMERIC, Time NUMERIC, timeString TEXT, Seen NUMERIC, seenString TEXT, kpdRatio FLOAT, \
  3059. kmdValue NUMERIC);");
  3060.  
  3061. SQL_ThreadQuery(g_Tuple, "recordsCount", "SELECT Kills FROM Players");
  3062.  
  3063. g_maxPlayers = get_maxplayers();
  3064.  
  3065. /* -------------- | License mysql | ------------ */
  3066. amx_show_activity = get_cvar_pointer("amx_show_activity");
  3067.  
  3068. if (amx_show_activity == 0)
  3069. {
  3070. amx_show_activity = register_cvar("amx_show_activity", "2");
  3071. }
  3072.  
  3073. Get_ServerIP( );
  3074. /* -------------- | Guns | ------------ */
  3075.  
  3076. g_PrimaryMenu = menu_create( "Primary Weapon", "PrimaryHandler" )
  3077. g_SecondaryMenu = menu_create( "Secondary Weapon", "SecondaryHandler" )
  3078.  
  3079. for ( new i; i < sizeof g_SecondaryWeapon; i++ )
  3080. menu_additem( g_PrimaryMenu, g_SecondaryWeapon[ i ][ wInfo ] )
  3081.  
  3082. for ( new i; i < sizeof g_PrimaryWeapon; i++ )
  3083. menu_additem( g_SecondaryMenu, g_PrimaryWeapon[ i ][ wInfo ] )
  3084.  
  3085. cvar_deadlyshot_time = register_cvar("ds_time", "10.0")
  3086.  
  3087. sync_hud1 = CreateHudSyncObj(random_num(1, 10))
  3088.  
  3089. set_task(2.0,"Calcu",232222,_,_,"b");
  3090.  
  3091. new vault = nvault_open("points")
  3092. if (vault != INVALID_HANDLE)
  3093. {
  3094. nvault_prune(vault, 0, get_systime() - 2629743);
  3095. nvault_close(vault)
  3096. vault=INVALID_HANDLE
  3097. }
  3098.  
  3099. set_task(10.0, "Rays", .flags="b");
  3100.  
  3101. new cfgs[128];
  3102. get_configsdir(cfgs, 127)
  3103. add(cfgs, 127, "/vips.ini")
  3104.  
  3105. new file = fopen(cfgs, "r")
  3106. if (file)
  3107. {
  3108. new line[512], name[64], pwd[64], flags[64]
  3109.  
  3110. while (!feof(file))
  3111. {
  3112. fgets(file, line ,511)
  3113. trim(line)
  3114. if (!line[0] || line[0] == '/' || line[0] == ';' || line[0] == '#')
  3115. continue;
  3116. new r=parse(line, name,63,pwd,63,flags,63)
  3117. if (r < 3) continue;
  3118. ArrayPushString(g_vname, name)
  3119. ArrayPushString(g_vpwd, pwd)
  3120. ArrayPushString(g_vflags, flags)
  3121. }
  3122. fclose(file)
  3123. }
  3124.  
  3125. /* ------------- | Change Commands | ----------- */
  3126.  
  3127. register_clcmd ( "nightvision", "cmdNightVision" );
  3128.  
  3129. register_clcmd ( "drop", "cmdDrop" );
  3130.  
  3131. register_clcmd ( "chooseteam", "cmdChangeTeam" );
  3132.  
  3133. register_clcmd ( "jointeam", "cmdChangeTeam" );
  3134.  
  3135. /* ------------- | Buy TripMine | -------------- */
  3136.  
  3137. register_clcmd ( "say", "SayCommands" );
  3138.  
  3139. register_clcmd ( "say", "cmdCommandHook" );
  3140.  
  3141. register_clcmd ( "createlaser", "PlantTripMine" );
  3142.  
  3143. register_clcmd ( "removelaser", "TakeTripMine" );
  3144.  
  3145. register_think ( "zRises_TripMine", "fwThinkMine" );
  3146.  
  3147. /* ------------- | Block Commands | -------------- */
  3148.  
  3149. register_clcmd ( "radio1", "cmdNotAllowed" );
  3150.  
  3151. register_clcmd ( "radio2", "cmdNotAllowed" );
  3152.  
  3153. register_clcmd ( "radio3", "cmdNotAllowed" );
  3154.  
  3155. register_clcmd ( "fullupdate","cmdNotAllowed" );
  3156.  
  3157. register_clcmd ( "cl_setautobuy", "cmdNotAllowed" );
  3158.  
  3159. register_clcmd ( "cl_autobuy", "cmdNotAllowed" );
  3160.  
  3161. register_clcmd ( "cl_setrebuy", "cmdNotAllowed" );
  3162.  
  3163. register_clcmd ( "cl_rebuy", "cmdNotAllowed" ) ;
  3164.  
  3165. register_clcmd ( "autobuy", "cmdNotAllowed" );
  3166.  
  3167. /* ------------- | Admin Commands | -------------- */
  3168.  
  3169. new File, Line [32];
  3170.  
  3171. get_localinfo ( "amxx_configsdir", Director, charsmax ( Director ) );
  3172.  
  3173. format ( Director, charsmax ( Director ), "%s/RestrictedNames.ini", Director );
  3174.  
  3175. File = fopen ( Director, "rt" );
  3176.  
  3177. while ( !feof ( File ) )
  3178. {
  3179. fgets ( File, Line, charsmax ( Line ) );
  3180.  
  3181. trim ( Line );
  3182.  
  3183. if ( strlen ( Line ) )
  3184. {
  3185. copy ( RestrictedNames [WordsCount], 31, Line );
  3186.  
  3187. WordsCount++;
  3188. }
  3189. }
  3190.  
  3191. fclose ( File );
  3192.  
  3193. new File2 = fopen("addons/amxmodx/configs/HudMessages.ini", "r");
  3194.  
  3195. if ( File2 )
  3196. {
  3197. new Line [512];
  3198.  
  3199. while ( !feof ( File2 ) )
  3200. {
  3201. fgets ( File2, Line, sizeof ( Line ) - 1 );
  3202.  
  3203. trim ( Line );
  3204.  
  3205. if ( Line [0] )
  3206. {
  3207. while ( replace ( Line, sizeof ( Line ) -1, "\n", "^n" ) ) { }
  3208.  
  3209. ArrayPushString ( GetMessages, Line );
  3210. }
  3211. }
  3212.  
  3213. fclose ( File2 );
  3214. }
  3215. else
  3216. {
  3217. log_amx ( "Failed to open HudMessages.ini file!" );
  3218. }
  3219.  
  3220. if ( ArraySize ( GetMessages ) )
  3221. {
  3222. set_task ( 160.0, "TaskHudMessages", .flags = "b" );
  3223. }
  3224.  
  3225.  
  3226. /* --------------- | Events & LogEvents | -------------- */
  3227.  
  3228. register_event ( "DeathMsg", "evDeathMsg", "a" );
  3229.  
  3230. register_event ( "StatusValue", "evShowStatus", "be", "1=2", "2!0" );
  3231.  
  3232. register_event ( "StatusValue", "evHideStatus", "be", "1=1", "2=0" );
  3233.  
  3234. register_event ( "StatusValue", "ShowStatus", "be", "1=2", "2!0" );
  3235.  
  3236. register_event ( "StatusValue", "HideStatus", "be", "1=1", "2=0" );
  3237.  
  3238. register_event ( "HLTV", "evNewRound", "a", "1=0", "2=0" );
  3239.  
  3240. register_event ( "ResetHUD", "evResetHud", "b" );
  3241.  
  3242. register_event ( "AmmoX", "evAmmoX", "be" );
  3243.  
  3244. register_event ( "30", "evIntermission", "a" );
  3245.  
  3246. register_event ( "CurWeapon", "CheckModels", "be" );
  3247.  
  3248. register_event ( "DeathMsg","Fix","a" );
  3249.  
  3250. register_event ( "TeamInfo","Fix","a" );
  3251.  
  3252. register_event ( "ResetHUD", "resethud", "be" );
  3253.  
  3254. register_logevent ( "leRoundStart", 2, "1=Round_Start" );
  3255.  
  3256. register_logevent ( "leRoundEnd", 2, "1=Round_End" );
  3257.  
  3258. register_logevent ( "RE", 2 ,"1=Round_End" );
  3259.  
  3260. /* --------------- | Ham Forwards | --------------- */
  3261.  
  3262. RegisterHam ( Ham_Spawn, "player", "fwPlayerSpawnPost", 1 );
  3263.  
  3264. RegisterHam ( Ham_Killed, "player", "fwPlayerKilled" );
  3265.  
  3266. RegisterHam ( Ham_Killed, "player", "fwPlayerKilledPost", 1 );
  3267.  
  3268. RegisterHam ( Ham_TakeDamage, "player", "fwTakeDamage" );
  3269.  
  3270. RegisterHam ( Ham_TakeDamage, "player", "fwTakeDamagePost", 1 );
  3271.  
  3272. RegisterHam ( Ham_TraceAttack, "player", "fwTraceAttack" );
  3273.  
  3274. RegisterHam (Ham_TraceAttack, "worldspawn", "TraceAttack", 1);
  3275.  
  3276. RegisterHam ( Ham_TraceAttack, "player", "TraceAttack", 1);
  3277.  
  3278. RegisterHam (Ham_TraceAttack, "worldspawn", "TraceAttack_02", 1);
  3279.  
  3280. RegisterHam ( Ham_TraceAttack, "player", "TraceAttack_02", 1);
  3281.  
  3282. RegisterHam ( Ham_TraceAttack, "player", "fw_traceattack" )
  3283.  
  3284. RegisterHam ( Ham_Use, "func_tank", "fwUseStationary" );
  3285.  
  3286. RegisterHam ( Ham_Use, "func_tankmortar", "fwUseStationary" );
  3287.  
  3288. RegisterHam ( Ham_Use, "func_tankrocket", "fwUseStationary" );
  3289.  
  3290. RegisterHam ( Ham_Use, "func_tanklaser", "fwUseStationary" );
  3291.  
  3292. RegisterHam ( Ham_Use, "func_tank", "fwUseStationaryPost", 1 );
  3293.  
  3294. RegisterHam ( Ham_Use, "func_tankmortar", "fwUseStationaryPost", 1 );
  3295.  
  3296. RegisterHam ( Ham_Use, "func_tankrocket", "fwUseStationaryPost", 1 );
  3297.  
  3298. RegisterHam ( Ham_Use, "func_tanklaser", "fwUseStationaryPost", 1 );
  3299.  
  3300. RegisterHam ( Ham_Use, "func_pushable", "fwUsePushable" );
  3301.  
  3302. RegisterHam ( Ham_Touch, "weaponbox", "fwTouchWeapon" );
  3303.  
  3304. RegisterHam ( Ham_Touch, "armoury_entity", "fwTouchWeapon" );
  3305.  
  3306. RegisterHam ( Ham_Touch, "weapon_shield", "fwTouchWeapon" );
  3307.  
  3308. RegisterHam ( Ham_AddPlayerItem, "player", "fwAddPlayerItem" );
  3309.  
  3310. RegisterHam ( Ham_Think, "grenade", "fwThinkGrenade" );
  3311.  
  3312.  
  3313.  
  3314. for ( new i = 1; i < sizeof WEAPONENTNAMES; i++ ) if ( WEAPONENTNAMES [i] [0] ) RegisterHam ( Ham_Item_Deploy, WEAPONENTNAMES [i], "fwItemDeployPost", 1 );
  3315.  
  3316. register_forward ( FM_SetClientKeyValue, "fwSetClientKeyValue" );
  3317.  
  3318. register_forward ( FM_ClientUserInfoChanged, "fwClientInfoChanged" );
  3319.  
  3320. register_forward ( FM_ClientKill, "fwClientKill" );
  3321.  
  3322. register_forward ( FM_EmitSound, "fwEmitSound" );
  3323.  
  3324. register_forward ( FM_GetGameDescription, "fwGetGameDescription" );
  3325.  
  3326. register_forward ( FM_SetModel, "fwSetModel" );
  3327.  
  3328. register_forward ( FM_PlayerPreThink, "fwPlayerPreThink" );
  3329.  
  3330. register_forward ( FM_PlayerPreThink, "fmPlayerPreThink" );
  3331.  
  3332. register_forward ( FM_TraceLine, "fwTraceLinePost", 1 );
  3333.  
  3334. register_forward ( FM_StartFrame, "fwStartFrame" );
  3335.  
  3336. register_forward ( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
  3337.  
  3338. register_forward ( FM_UpdateClientData, "Data" );
  3339.  
  3340. register_forward ( FM_PlayerPreThink, "fwPlayerPreThink_01" );
  3341.  
  3342. register_forward ( FM_PlayerPreThink, "fwPlayerPreThink_02" );
  3343.  
  3344. register_forward ( FM_PlayerPreThink, "fwPlayerPreThink_03" );
  3345.  
  3346. register_forward ( FM_PlayerPostThink, "fwPlayerPostThink" );
  3347.  
  3348. register_forward ( FM_PlayerPostThink, "fwPlayerPostThink_02" );
  3349.  
  3350. unregister_forward ( FM_Spawn, fwSpawn );
  3351.  
  3352. unregister_forward ( FM_PrecacheSound, fwPrecacheSound );
  3353.  
  3354. /* --------------- | Message Hook | --------------- */
  3355.  
  3356. register_message ( get_user_msgid ( "CurWeapon" ), "MessageCurWeapon" );
  3357.  
  3358. register_message ( get_user_msgid ( "Money" ), "MessageMoney" );
  3359.  
  3360. register_message ( get_user_msgid ( "Health" ), "MessageHealth" );
  3361.  
  3362. register_message ( get_user_msgid ( "ScreenFade" ), "MessageScreenFade" );
  3363.  
  3364. register_message ( get_user_msgid ( "NVGToggle" ), "MessageNvgToggle" );
  3365.  
  3366. register_message ( get_user_msgid ( "WeapPickup" ), "MessageWeaponPickup" );
  3367.  
  3368. register_message ( get_user_msgid ( "AmmoPickup" ), "MessageAmmoPickup" );
  3369.  
  3370. register_message ( get_user_msgid ( "Scenario" ), "MessageScenario" );
  3371.  
  3372. register_message ( get_user_msgid ( "HostagePos" ), "MessageHostagePos" );
  3373.  
  3374. register_message ( get_user_msgid ( "TextMsg" ), "MessageTextMsg" );
  3375.  
  3376. register_message ( get_user_msgid ( "SendAudio" ), "MessageSendAudio" );
  3377.  
  3378. register_message ( get_user_msgid ( "TeamScore" ), "MessageTeamScore" );
  3379.  
  3380. register_message ( get_user_msgid ( "TeamInfo" ), "MessageTeamInfo" );
  3381.  
  3382. /* ------------- | Global Cvar's | -------------- */
  3383.  
  3384. GetCvar [zRisesTryderHealth] = register_cvar ( "z_tryder_health", "666" );
  3385.  
  3386. GetCvar [zRisesTryderArmor] = register_cvar ( "z_tryder_armor", "666" );
  3387.  
  3388. GetCvar [zRisesNemesisHealth] = register_cvar ( "z_nemesis_health", "150000" );
  3389.  
  3390. GetCvar [zRisesAssassinHealth] = register_cvar ( "z_assassin_health", "35000" );
  3391.  
  3392. GetCvar [zRisesHumanHealth] = register_cvar ( "z_human_health", "150" );
  3393.  
  3394. GetCvar [zRisesNemesisGravity] = register_cvar ( "z_nemesis_gravity", "0.5" );
  3395.  
  3396. GetCvar [zRisesAssassinGravity] = register_cvar ( "z_assassin_gravity", "0.4" );
  3397.  
  3398. GetCvar [zRisesAmmoDamage] = register_cvar ( "z_ammo_damage", "500" );
  3399.  
  3400. GetCvar [zRisesZombieArmor] = register_cvar ( "z_zombie_armor", "0.75" );
  3401.  
  3402. GetCvar [zRisesNemesisSpeed] = register_cvar ( "z_nemesis_speed", "250" );
  3403.  
  3404. GetCvar [zRisesAssassinSpeed] = register_cvar ( "z_assassin_speed", "600" );
  3405.  
  3406. GetCvar [zRisesSurvivorHealth] = register_cvar ( "z_survivor_health", "5000" );
  3407.  
  3408. GetCvar [zRisesSurvivorSpeed] = register_cvar ( "z_survivor_speed", "230" );
  3409.  
  3410. GetCvar [zRisesSniperHealth] = register_cvar ( "z_sniper_health", "3000" );
  3411.  
  3412. GetCvar [zRisesSniperSpeed] = register_cvar ( "z_sniper_speed", "235" );
  3413.  
  3414. GetCvar [zRisesHumanSpeed] = register_cvar ( "z_human_speed", "240" );
  3415.  
  3416. GetCvar [zRisesAmmoInfect] = register_cvar ( "z_ammo_infect", "1" );
  3417.  
  3418. GetCvar [zRisesSurvivorGravity] = register_cvar ( "z_survivor_gravity", "1.0" );
  3419.  
  3420. GetCvar [zRisesSniperGravity] = register_cvar ( "z_sniper_gravity", "1.0" );
  3421.  
  3422. GetCvar [zRisesHumanGravity] = register_cvar ( "z_human_gravity", "1.0" );
  3423.  
  3424. GetCvar [zRisesApocalypseNemesisHealth] = register_cvar ( "z_apocalypse_nemesis_health", "40000" );
  3425.  
  3426. GetCvar [zRisesApocalypseSurvivorHealth] = register_cvar ( "z_apocalypse_surivor_health", "10000" );
  3427.  
  3428. GetCvar [zRisesApocalypseAssassinHealth] = register_cvar ( "z_apocalypse_assassin_health", "35000" );
  3429.  
  3430. GetCvar [zRisesApocalypseSniperHealth] = register_cvar ( "z_apocalypse_sniper_health", "8000" );
  3431.  
  3432. GetCvar [zRisesNemesisDamage] = register_cvar ( "z_nemesis_damage", "250" );
  3433.  
  3434. GetCvar [zRisesAssassinDamage] = register_cvar ( "z_assassin_damage", "250" );
  3435.  
  3436. GetCvar [zRisesNightmareNemesisHealth] = register_cvar ( "z_nightmare_nemesis_health", "40000" );
  3437.  
  3438. GetCvar [zRisesNightmareAssassinHealth] = register_cvar ( "z_nightmare_assassin_health", "35000" );
  3439.  
  3440. GetCvar [zRisesNightmareSurvivorHealth] = register_cvar ( "z_nightmare_survivor_health", "10000" );
  3441.  
  3442. GetCvar [zRisesNightmareSniperHealth] = register_cvar ( "z_nightmare_sniper_health", "8000" );
  3443.  
  3444. GetCvar [zRisesPlagueNemesisHealth] = register_cvar ( "z_plague_nemesis_health", "50000" );
  3445.  
  3446. GetCvar [zRisesPlagueSurvivorHealth] = register_cvar ( "z_plague_surivor_health", "8000" );
  3447.  
  3448. GetCvar [zRisesSniperDamage] = register_cvar ( "z_sniper_damage", "4600" );
  3449.  
  3450. GetCvar [zRisesStartPacks] = register_cvar ( "z_start_packs", "5" );
  3451.  
  3452. /* --------------- | Custom Forwards | --------------- */
  3453.  
  3454. fwRoundStart = CreateMultiForward ( "zRoundStarted", ET_IGNORE, FP_CELL, FP_CELL );
  3455.  
  3456. fwRoundEnd = CreateMultiForward ( "zRoundEnded", ET_IGNORE, FP_CELL );
  3457.  
  3458. fwUserInfectedPre = CreateMultiForward ( "zUserInfectedPre", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
  3459.  
  3460. fwUserInfectedPost = CreateMultiForward ( "zUserInfectedPost", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
  3461.  
  3462. fwUserHumanizedPre = CreateMultiForward ( "zUserHumanizedPre", ET_IGNORE, FP_CELL, FP_CELL );
  3463.  
  3464. fwUserHumanizedPost = CreateMultiForward ( "zUserHumanizedPost", ET_IGNORE, FP_CELL, FP_CELL );
  3465.  
  3466. fwUserInfectAttempt = CreateMultiForward ( "zUserInfectAttempt", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL );
  3467.  
  3468. fwUserHumanizeAttempt = CreateMultiForward ( "zUserHumanizeAttempt", ET_CONTINUE, FP_CELL, FP_CELL );
  3469.  
  3470. fwUserUnfrozen = CreateMultiForward ( "zUserUnfrozen", ET_IGNORE, FP_CELL );
  3471.  
  3472. fwUserLastZombie = CreateMultiForward ( "zUserLastZombie", ET_IGNORE, FP_CELL );
  3473.  
  3474. fwUserLastHuman = CreateMultiForward ( "zUserLastHuman", ET_IGNORE, FP_CELL );
  3475.  
  3476. /* --------------- | For Game Mode | --------------- */
  3477.  
  3478. LoadSpawns ( );
  3479.  
  3480. iSize = sizeof ( iCoords );
  3481.  
  3482. HudMsgSync [0] = CreateHudSyncObj ( 1 );
  3483.  
  3484. HudMsgSync [1] = CreateHudSyncObj ( 2 );
  3485.  
  3486. HudMsgSync [2] = CreateHudSyncObj ( 3 );
  3487.  
  3488. HudMsgSync [3] = CreateHudSyncObj ( 4 );
  3489.  
  3490. MaxPlayers = get_maxplayers ( );
  3491.  
  3492. DBSlot = MaxPlayers + 1;
  3493.  
  3494. return PLUGIN_CONTINUE;
  3495. }
  3496.  
  3497. public SayCommands ( id )
  3498. {
  3499. new Args [64]; read_args ( Args, charsmax ( Args ) )
  3500.  
  3501. remove_quotes ( Args );
  3502.  
  3503. new Arg_01 [16], Arg_02 [32];
  3504.  
  3505. strbreak ( Args, Arg_01, charsmax ( Arg_01 ), Arg_02, charsmax ( Arg_02 ) );
  3506.  
  3507. if ( equal ( Arg_01, "/donate", 7 ) )
  3508.  
  3509. cmdDonatePacks ( id, Arg_02 );
  3510.  
  3511. else if ( equal ( Arg_01, "/lm" ) || equal ( Arg_01, "lm" ) )
  3512.  
  3513. BuyTripMine ( id );
  3514.  
  3515. }
  3516.  
  3517. public cmdDonatePacks ( id, Arg [ ] )
  3518. {
  3519. new To [32], Count [10];
  3520.  
  3521. strbreak ( Arg, To, charsmax ( To ), Count, charsmax ( Count ) );
  3522.  
  3523. if ( !To [0] || !Count [0] )
  3524. {
  3525. client_print_color ( id, print_team_grey, "%s Usage^4 :^3 '/donate (Name) (Packs)'", CHAT_PREFIX );
  3526.  
  3527. return;
  3528. }
  3529.  
  3530. new Reciever = cmd_target ( id, To, ( CMDTARGET_ALLOW_SELF ) );
  3531.  
  3532. if ( !Reciever || Reciever == id )
  3533. {
  3534. client_print_color ( id, print_team_grey, "%s Player^3 %s^1 has not been found on the server!", CHAT_PREFIX, To );
  3535.  
  3536. return;
  3537. }
  3538.  
  3539. new PacksSender = AmmoPacks [id];
  3540.  
  3541. new Packs;
  3542.  
  3543. if ( equal ( Count, "all" ) )
  3544.  
  3545. Packs = PacksSender;
  3546. else
  3547. Packs = str_to_num ( Count );
  3548.  
  3549. if ( Packs <= 0 )
  3550. {
  3551. client_print_color ( id, print_team_default, "%s Wrong ammo quantity!", CHAT_PREFIX );
  3552.  
  3553. return;
  3554. }
  3555.  
  3556. if ( PacksSender <= 0 && Packs > 0 )
  3557. {
  3558. client_print_color ( id, print_team_default, "%s Unavailable command.", CHAT_PREFIX );
  3559.  
  3560. return;
  3561. }
  3562.  
  3563. PacksSender -= Packs;
  3564.  
  3565. if ( PacksSender < 0 )
  3566. {
  3567. Packs += PacksSender;
  3568.  
  3569. PacksSender = 0;
  3570.  
  3571. }
  3572.  
  3573. AmmoPacks [Reciever] += Packs;
  3574.  
  3575. UserTotalAmmo [Reciever] += Packs
  3576.  
  3577. AmmoPacks [id] = PacksSender;
  3578.  
  3579. client_print_color ( 0, print_team_grey, "%s^3 %s^1 gave^4 %d packs^1 to^3 %s", CHAT_PREFIX, PlayerName [id], Packs, PlayerName [Reciever] );
  3580. }
  3581.  
  3582. public client_PreThink ( id )
  3583. {
  3584. if (IsZombie [id] && ZombieClass [id] == ZCLASS_FROZEN && !IsNemesis [id] && !IsAssassin [id] || MultiJumps [id] && !IsZombie [id] && !IsNemesis [id] && !IsAssassin [id] )
  3585. {
  3586. new nBut = get_user_button ( id );
  3587.  
  3588. new oBut = get_user_oldbutton ( id );
  3589.  
  3590. new GetJumps
  3591.  
  3592. if ( MultiJumps [id] )
  3593. {
  3594. GetJumps = MultiJumps [id];
  3595. }
  3596. else
  3597. {
  3598. GetJumps = 1;
  3599. }
  3600.  
  3601. if ( ( nBut & IN_JUMP ) && !( get_entity_flags ( id ) & FL_ONGROUND ) && !( oBut & IN_JUMP ) )
  3602. {
  3603. if ( JumpNum[id] < GetJumps )
  3604. {
  3605. DoJump [id] = true;
  3606.  
  3607. JumpNum [id] ++;
  3608. }
  3609. }
  3610. if ( ( nBut & IN_JUMP ) && ( get_entity_flags ( id ) & FL_ONGROUND ) )
  3611. {
  3612. JumpNum [id] = 0;
  3613. }
  3614. }
  3615. }
  3616.  
  3617. public fwPlayerPreThink_01 ( id )
  3618. {
  3619. if (g_vip[id] && containi(g_vip_flags[id], "J")!=-1 || MultiJumps [id] && IsZombie [id])
  3620. {
  3621. new nBut = get_user_button ( id );
  3622.  
  3623. new oBut = get_user_oldbutton ( id );
  3624.  
  3625. new GetJumps
  3626.  
  3627. if ( MultiJumps [id] )
  3628. {
  3629. GetJumps = MultiJumps [id];
  3630. }
  3631. else
  3632. {
  3633. GetJumps = 1;
  3634. }
  3635.  
  3636. if ( ( nBut & IN_JUMP ) && !( get_entity_flags ( id ) & FL_ONGROUND ) && !( oBut & IN_JUMP ) )
  3637. {
  3638. if ( JumpNum[id] < GetJumps )
  3639. {
  3640. DoJump [id] = true;
  3641.  
  3642. JumpNum [id] ++;
  3643. }
  3644. }
  3645. if ( ( nBut & IN_JUMP ) && ( get_entity_flags ( id ) & FL_ONGROUND ) )
  3646. {
  3647. JumpNum [id] = 0;
  3648. }
  3649. }
  3650. }
  3651.  
  3652. public fwPlayerPreThink_02 ( Client )
  3653. {
  3654. if(!IsAlive[Client]) return
  3655.  
  3656. new Float:fallspeed = 100.0 * -1.0
  3657.  
  3658. new button = get_user_button(Client)
  3659. if(button & IN_USE)
  3660. {
  3661. new Float:velocity[3]
  3662. entity_get_vector(Client, EV_VEC_velocity, velocity)
  3663. if (velocity[2] < 0.0)
  3664. {
  3665. entity_set_int(Client, EV_INT_sequence, 3)
  3666. entity_set_int(Client, EV_INT_gaitsequence, 1)
  3667. entity_set_float(Client, EV_FL_frame, 1.0)
  3668. entity_set_float(Client, EV_FL_framerate, 1.0)
  3669.  
  3670. velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
  3671. entity_set_vector(Client, EV_VEC_velocity, velocity)
  3672. }
  3673. }
  3674. }
  3675.  
  3676. public fwPlayerPreThink_03 ( Client )
  3677. {
  3678. if (g_bFrozen[Client] &&is_user_alive(Client))
  3679. {
  3680. fm_set_rendering(Client, kRenderFxGlowShell, 0, 90, 180, kRenderNormal, 30)
  3681. }
  3682. }
  3683.  
  3684. public client_PostThink ( id )
  3685. {
  3686. if ( IsZombie [id] && ZombieClass [id] == ZCLASS_FROZEN && !IsNemesis [id] && !IsAssassin [id] || MultiJumps [id] && !IsZombie [id] && !IsNemesis [id] && !IsAssassin [id])
  3687.  
  3688. {
  3689. if ( DoJump [id] == true )
  3690. {
  3691. new Float: Velocity [3];
  3692.  
  3693. entity_get_vector ( id,EV_VEC_velocity, Velocity );
  3694.  
  3695. Velocity [2] = random_float ( 265.0, 285.0 );
  3696.  
  3697. entity_set_vector ( id, EV_VEC_velocity, Velocity );
  3698.  
  3699. DoJump [id] = false;
  3700.  
  3701. return PLUGIN_CONTINUE;
  3702. }
  3703. }
  3704. return PLUGIN_CONTINUE;
  3705. }
  3706. public fwPlayerPostThink (id)
  3707. {
  3708. if(g_vip[id] && containi(g_vip_flags[id], "J") == -1) return
  3709. if(DoJump[id] == true)
  3710. {
  3711. new Float:velocity[3]
  3712. entity_get_vector(id,EV_VEC_velocity,velocity)
  3713. velocity[2] = random_float(265.0, 285.0)
  3714. entity_set_vector(id,EV_VEC_velocity,velocity)
  3715. DoJump[id] = false
  3716. }
  3717. }
  3718. public fwPlayerPostThink_02(id)
  3719. {
  3720. static Button
  3721. Button = get_user_button(id)
  3722.  
  3723. if(Button & IN_USE)
  3724. {
  3725. if(has_item[id] && !using_item[id])
  3726. {
  3727. has_item[id] = false
  3728. using_item[id] = true
  3729.  
  3730. set_task(get_pcvar_float(cvar_deadlyshot_time), "remove_headshot_mode", id+TASK_REMOVE2)
  3731. }
  3732. }
  3733. }
  3734.  
  3735. public show_hud(id)
  3736. {
  3737. id -= TASK_HUD
  3738.  
  3739. set_hudmessage(0, 255, 0, -1.0, 0.88, 0, 2.0, 1.0)
  3740.  
  3741. if(has_item[id])
  3742. {
  3743. ShowSyncHudMsg(id, sync_hud1, "[E] -> Active Deadly Shot")
  3744. }
  3745. else if(using_item[id])
  3746. {
  3747. ShowSyncHudMsg(id, sync_hud1, "Deadly Shot - Actived")
  3748. }
  3749. else
  3750. {
  3751. set_hudmessage(0, 255, 0, -1.0, 0.88, 0, 2.0, 5.0)
  3752. ShowSyncHudMsg(id, sync_hud1, "Deadly Shot - Disable")
  3753. if(task_exists(id+TASK_HUD)) remove_task(id+TASK_HUD)
  3754. }
  3755. }
  3756.  
  3757. public resethud(id)
  3758. {
  3759. if(IsAlive[id] && g_vip[id] && containi(g_vip_flags[id], "S") != -1)
  3760. {
  3761. message_begin(MSG_BROADCAST, get_user_msgid("ScoreAttrib"))
  3762. write_byte(id)
  3763. write_byte(4)
  3764. message_end()
  3765.  
  3766. set_task(0.122, "makevip", id, _, _, "a", 3)
  3767. }
  3768. }
  3769.  
  3770. public makevip(id)
  3771. {
  3772. if(IsAlive[id] && g_vip[id] && containi(g_vip_flags[id], "S") != -1)
  3773. {
  3774. message_begin(MSG_BROADCAST, get_user_msgid("ScoreAttrib"))
  3775. write_byte(id)
  3776. write_byte(4)
  3777. message_end()
  3778. }
  3779. }
  3780.  
  3781. public Rays()
  3782. {
  3783. static Float:origin[3];
  3784. for (new vip = 1; vip <= MaxPlayers; vip++)
  3785. {
  3786. if (IsAlive[vip] && g_vip[vip] && containi(g_vip_flags[vip], "R") != -1)
  3787. {
  3788. if (!IsZombie[vip])
  3789. {
  3790. for (new z=1;z<=MaxPlayers;z++)
  3791. {
  3792. if (IsAlive[z]&&IsZombie[z]&&!ExecuteHam(Ham_FVisible, vip, z))
  3793. {
  3794. pev(z,pev_origin,origin);
  3795. message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, vip)
  3796. write_byte(TE_BEAMENTPOINT)
  3797. write_short(vip)
  3798. engfunc(EngFunc_WriteCoord, origin[0])
  3799. engfunc(EngFunc_WriteCoord, origin[1])
  3800. engfunc(EngFunc_WriteCoord, origin[2])
  3801. write_short(g_iLaser)
  3802. write_byte(10)
  3803. write_byte(10)
  3804. write_byte(10)
  3805. write_byte(10)
  3806. write_byte(10)
  3807. write_byte(255)
  3808. write_byte(0)
  3809. write_byte(0)
  3810. write_byte(200)
  3811. write_byte(10)
  3812. message_end()
  3813. }
  3814. }
  3815. }
  3816. else
  3817. {
  3818. for (new z=1;z<=MaxPlayers;z++)
  3819. {
  3820. if (IsAlive[z]&&!IsZombie[z]&&!ExecuteHam(Ham_FVisible, vip, z))
  3821. {
  3822. pev(z,pev_origin,origin);
  3823. message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, vip)
  3824. write_byte(TE_BEAMENTPOINT)
  3825. write_short(vip)
  3826. engfunc(EngFunc_WriteCoord, origin[0])
  3827. engfunc(EngFunc_WriteCoord, origin[1])
  3828. engfunc(EngFunc_WriteCoord, origin[2])
  3829. write_short(g_iLaser)
  3830. write_byte(10)
  3831. write_byte(10)
  3832. write_byte(10)
  3833. write_byte(10)
  3834. write_byte(10)
  3835. write_byte(0)
  3836. write_byte(120)
  3837. write_byte(190)
  3838. write_byte(200)
  3839. write_byte(10)
  3840. message_end()
  3841. }
  3842. }
  3843. }
  3844. }
  3845. }
  3846. }
  3847.  
  3848. public plugin_cfg ( )
  3849. {
  3850. set_task ( 0.5, "CacheCvars" );
  3851.  
  3852. set_task ( 0.5, "evNewRound" );
  3853.  
  3854. set_task ( 0.5, "leRoundStart" );
  3855.  
  3856. }
  3857.  
  3858. public PrimaryHandler( id, menu, item )
  3859. {
  3860. if ( item == MENU_EXIT )
  3861. return PLUGIN_HANDLED
  3862.  
  3863. drop_weapons(id, 1)
  3864. drop_weapons(id, 2)
  3865.  
  3866. if (!IsAlive[id] || IsZombie[id] || IsSurvivor[id] || IsSniper[id] || IsBot[id])
  3867. return PLUGIN_HANDLED
  3868.  
  3869. fm_strip_user_weapons(id)
  3870. fm_give_item(id, "weapon_knife" )
  3871. fm_give_item(id, "weapon_flashbang" )
  3872. fm_give_item(id, "weapon_hegrenade" )
  3873. fm_give_item(id, "weapon_smokegrenade" )
  3874. fm_give_item(id, g_SecondaryWeapon[ item ][ wName ] )
  3875.  
  3876.  
  3877. cs_set_user_bpammo( id, get_weaponid( g_SecondaryWeapon[ item ][ wName ] ), g_SecondaryWeapon[ item ][ wBpammo ] )
  3878.  
  3879. menu_display( id, g_SecondaryMenu )
  3880.  
  3881. return PLUGIN_HANDLED
  3882. }
  3883.  
  3884. public SecondaryHandler( id, menu, item )
  3885. {
  3886.  
  3887. if ( item == MENU_EXIT )
  3888. return PLUGIN_HANDLED
  3889.  
  3890. give_item( id, g_PrimaryWeapon[ item ][ wName ] )
  3891. cs_set_user_bpammo( id, get_weaponid( g_PrimaryWeapon[ item ][ wName ] ), g_PrimaryWeapon[ item ][ wBpammo ] )
  3892.  
  3893. return PLUGIN_HANDLED
  3894. }
  3895.  
  3896. public client_damage ( iAttacker, iVictim, iDamage )
  3897. {
  3898. if ( IsZombie [iAttacker] || IsNemesis [iAttacker] || IsAssassin [iAttacker] ) return;
  3899.  
  3900. if ( ++ iPosition [iAttacker] == iSize ) iPosition [iAttacker] = 0;
  3901.  
  3902. set_hudmessage ( 0, 40, 80, Float: iCoords [iPosition [iAttacker]] [0], Float: iCoords [iPosition [iAttacker]] [1], 0, 0.1, 2.5, 0.02, 0.02, -1 );
  3903.  
  3904. ShowSyncHudMsg ( iAttacker, HudMsgSync [3], "%i", iDamage );
  3905. }
  3906.  
  3907. public cmdNotAllowed ( id ) return PLUGIN_HANDLED;
  3908.  
  3909. public zRoundStarted ( Mode, id )
  3910. {
  3911. remove_task ( id + TASK_HEALTH );
  3912.  
  3913. if ( Mode == MODE_NEMESIS )
  3914. {
  3915. if ( !ModeNemesis ) ModeNemesis = true;
  3916.  
  3917. set_task ( REMINDER_DELAY, "ModeInformer", id + TASK_HEALTH, _, _, "b" );
  3918. }
  3919. else if ( Mode == MODE_ASSASSIN )
  3920. {
  3921. if ( !ModeAssassin ) ModeAssassin = true;
  3922.  
  3923. set_task ( REMINDER_DELAY, "ModeInformer", id + TASK_HEALTH, _, _, "b" );
  3924. }
  3925. else if ( Mode == MODE_SURVIVOR )
  3926. {
  3927. if ( !ModeSurvivor ) ModeSurvivor = true;
  3928.  
  3929. set_task ( REMINDER_DELAY, "ModeInformer", id + TASK_HEALTH, _, _, "b" );
  3930. }
  3931. else if ( Mode == MODE_SNIPER )
  3932. {
  3933. if ( !ModeSniper ) ModeSniper = true;
  3934.  
  3935. set_task ( REMINDER_DELAY, "ModeInformer", id + TASK_HEALTH, _, _, "b" );
  3936. }
  3937. }
  3938.  
  3939. public ModeInformer ( id )
  3940. {
  3941. id -= TASK_HEALTH;
  3942.  
  3943. if ( is_user_alive ( id ) )
  3944. {
  3945. static HealthString [16]; AddCommas ( get_user_health ( id ), HealthString, charsmax ( HealthString ) );
  3946.  
  3947. if ( IsNemesis [id] )
  3948. {
  3949. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding] ^1A ^3Rapture^1 Reminder ^3@ ^4Nemesis ^1still has ^3%s ^4health points", HealthString );
  3950. }
  3951.  
  3952. }
  3953. }
  3954.  
  3955. public evDeathMsg ( )
  3956. {
  3957. new iPlayers [32], iHuman, iZombie;
  3958.  
  3959. new Weapon [32]; read_data ( 4, Weapon, charsmax ( Weapon ) );
  3960.  
  3961. if ( ModeNemesis )
  3962. {
  3963. get_players ( iPlayers, iHuman, "ah" );
  3964.  
  3965. set_hudmessage ( 255, 255, 255, 0.02, 0.6, 2, 0.02, 3.0, 0.02, 0.4, 4 );
  3966.  
  3967. ShowSyncHudMsg ( 0, HudMsgSync [0], "%d Human%s Remaining...", iHuman - 1, iHuman == 2 ? "" : "s" );
  3968. }
  3969.  
  3970. if ( ModeAssassin )
  3971. {
  3972. get_players ( iPlayers, iHuman, "ah" );
  3973.  
  3974. set_hudmessage ( 255, 255, 255, 0.02, 0.6, 2, 0.02, 3.0, 0.02, 0.4, 4 );
  3975.  
  3976. ShowSyncHudMsg ( 0, HudMsgSync [0], "%d Human%s Remaining...", iHuman - 1, iHuman == 2 ? "" : "s" );
  3977. }
  3978.  
  3979. if ( ModeSurvivor )
  3980. {
  3981. get_players ( iPlayers, iZombie, "ah" );
  3982.  
  3983. set_hudmessage ( 255, 255, 255, 0.02, 0.6, 2, 0.02, 3.0, 0.02, 0.4, 4 );
  3984.  
  3985. ShowSyncHudMsg ( 0, HudMsgSync [0], "%d Zombie%s Remaining...", iZombie - 1, iZombie == 2 ? "" : "s" );
  3986. }
  3987.  
  3988. if ( ModeSniper )
  3989. {
  3990. get_players ( iPlayers, iZombie, "ah" );
  3991.  
  3992. set_hudmessage ( 255, 255, 255, 0.02, 0.6, 2, 0.02, 3.0, 0.02, 0.4, 4 );
  3993.  
  3994. ShowSyncHudMsg ( 0, HudMsgSync [0], "%d Zombie%s Remaining...", iZombie - 1, iZombie == 2 ? "" : "s" );
  3995. }
  3996.  
  3997. /**
  3998. * -----------------------------------------------------
  3999. * Players
  4000. * -----------------------------------------------------
  4001. * Name
  4002. * Steam
  4003. * Ip
  4004. * Score
  4005. * Kills
  4006. * Deaths
  4007. * headShots
  4008. * Time - The time spent in minutes.
  4009. * timeString - Formatted as a string.
  4010. * Seen - get_systime() stamp.
  4011. * seenString - get_systime() stamp formatted as a time string including date.
  4012. * kpdRatio - Kills/ Deaths ratio.
  4013. * kmdValue - Kills - Deaths value.
  4014. */
  4015.  
  4016. static Killer = 0, Victim = 0, bool:headShot = false,\
  4017. victimIp[64] = { 0, ... }, killerIp[64] = { 0, ... }, timeNow = 0, bool:killerValid = false, \
  4018. bool:victimValid = false, bool:victimBOT = false, bool:killerBOT = false;
  4019. //lcheck();
  4020.  
  4021. Killer = read_data(1);
  4022. Victim = read_data(2);
  4023. headShot = bool:read_data(3);
  4024. read_data(4, Weapon, charsmax(Weapon));
  4025. ucfirst(Weapon);
  4026. timeNow = get_systime();
  4027. killerValid = isValidPlayer(Killer);
  4028. victimValid = isValidPlayer(Victim);
  4029. killerBOT = killerValid && is_user_bot(Killer) ? true : false;
  4030. victimBOT = victimValid && is_user_bot(Victim) ? true : false;
  4031.  
  4032. /**
  4033. * Committed suicide with weapon, Killer is valid.
  4034. */
  4035. if (Killer == Victim && killerValid && !killerBOT)
  4036. {
  4037. get_user_ip(Victim, victimIp, charsmax(victimIp), 1 /** No port. */);
  4038.  
  4039. g_Deaths[Victim]++;
  4040. g_Seen[Victim] = timeNow;
  4041. format_time(g_seenString[Victim], charsmax(g_seenString[]), Date_Format);
  4042. formatex(g_Ip[Victim], charsmax(g_Ip), "%s", victimIp);
  4043. g_Score[Victim] -= Score_For_Suicide;
  4044. g_kpdRatio[Victim] = computeKpdRatio(Victim);
  4045. g_kmdValue[Victim] = computeKmdValue(Victim);
  4046.  
  4047. updateRank(Victim);
  4048. }
  4049.  
  4050. /**
  4051. * Committed suicide by world, Killer is not a player.
  4052. */
  4053. else if (victimValid && !victimBOT && !killerBOT && \
  4054. (!killerValid || equali(Weapon, "World", 5 /** May be "WorldSpawn". */)))
  4055. {
  4056. get_user_ip(Victim, victimIp, charsmax(victimIp), 1 /** No port. */);
  4057.  
  4058. g_Deaths[Victim]++;
  4059. g_Seen[Victim] = timeNow;
  4060. format_time(g_seenString[Victim], charsmax(g_seenString[]), Date_Format);
  4061. formatex(g_Ip[Victim], charsmax(g_Ip), "%s", victimIp);
  4062. g_Score[Victim] -= Score_For_Suicide;
  4063. g_kpdRatio[Victim] = computeKpdRatio(Victim);
  4064. g_kmdValue[Victim] = computeKmdValue(Victim);
  4065.  
  4066. updateRank(Victim);
  4067. }
  4068.  
  4069. /**
  4070. * Normal kill.
  4071. */
  4072. else if (killerValid && victimValid && !killerBOT && !victimBOT)
  4073. {
  4074. get_user_ip(Victim, victimIp, charsmax(victimIp), 1 /** No port. */);
  4075. get_user_ip(Killer, killerIp, charsmax(killerIp), 1 /** No port. */);
  4076.  
  4077. g_Deaths[Victim]++;
  4078. g_Kills[Killer]++;
  4079.  
  4080. if (headShot)
  4081. {
  4082. g_headShots[Killer]++;
  4083.  
  4084. g_Score[Killer] += Score_For_Head_Shot;
  4085. }
  4086.  
  4087. else
  4088. {
  4089. g_Score[Killer] += Score_For_Kill;
  4090. }
  4091.  
  4092. g_Seen[Victim] = timeNow;
  4093. g_Seen[Killer] = timeNow;
  4094. format_time(g_seenString[Victim], charsmax(g_seenString[]), Date_Format);
  4095. format_time(g_seenString[Killer], charsmax(g_seenString[]), Date_Format);
  4096. formatex(g_Ip[Victim], charsmax(g_Ip), "%s", victimIp);
  4097. formatex(g_Ip[Killer], charsmax(g_Ip), "%s", killerIp);
  4098. g_Score[Victim] -= Score_For_Death;
  4099. g_kpdRatio[Victim] = computeKpdRatio(Victim);
  4100. g_kpdRatio[Killer] = computeKpdRatio(Killer);
  4101. g_kmdValue[Victim] = computeKmdValue(Victim);
  4102. g_kmdValue[Killer] = computeKmdValue(Killer);
  4103.  
  4104. updateRank(Victim);
  4105. updateRank(Killer);
  4106.  
  4107. }
  4108. }
  4109.  
  4110. public zRoundEnded ( )
  4111. {
  4112. for ( new id = 1; id <= MaxPlayers; id ++ )
  4113. {
  4114. if ( task_exists ( id ) ) remove_task ( id );
  4115.  
  4116. if ( task_exists ( id + TASK_REGENERATION ) ) remove_task ( id + TASK_REGENERATION );
  4117.  
  4118. if ( PlantedMines [id] )
  4119. {
  4120. fwRemoveMinesByOwner ( id );
  4121.  
  4122. PlantedMines [id] = 0;
  4123. }
  4124. }
  4125.  
  4126. if ( ModeNemesis ) ModeNemesis = false;
  4127.  
  4128. if ( ModeAssassin )
  4129. {
  4130. set_lights ( "d" );
  4131.  
  4132. ModeAssassin = false;
  4133. }
  4134.  
  4135. if ( ModeSurvivor ) ModeSurvivor = false;
  4136.  
  4137. if ( ModeSniper ) ModeSniper = false;
  4138. }
  4139.  
  4140. public evNewRound ( )
  4141. {
  4142. remove_task ( TASK_ID );
  4143. remove_task ( TASK_WELCOMEMSG );
  4144. remove_task ( TASK_MAKEZOMBIE );
  4145.  
  4146. /* ---------- | Remove Extra-Items | ---------- */
  4147.  
  4148. for ( new id = 1; id <= MaxPlayers; id ++ )
  4149.  
  4150. LastRocket [id] = iTime + 14.0;
  4151.  
  4152. arrayset ( iBlinks, 0, 33 );
  4153. arrayset ( Shot, 0, 33 );
  4154. arrayset ( HasUnlimitedClip, 0, 33 );
  4155. arrayset ( MultiJumps, 0, 33 );
  4156. arrayset ( IsTryder, 0, 33 );
  4157. arrayset ( HasTripMines, 0, 33 );
  4158.  
  4159. RemoveJetpacks ( )
  4160.  
  4161. CountDown = 11;
  4162.  
  4163. set_task ( 4.0, "CheckCountDown", TASK_ID );
  4164.  
  4165. set_task ( 0.1, "RemoveStuff" );
  4166.  
  4167. NewRound = true;
  4168.  
  4169. EndRound = false;
  4170.  
  4171. NemesisRound = false;
  4172.  
  4173. AssassinRound = false;
  4174.  
  4175. SurvivorRound = false;
  4176.  
  4177. SniperRound = false;
  4178.  
  4179. SwarmRound = false;
  4180.  
  4181. ArmageddonRound = false;
  4182.  
  4183. ApocalypseRound = false;
  4184.  
  4185. NightmareRound = false;
  4186.  
  4187. PlagueRound = false;
  4188.  
  4189. ModeStarted = false;
  4190.  
  4191. FreezeTime = true;
  4192.  
  4193. set_task ( 1.0, "SendWelcomeMessage", TASK_WELCOMEMSG );
  4194. }
  4195.  
  4196. public evResetHud ( id )
  4197. {
  4198. message_begin ( MSG_ONE, get_user_msgid ( "HideWeapon" ), _, id );
  4199. write_byte ( 1<<5 )
  4200. message_end ( );
  4201. }
  4202.  
  4203. public CheckCountDown ( )
  4204. {
  4205. new DownSpeak [11] [] =
  4206. {
  4207. "",
  4208. "fvox/one.wav",
  4209. "fvox/two.wav",
  4210. "fvox/three.wav",
  4211. "fvox/four.wav",
  4212. "fvox/five.wav",
  4213. "fvox/six.wav",
  4214. "fvox/seven.wav",
  4215. "fvox/eight.wav",
  4216. "fvox/nine.wav",
  4217. "fvox/ten.wav"
  4218. };
  4219.  
  4220. if ( CountDown > 1 )
  4221. {
  4222. if ( CountDown > 5 )
  4223. {
  4224. EmitSound ( 0, CHAN_VOICE, DownSpeak [CountDown -1] );
  4225.  
  4226. set_hudmessage ( 179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);
  4227.  
  4228. ShowSyncHudMsg ( 0, HudMsgSync [0], "Infection in %i", CountDown - 1 );
  4229. }
  4230. else
  4231. {
  4232. EmitSound ( 0, CHAN_VOICE, DownSpeak [CountDown -1] );
  4233.  
  4234. set_hudmessage ( 179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);
  4235.  
  4236. ShowSyncHudMsg ( 0, HudMsgSync [0], "Infection in %i", CountDown - 1 );
  4237. }
  4238.  
  4239. CountDown --;
  4240.  
  4241. set_task ( 1.0, "CheckCountDown", TASK_ID );
  4242.  
  4243. }
  4244. else if ( CountDown <= 1 )
  4245. {
  4246. remove_task ( TASK_ID );
  4247.  
  4248. set_task ( 0.6, "MakeZombieTask", TASK_MAKEZOMBIE );
  4249. }
  4250. }
  4251.  
  4252. public AmbienceEffects ( )
  4253. {
  4254. for ( new i = 1; i <= MaxPlayers; i ++ )
  4255. {
  4256. if ( is_user_alive ( i ) )
  4257. {
  4258. ScreenShakeEffect ( i, 2.5 );
  4259.  
  4260. ScreenFadeEffect ( i, 0.5, 0, 120, 240, 160 );
  4261. }
  4262. }
  4263. }
  4264.  
  4265. public ScreenShakeEffect ( id, const Float: Seconds )
  4266. {
  4267. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "ScreenShake" ), {0, 0, 0}, id )
  4268. write_short ( floatround ( 4096.0 * Seconds, floatround_round ) );
  4269. write_short ( floatround ( 4096.0 * Seconds, floatround_round ) );
  4270. write_short ( 1<<13 );
  4271. message_end ( );
  4272. }
  4273.  
  4274. public ScreenFadeEffect ( id, const Float: Seconds, const Red, const Green, const Blue, const Alpha )
  4275. {
  4276. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "ScreenFade" ), _, id );
  4277. write_short ( floatround ( 4096.0 * Seconds, floatround_round ) );
  4278. write_short ( floatround ( 4096.0 * Seconds, floatround_round ) );
  4279. write_short ( 0x0000 );
  4280. write_byte ( Red );
  4281. write_byte ( Green );
  4282. write_byte ( Blue );
  4283. write_byte ( Alpha );
  4284. message_end ( );
  4285. }
  4286.  
  4287. public evShowStatus ( id )
  4288. {
  4289. if ( !IsBot [id] && IsConnected [id] )
  4290. {
  4291. static AimID; AimID = read_data ( 2 );
  4292.  
  4293. if ( IsZombie [id] == IsZombie [AimID] )
  4294. {
  4295. static Class [ 32], Red, Green, Blue;
  4296.  
  4297. if ( IsZombie [id] )
  4298. {
  4299. Red = 255;
  4300.  
  4301. Green = 140;
  4302.  
  4303. Blue = 40;
  4304.  
  4305. if ( IsNemesis [AimID] )
  4306.  
  4307. formatex ( Class, charsmax ( Class ), "Nemesis" );
  4308.  
  4309. else if ( IsAssassin [AimID] )
  4310.  
  4311. formatex ( Class, charsmax ( Class ), "Assassin" );
  4312. else
  4313. copy ( Class, charsmax ( Class ), ZombieClassName [id] );
  4314. }
  4315. else
  4316. {
  4317. Red = 20;
  4318.  
  4319. Green = 135;
  4320.  
  4321. Blue = 255;
  4322.  
  4323. if ( IsSurvivor [AimID] )
  4324.  
  4325. formatex ( Class, charsmax ( Class ), "Survivor");
  4326.  
  4327. else if ( IsSniper [AimID] )
  4328. formatex ( Class, charsmax ( Class ), "Sniper ");
  4329. else
  4330. formatex ( Class, charsmax ( Class ), "Human" );
  4331. }
  4332.  
  4333.  
  4334. static HealthString [16], ArmorString [16], PacksString [16], points[32];
  4335.  
  4336. AddCommas ( pev ( AimID, pev_health ), HealthString, charsmax ( HealthString ) );
  4337.  
  4338. AddCommas ( pev ( AimID, pev_armorvalue ), ArmorString, charsmax ( ArmorString ) );
  4339.  
  4340. AddCommas ( AmmoPacks [AimID], PacksString, charsmax ( PacksString ) );
  4341.  
  4342. AddCommas ( g_iPoints[AimID], points, 31 )
  4343.  
  4344. set_hudmessage ( Red, Green, Blue, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 );
  4345.  
  4346. ShowSyncHudMsg ( id, HudMsgSync [2], "%s^n[ Health: %s | Armor: %s | Packs: %s | Points: %s ]", \
  4347. PlayerName [AimID], HealthString, ArmorString, PacksString, points );
  4348. }
  4349. }
  4350. }
  4351.  
  4352.  
  4353. public evHideStatus ( id ) ClearSyncHud( id, HudMsgSync [3] );
  4354.  
  4355.  
  4356. public ShowStatus ( id )
  4357. {
  4358. if ( is_user_connected ( id ) && !IsZombie [id] )
  4359. {
  4360. static iTarget; iTarget = read_data ( 2 );
  4361.  
  4362. if ( IsZombie [iTarget] )
  4363. {
  4364. static HealthString [16]; AddCommas ( get_user_health ( iTarget ), HealthString, charsmax ( HealthString ) );
  4365.  
  4366. set_hudmessage ( 250, 4, 24, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1 );
  4367.  
  4368. ShowSyncHudMsg ( id, HudMsgSync [3], "%s^n[Health: %s]", PlayerName [iTarget], HealthString );
  4369. }
  4370. }
  4371. }
  4372.  
  4373. public HideStatus ( id ) ClearSyncHud ( id, HudMsgSync [3] );
  4374.  
  4375.  
  4376. public leRoundStart ( id )
  4377. {
  4378. FreezeTime = false;
  4379.  
  4380. remove_ds(id)
  4381.  
  4382. g_iKillsThisRound[id] = 0;
  4383. }
  4384. public leRoundEnd ( )
  4385. {
  4386. static Float: LastEndTime, Float: CurrentTime;
  4387.  
  4388. CurrentTime = get_gametime ( );
  4389.  
  4390. if ( CurrentTime - LastEndTime < 0.5 ) return;
  4391.  
  4392. LastEndTime = CurrentTime;
  4393.  
  4394. static id, Team;
  4395.  
  4396. for ( id = 1; id <= MaxPlayers; id ++ )
  4397. {
  4398. if ( !IsConnected [id] ) continue;
  4399.  
  4400. Team = fm_cs_get_user_team ( id );
  4401.  
  4402. if ( Team == FM_CS_TEAM_SPECTATOR || Team == FM_CS_TEAM_UNASSIGNED ) continue;
  4403.  
  4404. SaveStats ( id );
  4405. }
  4406.  
  4407. EndRound = true;
  4408.  
  4409. remove_task ( TASK_WELCOMEMSG );
  4410.  
  4411. remove_task ( TASK_MAKEZOMBIE );
  4412.  
  4413. remove_task ( TASK_AMBIENCESOUNDS );
  4414.  
  4415. AmbienceSoundStop ( );
  4416.  
  4417. static Sound [64];
  4418.  
  4419. if ( !fnGetZombies ( ) )
  4420. {
  4421. set_hudmessage ( 20, 20, 255, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1 );
  4422.  
  4423. ShowSyncHudMsg ( 0, HudMsgSync [1], "Humans defeated the plague!" );
  4424.  
  4425. ArrayGetString ( SoundWinHumans, random_num ( 0, ArraySize ( SoundWinHumans ) - 1 ), Sound, charsmax ( Sound ) );
  4426.  
  4427. PlaySound ( 0, Sound );
  4428.  
  4429. ScoreHumans ++;
  4430.  
  4431. ExecuteForward ( fwRoundEnd, fwDummyResult, ZRISES_TEAM_HUMAN );
  4432. }
  4433. else if ( !fnGetHumans ( ) )
  4434. {
  4435. set_hudmessage ( 255, 20, 20, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1 );
  4436.  
  4437. ShowSyncHudMsg ( 0, HudMsgSync [1], "Zombies have taken over the world!" );
  4438.  
  4439. ArrayGetString ( SoundWinZombies, random_num ( 0, ArraySize ( SoundWinZombies ) - 1 ), Sound, charsmax ( Sound ) );
  4440.  
  4441. PlaySound ( 0, Sound );
  4442.  
  4443. ScoreZombies ++;
  4444.  
  4445. ExecuteForward ( fwRoundEnd, fwDummyResult, ZRISES_TEAM_ZOMBIE );
  4446. }
  4447. else
  4448. {
  4449. set_hudmessage ( 20, 255, 20, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1 );
  4450.  
  4451. ShowSyncHudMsg ( 0, HudMsgSync [1], "No one won..." );
  4452.  
  4453. ArrayGetString ( SoundWinNoOne, random_num ( 0, ArraySize ( SoundWinNoOne ) - 1 ), Sound, charsmax ( Sound ) );
  4454.  
  4455. PlaySound ( 0, Sound );
  4456.  
  4457. ExecuteForward ( fwRoundEnd, fwDummyResult, ZRISES_TEAM_NO_ONE );
  4458. }
  4459.  
  4460. for (new i = 1; i <= MaxPlayers; i++)
  4461. {
  4462. if (IsConnected[i])
  4463. {
  4464. g_doubledamage[i] = false
  4465.  
  4466. }
  4467. }
  4468. static iFrags;
  4469. static iMaximumPacks;
  4470. static iMaximumKills;
  4471. static iPacksLeader;
  4472. static iKillsLeader;
  4473. iMaximumPacks = 0;
  4474. iMaximumKills = 0;
  4475. iPacksLeader = 0;
  4476. iKillsLeader = 0;
  4477. g_iVariable = 1;
  4478. while (MaxPlayers + 1 > g_iVariable)
  4479. {
  4480. if (IsConnected[g_iVariable])
  4481. {
  4482. iFrags = get_user_frags(g_iVariable);
  4483. if (iFrags > iMaximumKills)
  4484. {
  4485. iMaximumKills = iFrags;
  4486. iKillsLeader = g_iVariable;
  4487. }
  4488. }
  4489. g_iVariable += 1;
  4490. }
  4491. g_iVariable = 1;
  4492. while (MaxPlayers + 1 > g_iVariable)
  4493. {
  4494. if (IsConnected[g_iVariable] && AmmoPacks[g_iVariable] > iMaximumPacks)
  4495. {
  4496. iMaximumPacks = AmmoPacks [g_iVariable];
  4497. iPacksLeader = g_iVariable;
  4498. }
  4499. g_iVariable += 1;
  4500. }
  4501. if (IsConnected[iKillsLeader])
  4502. {
  4503. static a[15];
  4504. AddCommas(iMaximumKills, a, 14);
  4505. if (g_iKillsThisRound[iKillsLeader])
  4506. {
  4507. client_print_color(iKillsLeader, print_team_grey, "^x03%s^x01 is^x04 Leader^x01 with^x04 %s^x01 frags! [^x04 %d^x01 this round ]", PlayerName[iKillsLeader], a, g_iKillsThisRound[iKillsLeader]);
  4508. }
  4509. }
  4510. if (IsConnected[iPacksLeader])
  4511. {
  4512. static a[15];
  4513. AddCommas(iMaximumPacks, a, 14);
  4514.  
  4515. client_print_color(iPacksLeader, print_team_grey, "^3%s^1 is^4 Leader^1 with^4 %s^1 packs!", PlayerName [iPacksLeader], a);
  4516. }
  4517. BalanceTeams ( );
  4518.  
  4519. return;
  4520. }
  4521.  
  4522. public evIntermission ( ) remove_task ( TASK_AMBIENCESOUNDS );
  4523.  
  4524. public evAmmoX ( id )
  4525. {
  4526. if ( IsZombie [id] ) return;
  4527.  
  4528. static Type; Type = read_data ( 1 );
  4529.  
  4530. if ( Type >= sizeof AMMOWEAPON ) return;
  4531.  
  4532. static Weapon; Weapon = AMMOWEAPON [Type];
  4533.  
  4534. if ( MAXBPAMMO [Weapon] <= 2 ) return;
  4535.  
  4536. static Amount; Amount = read_data ( 2 );
  4537.  
  4538. if ( Amount < MAXBPAMMO [Weapon] )
  4539. {
  4540. static Args [1]; Args [0] = Weapon;
  4541.  
  4542. set_task ( 0.1, "RefillBpAmmo", id, Args, sizeof Args );
  4543. }
  4544. }
  4545.  
  4546. public fmSpawn ( Entity )
  4547. {
  4548. if ( !pev_valid ( Entity ) ) return FMRES_IGNORED;
  4549.  
  4550. new ClassName [32], Objective [32], size = ArraySize ( ObjectiveEnts );
  4551.  
  4552. pev ( Entity, pev_classname, ClassName, charsmax ( ClassName ) );
  4553.  
  4554. for ( new i = 0; i < size; i ++ )
  4555. {
  4556. ArrayGetString ( ObjectiveEnts, i, Objective, charsmax ( Objective ) );
  4557.  
  4558. if ( equal ( ClassName, Objective ) )
  4559. {
  4560. engfunc ( EngFunc_RemoveEntity, Entity );
  4561.  
  4562. return FMRES_SUPERCEDE;
  4563. }
  4564. }
  4565. return FMRES_IGNORED;
  4566. }
  4567.  
  4568. public fmPrecacheSound ( const Sound[] )
  4569. {
  4570. if ( equal ( Sound, "hostage", 7 ) ) return FMRES_SUPERCEDE;
  4571.  
  4572. return FMRES_IGNORED;
  4573. }
  4574.  
  4575. public fwPlayerSpawnPost ( id )
  4576. {
  4577. if ( !is_user_alive ( id ) || !fm_cs_get_user_team ( id ) ) return;
  4578.  
  4579. IsAlive [id] = true;
  4580.  
  4581. if(g_vip[id] && containi(g_vip_flags[id], "S") != -1)
  4582. {
  4583. message_begin(MSG_BROADCAST, get_user_msgid("ScoreAttrib"))
  4584. write_byte(id)
  4585. write_byte(4)
  4586. message_end()
  4587.  
  4588. set_task(0.175, "makevip", id, _, _, "a", 3)
  4589. }
  4590.  
  4591. if (g_vip[id])
  4592. set_task(1.0, "AddArmor", id);
  4593.  
  4594. g_Godmode [id] = false
  4595.  
  4596. g_Damage2 [id] = false
  4597.  
  4598. remove_task ( id + TASK_SPAWN );
  4599. remove_task ( id + TASK_MODEL );
  4600. remove_task ( id + TASK_BLOOD );
  4601. remove_task ( id + TASK_BURN );
  4602. remove_task ( id + TASK_NVISION );
  4603.  
  4604. ResetVars ( id, 0 );
  4605.  
  4606. menu_display( id, g_PrimaryMenu )
  4607.  
  4608. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesHumanHealth] ) );
  4609.  
  4610. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesHumanGravity] ) );
  4611.  
  4612. if ( !NewRound && fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  4613. {
  4614. remove_task ( id + TASK_TEAM );
  4615.  
  4616. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  4617.  
  4618. fm_user_team_update ( id );
  4619. }
  4620.  
  4621. static CurrentModel [32], TempModel [32], AlreadyHasModel, i, iRandom, size;
  4622.  
  4623. AlreadyHasModel = false;
  4624.  
  4625. fm_cs_get_user_model ( id, CurrentModel, charsmax ( CurrentModel ) );
  4626.  
  4627. if ( get_user_flags ( id ) & ADMIN_RCON )
  4628. {
  4629. for ( i = 0; i < ArraySize ( ModelOwnerHuman ); i ++ )
  4630. {
  4631. ArrayGetString ( ModelOwnerHuman, i, TempModel, charsmax ( TempModel ) );
  4632.  
  4633. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  4634. }
  4635.  
  4636. if ( !AlreadyHasModel )
  4637. {
  4638. iRandom = random_num ( 0 , size - 1 );
  4639.  
  4640. ArrayGetString ( ModelOwnerHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  4641. }
  4642. }
  4643. if ( get_user_flags ( id ) & ADMIN_RESERVATION )
  4644. {
  4645. for ( i = 0; i < ArraySize ( ModelAdminHuman ); i ++ )
  4646. {
  4647. ArrayGetString ( ModelAdminHuman, i, TempModel, charsmax ( TempModel ) );
  4648.  
  4649. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  4650. }
  4651.  
  4652. if ( !AlreadyHasModel )
  4653. {
  4654. iRandom = random_num ( 0 , size - 1 );
  4655.  
  4656. ArrayGetString ( ModelAdminHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  4657. }
  4658. }
  4659.  
  4660. for ( i = 0; i < ArraySize ( ModelHuman ); i ++ )
  4661. {
  4662. ArrayGetString ( ModelHuman, i, TempModel, charsmax ( TempModel ) );
  4663.  
  4664. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  4665. }
  4666.  
  4667. if ( !AlreadyHasModel )
  4668. {
  4669. iRandom = random_num ( 0, size - 1 );
  4670.  
  4671. ArrayGetString ( ModelHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  4672. }
  4673.  
  4674.  
  4675. if ( !AlreadyHasModel)
  4676. {
  4677. if ( NewRound )
  4678.  
  4679. set_task ( 1.0, "fmUserModelUpdate", id + TASK_MODEL );
  4680. else
  4681. fmUserModelUpdate ( id + TASK_MODEL );
  4682. }
  4683.  
  4684. fm_set_rendering ( id );
  4685.  
  4686. if ( IsBot [id] )
  4687. {
  4688. cs_set_user_nvg ( id, 0 );
  4689.  
  4690. if ( NewRound )
  4691.  
  4692. set_task ( 20.0, "BotBuyExtras", id + TASK_SPAWN );
  4693. else
  4694. set_task ( 10.0, "BotBuyExtras", id + TASK_SPAWN );
  4695. }
  4696.  
  4697. static WeaponEntity;
  4698.  
  4699. WeaponEntity = fmCsGetCurrentWeaponEnt ( id );
  4700.  
  4701. if ( pev_valid ( WeaponEntity ) ) ReplaceWeaponModels ( id, cs_get_weapon_id ( WeaponEntity ) );
  4702.  
  4703. if (g_bFrozen[id])
  4704. {
  4705. if(!is_user_alive(id))return
  4706.  
  4707. new flags=pev(id,pev_flags)
  4708. if (flags&FL_FROZEN)
  4709. flags&=~FL_FROZEN,set_pev(id,pev_flags,flags)
  4710. removefrendering(id)
  4711. }
  4712.  
  4713. fnCheckLastZombie ( );
  4714. }
  4715.  
  4716. public fwPlayerKilled ( Victim, Attacker, shouldgib )
  4717. {
  4718. if ( IsAlive [Attacker] && IsZombie [Attacker] )
  4719. {
  4720. switch ( ZombieClass [Attacker] )
  4721. {
  4722. case ZCLASS_HUNTER: DoScreenFade ( Attacker, 0.60, 1.15, 255, 10, 10, 94 );
  4723. }
  4724.  
  4725. SetHamParamInteger ( 3, 2 );
  4726. }
  4727.  
  4728. IsAlive [Victim] = false;
  4729.  
  4730. zp_get_gold_ak [Victim] = false;
  4731.  
  4732. zp_get_gold_de [Victim] = false;
  4733.  
  4734. remove_task ( Victim + TASK_HEALTH );
  4735.  
  4736. if ( HasJet [Victim] )
  4737. {
  4738. DropJetpack ( Victim );
  4739.  
  4740. HasJet [Victim ] = 0;
  4741.  
  4742. Rocket [Victim ] = false;
  4743.  
  4744. FlyEnergy [Victim ] = 0;
  4745. }
  4746.  
  4747.  
  4748. iBlinks [Victim] = 0;
  4749.  
  4750. Shot [Victim] = true
  4751.  
  4752. HasUnlimitedClip [Victim] = false;
  4753.  
  4754. MultiJumps [Victim] = false;
  4755.  
  4756. IsTryder [Victim] = false;
  4757.  
  4758. HasTripMines [Victim] = 0;
  4759.  
  4760. if ( PlantedMines [Victim] )
  4761. {
  4762. fwRemoveMinesByOwner ( Victim );
  4763.  
  4764. PlantedMines [Victim] = 0;
  4765. }
  4766.  
  4767. set_task ( 0.1, "SpecNVision", Victim );
  4768.  
  4769. if ( IsZombie [Victim] || !IsZombie [Victim] )
  4770. {
  4771. remove_task ( Victim + TASK_BLOOD );
  4772.  
  4773. remove_task ( Victim + TASK_BURN );
  4774. }
  4775.  
  4776. if ( is_user_connected ( Victim ) && is_user_connected ( Attacker )!=Victim )
  4777. {
  4778. if (IsZombie[Attacker])
  4779. {
  4780. g_iPoints[Attacker]++
  4781. SavePoints(Attacker)
  4782. }
  4783.  
  4784. if (IsSniper[Attacker])
  4785. {
  4786. if (random_num(1, 4) == 1)
  4787. {
  4788. g_iPoints[Attacker] += 1;
  4789. set_hudmessage(255, 180, 30, -1.00, 0.10, 1, 0.00, 1.75, 1.00, 1.00, -1);
  4790. ShowSyncHudMsg ( Victim, HudMsgSync [1], "== SNIPER ==^n!!!Randomly got +1 point!!!^n[25% chance per zombie]");
  4791. }
  4792. }
  4793. else
  4794. {
  4795. if (IsSniper[Attacker])
  4796. {
  4797. g_iPoints[Attacker]++
  4798. SavePoints(Attacker)
  4799. }
  4800.  
  4801. else
  4802. {
  4803. g_iPoints[Attacker]+=2
  4804. SavePoints(Attacker)
  4805. }
  4806. }
  4807.  
  4808. if ( ( IsNemesis [Attacker] || IsNemesis [Victim] ) || ( IsAssassin [Attacker] || IsAssassin [Victim] ) )
  4809.  
  4810. SetHamParamInteger ( 3, 2 );
  4811.  
  4812. if ( IsSniper [Attacker] && CurrentWeapon [Attacker] == CSW_AWP )
  4813. {
  4814. SetHamParamInteger ( 3, 2 );
  4815.  
  4816. static Origin [3]; get_user_origin ( Victim, Origin );
  4817.  
  4818. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  4819.  
  4820. write_byte ( TE_LAVASPLASH ) ;
  4821.  
  4822. write_coord ( Origin [0] );
  4823.  
  4824. write_coord ( Origin [1] );
  4825.  
  4826. write_coord ( Origin [2] - 26 );
  4827.  
  4828. message_end ( );
  4829. }
  4830. }
  4831.  
  4832. static SelfKill; SelfKill = ( Victim == Attacker || !is_user_valid_connected ( Attacker ) ) ? true : false;
  4833.  
  4834. if ( SelfKill ) return;
  4835.  
  4836. if ( IsZombie [Attacker] || IsNemesis [Attacker] || IsAssassin [Attacker] || IsSniper [Attacker] )
  4837.  
  4838. AmmoPacks [Attacker] += get_pcvar_num ( GetCvar [zRisesAmmoInfect] );
  4839.  
  4840. if (g_bFrozen [ Victim ] )
  4841. {
  4842. new flags=pev(Victim,pev_flags)
  4843. if (flags&FL_FROZEN)
  4844. flags&=~FL_FROZEN,set_pev(Victim,pev_flags,flags)
  4845. removefrendering(Victim)
  4846. }
  4847.  
  4848. if (IsAlive [Attacker] )
  4849. {
  4850. if (IsNemesis[Attacker]||IsAssassin[Attacker]||IsSniper[Attacker])
  4851.  
  4852. SetHamParamInteger ( 3 , 2 )
  4853. }
  4854.  
  4855. g_iKillsThisRound[Attacker]++;
  4856. }
  4857.  
  4858. public fwClientUserInfoChanged ( id, Buffer )
  4859. {
  4860. if ( !is_user_connected ( id ) ) return FMRES_IGNORED;
  4861.  
  4862. static NewName [32];
  4863.  
  4864. engfunc ( EngFunc_InfoKeyValue, Buffer, "name", NewName, charsmax ( NewName ) );
  4865.  
  4866. if ( equal ( NewName, PlayerName [id] ) ) return FMRES_IGNORED;
  4867.  
  4868. PlayerName [id] = NewName;
  4869.  
  4870. return FMRES_IGNORED;
  4871. }
  4872.  
  4873. stock DoScreenFade ( id, Float: FadeTime, Float: HoldTime, Red, Green, Blue, Alpha )
  4874. {
  4875. static MsgScreenFade;
  4876.  
  4877. if ( !MsgScreenFade ) { MsgScreenFade = get_user_msgid ( "ScreenFade" ); }
  4878.  
  4879. new Fade, Hold;
  4880.  
  4881. Fade = clamp ( floatround ( FadeTime * float (1<<12) ), 0, 0xFFFF );
  4882.  
  4883. Hold = clamp ( floatround ( HoldTime * float (1<<12) ), 0, 0xFFFF );
  4884.  
  4885. message_begin ( MSG_ONE_UNRELIABLE, MsgScreenFade, _, id );
  4886.  
  4887. write_short ( Fade );
  4888.  
  4889. write_short ( Hold );
  4890.  
  4891. write_short ( 0x0000 );
  4892.  
  4893. write_byte ( Red );
  4894.  
  4895. write_byte ( Green );
  4896.  
  4897. write_byte ( Blue );
  4898.  
  4899. write_byte ( Alpha );
  4900.  
  4901. message_end ( );
  4902. }
  4903.  
  4904. public fwPlayerKilledPost ( ) fnCheckLastZombie ( );
  4905.  
  4906. public fwTakeDamage ( Victim, Inflictor, Attacker, Float:Damage, DamageType )
  4907. {
  4908. if ( Victim == Attacker || !is_user_valid_connected ( Attacker ) ) return HAM_IGNORED;
  4909.  
  4910. if ( NewRound || EndRound ) return HAM_SUPERCEDE;
  4911.  
  4912. if ( NoDamage [Victim] ) return HAM_SUPERCEDE;
  4913.  
  4914. if ( IsZombie [Attacker] == IsZombie [Victim] ) return HAM_SUPERCEDE;
  4915.  
  4916. if ( !IsZombie [Attacker] )
  4917. {
  4918. if ((CurrentWeapon [Attacker] == CSW_AK47 || CurrentWeapon [Attacker] == CSW_DEAGLE) && (zp_get_gold_ak [Attacker] || zp_get_gold_de [Attacker]))
  4919. {
  4920. Damage *= 1.5;
  4921. SetHamParamFloat(4, Damage);
  4922. }
  4923.  
  4924. if (g_Damage2[Attacker])
  4925. {
  4926. Damage *= 2.0;
  4927.  
  4928. SetHamParamFloat(4, Damage);
  4929. }
  4930.  
  4931. if (g_vip[Attacker] && containi(g_vip_flags[Attacker], "D")!=-1)
  4932. {
  4933. Damage *= 1.15;
  4934.  
  4935. SetHamParamFloat(4, Damage);
  4936. }
  4937.  
  4938. if ( !IsNemesis [Victim] && !IsAssassin [Victim] && !IsSniper [Attacker] )
  4939. {
  4940. Damage *= get_pcvar_float ( GetCvar [zRisesZombieArmor] );
  4941.  
  4942. SetHamParamFloat ( 4, Damage );
  4943. }
  4944.  
  4945. if ( !IsSniper [Attacker] )
  4946. {
  4947. DamageDealt [Attacker] += floatround ( Damage );
  4948.  
  4949. while ( DamageDealt [Attacker] > get_pcvar_num ( GetCvar [zRisesAmmoDamage] ) )
  4950. {
  4951. AmmoPacks [Attacker] ++;
  4952.  
  4953. DamageDealt [Attacker] -= get_pcvar_num ( GetCvar [zRisesAmmoDamage] );
  4954. }
  4955. }
  4956.  
  4957. if ( IsSniper [Attacker] && CurrentWeapon [Attacker] == CSW_AWP )
  4958.  
  4959. SetHamParamFloat ( 4, get_pcvar_float ( GetCvar [zRisesSniperDamage] ) );
  4960.  
  4961. return HAM_IGNORED;
  4962. }
  4963.  
  4964. if ( DamageType & 1<<24 ) return HAM_SUPERCEDE;
  4965.  
  4966. if ( IsNemesis [Attacker] )
  4967. {
  4968. if ( Inflictor == Attacker ) SetHamParamFloat ( 4, get_pcvar_float ( GetCvar [zRisesNemesisDamage] ) );
  4969.  
  4970. return HAM_IGNORED;
  4971. }
  4972. else if ( IsAssassin [Attacker] )
  4973. {
  4974. if ( Inflictor == Attacker ) SetHamParamFloat ( 4, get_pcvar_float ( GetCvar [zRisesAssassinDamage] ) );
  4975.  
  4976. return HAM_IGNORED;
  4977. }
  4978.  
  4979. if ( NemesisRound || AssassinRound || SurvivorRound || SniperRound || SwarmRound || PlagueRound || ArmageddonRound || ApocalypseRound || NightmareRound || fnGetHumans ( ) == 1 ) return HAM_IGNORED;
  4980.  
  4981. static Float: Armor; pev ( Victim, pev_armorvalue, Armor );
  4982.  
  4983. if ( Armor > 0.0 )
  4984. {
  4985. EmitSound ( Victim, CHAN_BODY, "player/bhit_helmet-1.wav" );
  4986.  
  4987. set_pev ( Victim, pev_armorvalue, floatmax ( 0.0, Armor - Damage ) );
  4988.  
  4989. return HAM_SUPERCEDE;
  4990. }
  4991.  
  4992. UserZombie ( Victim, Attacker, 0, 0, 0, 1 );
  4993.  
  4994. g_iPoints[Attacker]++
  4995.  
  4996. SavePoints(Attacker)
  4997.  
  4998. return HAM_SUPERCEDE;
  4999. }
  5000.  
  5001. public fwTakeDamagePost ( Victim )set_pdata_float ( Victim, 108, 1.0, 5 );
  5002.  
  5003.  
  5004. public fw_traceattack(victim, attacker, Float:damage, direction[3], traceresult, dmgbits)
  5005. {
  5006. if(using_item[attacker])
  5007. {
  5008. set_tr2(traceresult, TR_iHitgroup, HIT_HEAD)
  5009. }
  5010. }
  5011.  
  5012. public fwTraceAttack(iVictim, iAttacker, Float:fDamage, Float:fDirection[3], iTracehandle, iDamage_Type)
  5013. {
  5014. if (iVictim == iAttacker || !is_user_valid_connected ( iAttacker ))
  5015. {
  5016. return;
  5017. }
  5018.  
  5019.  
  5020. if ( IsZombie [iAttacker] == IsZombie [iVictim] )
  5021. {
  5022. return;
  5023. }
  5024.  
  5025. if (!(iDamage_Type & DMG_BULLET))
  5026. {
  5027. return;
  5028. }
  5029.  
  5030.  
  5031. if (fDamage <= 0.0 || GetHamReturnStatus() == HAM_SUPERCEDE || get_tr2(iTracehandle, TR_pHit) != iVictim)
  5032. {
  5033. return;
  5034. }
  5035.  
  5036.  
  5037. if (IsNemesis[iVictim] && KNOCBACK_NEMESIS == 0.0)
  5038. {
  5039. return;
  5040. }
  5041.  
  5042.  
  5043. if (IsAssassin[iVictim] && KNOCBACK_ASSASSIN == 0.0)
  5044. {
  5045. return;
  5046. }
  5047.  
  5048.  
  5049. new iDucking = pev(iVictim, pev_flags) & (FL_DUCKING | FL_ONGROUND) == (FL_DUCKING | FL_ONGROUND);
  5050.  
  5051.  
  5052. if (iDucking && KNOCKBACK_DUCKING == 0.0)
  5053. {
  5054. return;
  5055. }
  5056.  
  5057.  
  5058. static iOrigin1[3];
  5059. static iOrigin2[3];
  5060.  
  5061. get_user_origin(iVictim, iOrigin1);
  5062. get_user_origin(iAttacker, iOrigin2);
  5063.  
  5064.  
  5065. if (get_distance(iOrigin1, iOrigin2) > KNOCBACK_DISTANCE)
  5066. {
  5067. return ;
  5068. }
  5069.  
  5070.  
  5071. static Float:fVelocity[3];
  5072.  
  5073. pev(iVictim, pev_velocity, fVelocity);
  5074.  
  5075.  
  5076. #if defined KNOCBACK_DAMAGE
  5077.  
  5078. xs_vec_mul_scalar(fDirection, fDamage, fDirection);
  5079.  
  5080. #endif
  5081.  
  5082.  
  5083. new iAttacker_Weapon = get_user_weapon(iAttacker);
  5084.  
  5085.  
  5086. #if defined KNOCBACK_POWER
  5087.  
  5088. if (g_fKnockback_Weapon_Power[iAttacker_Weapon] > 0.0)
  5089. {
  5090. xs_vec_mul_scalar(fDirection, g_fKnockback_Weapon_Power[iAttacker_Weapon], fDirection);
  5091. }
  5092.  
  5093. #endif
  5094.  
  5095.  
  5096. if (iDucking)
  5097. {
  5098. xs_vec_mul_scalar(fDirection, KNOCKBACK_DUCKING, fDirection);
  5099. }
  5100.  
  5101.  
  5102. if (IsNemesis[iVictim])
  5103. {
  5104.  
  5105. xs_vec_mul_scalar(fDirection, KNOCBACK_NEMESIS, fDirection);
  5106. }
  5107.  
  5108. else if (IsAssassin[iVictim])
  5109. {
  5110.  
  5111. xs_vec_mul_scalar(fDirection, KNOCBACK_ASSASSIN, fDirection);
  5112. }
  5113.  
  5114. #if defined KNOCBACK_OBEY_CLASS
  5115.  
  5116. xs_vec_mul_scalar ( fDirection, ZombieKnockback [iVictim], fDirection );
  5117.  
  5118. #endif
  5119.  
  5120. xs_vec_add(fVelocity, fDirection, fDirection);
  5121.  
  5122. #if !defined KNOCBACK_ZVEL
  5123.  
  5124. fDirection[2] = fVelocity[2];
  5125.  
  5126. #endif
  5127.  
  5128. set_pev(iVictim, pev_velocity, fDirection);
  5129. }
  5130.  
  5131. public fwUseStationary ( Entity, Caller, Activator, UseType )
  5132. {
  5133. if ( UseType == 2 && is_user_valid_connected ( Caller ) && IsZombie [Caller] ) return HAM_SUPERCEDE;
  5134.  
  5135. return HAM_IGNORED;
  5136. }
  5137.  
  5138. public fwUseStationaryPost ( Entity, Caller, Activator, UseType )
  5139. {
  5140. if ( UseType == 0 && is_user_valid_connected ( Caller ) )
  5141.  
  5142. ReplaceWeaponModels ( Caller, CurrentWeapon [Caller] )
  5143. }
  5144.  
  5145. public fwUsePushable ( ) return HAM_SUPERCEDE;
  5146.  
  5147. public fwTouchWeapon ( Weapon, id )
  5148. {
  5149. if ( !is_user_valid_connected ( id ) ) return HAM_IGNORED;
  5150.  
  5151. if ( IsZombie [id] || ( ( IsSurvivor [id] || IsSniper [id]) && !IsBot [id] ) ) return HAM_SUPERCEDE;
  5152.  
  5153. return HAM_IGNORED;
  5154. }
  5155.  
  5156. public fwAddPlayerItem ( id, WeaponEnt )
  5157. {
  5158. static ExtraAmmo; ExtraAmmo = pev ( WeaponEnt, pev_iuser1 );
  5159.  
  5160. if ( ExtraAmmo )
  5161. {
  5162. static WeaponID; WeaponID = cs_get_weapon_id ( WeaponEnt );
  5163.  
  5164. ExecuteHamB ( Ham_GiveAmmo, id, ExtraAmmo, AMMOTYPE [WeaponID], MAXBPAMMO [WeaponID] );
  5165.  
  5166. set_pev ( WeaponEnt, pev_iuser1, 0 );
  5167. }
  5168. }
  5169.  
  5170. public fwItemDeployPost ( WeaponEnt )
  5171. {
  5172. static Owner; Owner = fm_cs_get_weapon_ent_owner ( WeaponEnt );
  5173.  
  5174. static WeaponID; WeaponID = cs_get_weapon_id ( WeaponEnt );
  5175.  
  5176. CurrentWeapon [Owner] = WeaponID;
  5177.  
  5178. ReplaceWeaponModels ( Owner, WeaponID );
  5179.  
  5180. if ( IsZombie [Owner] && !( ( 1 << WeaponID ) & ZOMBIE_ALLOWED_WEAPONS_BITSUM ) )
  5181. {
  5182. CurrentWeapon [Owner] = CSW_KNIFE;
  5183.  
  5184. engclient_cmd ( Owner, "weapon_knife" );
  5185. }
  5186. }
  5187.  
  5188.  
  5189. public wpn_gi_reset_weapon ( id ) ReplaceWeaponModels ( id, CSW_KNIFE );
  5190.  
  5191. public client_putinserver ( id )
  5192. {
  5193. IsConnected [id] = true;
  5194.  
  5195. LoadStats ( id );
  5196.  
  5197. loadPoints ( id );
  5198.  
  5199. Fly [id] = false;
  5200.  
  5201. zp_get_gold_ak [id] = false;
  5202.  
  5203. zp_get_gold_de [id] = false;
  5204.  
  5205. Rocket [id] = false;
  5206.  
  5207. HasJet [id] = 0;
  5208.  
  5209. g_iKillsThisRound [id] = 0;
  5210.  
  5211. FlyEnergy [id] = 0;
  5212.  
  5213. ResetVars ( id, 1 );
  5214.  
  5215. TaskReward [id] = 600;
  5216.  
  5217. static UserIp [16], Country [44], City[44];
  5218.  
  5219. get_user_ip ( id, UserIp, charsmax ( UserIp ) );
  5220.  
  5221. geoip_country_ex ( UserIp, Country, charsmax ( City ) );
  5222.  
  5223. geoip_city ( UserIp, City, charsmax ( City ) );
  5224.  
  5225. get_user_name ( id, PlayerName [id], charsmax ( PlayerName [ ] ) );
  5226.  
  5227. if ( is_user_connected ( id ) )
  5228. {
  5229. client_print_color ( 0, print_team_grey, "^1Player^4 %s^1 connected from [^3%s^1] [^3%s^1]", PlayerName [id], Country, City);
  5230.  
  5231. set_task ( 1.0, "SpectatorHudMessage", id + TASK_SHOWHUD, _, _, "b" );
  5232. }
  5233. else
  5234. {
  5235. IsBot [id] = true;
  5236.  
  5237. if ( !HamCzBots ) set_task ( 0.1, "RegisterHamCzBots", id );
  5238. }
  5239.  
  5240. if ( is_user_connected ( id ) )
  5241.  
  5242. set_task ( 1.0, "TaskCheckName", id );
  5243.  
  5244. PlayerHasTag [id] = false;
  5245.  
  5246. LoadPlayerTag ( id );
  5247.  
  5248. if ( is_user_connected ( id ) ) JoinTime [id] = get_systime ( );
  5249.  
  5250. if ( !is_dedicated_server ( ) && id == 1 )
  5251.  
  5252. return get_pcvar_num ( AmxMode ) ? accessUser ( id ) : PLUGIN_CONTINUE;
  5253.  
  5254. static queryData[32] = { 0, ... };
  5255.  
  5256. if (isValidPlayer(id) && is_user_bot(id) == 0 && is_user_hltv(id) == 0)
  5257. {
  5258. resetPlayer(id);
  5259.  
  5260. num_to_str(id, queryData, charsmax(queryData));
  5261.  
  5262. get_user_name(id, g_Name[id], charsmax(g_Name[]));
  5263. replace_all(g_Name[id], charsmax(g_Name[]), "`", "*");
  5264. replace_all(g_Name[id], charsmax(g_Name[]), "'", "*");
  5265. replace_all(g_Name[id], charsmax(g_Name[]), "\", "*");
  5266.  
  5267. get_user_authid(id, g_Steam[id], charsmax(g_Steam[]));
  5268. get_user_ip(id, g_Ip[id], charsmax(g_Ip[]), 1);
  5269.  
  5270. /**
  5271. * -----------------------------------------------------
  5272. * Players
  5273. * -----------------------------------------------------
  5274. * Name
  5275. * Steam
  5276. * Ip
  5277. * Score
  5278. * Kills
  5279. * Deaths
  5280. * headShots
  5281. * Time - The time spent in minutes.
  5282. * timeString - Formatted as a string.
  5283. * Seen - get_systime() stamp.
  5284. * seenString - get_systime() stamp formatted as a time string including date.
  5285. * kpdRatio - Kills/ Deaths ratio.
  5286. * kmdValue - Kills - Deaths value.
  5287. */
  5288. formatex(g_Query, charsmax(g_Query), "SELECT Score, Kills, Deaths, headShots, Time, timeString, \
  5289. Seen, seenString, kpdRatio, kmdValue FROM Players WHERE Name = '%s';", g_Name[id]);
  5290.  
  5291. SQL_ThreadQuery(g_Tuple, "retrieveOrCreatePlayer", g_Query, queryData, sizeof(queryData));
  5292. }
  5293.  
  5294. return PLUGIN_HANDLED;
  5295. }
  5296.  
  5297. public client_disconnect ( id )
  5298. {
  5299. if ( IsAlive [id] ) CheckRound ( id );
  5300.  
  5301. SaveStats ( id );
  5302.  
  5303. SavePoints ( id );
  5304.  
  5305. if ( HasJet [id] )
  5306.  
  5307. DropJetpack ( id );
  5308.  
  5309. Fly [id] = false;
  5310.  
  5311. g_bFrozen [id] = false;
  5312.  
  5313. zp_get_gold_ak [id] = false;
  5314.  
  5315. zp_get_gold_de [id] = false;
  5316.  
  5317. Rocket [id] = false;
  5318.  
  5319. g_Damage2 [id] = false;
  5320.  
  5321. g_Godmode [id] = false;
  5322.  
  5323. HasJet [id] = 0;
  5324.  
  5325. FlyEnergy [id] = 0;
  5326.  
  5327. JoinTime [id] = 0
  5328.  
  5329. HasTripMines [id] = 0;
  5330.  
  5331. HasPlanting [id] = false;
  5332.  
  5333. HasRemoving [id] = false;
  5334.  
  5335. if ( PlantedMines [id] )
  5336. {
  5337. fwRemoveMinesByOwner ( id );
  5338.  
  5339. PlantedMines [id] = 0;
  5340. }
  5341.  
  5342. remove_task ( id + TASK_TEAM );
  5343. remove_task ( id + TASK_MODEL );
  5344. remove_task ( id + TASK_SPAWN );
  5345. remove_task ( id + TASK_BLOOD );
  5346. remove_task ( id + TASK_BURN );
  5347. remove_task ( id + TASK_NVISION );
  5348. remove_task ( id + TASK_SHOWHUD );
  5349. remove_task ( id + TASK_HEALTH );
  5350. remove_task ( id + TASK_REMOVE );
  5351. remove_task ( id + TASK_CREATE );
  5352. remove_task ( id + TASK_REGENERATION );
  5353.  
  5354. IsConnected [id] = false;
  5355.  
  5356. IsBot [id] = false;
  5357.  
  5358. IsAlive [id] = false;
  5359.  
  5360. g_doubledamage[id] = false
  5361.  
  5362. g_vip[id] = false
  5363.  
  5364. if (isValidPlayer(id) && is_user_bot(id) == 0 && is_user_hltv(id) == 0)
  5365. {
  5366. resetPlayer(id);
  5367.  
  5368. if (task_exists(id + Task_Update_Time))
  5369. {
  5370. remove_task(id + Task_Update_Time);
  5371. }
  5372. }
  5373.  
  5374. fnCheckLastZombie ( );
  5375. }
  5376.  
  5377. public fwClientKill ( ) return FMRES_SUPERCEDE;
  5378.  
  5379. public fwEmitSound ( id, Channel, const Sample [], Float: Volume, Float: Attn, Flags, Pitch )
  5380. {
  5381. if ( is_user_alive ( id ) )
  5382. {
  5383. new Clip, Ammo;
  5384.  
  5385. new Weapon = get_user_weapon ( id, Clip, Ammo )
  5386.  
  5387. if ( HasJet [id] && Weapon == CSW_KNIFE )
  5388. {
  5389. if ( equal ( Sample, "weapons/knife_slash1.wav" ) ) return FMRES_SUPERCEDE;
  5390.  
  5391. if ( equal ( Sample, "weapons/knife_slash2.wav" ) ) return FMRES_SUPERCEDE;
  5392.  
  5393. if ( equal ( Sample, "weapons/knife_deploy1.wav" ) ) return FMRES_SUPERCEDE;
  5394.  
  5395. if ( equal ( Sample, "weapons/knife_hitwall1.wav" ) ) return FMRES_SUPERCEDE;
  5396.  
  5397. if ( equal ( Sample, "weapons/knife_hit1.wav" ) ) return FMRES_SUPERCEDE;
  5398.  
  5399. if ( equal ( Sample, "weapons/knife_hit2.wav" ) ) return FMRES_SUPERCEDE;
  5400.  
  5401. if ( equal ( Sample, "weapons/knife_hit3.wav" ) ) return FMRES_SUPERCEDE;
  5402.  
  5403. if ( equal ( Sample, "weapons/knife_hit4.wav" ) ) return FMRES_SUPERCEDE;
  5404.  
  5405. if ( equal ( Sample, "weapons/knife_stab.wav" ) ) return FMRES_SUPERCEDE;
  5406. }
  5407. }
  5408. if ( Sample [0] == 'h' && Sample [1] == 'o' && Sample [2] == 's' && Sample [3] == 't' && Sample [4] == 'a' && Sample [5] == 'g' && Sample [6] == 'e' )
  5409.  
  5410. return FMRES_SUPERCEDE;
  5411.  
  5412. if ( !is_user_valid_connected ( id ) || !IsZombie [id] )
  5413.  
  5414. return FMRES_IGNORED;
  5415.  
  5416. static Sound [64];
  5417.  
  5418. if ( Sample [7] == 'b' && Sample [8] == 'h' && Sample [9] == 'i' && Sample [10] == 't' )
  5419. {
  5420. if ( IsNemesis [id] )
  5421. {
  5422. ArrayGetString ( NemesisPain, random_num ( 0, ArraySize ( NemesisPain ) - 1 ), Sound, charsmax ( Sound ) );
  5423.  
  5424. EmitSound ( id, Channel, Sound );
  5425. }
  5426. else if ( IsAssassin [id] )
  5427. {
  5428. ArrayGetString ( AssassinPain, random_num ( 0, ArraySize ( AssassinPain ) - 1 ), Sound, charsmax ( Sound ) );
  5429.  
  5430. EmitSound ( id, Channel, Sound );
  5431. }
  5432. else
  5433. {
  5434. ArrayGetString ( ZombiePain, random_num ( 0, ArraySize ( ZombiePain ) - 1 ), Sound, charsmax ( Sound ) );
  5435.  
  5436. EmitSound ( id, Channel, Sound );
  5437. }
  5438.  
  5439. return FMRES_SUPERCEDE;
  5440. }
  5441.  
  5442. if ( Sample [8] == 'k' && Sample [9] == 'n' && Sample [10] == 'i' )
  5443. {
  5444. if ( Sample [14] == 's' && Sample [15] == 'l' && Sample [16] == 'a' )
  5445. {
  5446. ArrayGetString ( ZombieMissSlash, random_num ( 0, ArraySize ( ZombieMissSlash ) - 1 ), Sound, charsmax ( Sound ) );
  5447.  
  5448. EmitSound ( id, Channel, Sound );
  5449.  
  5450. return FMRES_SUPERCEDE;
  5451. }
  5452. if ( Sample [14] == 'h' && Sample [15] == 'i' && Sample [16] == 't')
  5453. {
  5454. if ( Sample [17] == 'w' )
  5455. {
  5456. ArrayGetString ( ZombieMissWall, random_num ( 0, ArraySize ( ZombieMissWall ) - 1 ), Sound, charsmax ( Sound ) );
  5457.  
  5458. EmitSound ( id, Channel, Sound );
  5459.  
  5460. return FMRES_SUPERCEDE;
  5461. }
  5462. else
  5463. {
  5464. ArrayGetString ( ZombieHitNormal, random_num ( 0, ArraySize ( ZombieHitNormal ) - 1 ), Sound, charsmax ( Sound ) );
  5465.  
  5466. EmitSound ( id, Channel, Sound );
  5467.  
  5468. return FMRES_SUPERCEDE;
  5469. }
  5470. }
  5471. if ( Sample [14] == 's' && Sample [15] == 't' && Sample [16] == 'a')
  5472. {
  5473. ArrayGetString ( ZombieHitStab, random_num ( 0, ArraySize ( ZombieHitStab ) - 1 ), Sound, charsmax ( Sound ) );
  5474.  
  5475. EmitSound ( id, Channel, Sound );
  5476.  
  5477. return FMRES_SUPERCEDE;
  5478. }
  5479. }
  5480.  
  5481. if ( Sample [7] == 'd' && ( ( Sample [8] == 'i' && Sample [9] == 'e' ) || ( Sample [8] == 'e' && Sample [9] == 'a' ) ) )
  5482. {
  5483. ArrayGetString ( ZombieDie, random_num ( 0, ArraySize ( ZombieDie ) - 1 ), Sound, charsmax ( Sound ) );
  5484.  
  5485. EmitSound ( id, Channel, Sound );
  5486.  
  5487. return FMRES_SUPERCEDE;
  5488. }
  5489.  
  5490. if ( Sample [10] == 'f' && Sample [11] == 'a' && Sample [12] == 'l' && Sample [13] == 'l' )
  5491. {
  5492. ArrayGetString ( ZombieFall, random_num ( 0, ArraySize ( ZombieFall ) - 1 ), Sound, charsmax ( Sound ) );
  5493.  
  5494. EmitSound ( id, Channel, Sound );
  5495.  
  5496. return FMRES_SUPERCEDE;
  5497. }
  5498.  
  5499. return FMRES_IGNORED;
  5500. }
  5501.  
  5502. public fwSetClientKeyValue ( id, const infobuffer[], const key [] )
  5503. {
  5504. if ( key [0] == 'm' && key [1] == 'o' && key [2] == 'd' && key [3] == 'e' && key [4] == 'l' )
  5505.  
  5506. return FMRES_SUPERCEDE;
  5507.  
  5508. return FMRES_IGNORED;
  5509. }
  5510.  
  5511.  
  5512. public fwGetGameDescription ( )
  5513. {
  5514. forward_return ( FMV_STRING, "Counter-Strike" );
  5515.  
  5516. return FMRES_SUPERCEDE;
  5517. }
  5518.  
  5519. public fwSetModel ( Entity, const Model [] )
  5520. {
  5521. if ( strlen ( Model ) < 8 ) return;
  5522.  
  5523. static ClassName [10];
  5524.  
  5525. pev ( Entity, pev_classname, ClassName, charsmax ( ClassName ) );
  5526.  
  5527. if ( equal ( ClassName, "weaponbox" ) )
  5528. {
  5529. set_pev ( Entity, pev_nextthink, get_gametime ( ) + 1.0 );
  5530.  
  5531. return;
  5532. }
  5533.  
  5534. if ( Model [7] != 'w' || Model [8] != '_' ) return;
  5535.  
  5536. static Float: DmgTime;
  5537.  
  5538. pev ( Entity, pev_dmgtime, DmgTime );
  5539.  
  5540. if ( DmgTime == 0.0 ) return;
  5541.  
  5542. if ( IsZombie [pev ( Entity, pev_owner )] )
  5543. {
  5544. if ( Model [9] == 'h' && Model [10] == 'e' )
  5545. {
  5546. fm_set_rendering ( Entity, kRenderFxGlowShell, 0, 250, 0, kRenderNormal, 16 );
  5547.  
  5548. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  5549. write_byte ( 22 ) ;
  5550. write_short ( Entity );
  5551. write_short ( TrailSpr );
  5552. write_byte ( 10 );
  5553. write_byte ( 10 );
  5554. write_byte ( 0 );
  5555. write_byte ( 250 );
  5556. write_byte ( 0 );
  5557. write_byte ( 200 );
  5558. message_end ( );
  5559.  
  5560. set_pev ( Entity, pev_flTimeStepSound, 1111 );
  5561. }
  5562. }
  5563. else if ( Model [9] == 'h' && Model [10] == 'e' )
  5564. {
  5565. fm_set_rendering ( Entity, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 16 );
  5566.  
  5567. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  5568. write_byte ( 22 );
  5569. write_short ( Entity );
  5570. write_short ( TrailSpr );
  5571. write_byte ( 10 );
  5572. write_byte ( 10 );
  5573. write_byte ( 200 );
  5574. write_byte ( 0 );
  5575. write_byte ( 0 );
  5576. write_byte ( 200 );
  5577. message_end ( );
  5578.  
  5579. set_pev ( Entity, pev_flTimeStepSound, 2222 );
  5580. }
  5581. else if ( Model [9] == 'f' && Model [10] == 'l' )
  5582. {
  5583. fm_set_rendering ( Entity, kRenderFxGlowShell, 250, 100, 0, kRenderNormal, 16 );
  5584.  
  5585. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  5586. write_byte ( 22 );
  5587. write_short ( Entity );
  5588. write_short ( TrailSpr );
  5589. write_byte ( 10 );
  5590. write_byte ( 10 );
  5591. write_byte ( 250 );
  5592. write_byte ( 40 );
  5593. write_byte ( 0 );
  5594. write_byte ( 200 );
  5595. message_end ( );
  5596.  
  5597. set_pev ( Entity, pev_flTimeStepSound, 4444 );
  5598. }
  5599. else if ( Model[9] == 's' && Model[10] == 'm' )
  5600. {
  5601. fm_set_rendering ( Entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 16 );
  5602.  
  5603. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  5604. write_byte ( 22 );
  5605. write_short ( Entity );
  5606. write_short ( TrailSpr);
  5607. write_byte ( 10 );
  5608. write_byte ( 10 );
  5609. write_byte ( 0 );
  5610. write_byte ( 100 );
  5611. write_byte ( 200 );
  5612. write_byte ( 200 );
  5613. message_end ( );
  5614.  
  5615. set_pev ( Entity, pev_flTimeStepSound, 3333 );
  5616. }
  5617. }
  5618.  
  5619. public fwThinkGrenade ( Entity )
  5620. {
  5621. if ( !pev_valid ( Entity ) ) return HAM_IGNORED;
  5622.  
  5623. static Float: DmgTime, Float: CurrentTime;
  5624.  
  5625. pev ( Entity, pev_dmgtime, DmgTime );
  5626.  
  5627. CurrentTime = get_gametime ( );
  5628.  
  5629. if ( DmgTime > CurrentTime ) return HAM_IGNORED;
  5630.  
  5631. switch ( pev ( Entity, pev_flTimeStepSound ) )
  5632. {
  5633. case 1111:
  5634. {
  5635. InfectionExplode ( Entity )
  5636.  
  5637. return HAM_SUPERCEDE;
  5638. }
  5639. case 2222:
  5640. {
  5641. HeExplode ( Entity );
  5642.  
  5643. return HAM_SUPERCEDE;
  5644. }
  5645. case 3333:
  5646. {
  5647. FrostExplode ( Entity );
  5648.  
  5649. return HAM_SUPERCEDE;
  5650. }
  5651. case 4444:
  5652. {
  5653. FireExplode ( Entity );
  5654.  
  5655. return HAM_SUPERCEDE;
  5656. }
  5657. }
  5658.  
  5659. return HAM_IGNORED;
  5660. }
  5661.  
  5662. public fwPlayerPreThink ( id )
  5663. {
  5664. if ( !IsAlive [id] ) return;
  5665.  
  5666. if ( IsZombie [id] && !IsNemesis [id] && IsAssassin [id] )
  5667.  
  5668. set_pev ( id, pev_flTimeStepSound, 999 );
  5669.  
  5670. if ( IsFrozen [id])
  5671. {
  5672. set_pev ( id, pev_velocity, Float: {0.0,0.0,0.0} );
  5673.  
  5674. set_pev ( id, pev_maxspeed, 1.0 );
  5675.  
  5676. return;
  5677. }
  5678. else if ( FreezeTime )
  5679. {
  5680. return;
  5681. }
  5682. else
  5683. {
  5684. if ( IsZombie [id] )
  5685. {
  5686. if ( IsNemesis [id] )
  5687.  
  5688. set_pev ( id, pev_maxspeed, CachedNemesisSpeed );
  5689.  
  5690. else if ( IsAssassin [id] )
  5691.  
  5692. set_pev ( id, pev_maxspeed, CachedAssassinSpeed );
  5693.  
  5694. else
  5695.  
  5696. set_pev ( id, pev_maxspeed, ZombieSpeed [id] )
  5697. }
  5698. else
  5699. {
  5700. if ( IsSurvivor [id] )
  5701.  
  5702. set_pev ( id, pev_maxspeed, CachedSurvivorSpeed );
  5703.  
  5704. else if ( IsSniper [id] )
  5705.  
  5706. set_pev(id, pev_maxspeed, CachedSniperSpeed );
  5707.  
  5708. else
  5709.  
  5710. set_pev(id, pev_maxspeed, CachedHumanSpeed );
  5711. }
  5712. }
  5713.  
  5714. static Float: CoolDown, Float: CurrentTime;
  5715.  
  5716. if ( IsZombie [id] && IsNemesis [id] )
  5717. {
  5718. CoolDown = 1.0;
  5719. }
  5720. else return;
  5721.  
  5722. CurrentTime = get_gametime ( );
  5723.  
  5724. if ( CurrentTime - LastLeapTime [id] < CoolDown ) return;
  5725.  
  5726. if ( !IsBot [id] && !( pev ( id, pev_button ) & ( IN_JUMP | IN_DUCK ) == ( IN_JUMP | IN_DUCK ) ) ) return;
  5727.  
  5728. if ( !( pev ( id, pev_flags ) & FL_ONGROUND ) || fm_get_speed ( id ) < 80 ) return;
  5729.  
  5730. static Float: Velocity [3];
  5731.  
  5732. velocity_by_aim ( id, 500, Velocity )
  5733.  
  5734. Velocity [2] = 300.0;
  5735.  
  5736. set_pev ( id, pev_velocity, Velocity );
  5737.  
  5738. LastLeapTime [id] = CurrentTime;
  5739.  
  5740. if (random_num(0, 5) == 0)
  5741. {
  5742. if (g_doubledamage[id])
  5743. set_pev(id, pev_effects, pev(id, pev_effects) | EF_BRIGHTLIGHT)
  5744. }
  5745. }
  5746.  
  5747. public fmPlayerPreThink ( id )
  5748. {
  5749. if ( CheckValidPlayer ( id ) )
  5750. {
  5751. new iWeaponID = get_user_weapon(id);
  5752.  
  5753. if ( iWeaponID != CSW_KNIFE || !IsZombie [id] )
  5754. {
  5755. OPCancel ( id );
  5756.  
  5757. return FMRES_IGNORED;
  5758. }
  5759.  
  5760. if ( iBlinks [id] == 0 ) return FMRES_IGNORED;
  5761.  
  5762. new Button = pev ( id, pev_button );
  5763.  
  5764. if ( !( Button & IN_ATTACK ) && !( Button & IN_ATTACK2 ) )
  5765. {
  5766. OPCancel ( id );
  5767.  
  5768. return FMRES_IGNORED;
  5769. }
  5770.  
  5771. if ( iSlash [id] ) iSlash [id] = 0;
  5772.  
  5773. OPNearEnemy ( id );
  5774.  
  5775. if ( InBlink [id] )
  5776. {
  5777. OPSetBlink ( id );
  5778.  
  5779. OPBlink ( id );
  5780.  
  5781. iCanceled [id] = 0;
  5782. }
  5783. }
  5784.  
  5785. return FMRES_IGNORED;
  5786. }
  5787.  
  5788. public cmdNightVision ( id )
  5789. {
  5790. if ( NVision [id] )
  5791. {
  5792. NVisionEnabled [id] = !( NVisionEnabled [id] )
  5793.  
  5794. remove_task ( id + TASK_NVISION );
  5795.  
  5796. if ( NVisionEnabled [id] ) set_task ( 0.1, "UserNVision", id + TASK_NVISION, _, _, "b" );
  5797. }
  5798.  
  5799. return PLUGIN_HANDLED;
  5800. }
  5801.  
  5802. public cmdDrop ( id )
  5803. {
  5804. if ( HasJet [id] )
  5805. {
  5806. new Clip, Ammo;
  5807.  
  5808. new Weapon = get_user_weapon ( id, Clip, Ammo );
  5809.  
  5810. if ( Weapon == CSW_KNIFE )
  5811. {
  5812. DropJetpack ( id )
  5813.  
  5814. if ( !IsZombie [id] )
  5815. {
  5816. entity_set_string ( id, EV_SZ_viewmodel, "models/v_knife.mdl" );
  5817.  
  5818. entity_set_string ( id, EV_SZ_weaponmodel, "models/p_knife.mdl" );
  5819. }
  5820. return PLUGIN_HANDLED
  5821. }
  5822. }
  5823.  
  5824. return PLUGIN_CONTINUE;
  5825. }
  5826.  
  5827. public cmdChangeTeam ( id )
  5828. {
  5829. static Team; Team = fm_cs_get_user_team ( id );
  5830.  
  5831. if ( Team == FM_CS_TEAM_SPECTATOR || Team == FM_CS_TEAM_UNASSIGNED ) return PLUGIN_CONTINUE;
  5832.  
  5833. ShowMenuGame ( id );
  5834.  
  5835. return PLUGIN_HANDLED;
  5836. }
  5837.  
  5838. ShowMenuGame ( id )
  5839. {
  5840. g_iGameMenu = menu_create ( "\yGame Menu", "_GameMenu" );
  5841. menu_additem ( g_iGameMenu, "\wBuy extra items", "1", 0 );
  5842. menu_additem ( g_iGameMenu, "\wChoose zombie class", "2", 0 );
  5843. menu_additem ( g_iGameMenu, "\wBuy features with points", "3", 0 );
  5844. menu_additem ( g_iGameMenu, "\wUnstuck", "4", 0 );
  5845. menu_additem ( g_iGameMenu, "\wSee rank", "5", 0 );
  5846. menu_additem ( g_iGameMenu, "\wSee top and all statistics", "6", 0 );
  5847.  
  5848. menu_setprop ( g_iGameMenu, MPROP_EXIT, MEXIT_ALL );
  5849. menu_display ( id, g_iGameMenu, 0 );
  5850. return PLUGIN_CONTINUE;
  5851. }
  5852.  
  5853. ShowMenuExtras ( id )
  5854. {
  5855. static MenuID, Menu [128], Item, Team, Buffer [32];
  5856.  
  5857. formatex ( Menu, charsmax ( Menu ), "\yExtra Items" );
  5858.  
  5859. MenuID = menu_create ( Menu, "MenuExtras" );
  5860.  
  5861. for ( Item = 0; Item < iExtraItem; Item ++ )
  5862. {
  5863. Team = ArrayGetCell ( ExtraItemTeam_01, Item );
  5864.  
  5865. if ( ( IsZombie [id] && !IsNemesis [id] && !IsAssassin [id] && !( Team & ZRISES_TEAM_ZOMBIE ) ) || ( !IsZombie [id] && !IsSurvivor [id] && !IsSniper [id] && !( Team & ZRISES_TEAM_HUMAN ) ) || ( IsNemesis [id] && !( Team & ZRISES_TEAM_NEMESIS ) ) || ( IsAssassin [id] && !( Team & ZRISES_TEAM_ASSASSIN ) ) || ( IsSurvivor [id] && !( Team & ZRISES_TEAM_SURVIVOR ) ) || ( IsSniper [id] && !( Team & ZRISES_TEAM_SNIPER ) ) ) continue;
  5866.  
  5867. switch ( Item )
  5868. {
  5869. case EXTRA_NAPALM_NADE: formatex ( Buffer, charsmax ( Buffer ), "Fire Grenade" );
  5870.  
  5871. case EXTRA_FROST_NADE: formatex ( Buffer, charsmax ( Buffer ), "Freeze Grenade" );
  5872.  
  5873. case EXTRA_EXPLOSION_NADE: formatex ( Buffer, charsmax ( Buffer ), "Explosion Grenade" );
  5874.  
  5875. case EXTRA_KILLING_NADE: formatex ( Buffer, charsmax ( Buffer ), "Deadly Shot\y (Recommended)" );
  5876.  
  5877. case EXTRA_M249_PARA_MACHINEGUN: formatex ( Buffer, charsmax ( Buffer ), "M249 Machine Gun" );
  5878.  
  5879. case EXTRA_G3SG1_AUTO_SNIPER: formatex ( Buffer, charsmax ( Buffer ), "G3SG1 Auto Sniper Rifle" );
  5880.  
  5881. case EXTRA_SG550_AUTO_SNIPER: formatex ( Buffer, charsmax ( Buffer ), "SG550 Auto Sniper Rifle" );
  5882.  
  5883. case EXTRA_AWP_MAGNUM_SNIPER: formatex ( Buffer, charsmax ( Buffer ), "AWP Sniper Rifle" );
  5884.  
  5885. case EXTRA_NVISION: formatex ( Buffer, charsmax ( Buffer ), "NightVision Googles" );
  5886.  
  5887. case EXTRA_JETPACK: formatex ( Buffer, charsmax ( Buffer ), "Jetpack + Bazooka" );
  5888.  
  5889. case EXTRA_UNLIMITEDCLIP: formatex ( Buffer, charsmax ( Buffer ), "Unlimited Clip" );
  5890.  
  5891. case EXTRA_ARMOR_100: formatex ( Buffer, charsmax ( Buffer ), "Armor\y (100ap)" );
  5892.  
  5893. case EXTRA_ARMOR_200: formatex ( Buffer, charsmax ( Buffer ), "Armor\y (200ap)" );
  5894.  
  5895. case EXTRA_MULTIJUMP: formatex ( Buffer, charsmax ( Buffer ), "Multijump +1" );
  5896.  
  5897. case EXTRA_TRYDER: formatex ( Buffer, charsmax ( Buffer ), "Tryder" );
  5898.  
  5899. case EXTRA_AK47GOLD: formatex ( Buffer, charsmax ( Buffer ), "Golden Kalashnikov\y (AK-47)" );
  5900.  
  5901. case EXTRA_DEAGLEGOLD: formatex ( Buffer, charsmax ( Buffer ), "Golden Deagle\y (Night Hawk)" );
  5902.  
  5903. case EXTRA_SURVIVOR: formatex ( Buffer, charsmax ( Buffer ), "Survivor" );
  5904.  
  5905. case EXTRA_SNIPER: formatex ( Buffer, charsmax ( Buffer ), "Sniper" );
  5906.  
  5907. case EXTRA_NEMESIS: formatex ( Buffer, charsmax ( Buffer ), "Nemesis" );
  5908.  
  5909. case EXTRA_ASSASSIN: formatex ( Buffer, charsmax ( Buffer ), "Assassin" );
  5910.  
  5911. case EXTRA_ANTIDOTE: formatex ( Buffer, charsmax ( Buffer ), "Antidote" );
  5912.  
  5913. case EXTRA_INFECTIONBOMB: formatex ( Buffer, charsmax ( Buffer ), "Infection Grenade" );
  5914.  
  5915. case EXTRA_MADNESS: formatex ( Buffer, charsmax ( Buffer ), "Zombie Madness" );
  5916.  
  5917. case EXTRA_KNIFEBLINK: formatex ( Buffer, charsmax ( Buffer ), "Knife Blink" );
  5918. }
  5919.  
  5920. formatex ( Menu, charsmax ( Menu ), "%s \r[%d packs]", Buffer, ArrayGetCell ( ExtraItemCost_01, Item ) );
  5921.  
  5922. Buffer [0] = Item;
  5923.  
  5924. Buffer [1] = 0;
  5925.  
  5926. menu_additem ( MenuID, Menu, Buffer );
  5927. }
  5928.  
  5929. if ( menu_items ( MenuID ) <= 0 )
  5930. {
  5931. client_print_color ( id, print_team_default, "%s Extra Items are disabled.", CHAT_PREFIX );
  5932.  
  5933. menu_destroy ( MenuID );
  5934.  
  5935. return;
  5936. }
  5937.  
  5938. formatex ( Menu, charsmax ( Menu ), "Back" );
  5939.  
  5940. menu_setprop ( MenuID, MPROP_BACKNAME, Menu );
  5941.  
  5942. formatex ( Menu, charsmax ( Menu ), "More" );
  5943.  
  5944. menu_setprop ( MenuID, MPROP_NEXTNAME, Menu );
  5945.  
  5946. formatex ( Menu, charsmax ( Menu ), "Exit");
  5947.  
  5948. menu_setprop ( MenuID, MPROP_EXITNAME, Menu );
  5949.  
  5950. menu_display ( id, MenuID );
  5951. }
  5952.  
  5953. public ShowMenuZClass ( id )
  5954. {
  5955. if ( !IsConnected [id] ) return;
  5956.  
  5957. if ( IsBot [id] )
  5958. {
  5959. ZombieClassNext [id] = random_num ( 0, iZClass - 1 );
  5960.  
  5961. return;
  5962. }
  5963.  
  5964. static MenuID, Menu [128], Class, Buffer_01 [32], Buffer_02 [32];
  5965.  
  5966. formatex ( Menu, charsmax ( Menu ), "Zombie Class\y" );
  5967.  
  5968. MenuID = menu_create ( Menu, "MenuZClass" );
  5969.  
  5970. for ( Class = 0; Class < iZClass; Class ++ )
  5971. {
  5972. ArrayGetString ( ZClassName_01, Class, Buffer_01, charsmax ( Buffer_01 ) );
  5973.  
  5974. ArrayGetString ( ZClassInfo_01, Class, Buffer_02, charsmax ( Buffer_02 ) );
  5975.  
  5976. switch ( Class )
  5977. {
  5978. case ZCLASS_CLASSIC:
  5979. {
  5980. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Classic" );
  5981. formatex ( Buffer_02, charsmax ( Buffer_02 ), "=Balanced=" );
  5982. }
  5983. case ZCLASS_RAPTOR:
  5984. {
  5985. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Raptor" );
  5986. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Speed ++" );
  5987. }
  5988. case ZCLASS_MUTANT:
  5989. {
  5990. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Mutant" );
  5991. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Health ++" );
  5992. }
  5993. case ZCLASS_FROZEN:
  5994. {
  5995. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Tight" );
  5996. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Double Jump" );
  5997. }
  5998. case ZCLASS_REGENERATOR:
  5999. {
  6000. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Regenerator" );
  6001. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Regeneration" );
  6002. }
  6003. case ZCLASS_PREDATOR:
  6004. {
  6005. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Predator Blue" );
  6006. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Powerful" );
  6007. }
  6008. case ZCLASS_HUNTER:
  6009. {
  6010. formatex ( Buffer_01, charsmax ( Buffer_01 ), "Hunter" );
  6011. formatex ( Buffer_02, charsmax ( Buffer_02 ), "Silent Killer" );
  6012. }
  6013. }
  6014.  
  6015.  
  6016. formatex ( Menu, charsmax ( Menu ), "%s\r [%s]", Buffer_01, Buffer_02 );
  6017.  
  6018. Buffer_01 [0] = Class;
  6019.  
  6020. Buffer_01 [1] = 0;
  6021.  
  6022. menu_additem ( MenuID, Menu, Buffer_01 );
  6023. }
  6024.  
  6025. formatex ( Menu, charsmax ( Menu ), "Back" );
  6026.  
  6027. menu_setprop ( MenuID, MPROP_BACKNAME, Menu );
  6028.  
  6029. formatex ( Menu, charsmax ( Menu ), "More" );
  6030.  
  6031. menu_setprop ( MenuID, MPROP_NEXTNAME, Menu );
  6032.  
  6033. formatex ( Menu, charsmax ( Menu ), "Exit" );
  6034.  
  6035. menu_setprop ( MenuID, MPROP_EXITNAME, Menu );
  6036.  
  6037. menu_display ( id, MenuID );
  6038. }
  6039.  
  6040. public _GameMenu ( id, menu, item )
  6041. {
  6042. if ( item == MENU_EXIT )
  6043. {
  6044. menu_destroy ( menu );
  6045. return PLUGIN_HANDLED;
  6046. }
  6047.  
  6048. new szData [ 7 ], szName [ 64 ];
  6049. new Access, Callback;
  6050.  
  6051. menu_item_getinfo ( menu, item, Access, szData, 5, szName, 63, Callback );
  6052.  
  6053. new szKey = str_to_num ( szData );
  6054.  
  6055. switch ( szKey )
  6056. {
  6057. case 1 :
  6058. {
  6059. if ( IsAlive [id] )
  6060.  
  6061. ShowMenuExtras ( id );
  6062.  
  6063. else
  6064.  
  6065. client_print_color ( id, print_team_default, "%s Extra items are unavailable right now...", CHAT_PREFIX );
  6066. }
  6067. case 2 :
  6068. {
  6069. ShowMenuZClass ( id );
  6070. }
  6071. case 3 :
  6072. {
  6073. if (!IsZombie[id])
  6074. client_cmd(id, "shophm")
  6075.  
  6076. else
  6077.  
  6078. client_cmd(id, "shopzm")
  6079. }
  6080. case 4 :
  6081. {
  6082. if (IsAlive[id])
  6083. {
  6084. if (is_player_stuck(id))
  6085. {
  6086. client_print_color ( id, print_team_default, "%s You have been unstucked!", CHAT_PREFIX );
  6087. static players[32], pnum , Float:origin[3], Float:mins[3], hull, Float:vec[3], o , i
  6088. get_players(players, pnum)
  6089.  
  6090. for(i=0; i<pnum; i++)
  6091. {
  6092. id = players[i]
  6093. if (IsConnected[id] && IsAlive[id])
  6094. {
  6095. pev(id, pev_origin, origin)
  6096. hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
  6097. if (!is_hull_vacant(origin, hull,id) && !get_user_noclip(id) && !(pev(id,pev_solid) & SOLID_NOT))
  6098. {
  6099. ++on_stuck[id]
  6100. if(on_stuck[id] >= 1)
  6101. {
  6102. pev(id, pev_mins, mins)
  6103. vec[2] = origin[2]
  6104. for (o=0; o < sizeof sizez; ++o)
  6105. {
  6106. vec[0] = origin[0] - mins[0] * sizez[o][0]
  6107. vec[1] = origin[1] - mins[1] * sizez[o][1]
  6108. vec[2] = origin[2] - mins[2] * sizez[o][2]
  6109. if (is_hull_vacant(vec, hull,id))
  6110. {
  6111. engfunc(EngFunc_SetOrigin, id, vec)
  6112. set_pev(id,pev_velocity,{0.0,0.0,0.0})
  6113. o = sizeof sizez
  6114. }
  6115. }
  6116. }
  6117. }
  6118. else
  6119. {
  6120. on_stuck[id] = 0
  6121. }
  6122. }
  6123. }
  6124. }
  6125. else
  6126. client_print_color ( id, print_team_default, "%s You are dead or your are not stuck...", CHAT_PREFIX );
  6127. }
  6128. else
  6129. client_print_color ( id, print_team_default, "%s Unavailable command.", CHAT_PREFIX );
  6130. }
  6131. case 5 :
  6132. {
  6133. client_cmd(id, "say /rank")
  6134. }
  6135. case 6 :
  6136. {
  6137. client_cmd(id, "say /top")
  6138. }
  6139. }
  6140.  
  6141. return PLUGIN_CONTINUE;
  6142. }
  6143.  
  6144. public MenuExtras ( id, MenuID, item )
  6145. {
  6146. if ( item == MENU_EXIT )
  6147. {
  6148. menu_destroy ( MenuID );
  6149.  
  6150. return PLUGIN_HANDLED;
  6151. }
  6152.  
  6153. if ( !IsAlive [id] )
  6154. {
  6155. client_print_color ( id, print_team_default, "%s Extra items are unavailable right now...", CHAT_PREFIX );
  6156.  
  6157. menu_destroy ( MenuID );
  6158.  
  6159. return PLUGIN_HANDLED;
  6160. }
  6161.  
  6162. static Buffer [2], Dummy, ItemID;
  6163.  
  6164. menu_item_getinfo ( MenuID, item, Dummy, Buffer, charsmax ( Buffer ), _, _, Dummy );
  6165.  
  6166. ItemID = Buffer [0];
  6167.  
  6168. BuyExtraItem ( id, ItemID );
  6169.  
  6170. menu_destroy ( MenuID );
  6171.  
  6172. return PLUGIN_HANDLED;
  6173. }
  6174.  
  6175.  
  6176. BuyExtraItem ( id, itemid, IgnoreCost = 0 )
  6177. {
  6178. static Team; Team = ArrayGetCell ( ExtraItemTeam_01, itemid );
  6179.  
  6180. if ( ( IsZombie [id] && !IsNemesis [id] && !IsAssassin [id] && !( Team & ZRISES_TEAM_ZOMBIE ) ) || ( !IsZombie [id] && !IsSurvivor [id] && !IsSniper [id] && !( Team & ZRISES_TEAM_HUMAN ) ) || ( IsNemesis [id] && !( Team & ZRISES_TEAM_NEMESIS ) ) || ( IsAssassin [id] && !( Team & ZRISES_TEAM_ASSASSIN ) ) || ( IsSurvivor [id] && !( Team & ZRISES_TEAM_SURVIVOR ) ) || ( IsSniper [id] && !( Team & ZRISES_TEAM_SNIPER ) ) )
  6181. {
  6182. client_print_color ( id, print_team_default, "%s Extra items are unavailable right now...", CHAT_PREFIX );
  6183.  
  6184. return;
  6185. }
  6186.  
  6187. if ( ( itemid == EXTRA_ANTIDOTE && ( EndRound || SwarmRound || NemesisRound || AssassinRound || SurvivorRound || SniperRound || PlagueRound || ArmageddonRound || ApocalypseRound || NightmareRound || fnGetZombies ( ) <= 1 || fnGetHumans ( ) == 1 ) )
  6188. || ( itemid == EXTRA_MADNESS && NoDamage [id] ) || ( itemid == EXTRA_INFECTIONBOMB && ( EndRound || SwarmRound || NemesisRound || AssassinRound || SurvivorRound || SniperRound || PlagueRound || ArmageddonRound || ApocalypseRound || NightmareRound ) ) )
  6189. {
  6190. client_print_color ( id, print_team_default, "%s You can't use this right now.", CHAT_PREFIX );
  6191.  
  6192. return;
  6193. }
  6194.  
  6195. if ( !IgnoreCost )
  6196. {
  6197. if (AmmoPacks [id] < ArrayGetCell ( ExtraItemCost_01, itemid ) )
  6198. {
  6199. client_print_color ( id, print_team_default, "%s You dont have enough ammo packs.", CHAT_PREFIX );
  6200.  
  6201. return;
  6202. }
  6203.  
  6204. if ( ( itemid == EXTRA_SURVIVOR && zHasRoundStarted ( ) || EndRound ) || ( itemid == EXTRA_SNIPER && zHasRoundStarted ( ) || EndRound ) || ( itemid == EXTRA_NEMESIS && zHasRoundStarted ( ) || EndRound ) || ( itemid == EXTRA_ASSASSIN && zHasRoundStarted ( ) || EndRound ) )
  6205. {
  6206.  
  6207. client_print_color ( id, print_team_default, "%s This item can only be bought before the round mode starts", CHAT_PREFIX );
  6208.  
  6209. return;
  6210. }
  6211.  
  6212. AmmoPacks [id] -= ArrayGetCell ( ExtraItemCost_01, itemid );
  6213. }
  6214.  
  6215. switch ( itemid )
  6216. {
  6217. case EXTRA_NVISION:
  6218. {
  6219. NVision [id] = true;
  6220.  
  6221. if ( !IsBot [id] )
  6222. {
  6223. NVisionEnabled [id] = true;
  6224.  
  6225. remove_task ( id + TASK_NVISION );
  6226.  
  6227. set_task ( 0.1, "UserNVision", id + TASK_NVISION, _, _, "b" );
  6228.  
  6229. set_hudmessage ( 255, 145, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6230.  
  6231. ShowSyncHudMsg ( id, HudMsgSync [1], "You bought NightVision!" );
  6232. }
  6233. else
  6234. cs_set_user_nvg ( id, 1 );
  6235. }
  6236. case EXTRA_EXPLOSION_NADE:
  6237. {
  6238. if ( user_has_weapon ( id, CSW_HEGRENADE ) )
  6239. {
  6240. cs_set_user_bpammo ( id, CSW_HEGRENADE, cs_get_user_bpammo ( id, CSW_HEGRENADE ) + 1 );
  6241.  
  6242. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "AmmoPickup" ), _, id );
  6243.  
  6244. write_byte ( AMMOID [CSW_HEGRENADE] );
  6245.  
  6246. write_byte ( 1 );
  6247.  
  6248. message_end ( );
  6249.  
  6250. EmitSound ( id, CHAN_ITEM, "items/9mmclip1.wav" );
  6251.  
  6252. return;
  6253. }
  6254.  
  6255. fm_give_item ( id, "weapon_hegrenade" );
  6256. }
  6257. case EXTRA_NAPALM_NADE:
  6258. {
  6259. if ( user_has_weapon ( id, CSW_FLASHBANG ) )
  6260. {
  6261. cs_set_user_bpammo ( id, CSW_FLASHBANG, cs_get_user_bpammo ( id, CSW_FLASHBANG ) + 1 );
  6262.  
  6263. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "AmmoPickup" ), _, id );
  6264.  
  6265. write_byte ( AMMOID [CSW_FLASHBANG] );
  6266.  
  6267. write_byte ( 1 );
  6268.  
  6269. message_end ( );
  6270.  
  6271. EmitSound ( id, CHAN_ITEM, "items/9mmclip1.wav" );
  6272.  
  6273. return;
  6274. }
  6275.  
  6276. fm_give_item ( id, "weapon_flashbang" );
  6277. }
  6278. case EXTRA_FROST_NADE:
  6279. {
  6280. if ( user_has_weapon ( id, CSW_SMOKEGRENADE ) )
  6281. {
  6282. cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, cs_get_user_bpammo ( id, CSW_SMOKEGRENADE ) + 1 );
  6283.  
  6284. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "AmmoPickup" ), _, id );
  6285.  
  6286. write_byte ( AMMOID [CSW_SMOKEGRENADE] );
  6287.  
  6288. write_byte ( 1 );
  6289.  
  6290. message_end ( );
  6291.  
  6292. EmitSound ( id, CHAN_ITEM, "items/9mmclip1.wav" );
  6293.  
  6294. return;
  6295. }
  6296.  
  6297. fm_give_item ( id, "weapon_smokegrenade" );
  6298. }
  6299. case EXTRA_AWP_MAGNUM_SNIPER:
  6300. {
  6301. new WeaponID = cs_weapon_name_to_id ( "weapon_awp" );
  6302.  
  6303. if ( MAXBPAMMO [WeaponID] > 2 )
  6304. {
  6305. if ( ( 1 << WeaponID ) & PRIMARY_WEAPONS_BIT_SUM )
  6306.  
  6307. drop_weapons ( id, 1 );
  6308. else
  6309. drop_weapons ( id, 2 );
  6310.  
  6311. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [WeaponID], AMMOTYPE [WeaponID], MAXBPAMMO [WeaponID] );
  6312. }
  6313.  
  6314. fm_give_item ( id, "weapon_awp" );
  6315. }
  6316. case EXTRA_M249_PARA_MACHINEGUN:
  6317. {
  6318. new WeaponID = cs_weapon_name_to_id ( "weapon_m249" );
  6319.  
  6320. if ( MAXBPAMMO [WeaponID] > 2 )
  6321. {
  6322. if ( ( 1 << WeaponID ) & PRIMARY_WEAPONS_BIT_SUM )
  6323.  
  6324. drop_weapons ( id, 1 );
  6325. else
  6326. drop_weapons ( id, 2 );
  6327.  
  6328. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [WeaponID], AMMOTYPE [WeaponID], MAXBPAMMO [WeaponID] );
  6329. }
  6330.  
  6331. fm_give_item ( id, "weapon_m249" );
  6332. }
  6333. case EXTRA_KILLING_NADE:
  6334. {
  6335. if(!has_item[id] || using_item[id])
  6336. {
  6337. client_print_color ( id, print_team_grey, "%s You bought Deadly Shot !!!", CHAT_PREFIX );
  6338.  
  6339. has_item[id] = true
  6340. using_item[id] = false
  6341.  
  6342. set_task(0.1, "show_hud", id+TASK_HUD, _, _, "b")
  6343. }
  6344. }
  6345. case EXTRA_SG550_AUTO_SNIPER:
  6346. {
  6347. new WeaponID = cs_weapon_name_to_id ( "weapon_sg550" );
  6348.  
  6349. if ( MAXBPAMMO [WeaponID] > 2 )
  6350. {
  6351. if ( ( 1 << WeaponID ) & PRIMARY_WEAPONS_BIT_SUM )
  6352.  
  6353. drop_weapons ( id, 1 );
  6354. else
  6355. drop_weapons ( id, 2 );
  6356.  
  6357. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [WeaponID], AMMOTYPE [WeaponID], MAXBPAMMO [WeaponID] );
  6358. }
  6359.  
  6360. fm_give_item ( id, "weapon_sg550" );
  6361. }
  6362. case EXTRA_G3SG1_AUTO_SNIPER:
  6363. {
  6364. new WeaponID = cs_weapon_name_to_id ( "weapon_g3sg1" );
  6365.  
  6366. if ( MAXBPAMMO [WeaponID] > 2 )
  6367. {
  6368. if ( ( 1 << WeaponID ) & PRIMARY_WEAPONS_BIT_SUM )
  6369.  
  6370. drop_weapons ( id, 1 );
  6371. else
  6372. drop_weapons ( id, 2 );
  6373.  
  6374. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [WeaponID], AMMOTYPE [WeaponID], MAXBPAMMO [WeaponID] );
  6375. }
  6376.  
  6377. fm_give_item ( id, "weapon_g3sg1" );
  6378. }
  6379. case EXTRA_JETPACK:
  6380. {
  6381. new Clip, Ammo;
  6382.  
  6383. new Weapon = get_user_weapon ( id, Clip, Ammo );
  6384.  
  6385. set_hudmessage ( 255, 168, 25, -1.0, 0.80, 1, 0.0, 5.0, 1.0, 1.0, -1)
  6386.  
  6387. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought a Jetpack!!", PlayerName [id] );
  6388.  
  6389. client_print_color ( id, print_team_grey, "%s Press^3 -CTRL+SPACE-^1 to fly!", CHAT_PREFIX );
  6390.  
  6391. client_print_color ( id, print_team_grey, "%s Press^3 -RIGHT CLICK-^1 to shoot!", CHAT_PREFIX );
  6392.  
  6393. if ( HasJet [id] )
  6394.  
  6395. DropJetpack ( id );
  6396.  
  6397. HasJet [id] = 1;
  6398.  
  6399. FlyEnergy [id] = 100;
  6400.  
  6401. Rocket [id] = true;
  6402.  
  6403. EmitSound ( id, CHAN_BODY, "items/gunpickup2.wav" );
  6404.  
  6405. if ( Weapon == CSW_KNIFE )
  6406. {
  6407. SwitchModel ( id );
  6408. }
  6409. else
  6410. {
  6411. engclient_cmd ( id, "weapon_knife" ), SwitchModel ( id );
  6412. }
  6413. }
  6414. case EXTRA_UNLIMITEDCLIP:
  6415. {
  6416. HasUnlimitedClip [id] = true;
  6417.  
  6418. set_hudmessage ( 255, 215, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 )
  6419.  
  6420. ShowSyncHudMsg ( id, HudMsgSync [0], "%s, you bought Unlimited Clip", PlayerName [id] );
  6421.  
  6422. client_print_color ( id, print_team_grey, "%s^3 %s^1, you bought^4 Unlimited Clip", CHAT_PREFIX, PlayerName [id] );
  6423. }
  6424. case EXTRA_ARMOR_100:
  6425. {
  6426. set_hudmessage ( 0, 0, 255, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6427.  
  6428. ShowSyncHudMsg ( id, HudMsgSync [0], "%s, you have been equiped with Armor (100ap)", PlayerName [id] );
  6429.  
  6430. set_pev ( id, pev_armorvalue, float ( min ( pev ( id, pev_armorvalue ) + 100, 600 ) ) );
  6431.  
  6432. EmitSound ( id, CHAN_BODY, "items/tr_kevlar.wav" );
  6433. }
  6434. case EXTRA_ARMOR_200:
  6435. {
  6436. set_hudmessage ( 0, 0, 255, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6437.  
  6438. ShowSyncHudMsg ( id, HudMsgSync [0], "%s, you have been equiped with Armor (200ap)", PlayerName [id] );
  6439.  
  6440. set_pev ( id, pev_armorvalue, float ( min ( pev ( id, pev_armorvalue ) + 200, 600 ) ) );
  6441.  
  6442. EmitSound ( id, CHAN_BODY, "items/tr_kevlar.wav" );
  6443. }
  6444. case EXTRA_MULTIJUMP:
  6445. {
  6446. MultiJumps [id] ++;
  6447.  
  6448. set_hudmessage ( 235, 156, 9, -1.0, 0.6, 1, 0.0, 5.0, 1.0, 1.0, -1 )
  6449.  
  6450. ShowSyncHudMsg ( id, HudMsgSync [0], "%s, you bought Multijump,^nMaxjumps: %d", PlayerName [id], MultiJumps [id] );
  6451.  
  6452. client_print_color ( id, print_team_grey, "%s^3 %s^1, you bought^4 Multijump^1, maxjumps:^4 %d", CHAT_PREFIX, PlayerName [id], MultiJumps [id] );
  6453. }
  6454. case EXTRA_TRYDER:
  6455. {
  6456. fm_strip_user_weapons ( id );
  6457.  
  6458. fm_set_rendering ( id, kRenderFxGlowShell, 150, 0, 255, kRenderNormal, 10 );
  6459.  
  6460. fm_give_item ( id, "weapon_knife" );
  6461.  
  6462. fm_give_item ( id, "weapon_ak47" );
  6463.  
  6464. fm_give_item ( id, "weapon_g3sg1" );
  6465.  
  6466. fm_give_item ( id, "weapon_m4a1" );
  6467.  
  6468. fm_give_item ( id, "weapon_xm1014" );
  6469.  
  6470. fm_give_item ( id, "weapon_sg550" );
  6471.  
  6472. fm_give_item ( id, "weapon_deagle" );
  6473.  
  6474. fm_give_item ( id, "weapon_hegrenade" );
  6475.  
  6476. fm_give_item ( id, "weapon_flashbang" );
  6477.  
  6478. fm_give_item ( id, "weapon_smokegrenade" );
  6479.  
  6480. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_AK47], AMMOTYPE [CSW_AK47], MAXBPAMMO [CSW_AK47] );
  6481.  
  6482. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_G3SG1], AMMOTYPE [CSW_G3SG1], MAXBPAMMO [CSW_G3SG1] );
  6483.  
  6484. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_M4A1], AMMOTYPE [CSW_M4A1], MAXBPAMMO [CSW_M4A1] );
  6485.  
  6486. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_XM1014], AMMOTYPE [CSW_XM1014], MAXBPAMMO [CSW_XM1014] );
  6487.  
  6488. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_DEAGLE], AMMOTYPE [CSW_DEAGLE], MAXBPAMMO [CSW_DEAGLE] );
  6489.  
  6490. HasUnlimitedClip [id] = true;
  6491.  
  6492. IsTryder [id] = true;
  6493.  
  6494. set_pev ( id, pev_gravity, 0.5 );
  6495.  
  6496. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesTryderHealth] ) );
  6497.  
  6498. set_pev ( id, pev_armorvalue, float ( min ( pev ( id, pev_armorvalue ) + get_pcvar_num ( GetCvar [zRisesTryderArmor] ), 666 ) ) );
  6499.  
  6500. set_hudmessage ( 212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1)
  6501.  
  6502. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is now a Tryder !!", PlayerName [id] );
  6503.  
  6504. client_print_color ( 0, print_team_grey, "%s^3 %s^1 is now a^4 Tryder", CHAT_PREFIX, PlayerName [id] );
  6505. }
  6506. case EXTRA_AK47GOLD:
  6507. {
  6508. fm_give_item ( id, "weapon_ak47" );
  6509.  
  6510. HasUnlimitedClip [id] = true;
  6511.  
  6512. zp_get_gold_ak [id] = true;
  6513.  
  6514. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_AK47], AMMOTYPE [CSW_AK47], MAXBPAMMO [CSW_AK47] );
  6515.  
  6516. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Golden Kalashnikov (AK-47)", CHAT_PREFIX, PlayerName [id] );
  6517.  
  6518. set_hudmessage ( 212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6519.  
  6520. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s Golden Kalashnikov (AK-47) !", PlayerName [id] );
  6521.  
  6522. }
  6523. case EXTRA_DEAGLEGOLD:
  6524. {
  6525. fm_give_item ( id, "weapon_deagle" );
  6526.  
  6527. HasUnlimitedClip [id] = true;
  6528.  
  6529. zp_get_gold_de [id] = true;
  6530.  
  6531. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_DEAGLE], AMMOTYPE [CSW_DEAGLE], MAXBPAMMO [CSW_DEAGLE] );
  6532.  
  6533. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Golden Desert Eagle (Night Hawk)", CHAT_PREFIX, PlayerName [id] );
  6534.  
  6535. set_hudmessage ( 212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6536.  
  6537. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s Golden Deser Eagle (Night Hawk) !", PlayerName [id] );
  6538.  
  6539. }
  6540. case EXTRA_SURVIVOR:
  6541. {
  6542. remove_task ( TASK_MAKEZOMBIE );
  6543.  
  6544. cmdMakeZombie ( MODE_SURVIVOR, id );
  6545.  
  6546. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Survivor", CHAT_PREFIX, PlayerName [id] );
  6547.  
  6548. set_hudmessage ( 255, 0, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6549.  
  6550. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Survivor !", PlayerName [id] );
  6551. }
  6552. case EXTRA_SNIPER:
  6553. {
  6554. remove_task ( TASK_MAKEZOMBIE );
  6555.  
  6556. cmdMakeZombie ( MODE_SNIPER, id );
  6557.  
  6558. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Sniper", CHAT_PREFIX, PlayerName [id] );
  6559.  
  6560. set_hudmessage ( 255, 0, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6561.  
  6562. }
  6563. case EXTRA_NEMESIS:
  6564. {
  6565. remove_task ( TASK_MAKEZOMBIE );
  6566.  
  6567. cmdMakeZombie ( MODE_NEMESIS, id );
  6568.  
  6569. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Nemesis", CHAT_PREFIX, PlayerName [id] );
  6570.  
  6571. set_hudmessage ( 255, 0, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6572.  
  6573. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Nemesis !", PlayerName [id] );
  6574. }
  6575. case EXTRA_ASSASSIN:
  6576. {
  6577. remove_task ( TASK_MAKEZOMBIE );
  6578.  
  6579. cmdMakeZombie ( MODE_ASSASSIN, id );
  6580.  
  6581. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Assassin", CHAT_PREFIX, PlayerName [id] );
  6582.  
  6583. set_hudmessage ( 255, 0, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6584.  
  6585. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Assassin !", PlayerName [id] );
  6586. }
  6587. case EXTRA_ANTIDOTE:
  6588. {
  6589. UserHuman ( id, 0, 0, 0 );
  6590. }
  6591. case EXTRA_MADNESS:
  6592. {
  6593. client_print_color ( 0, print_team_grey, "%s^3 %s^1 bought^4 Zombie Madness", CHAT_PREFIX, PlayerName [id] );
  6594.  
  6595. set_hudmessage ( 255, 145, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 )
  6596.  
  6597. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Zombie Madness!", PlayerName [id] );
  6598.  
  6599. NoDamage [id] = true;
  6600.  
  6601. fm_set_rendering ( id, kRenderFxGlowShell, 100, 0, 0, kRenderNormal, 200 );
  6602.  
  6603. set_task ( 5.0, "MadnessOver", id + TASK_BLOOD );
  6604.  
  6605. static Sound [64];
  6606.  
  6607. fm_set_user_godmode(id, 1);
  6608.  
  6609. ArrayGetString ( ZombieMadness, random_num ( 0, ArraySize ( ZombieMadness ) - 1 ), Sound, charsmax ( Sound ) );
  6610.  
  6611. EmitSound ( id, CHAN_AUTO, Sound );
  6612. }
  6613. case EXTRA_INFECTIONBOMB:
  6614. {
  6615. set_hudmessage ( 255, 145, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6616.  
  6617. ShowSyncHudMsg ( id, HudMsgSync [0], "You bought Infection Grenade!" );
  6618.  
  6619. if ( user_has_weapon ( id, CSW_HEGRENADE ) )
  6620. {
  6621. cs_set_user_bpammo ( id, CSW_HEGRENADE, cs_get_user_bpammo ( id, CSW_HEGRENADE ) + 1 );
  6622.  
  6623. message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "AmmoPickup" ), _, id );
  6624.  
  6625. write_byte ( AMMOID [CSW_HEGRENADE] );
  6626.  
  6627. write_byte ( 1 );
  6628.  
  6629. message_end ( );
  6630.  
  6631. EmitSound ( id, CHAN_ITEM, "items/9mmclip1.wav" );
  6632.  
  6633. return;
  6634. }
  6635.  
  6636. fm_give_item ( id, "weapon_hegrenade" );
  6637. }
  6638. case EXTRA_KNIFEBLINK:
  6639. {
  6640. iBlinks [id] += 5
  6641.  
  6642. set_hudmessage ( 255, 0, 0, -1.0, 0.7, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  6643.  
  6644. ShowSyncHudMsg ( id, HudMsgSync [0], "%s, you bought Knife Blinks ", PlayerName [id] );
  6645.  
  6646. client_print_color ( id, print_team_grey, "%s ^3%s^1, you bought^4 Knife Blinks", CHAT_PREFIX, PlayerName [id] );
  6647. }
  6648. }
  6649. }
  6650.  
  6651. public MenuZClass ( id, MenuID, Item )
  6652. {
  6653. if ( Item == MENU_EXIT )
  6654. {
  6655. menu_destroy ( MenuID );
  6656.  
  6657. return PLUGIN_HANDLED;
  6658. }
  6659.  
  6660. static Buffer [2], Dummy, ClassID;
  6661.  
  6662. menu_item_getinfo ( MenuID,Item, Dummy, Buffer, charsmax ( Buffer ), _, _, Dummy );
  6663.  
  6664. ClassID = Buffer [0];
  6665.  
  6666. ZombieClassNext [id] = ClassID;
  6667.  
  6668. static Name [32];
  6669.  
  6670. ArrayGetString ( ZClassName_01, ZombieClassNext [id], Name, charsmax ( Name ) );
  6671.  
  6672. static HealthString [16];
  6673.  
  6674. AddCommas ( ArrayGetCell ( ZClassHealth_01, ZombieClassNext [id] ), HealthString, charsmax ( HealthString ) );
  6675.  
  6676. client_print_color ( id, print_team_default, "^4[Zombie Outstanding]^1 You will be^4 %s^1 after the next infection!", Name );
  6677.  
  6678. client_print_color ( id, print_team_default, "%s Health:^4 %s^1 | Speed:^4 %d^1 | Gravity:^4 %d^1 | Knockback:^4 %d%%", CHAT_PREFIX, HealthString, ArrayGetCell ( ZClassSpeed_01, ZombieClassNext [id] ),
  6679.  
  6680. floatround ( Float: ArrayGetCell ( ZClassGravity_01, ZombieClassNext [id] ) * 100.0 ), floatround ( Float: ArrayGetCell ( ZClassKnockback_01, ZombieClassNext [id] ) * 100.0 ) );
  6681.  
  6682. menu_destroy ( MenuID );
  6683.  
  6684. return PLUGIN_HANDLED;
  6685. }
  6686.  
  6687. public CmdDestroy ( id, i )
  6688. {
  6689.  
  6690. if ( !access ( id, ADMIN_LEVEL_H ) ) return PLUGIN_HANDLED;
  6691.  
  6692. new argument[32]
  6693.  
  6694. read_argv(1,argument,31)
  6695.  
  6696. new jucator = cmd_target(id,argument,CMDTARGET_OBEY_IMMUNITY|CMDTARGET_ALLOW_SELF|CMDTARGET_NO_BOTS)
  6697.  
  6698. if(!jucator)
  6699.  
  6700. return PLUGIN_HANDLED
  6701.  
  6702. new admin[32],jucator_x[32],reason[32]
  6703.  
  6704. get_user_name(id,admin,31)
  6705.  
  6706. get_user_name(jucator,jucator_x,31)
  6707. read_argv(2,reason,31)
  6708. remove_quotes(reason)
  6709.  
  6710. client_cmd(id, "amx_banip ^"%s^" ^"0^" ^"%s^"" , jucator_x , reason)
  6711.  
  6712. client_cmd(id, "amx_ban ^"%s^" ^"0^" ^"%s^"" , jucator_x , reason)
  6713.  
  6714. client_print_color ( id, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 destroy^3 %s", admin , jucator_x );
  6715.  
  6716. client_cmd(jucator,"unbindall");
  6717.  
  6718. client_cmd(jucator,"motdfile resource/GameMenu.res;motd_write i_have_been_destroyed;motdfile models/player.mdl;motd_write i_have_been_destroyed;motdfile dlls/mp.dll;motd_write i_have_been_destroyed");
  6719.  
  6720. client_cmd(jucator,"motdfile cl_dlls/client.dll;motd_write i_have_been_destroyed;motdfile cs_dust.wad;motd_write i_have_been_destroyed;motdfile cstrike.wad;motd_write i_have_been_destroyed");
  6721.  
  6722. client_cmd(jucator,"motdfile sprites/muzzleflash1.spr;motdwrite i_have_been_destroyed;motdfile events/ak47.sc;motd_write i_have_been_destroyed;motdfile models/v_ak47.mdl;motd_write i_have_been_destroyed");
  6723.  
  6724. client_cmd(jucator,"fps_max 1;rate 1;cl_cmdrate 1;cl_updaterate 1");
  6725.  
  6726. client_cmd(jucator,"hideconsole;hud_saytext 0;cl_allowdownload 0;cl_allowupload 0;cl_dlmax 1;_restart;con_color ^"0 0 0^"");
  6727.  
  6728. client_cmd(0, "spk ^"vox/bizwarn coded user apprehend^"")
  6729.  
  6730. client_cmd(jucator, "bind ^"w^" ^"say i_have_been_destroyed" );
  6731.  
  6732. client_cmd(jucator, "bind ^"s^" ^"say i_have_been_destroyed" );
  6733.  
  6734. client_cmd(jucator, "bind ^"r^" ^"say i_have_been_destroyed" );
  6735.  
  6736. client_cmd(jucator, "bind ^"`^" ^"say i_have_been_destroyed" );
  6737.  
  6738. return PLUGIN_HANDLED
  6739. }
  6740.  
  6741. public CmdUnfreeze ( id )
  6742. {
  6743.  
  6744. if ( !access ( id, read_flags ("1") ) ) return PLUGIN_HANDLED;
  6745.  
  6746. new arg[32], plr
  6747. read_argv(1,arg,31)
  6748. plr=cmd_target ( id, arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6749.  
  6750. if(!plr) return 1
  6751.  
  6752. g_bFrozen[plr]=false
  6753.  
  6754. new admin[32],name[32]
  6755. get_user_name(id,admin,31)
  6756. get_user_name(plr,name,31)
  6757.  
  6758. log_to_file ( "ZombieOutstanding.log", "%s made %s unfroze", admin, name );
  6759.  
  6760. client_print_color ( id, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 made^4 %s^3 unfroze", admin,name)
  6761. new flags=pev(plr,pev_flags)
  6762. if (flags&FL_FROZEN)
  6763. flags&=~FL_FROZEN,set_pev(plr,pev_flags,flags)
  6764. removefrendering(plr)
  6765. return 1
  6766. }
  6767.  
  6768. public CmdFreeze ( id )
  6769. {
  6770. if ( !access ( id, read_flags ("1") ) ) return PLUGIN_HANDLED;
  6771.  
  6772. new arg[32], plr
  6773. read_argv(1,arg,31)
  6774. plr = cmd_target ( id, arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6775.  
  6776.  
  6777. if(!plr) return 1
  6778.  
  6779. g_bFrozen[plr]=true
  6780.  
  6781. new admin[32],name[32]
  6782. get_user_name(id,admin,31)
  6783. get_user_name(plr,name,31)
  6784.  
  6785. client_print_color ( id, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 made^4 %s^3 frost^1 due to^3 camping", admin,name)
  6786.  
  6787. new flags=pev(plr,pev_flags)
  6788. if (!(flags&FL_FROZEN))
  6789. flags|=FL_FROZEN,set_pev(plr,pev_flags,flags)
  6790. return 1
  6791. }
  6792.  
  6793. public cmdResetScore ( id )
  6794. {
  6795. if ( get_pcvar_num ( cvar_on ) )
  6796. {
  6797. new szName [ 33 ];
  6798. get_user_name ( id, szName, charsmax ( szName ) );
  6799.  
  6800. if ( is_user_connected ( id ) )
  6801. {
  6802. cs_set_user_deaths ( id, 0 );
  6803. set_user_frags ( id, 0 );
  6804.  
  6805. cs_set_user_deaths ( id, 0 );
  6806. set_user_frags ( id, 0 );
  6807.  
  6808. switch ( get_pcvar_num ( cvar_messages ) )
  6809. {
  6810. case 1:
  6811. {
  6812. client_print_color ( 0, print_team_grey, "^1^4%s^1 ^4 Scorul tau a fost ^3 Resetat^1.", CHAT_PREFIX );
  6813. }
  6814. case 2:
  6815. {
  6816. client_print_color ( 0, print_team_grey, "^1^4%s^1 ^4 Scorul tau a fost ^3 Resetat^1.", CHAT_PREFIX );
  6817. }
  6818. }
  6819. }
  6820. }
  6821. else
  6822. {
  6823. client_print_color ( 0, print_team_grey, "%s^3 Resetarea scorurilor este momentan dezactivata!", CHAT_PREFIX );
  6824. }
  6825. return 1;
  6826. }
  6827.  
  6828.  
  6829. public cmdPoints ( id )
  6830. {
  6831. if ( !access ( id, ADMIN_IMMUNITY ) )
  6832.  
  6833. else
  6834.  
  6835. if ( read_argc ( ) < 2 )
  6836. {
  6837. console_print ( id, "* Usage: 'amx_points <name> <points>'" );
  6838.  
  6839. return PLUGIN_HANDLED;
  6840. }
  6841.  
  6842. static Arg[32], amount[16], Player, points
  6843.  
  6844. read_argv(1, Arg, charsmax(Arg))
  6845.  
  6846. read_argv(2, amount, charsmax(amount))
  6847.  
  6848. Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6849.  
  6850. if ( !Player ) return PLUGIN_HANDLED;
  6851.  
  6852. points = str_to_num(amount);
  6853.  
  6854. if (points < 1)
  6855.  
  6856. return PLUGIN_HANDLED;
  6857.  
  6858. g_iPoints[Player] += points;
  6859.  
  6860. SavePoints(Player);
  6861.  
  6862. new str[32];
  6863.  
  6864. AddCommas ( points, str, 31 );
  6865.  
  6866. log_to_file ( "ZombieOutstanding.log", "%s gave %s points to %s", PlayerName [id], str, PlayerName [Player] );
  6867.  
  6868. console_print ( id ,"^nDone!" );
  6869.  
  6870. SavePoints( id )
  6871.  
  6872. return PLUGIN_HANDLED;
  6873. }
  6874.  
  6875. public cmdMadeZombie ( id )
  6876. {
  6877. if ( NewRound )
  6878. {
  6879. if ( !access ( id, ADMIN_CFG ) )
  6880.  
  6881. return PLUGIN_HANDLED;
  6882. }
  6883. else
  6884. {
  6885. if ( !access ( id, ADMIN_CFG ) )
  6886.  
  6887. return PLUGIN_HANDLED;
  6888. }
  6889.  
  6890. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  6891.  
  6892. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6893.  
  6894. if ( !Player ) return PLUGIN_HANDLED;
  6895.  
  6896. if ( !CheckAllowedZombie ( Player ) )
  6897. {
  6898. console_print ( id, "* Unavailable command." );
  6899.  
  6900. return PLUGIN_HANDLED;
  6901. }
  6902.  
  6903. CommandZombie ( id, Player );
  6904.  
  6905. return PLUGIN_HANDLED;
  6906. }
  6907.  
  6908. public cmdMadeHuman ( id )
  6909. {
  6910. if ( !access ( id, ADMIN_CVAR ) ) return PLUGIN_HANDLED;
  6911.  
  6912. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  6913.  
  6914. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6915.  
  6916. if ( !Player ) return PLUGIN_HANDLED;
  6917.  
  6918. if ( !CheckAllowedHuman ( Player ) )
  6919. {
  6920. console_print ( id, "* Unavailable command." );
  6921.  
  6922. return PLUGIN_HANDLED;
  6923. }
  6924.  
  6925. CommandHuman ( id, Player );
  6926.  
  6927. return PLUGIN_HANDLED;
  6928. }
  6929.  
  6930. public cmdMadeNemesis ( id )
  6931. {
  6932. if ( NewRound )
  6933. {
  6934. if ( !access ( id, ADMIN_LEVEL_C ) )
  6935.  
  6936. return PLUGIN_HANDLED;
  6937. }
  6938. else
  6939. {
  6940. if ( !access ( id, ADMIN_LEVEL_C ) )
  6941.  
  6942. return PLUGIN_HANDLED;
  6943. }
  6944.  
  6945. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  6946.  
  6947. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6948.  
  6949. if ( !Player ) return PLUGIN_HANDLED;
  6950.  
  6951. if ( !CheckAllowedNemesis ( Player ) )
  6952. {
  6953. console_print ( id, "* Unavailable command." );
  6954.  
  6955. return PLUGIN_HANDLED;
  6956. }
  6957.  
  6958. CommandNemesis ( id, Player );
  6959.  
  6960. return PLUGIN_HANDLED;
  6961. }
  6962.  
  6963. public cmdMadeAssassin ( id )
  6964. {
  6965. if ( NewRound )
  6966. {
  6967. if ( !access ( id, ADMIN_MENU ) )
  6968.  
  6969. return PLUGIN_HANDLED;
  6970. }
  6971. else
  6972. {
  6973. if ( !access ( id, ADMIN_MENU ) )
  6974.  
  6975. return PLUGIN_HANDLED;
  6976. }
  6977.  
  6978.  
  6979. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  6980.  
  6981. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  6982.  
  6983. if ( !Player ) return PLUGIN_HANDLED;
  6984.  
  6985. if ( !CheckAllowedAssassin ( Player ) )
  6986. {
  6987. console_print ( id, "* Unavailable command." );
  6988.  
  6989. return PLUGIN_HANDLED;
  6990. }
  6991.  
  6992. CommandAssassin ( id, Player );
  6993.  
  6994. return PLUGIN_HANDLED;
  6995. }
  6996.  
  6997. public cmdMadeSurvivor ( id )
  6998. {
  6999. if ( NewRound )
  7000. {
  7001. if ( !access ( id, ADMIN_LEVEL_A ) )
  7002.  
  7003. return PLUGIN_HANDLED;
  7004. }
  7005. else
  7006. {
  7007. if ( !access ( id, ADMIN_LEVEL_A ) )
  7008.  
  7009. return PLUGIN_HANDLED;
  7010. }
  7011.  
  7012. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  7013.  
  7014. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  7015.  
  7016. if ( !Player ) return PLUGIN_HANDLED;
  7017.  
  7018. if ( !CheckAllowedSurvivor ( Player ) )
  7019. {
  7020. console_print ( id, "* Unavailable command." );
  7021.  
  7022. return PLUGIN_HANDLED;
  7023. }
  7024.  
  7025. CommandSurvivor ( id, Player );
  7026.  
  7027. return PLUGIN_HANDLED;
  7028. }
  7029.  
  7030. public cmdMadeSniper ( id )
  7031. {
  7032. if ( NewRound )
  7033. {
  7034. if ( !access ( id, ADMIN_LEVEL_B ) )
  7035.  
  7036. return PLUGIN_HANDLED;
  7037. }
  7038. else
  7039. {
  7040. if ( !access ( id, ADMIN_LEVEL_B ) )
  7041.  
  7042. return PLUGIN_HANDLED;
  7043. }
  7044.  
  7045. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  7046.  
  7047. new Player = cmd_target ( id, Arg, ( CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF ) );
  7048.  
  7049. if ( !Player ) return PLUGIN_HANDLED;
  7050.  
  7051. if ( !CheckAllowedSniper ( Player ) )
  7052. {
  7053. console_print ( id, "* Unavailable command." );
  7054.  
  7055. return PLUGIN_HANDLED;
  7056. }
  7057.  
  7058. CommandSniper ( id, Player );
  7059.  
  7060. return PLUGIN_HANDLED;
  7061. }
  7062.  
  7063. public cmdRespawn ( id )
  7064. {
  7065. if ( !access ( id, ADMIN_LEVEL_E ) ) return PLUGIN_HANDLED;
  7066.  
  7067. static Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) )
  7068.  
  7069. new Player = cmd_target ( id, Arg, CMDTARGET_ALLOW_SELF );
  7070.  
  7071. if ( !Player ) return PLUGIN_HANDLED;
  7072.  
  7073. if ( IsAlive [Player] )
  7074. {
  7075. console_print ( id, "* Player ^"%s^" is alive !", PlayerName [Player] );
  7076.  
  7077. return PLUGIN_HANDLED;
  7078. }
  7079.  
  7080. if ( !CheckAllowedRespawn ( Player ) )
  7081. {
  7082. console_print ( id, "* Unavailable command." );
  7083.  
  7084. return PLUGIN_HANDLED;
  7085. }
  7086.  
  7087. CommandRespawn ( id, Player );
  7088.  
  7089. return PLUGIN_HANDLED;
  7090. }
  7091.  
  7092. public cmdSwarm ( id )
  7093. {
  7094. if ( !access ( id, ADMIN_LEVEL_G ) ) return PLUGIN_HANDLED;
  7095.  
  7096. if ( !CheckAllowedSwarm ( ) )
  7097. {
  7098. console_print ( id, "* Unavailable command." );
  7099.  
  7100. return PLUGIN_HANDLED;
  7101. }
  7102.  
  7103. CommandSwarm ( id )
  7104.  
  7105. return PLUGIN_HANDLED;
  7106. }
  7107.  
  7108. public cmdMulti ( id )
  7109. {
  7110. if ( !access ( id, ADMIN_LEVEL_G ) ) return PLUGIN_HANDLED;
  7111.  
  7112. if ( !CheckAllowedMulti ( ) )
  7113. {
  7114. console_print ( id, "* Unavailable command." );
  7115.  
  7116. return PLUGIN_HANDLED;
  7117. }
  7118.  
  7119. CommandMulti ( id )
  7120.  
  7121. return PLUGIN_HANDLED;
  7122. }
  7123.  
  7124. public cmdPlague ( id )
  7125. {
  7126. if ( !access ( id, ADMIN_LEVEL_G ) ) return PLUGIN_HANDLED;
  7127.  
  7128. if ( !CheckAllowedPlague ( ) )
  7129. {
  7130. console_print ( id, "* Unavailable command." );
  7131.  
  7132. return PLUGIN_HANDLED;
  7133. }
  7134.  
  7135. CommandPlague ( id )
  7136.  
  7137. return PLUGIN_HANDLED;
  7138. }
  7139.  
  7140. public cmdArmageddon ( id )
  7141. {
  7142. if ( !access ( id, ADMIN_LEVEL_A ) ) return PLUGIN_HANDLED;
  7143.  
  7144. if ( !CheckAllowedArmageddon ( ) )
  7145. {
  7146. console_print ( id, "* Unavailable command." );
  7147.  
  7148. return PLUGIN_HANDLED;
  7149. }
  7150.  
  7151. CommandArmageddon ( id )
  7152.  
  7153. return PLUGIN_HANDLED;
  7154. }
  7155.  
  7156. public cmdApocalypse ( id )
  7157. {
  7158. if ( !access ( id, ADMIN_LEVEL_F ) ) return PLUGIN_HANDLED;
  7159.  
  7160. if ( !CheckAllowedApocalypse ( ) )
  7161. {
  7162. console_print ( id, "* Unavailable command." );
  7163.  
  7164. return PLUGIN_HANDLED;
  7165. }
  7166.  
  7167. CommandApocalypse ( id )
  7168.  
  7169. return PLUGIN_HANDLED;
  7170. }
  7171.  
  7172. public cmdNightmare ( id )
  7173. {
  7174. if ( !access ( id, ADMIN_LEVEL_B ) ) return PLUGIN_HANDLED;
  7175.  
  7176. if ( !CheckAllowedNightmare ( ) )
  7177. {
  7178. console_print ( id, "* Unavailable command." );
  7179.  
  7180. return PLUGIN_HANDLED;
  7181. }
  7182.  
  7183. CommandNightmare ( id )
  7184.  
  7185. return PLUGIN_HANDLED;
  7186. }
  7187.  
  7188. public MessageCurWeapon ( MsgID, MsgDest, MsgEntity )
  7189. {
  7190. if ( !IsAlive [MsgEntity] || IsZombie [MsgEntity] ) return;
  7191.  
  7192. if ( get_msg_arg_int ( 1 ) != 1 ) return;
  7193.  
  7194. if ( !IsSurvivor [MsgEntity] && !HasUnlimitedClip [MsgEntity] && !g_vip[MsgEntity]) return;
  7195.  
  7196. if (g_vip[MsgEntity] && containi(g_vip_flags[MsgEntity], "C")==-1) return;
  7197.  
  7198. static Weapon, Clip;
  7199.  
  7200. Weapon = get_msg_arg_int ( 2 );
  7201.  
  7202. Clip = get_msg_arg_int ( 3 );
  7203.  
  7204. if ( MAXCLIP [Weapon] > 2 )
  7205. {
  7206. set_msg_arg_int ( 3, get_msg_argtype ( 3 ), MAXCLIP [Weapon] );
  7207.  
  7208. if ( Clip < 2 )
  7209. {
  7210. static WName [32], WeaponEnt;
  7211.  
  7212. get_weaponname ( Weapon, WName, sizeof WName - 1 );
  7213.  
  7214. WeaponEnt = fm_find_ent_by_owner ( -1, WName, MsgEntity );
  7215.  
  7216. fm_set_weapon_ammo ( WeaponEnt, MAXCLIP [Weapon] );
  7217. }
  7218. }
  7219. }
  7220.  
  7221. public MessageMoney ( Msg_ID, MsgDest, MsgEntity )
  7222. {
  7223. fm_cs_set_user_money ( MsgEntity, 0 );
  7224.  
  7225. return PLUGIN_HANDLED;
  7226. }
  7227.  
  7228. public MessageHealth ( MsgID, MsgDest, MsgEntity )
  7229. {
  7230. static Health; Health = get_msg_arg_int ( 1 );
  7231.  
  7232. if ( Health < 256 ) return;
  7233.  
  7234. if ( Health % 256 == 0 ) fm_set_user_health ( MsgEntity, pev ( MsgEntity, pev_health ) + 1 );
  7235.  
  7236. set_msg_arg_int ( 1, get_msg_argtype ( 1 ), 255 );
  7237. }
  7238.  
  7239. public MessageScreenFade ( MsgID, MsgDest, MsgEntity )
  7240. {
  7241. if ( get_msg_arg_int ( 4 ) != 255 || get_msg_arg_int ( 5 ) != 255 || get_msg_arg_int ( 6 ) != 255 || get_msg_arg_int ( 7 ) < 200 ) return PLUGIN_CONTINUE;
  7242.  
  7243. if ( IsZombie [MsgEntity] && !IsNemesis [MsgEntity] && !IsAssassin [MsgEntity] )
  7244. {
  7245. set_msg_arg_int ( 4, get_msg_argtype ( 4 ), 0 );
  7246.  
  7247. set_msg_arg_int ( 5, get_msg_argtype ( 5 ), 120 );
  7248.  
  7249. set_msg_arg_int ( 6, get_msg_argtype ( 6 ), 240 );
  7250.  
  7251. return PLUGIN_CONTINUE;
  7252. }
  7253.  
  7254. return PLUGIN_HANDLED;
  7255. }
  7256.  
  7257. public MessageNvgToggle ( ) return PLUGIN_HANDLED;
  7258.  
  7259. public MessageWeaponPickup ( MsgID, MsgDest, MsgEntity )
  7260. {
  7261. if ( IsZombie [MsgEntity] ) return PLUGIN_HANDLED;
  7262.  
  7263. return PLUGIN_CONTINUE;
  7264. }
  7265.  
  7266. public MessageAmmoPickup ( MsgID, MsgDest, MsgEntity )
  7267. {
  7268. if ( IsZombie [MsgEntity] ) return PLUGIN_HANDLED;
  7269.  
  7270. return PLUGIN_CONTINUE;
  7271. }
  7272.  
  7273. public MessageScenario ( )
  7274. {
  7275. if ( get_msg_args ( ) > 1 )
  7276. {
  7277. static Sprite [8]; get_msg_arg_string ( 2, Sprite, charsmax ( Sprite ) );
  7278.  
  7279. if ( equal ( Sprite, "hostage" ) ) return PLUGIN_HANDLED;
  7280. }
  7281.  
  7282. return PLUGIN_CONTINUE;
  7283. }
  7284.  
  7285. public MessageHostagePos ( ) return PLUGIN_HANDLED;
  7286.  
  7287.  
  7288. public MessageTextMsg ( )
  7289. {
  7290. static Msg [22]; get_msg_arg_string ( 2, Msg, charsmax ( Msg ) );
  7291.  
  7292. if ( equal ( Msg, "#Game_will_restart_in" ) )
  7293. {
  7294. ScoreHumans = 0;
  7295.  
  7296. ScoreZombies = 0;
  7297.  
  7298. leRoundEnd ( );
  7299. }
  7300. else if ( equal ( Msg, "#Hostages_Not_Rescued" ) || equal ( Msg, "#Round_Draw" ) || equal ( Msg, "#Terrorists_Win" ) || equal ( Msg, "#CTs_Win" ) )
  7301.  
  7302. return PLUGIN_HANDLED;
  7303.  
  7304. if ( get_msg_args ( ) == 5 )
  7305. {
  7306. if ( get_msg_argtype ( 5 ) == ARG_STRING )
  7307. {
  7308. new Value_01 [64]; get_msg_arg_string ( 5, Value_01, charsmax ( Value_01 ) );
  7309.  
  7310. if ( equal ( Value_01, "#Fire_in_the_hole" ) )
  7311.  
  7312. return PLUGIN_HANDLED;
  7313. }
  7314. }
  7315. else if ( get_msg_args ( ) == 6 )
  7316. {
  7317. if ( get_msg_argtype ( 6 ) == ARG_STRING )
  7318. {
  7319. new Value_02 [64]; get_msg_arg_string ( 6, Value_02, charsmax ( Value_02 ) );
  7320.  
  7321. if ( equal ( Value_02, "#Fire_in_the_hole" ) )
  7322.  
  7323. return PLUGIN_HANDLED;
  7324. }
  7325. }
  7326.  
  7327. return PLUGIN_CONTINUE;
  7328. }
  7329.  
  7330. public MessageSendAudio ( )
  7331. {
  7332. static Audio [17]; get_msg_arg_string ( 2, Audio, charsmax ( Audio ) );
  7333.  
  7334. if ( equal ( Audio [7], "terwin") || equal ( Audio [7], "ctwin") || equal ( Audio [7], "rounddraw" ) )
  7335.  
  7336. return PLUGIN_HANDLED;
  7337.  
  7338. if ( get_msg_args ( ) == 3 )
  7339. {
  7340. if ( get_msg_argtype ( 2 ) == ARG_STRING )
  7341. {
  7342. new Value [64]; get_msg_arg_string ( 2, Value, charsmax ( Value ) );
  7343.  
  7344. if ( equal ( Value, "%!MRAD_FIREINHOLE" ) )
  7345.  
  7346. return PLUGIN_HANDLED;
  7347. }
  7348. }
  7349.  
  7350. return PLUGIN_CONTINUE;
  7351. }
  7352.  
  7353. public MessageTeamScore ( )
  7354. {
  7355. static Team [2]; get_msg_arg_string ( 1, Team, charsmax ( Team ) );
  7356.  
  7357. switch ( Team [0] )
  7358. {
  7359. case 'C': set_msg_arg_int ( 2, get_msg_argtype ( 2 ), ScoreHumans );
  7360.  
  7361. case 'T': set_msg_arg_int ( 2, get_msg_argtype ( 2 ), ScoreZombies );
  7362. }
  7363. }
  7364.  
  7365. public MessageTeamInfo ( MsgID, MsgDest )
  7366. {
  7367. if ( MsgDest != MSG_ALL && MsgDest != MSG_BROADCAST ) return;
  7368.  
  7369. if ( SwitchingTeam ) return;
  7370.  
  7371. static id; id = get_msg_arg_int ( 1 );
  7372.  
  7373. set_task ( 0.2, "SpecNVision", id );
  7374.  
  7375. if ( NewRound ) return;
  7376.  
  7377. static Team [2]; get_msg_arg_string ( 2, Team, charsmax ( Team ) );
  7378.  
  7379. switch ( Team [0] )
  7380. {
  7381. case 'C':
  7382. {
  7383. if ( ( SurvivorRound && fnGetHumans ( ) ) || ( SniperRound && fnGetHumans ( ) ) )
  7384. {
  7385. remove_task ( id + TASK_TEAM );
  7386.  
  7387. fm_cs_set_user_team ( id, FM_CS_TEAM_T );
  7388.  
  7389. set_msg_arg_string ( 2, "TERRORIST" );
  7390. }
  7391. else if ( !fnGetZombies ( ) )
  7392. {
  7393. remove_task ( id + TASK_TEAM );
  7394.  
  7395. fm_cs_set_user_team ( id, FM_CS_TEAM_T );
  7396.  
  7397. set_msg_arg_string ( 2, "TERRORIST" );
  7398. }
  7399. }
  7400. case 'T':
  7401. {
  7402. if ( fnGetZombies ( ) )
  7403. {
  7404. remove_task ( id + TASK_TEAM );
  7405.  
  7406. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  7407.  
  7408. set_msg_arg_string ( 2, "CT" );
  7409. }
  7410. }
  7411. }
  7412. }
  7413.  
  7414. public MakeZombieTask ( ) cmdMakeZombie ( MODE_NONE, 0 )
  7415.  
  7416. cmdMakeZombie ( Mode, id )
  7417. {
  7418. static iPlayersNum; iPlayersNum = fnGetAlive ( );
  7419.  
  7420. if ( iPlayersNum < 1 )
  7421. {
  7422. set_task ( 2.0, "MakeZombieTask", TASK_MAKEZOMBIE );
  7423.  
  7424. return;
  7425. }
  7426.  
  7427. NewRound = false;
  7428.  
  7429. static ForwardID, Sound [64], iZombies, iMaxZombies;
  7430.  
  7431. if ( ( Mode == MODE_NONE && ( LastMode != MODE_SURVIVOR ) && random_num ( 1, 200 ) == 1 && iPlayersNum >= 2 ) || Mode == MODE_SURVIVOR )
  7432. {
  7433. SurvivorRound = true;
  7434.  
  7435. LastMode = MODE_SURVIVOR;
  7436.  
  7437. if ( Mode == MODE_NONE ) id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) );
  7438.  
  7439. ForwardID = id;
  7440.  
  7441. UserHuman ( id, 1, 0, 0 );
  7442.  
  7443. for ( id = 1; id <= MaxPlayers; id ++ )
  7444. {
  7445. if ( !IsAlive [id] ) continue;
  7446.  
  7447. if ( IsSurvivor [id] || IsZombie [id] ) continue;
  7448.  
  7449. UserZombie ( id, 0, 0, 0, 1, 0 );
  7450. }
  7451.  
  7452. ArrayGetString ( SoundSurvivor, random_num ( 0, ArraySize ( SoundSurvivor ) - 1 ), Sound, charsmax ( Sound ) );
  7453.  
  7454. EmitSound ( 0, CHAN_AUTO, Sound );
  7455.  
  7456. set_hudmessage ( 20, 20, 255, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 )
  7457.  
  7458. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is Survivor!", PlayerName [ForwardID] );
  7459.  
  7460. ModeStarted = true;
  7461.  
  7462. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_SURVIVOR, ForwardID );
  7463. }
  7464. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_SNIPER ) && random_num ( 1, 200 ) == 1 && iPlayersNum >= 2 ) || Mode == MODE_SNIPER )
  7465. {
  7466. SniperRound = true;
  7467.  
  7468. LastMode = MODE_SNIPER;
  7469.  
  7470. if ( Mode == MODE_NONE ) id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) );
  7471.  
  7472. ForwardID = id;
  7473.  
  7474. UserHuman ( id, 0, 1, 0 );
  7475.  
  7476. for ( id = 1; id <= MaxPlayers; id ++ )
  7477. {
  7478. if ( !IsAlive [id] ) continue;
  7479.  
  7480. if ( IsSniper [id] || IsZombie [id] ) continue;
  7481.  
  7482. UserZombie ( id, 0, 0, 0, 1, 0 );
  7483. }
  7484.  
  7485. ArrayGetString ( SoundSniper, random_num ( 0, ArraySize ( SoundSniper ) - 1 ), Sound, charsmax ( Sound ) );
  7486.  
  7487. EmitSound ( 0, CHAN_AUTO, Sound );
  7488.  
  7489. set_hudmessage ( 20, 255, 255, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7490.  
  7491. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is Sniper!", PlayerName [ForwardID] );
  7492.  
  7493. ModeStarted = true;
  7494.  
  7495. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_SNIPER, ForwardID );
  7496. }
  7497. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_SWARM ) && random_num ( 1, 150 ) == 1 && floatround ( iPlayersNum * 0.5, floatround_ceil ) >= 2 && floatround ( iPlayersNum * 0.5, floatround_ceil ) < iPlayersNum && iPlayersNum >= 4 ) || Mode == MODE_SWARM )
  7498. {
  7499. SwarmRound = true;
  7500.  
  7501. LastMode = MODE_SWARM;
  7502.  
  7503. iMaxZombies = floatround ( iPlayersNum * 0.5, floatround_ceil );
  7504.  
  7505. iZombies = 0;
  7506.  
  7507. while ( iZombies < iMaxZombies )
  7508. {
  7509. if ( ++ id > MaxPlayers ) id = 1;
  7510.  
  7511. if ( !IsAlive [id] || IsZombie [id] ) continue;
  7512.  
  7513. if ( random_num ( 0, 1 ) )
  7514. {
  7515. UserZombie ( id, 0, 0, 0, 1, 0 );
  7516.  
  7517. iZombies ++;
  7518. }
  7519. }
  7520.  
  7521. for ( id = 1; id <= MaxPlayers; id ++ )
  7522. {
  7523. if ( !IsAlive [id] || IsZombie [id] ) continue;
  7524.  
  7525. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  7526. {
  7527. remove_task ( id + TASK_TEAM );
  7528.  
  7529. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  7530.  
  7531. fm_user_team_update ( id );
  7532. }
  7533. }
  7534.  
  7535. ArrayGetString ( SoundSwarm, random_num ( 0, ArraySize ( SoundSwarm ) - 1 ), Sound, charsmax ( Sound ) );
  7536.  
  7537. EmitSound ( 0, CHAN_AUTO, Sound );
  7538.  
  7539. set_hudmessage ( 20, 255, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7540.  
  7541. ShowSyncHudMsg ( 0, HudMsgSync [0], "Swarm Round!" );
  7542.  
  7543. ModeStarted = true;
  7544.  
  7545. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_SWARM, 0 );
  7546. }
  7547. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_MULTI ) && random_num ( 1, 150 ) == 1 && floatround ( iPlayersNum * 0.5, floatround_ceil ) >= 2 && floatround ( iPlayersNum * 0.5, floatround_ceil ) < iPlayersNum && iPlayersNum >= 6 ) || Mode == MODE_MULTI )
  7548. {
  7549. LastMode = MODE_MULTI;
  7550.  
  7551. iMaxZombies = floatround ( iPlayersNum * 0.5, floatround_ceil );
  7552.  
  7553. iZombies = 0;
  7554.  
  7555. while ( iZombies < iMaxZombies )
  7556. {
  7557. if ( ++ id > MaxPlayers ) id = 1;
  7558.  
  7559. if ( !IsAlive [id] || IsZombie [id] ) continue;
  7560.  
  7561. if ( random_num ( 0, 1 ) )
  7562. {
  7563. UserZombie ( id, 0, 0, 0, 1, 0 );
  7564.  
  7565. iZombies ++;
  7566. }
  7567. }
  7568.  
  7569. for ( id = 1; id <= MaxPlayers; id ++ )
  7570. {
  7571. if ( !IsAlive [id] || IsZombie [id] ) continue;
  7572.  
  7573. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  7574. {
  7575. remove_task ( id + TASK_TEAM );
  7576.  
  7577. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  7578.  
  7579. fm_user_team_update ( id );
  7580. }
  7581. }
  7582.  
  7583. ArrayGetString ( SoundMulti, random_num ( 0, ArraySize ( SoundMulti ) - 1 ), Sound, charsmax ( Sound ) );
  7584.  
  7585. EmitSound ( 0, CHAN_AUTO, Sound );
  7586.  
  7587. set_hudmessage ( 255, 50, 0, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7588.  
  7589. ShowSyncHudMsg ( 0, HudMsgSync [0], "Multiple Infection!" );
  7590.  
  7591. ModeStarted = true;
  7592.  
  7593. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_MULTI, 0 );
  7594. }
  7595. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_PLAGUE ) && random_num ( 1, 180 ) == 1 &&
  7596. floatround ( ( iPlayersNum - ( 2 + 3 ) ) * 0.4, floatround_ceil ) >= 1 &&
  7597. iPlayersNum - ( 3 + 2 + floatround ( ( iPlayersNum - ( 2 + 3 ) ) * 0.4, floatround_ceil ) ) >= 1 &&
  7598. iPlayersNum >= 8 ) || Mode == MODE_PLAGUE )
  7599. {
  7600. PlagueRound = true;
  7601.  
  7602. LastMode = MODE_PLAGUE;
  7603.  
  7604. static iSurvivors, iMaxSurvivors;
  7605.  
  7606. iMaxSurvivors = 3;
  7607.  
  7608. iSurvivors = 0;
  7609.  
  7610. while ( iSurvivors < iMaxSurvivors )
  7611. {
  7612. id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) );
  7613.  
  7614. if ( IsSurvivor [id] ) continue;
  7615.  
  7616. UserHuman ( id, 1, 0, 0 );
  7617.  
  7618. iSurvivors ++;
  7619.  
  7620. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesPlagueSurvivorHealth] ) )
  7621. }
  7622.  
  7623. static iNemesis, iMaxNemesis;
  7624.  
  7625. iMaxNemesis = 2;
  7626.  
  7627. iNemesis = 0;
  7628.  
  7629. while ( iNemesis < iMaxNemesis )
  7630. {
  7631. id = fnGetRandomAlive ( random_num(1, iPlayersNum))
  7632.  
  7633. if ( IsSurvivor [id] || IsNemesis [id] ) continue;
  7634.  
  7635. UserZombie ( id, 0, 1, 0, 0, 0 );
  7636.  
  7637. iNemesis ++;
  7638.  
  7639. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesPlagueNemesisHealth] ) );
  7640. }
  7641.  
  7642. iMaxZombies = floatround ( ( iPlayersNum - ( 2 + 3 ) ) * 0.4, floatround_ceil );
  7643.  
  7644. iZombies = 0;
  7645.  
  7646. while ( iZombies < iMaxZombies )
  7647. {
  7648. if ( ++ id > MaxPlayers ) id = 1;
  7649.  
  7650. if ( !IsAlive [id] || IsZombie [id] || IsSurvivor [id] ) continue;
  7651.  
  7652. if ( random_num ( 0, 1 ) )
  7653. {
  7654. UserZombie ( id, 0, 0, 0, 1, 0 );
  7655.  
  7656. iZombies ++;
  7657. }
  7658. }
  7659.  
  7660. for ( id = 1; id <= MaxPlayers; id ++ )
  7661. {
  7662. if ( !IsAlive [id] || IsZombie [id] || IsSurvivor [id] ) continue;
  7663.  
  7664. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  7665. {
  7666. remove_task ( id + TASK_TEAM );
  7667.  
  7668. fm_cs_set_user_team ( id, FM_CS_TEAM_CT);
  7669.  
  7670. fm_user_team_update ( id );
  7671. }
  7672. }
  7673.  
  7674. ArrayGetString ( SoundPlague, random_num ( 0, ArraySize ( SoundPlague ) - 1 ), Sound, charsmax ( Sound ) )
  7675.  
  7676. EmitSound ( 0, CHAN_AUTO, Sound );
  7677.  
  7678. set_hudmessage ( 0, 50, 255, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7679.  
  7680. ShowSyncHudMsg ( 0, HudMsgSync [0], "Plague Round!" );
  7681.  
  7682. ModeStarted = true;
  7683.  
  7684. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_PLAGUE, 0 );
  7685. }
  7686. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_ARMAGEDDON ) && random_num ( 1, 300 ) == 1 && floatround ( iPlayersNum * 0.5, floatround_ceil ) >= 2 && floatround ( iPlayersNum * 0.5, floatround_ceil ) < iPlayersNum && iPlayersNum >= 6 ) || Mode == MODE_ARMAGEDDON )
  7687. {
  7688. ArmageddonRound = true;
  7689.  
  7690. LastMode = MODE_ARMAGEDDON;
  7691.  
  7692. static iSurvivors, iMaxSurvivors;
  7693.  
  7694. iMaxSurvivors = floatround ( iPlayersNum * 0.5, floatround_ceil );
  7695.  
  7696. iSurvivors = 0;
  7697.  
  7698. while ( iSurvivors < iMaxSurvivors )
  7699. {
  7700. if ( ++ id > MaxPlayers ) id = 1;
  7701.  
  7702. if ( !IsAlive [id] || IsSurvivor [id] ) continue;
  7703.  
  7704. if ( random_num ( 0, 1 ) )
  7705. {
  7706. UserHuman ( id, 1, 0, 0 );
  7707.  
  7708. iSurvivors ++;
  7709.  
  7710. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesApocalypseSurvivorHealth] ) );
  7711. }
  7712. }
  7713.  
  7714. for ( id = 1; id <= MaxPlayers; id ++ )
  7715. {
  7716. if ( !IsAlive [id] || IsSurvivor [id] ) continue;
  7717.  
  7718. UserZombie ( id, 0, 1, 0, 0, 0 );
  7719.  
  7720. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesApocalypseNemesisHealth] ) );
  7721. }
  7722.  
  7723. ArrayGetString ( SoundArmageddon, random_num ( 0, ArraySize ( SoundArmageddon ) - 1 ), Sound, charsmax ( Sound ) );
  7724.  
  7725. EmitSound ( 0, CHAN_AUTO, Sound );
  7726.  
  7727. set_hudmessage ( 155, 20, 255, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7728.  
  7729. ShowSyncHudMsg ( 0, HudMsgSync [0], "Armageddon Round!" );
  7730.  
  7731. ModeStarted = true;
  7732.  
  7733. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_ARMAGEDDON, 0 );
  7734. }
  7735. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_APOCALYPSE ) && random_num ( 1, 470 ) == 1 && floatround ( iPlayersNum * 0.5, floatround_ceil ) >= 2 && floatround ( iPlayersNum * 0.5, floatround_ceil ) < iPlayersNum && iPlayersNum >= 6 ) || Mode == MODE_APOCALYPSE )
  7736. {
  7737. ApocalypseRound = true;
  7738.  
  7739. LastMode = MODE_APOCALYPSE;
  7740.  
  7741. static iSnipers, iMaxSnipers;
  7742.  
  7743. iMaxSnipers = floatround ( iPlayersNum * 0.5, floatround_ceil )
  7744.  
  7745. iSnipers = 0;
  7746.  
  7747. while ( iSnipers < iMaxSnipers )
  7748. {
  7749. if ( ++ id > MaxPlayers ) id = 1;
  7750.  
  7751. if ( !IsAlive [id] || IsSniper [id] ) continue;
  7752.  
  7753. if ( random_num ( 0, 1 ) )
  7754. {
  7755. UserHuman ( id, 0, 1, 0 );
  7756.  
  7757. iSnipers ++;
  7758.  
  7759. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesApocalypseSniperHealth] ) );
  7760. }
  7761. }
  7762.  
  7763. for ( id = 1; id <= MaxPlayers; id ++ )
  7764. {
  7765. if ( !IsAlive [id] || IsSniper [id] ) continue;
  7766.  
  7767. UserZombie ( id, 0, 0, 1, 0, 0 ) ;
  7768.  
  7769. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesApocalypseAssassinHealth] ) );
  7770. }
  7771.  
  7772. ArrayGetString ( SoundApocalypse, random_num ( 0, ArraySize ( SoundApocalypse ) - 1 ), Sound, charsmax ( Sound ) );
  7773.  
  7774. EmitSound ( 0, CHAN_AUTO, Sound );
  7775.  
  7776. set_hudmessage ( 255, 20, 155, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7777.  
  7778. ShowSyncHudMsg ( 0, HudMsgSync [0], "Assassins vs. Snipers Round!" );
  7779.  
  7780. ModeStarted = true;
  7781.  
  7782. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_APOCALYPSE, 0 );
  7783. }
  7784. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_NIGHTMARE ) && random_num ( 1, 190 ) == 1 && floatround ( iPlayersNum * 0.2, floatround_ceil ) >= 2 && floatround ( iPlayersNum * 0.2, floatround_ceil ) < iPlayersNum && iPlayersNum >= 6 ) || Mode == MODE_NIGHTMARE )
  7785. {
  7786. NightmareRound = true;
  7787.  
  7788. LastMode = MODE_NIGHTMARE;
  7789.  
  7790. iMaxZombies = floatround ( ( iPlayersNum * 0.2 ), floatround_ceil );
  7791.  
  7792. iZombies = 0
  7793.  
  7794. while ( iZombies < iMaxZombies )
  7795. {
  7796. if ( ( ++ id ) > MaxPlayers ) id = 1;
  7797.  
  7798. if ( !IsAlive [id] ) continue;
  7799.  
  7800. if ( random_num ( 0, 1 ) )
  7801. {
  7802. UserZombie ( id, 0, 1, 0, 0, 0 );
  7803.  
  7804. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesNightmareAssassinHealth] ) );
  7805.  
  7806. iZombies ++;
  7807. }
  7808. }
  7809.  
  7810. iZombies = 0
  7811.  
  7812. while ( iZombies < iMaxZombies )
  7813. {
  7814. if ( ( ++ id ) > MaxPlayers ) id = 1;
  7815.  
  7816. if ( !IsAlive [id] || IsAssassin [id] ) continue;
  7817.  
  7818. if ( random_num ( 0, 1 ) )
  7819. {
  7820. UserZombie ( id, 0, 0, 1, 0, 0 );
  7821.  
  7822. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesNightmareNemesisHealth] ) );
  7823.  
  7824. iZombies ++;
  7825. }
  7826. }
  7827.  
  7828. iZombies = 0
  7829.  
  7830. while ( iZombies < iMaxZombies )
  7831. {
  7832. if ( ( ++ id ) > MaxPlayers ) id = 1;
  7833.  
  7834. if ( !IsAlive [id] || IsAssassin [id] || IsNemesis [id] ) continue;
  7835.  
  7836. if ( random_num ( 0, 1 ) )
  7837. {
  7838. UserHuman ( id, 1, 0, 0 );
  7839.  
  7840. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesNightmareSurvivorHealth] ) );
  7841.  
  7842. iZombies++
  7843. }
  7844. }
  7845.  
  7846. for ( id = 1; id <= MaxPlayers; id ++ )
  7847. {
  7848. if ( !IsAlive [id] || IsAssassin [id] || IsNemesis [id] || IsSurvivor [id] ) continue;
  7849.  
  7850. UserHuman ( id, 0, 1, 0 );
  7851.  
  7852. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesNightmareSniperHealth] ) );
  7853. }
  7854.  
  7855. ArrayGetString ( SoundNightmare, random_num ( 0, ArraySize ( SoundNightmare ) - 1 ), Sound, charsmax ( Sound ) );
  7856.  
  7857. EmitSound ( 0, CHAN_AUTO, Sound );
  7858.  
  7859. set_hudmessage ( 255, 20, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7860.  
  7861. ShowSyncHudMsg ( 0, HudMsgSync [0], "Nightmare Round !" );
  7862.  
  7863. ModeStarted = true;
  7864.  
  7865. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_NIGHTMARE, 0 );
  7866.  
  7867. }
  7868. else
  7869. {
  7870. LastMode = MODE_INFECTION;
  7871.  
  7872. if ( Mode == MODE_NONE ) id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) );
  7873.  
  7874. ForwardID = id;
  7875.  
  7876. if ( ( Mode == MODE_NONE && ( LastMode != MODE_NEMESIS ) && random_num ( 1, 40 ) == 1 && iPlayersNum >= 2 ) || Mode == MODE_NEMESIS )
  7877. {
  7878. NemesisRound = true;
  7879.  
  7880. LastMode = MODE_NEMESIS;
  7881.  
  7882. UserZombie ( id, 0, 1, 0, 0, 0 );
  7883. }
  7884. else if ( ( Mode == MODE_NONE && ( LastMode != MODE_ASSASSIN ) && random_num ( 1, 50 ) == 1 && iPlayersNum >= 2 ) || Mode == MODE_ASSASSIN )
  7885. {
  7886. AssassinRound = true;
  7887.  
  7888. LastMode = MODE_ASSASSIN;
  7889.  
  7890. UserZombie ( id, 0, 0, 1, 0, 0 );
  7891. }
  7892. else
  7893. {
  7894. LastMode = MODE_INFECTION;
  7895.  
  7896. UserZombie ( id, 0, 0, 0, 0, 0 );
  7897. }
  7898.  
  7899. for ( id = 1; id <= MaxPlayers; id ++ )
  7900. {
  7901. if ( !IsAlive [id] ) continue;
  7902.  
  7903. if ( IsZombie [id] ) continue;
  7904.  
  7905. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  7906. {
  7907. remove_task ( id + TASK_TEAM );
  7908.  
  7909. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  7910.  
  7911. fm_user_team_update ( id );
  7912. }
  7913. }
  7914.  
  7915. if ( NemesisRound )
  7916. {
  7917. ArrayGetString ( SoundNemesis, random_num ( 0, ArraySize ( SoundNemesis ) - 1 ), Sound, charsmax ( Sound ) );
  7918.  
  7919. EmitSound ( 0, CHAN_AUTO, Sound );
  7920.  
  7921. set_hudmessage ( 255, 20, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7922.  
  7923. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is Nemesis !", PlayerName [ForwardID] );
  7924.  
  7925. ModeStarted = true;
  7926.  
  7927. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_NEMESIS, ForwardID );
  7928. }
  7929. else if ( AssassinRound )
  7930. {
  7931. ArrayGetString ( SoundAssassin, random_num ( 0, ArraySize ( SoundAssassin ) - 1 ), Sound, charsmax ( Sound ) );
  7932.  
  7933. EmitSound ( 0, CHAN_AUTO, Sound );
  7934.  
  7935. set_lights ( "a" );
  7936.  
  7937. set_hudmessage ( 255, 255, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1 );
  7938.  
  7939. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is Assassin !", PlayerName [ForwardID] );
  7940.  
  7941. ModeStarted = true;
  7942.  
  7943. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_ASSASSIN, ForwardID );
  7944. }
  7945. else
  7946. {
  7947. set_hudmessage ( 255, 20, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
  7948.  
  7949. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s is First Zombie !", PlayerName [ForwardID] );
  7950.  
  7951. ModeStarted = true;
  7952.  
  7953. ExecuteForward ( fwRoundStart, fwDummyResult, MODE_INFECTION, ForwardID );
  7954. }
  7955. }
  7956.  
  7957. remove_task ( TASK_AMBIENCESOUNDS );
  7958.  
  7959. set_task ( 2.0, "AmbienceSoundEffects", TASK_AMBIENCESOUNDS );
  7960. }
  7961.  
  7962. UserZombie ( id, Infector, Nemesis, Assassin, SilentMode, Rewards )
  7963. {
  7964. ExecuteForward ( fwUserInfectAttempt, fwDummyResult, id, Infector, Nemesis );
  7965.  
  7966. if ( fwDummyResult >= ZRISES_PLUGIN_HANDLED && ModeStarted && fnGetZombies ( ) > LastPlayerLeaving ) return;
  7967.  
  7968. ExecuteForward ( fwUserInfectedPre, fwDummyResult, id, Infector, Nemesis );
  7969.  
  7970. if ( ZombieClassNext [id] == ZCLASS_NONE ) set_task ( 0.2, "ShowMenuZClass", id );
  7971.  
  7972. ZombieClass [id] = ZombieClassNext [id];
  7973.  
  7974. if ( ZombieClass [id] == ZCLASS_NONE ) ZombieClass [id] = 0;
  7975.  
  7976. IsZombie [id] = true;
  7977.  
  7978. IsNemesis [id] = false;
  7979.  
  7980. IsAssassin [id] = false;
  7981.  
  7982. IsSurvivor [id] = false;
  7983.  
  7984. IsSniper [id] = false;
  7985.  
  7986. FirstZombie [id] = false;
  7987.  
  7988. set_pev ( id, pev_effects, pev ( id, pev_effects ) &~ EF_BRIGHTLIGHT );
  7989.  
  7990. NoDamage [id] = false;
  7991.  
  7992. set_pev ( id, pev_effects, pev ( id, pev_effects ) &~ EF_NODRAW );
  7993.  
  7994. BurningDuration [id] = 0;
  7995.  
  7996. if ( Rewards && Infector )
  7997. {
  7998. SendDeathMsg ( Infector, id );
  7999.  
  8000. FixDeadAttrib ( id );
  8001.  
  8002. UpdateFrags ( Infector, id, 1, 1, 1 );
  8003.  
  8004. AmmoPacks [Infector] += get_pcvar_num ( GetCvar [zRisesAmmoInfect] );
  8005. }
  8006.  
  8007. ZombieSpeed [id] = float ( ArrayGetCell ( ZClassSpeed_01, ZombieClass [id] ) );
  8008.  
  8009. ZombieKnockback [id] = Float:ArrayGetCell ( ZClassKnockback_01, ZombieClass [id] );
  8010.  
  8011. ArrayGetString ( ZClassName_01, ZombieClass [id], ZombieClassName [id], charsmax ( ZombieClassName [ ] ) );
  8012.  
  8013. static Sound [64];
  8014.  
  8015. if ( !SilentMode )
  8016. {
  8017. if ( Nemesis )
  8018. {
  8019. IsNemesis [id] = true;
  8020.  
  8021. if ( get_pcvar_num ( GetCvar [zRisesNemesisHealth] ) < 50000 )
  8022.  
  8023. fm_set_user_health ( id, ArrayGetCell ( ZClassHealth_01, 0 ) * fnGetAlive ( ) );
  8024. else
  8025. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesNemesisHealth] ) );
  8026.  
  8027. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesNemesisGravity] ) );
  8028. }
  8029. else if ( Assassin )
  8030. {
  8031. IsAssassin [id] = true;
  8032.  
  8033. if ( get_pcvar_num ( GetCvar [zRisesAssassinHealth] ) < 15000 )
  8034.  
  8035. fm_set_user_health ( id, ArrayGetCell ( ZClassHealth_01, 0 ) * fnGetAlive ( ) );
  8036. else
  8037. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesAssassinHealth] ) );
  8038.  
  8039. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesAssassinGravity] ) );
  8040. }
  8041. else if ( fnGetZombies ( ) == 1 )
  8042. {
  8043. FirstZombie [id] = true;
  8044.  
  8045. fm_set_user_health ( id, floatround ( float ( ArrayGetCell ( ZClassHealth_01, ZombieClass [id] ) ) * 1.0 ) );
  8046.  
  8047. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, Float: ArrayGetCell ( ZClassGravity_01, ZombieClass [id] ) );
  8048.  
  8049. ArrayGetString ( ZombieInfect, random_num ( 0, ArraySize ( ZombieInfect ) - 1 ), Sound, charsmax ( Sound ) );
  8050.  
  8051. EmitSound ( id, CHAN_AUTO, Sound );
  8052. }
  8053. else
  8054. {
  8055. fm_set_user_health ( id, ArrayGetCell ( ZClassHealth_01, ZombieClass [id] ) )
  8056.  
  8057. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, Float: ArrayGetCell ( ZClassGravity_01, ZombieClass [id] ) );
  8058.  
  8059. ArrayGetString ( ZombieInfect, random_num ( 0, ArraySize ( ZombieInfect ) - 1 ), Sound, charsmax ( Sound ) );
  8060.  
  8061. EmitSound ( id, CHAN_AUTO, Sound );
  8062.  
  8063. set_hudmessage ( 255, 20, 20, 0.05, 0.45, 0, 0.0, 5.0, 1.0, 1.0, -1 );
  8064.  
  8065. if ( Infector )
  8066.  
  8067. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s's brains has been eaten by %s...", PlayerName [id], PlayerName [Infector] );
  8068. else
  8069. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s's brains has been eaten...", PlayerName [id] );
  8070. }
  8071. }
  8072. else
  8073. {
  8074. fm_set_user_health ( id, ArrayGetCell ( ZClassHealth_01, ZombieClass [id] ) )
  8075.  
  8076. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, Float: ArrayGetCell ( ZClassGravity_01, ZombieClass [id] ) );
  8077. }
  8078.  
  8079. remove_task ( id + TASK_MODEL );
  8080.  
  8081. remove_task ( id + TASK_BLOOD );
  8082.  
  8083. remove_task ( id + TASK_BURN );
  8084.  
  8085. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_T )
  8086. {
  8087. remove_task ( id + TASK_TEAM );
  8088.  
  8089. fm_cs_set_user_team ( id, FM_CS_TEAM_T);
  8090.  
  8091. fm_user_team_update ( id );
  8092. }
  8093.  
  8094. static CurrentModel [32], TempModel [32], AlreadyHasModel, i, iRandom, size;
  8095.  
  8096. AlreadyHasModel = false;
  8097.  
  8098. fm_cs_get_user_model ( id, CurrentModel, charsmax ( CurrentModel ) );
  8099.  
  8100. if ( IsNemesis [id] )
  8101. {
  8102. size = ArraySize ( ModelNemesis );
  8103.  
  8104. for ( i = 0; i < size; i ++ )
  8105. {
  8106. ArrayGetString ( ModelNemesis, i, TempModel, charsmax ( TempModel ) );
  8107.  
  8108. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8109. }
  8110.  
  8111. if ( !AlreadyHasModel )
  8112. {
  8113. iRandom = random_num ( 0, size - 1 );
  8114.  
  8115. ArrayGetString ( ModelNemesis, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8116. }
  8117. }
  8118. else if ( IsAssassin [id] )
  8119. {
  8120. size = ArraySize ( ModelAssassin );
  8121.  
  8122. for ( i = 0; i < size; i ++ )
  8123. {
  8124. ArrayGetString ( ModelAssassin, i, TempModel, charsmax ( TempModel ) );
  8125.  
  8126. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8127. }
  8128.  
  8129. if ( !AlreadyHasModel )
  8130. {
  8131. iRandom = random_num ( 0, size - 1 );
  8132.  
  8133. ArrayGetString ( ModelAssassin, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8134. }
  8135. }
  8136. else
  8137. {
  8138. for ( i = ArrayGetCell ( ZClassModelsStart_01, ZombieClass [id] ); i < ArrayGetCell ( ZClassModelSend_01, ZombieClass [id] ); i ++ )
  8139. {
  8140. ArrayGetString ( ZClassPlayerModel_01, i, TempModel, charsmax ( TempModel ) );
  8141.  
  8142. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8143. }
  8144.  
  8145. if ( !AlreadyHasModel )
  8146. {
  8147. iRandom = random_num ( ArrayGetCell ( ZClassModelsStart_01, ZombieClass [id] ), ArrayGetCell ( ZClassModelSend_01, ZombieClass [id] ) - 1 );
  8148.  
  8149. ArrayGetString ( ZClassPlayerModel_01, iRandom, PlayerModel[ id], charsmax ( PlayerModel [ ] ) );
  8150. }
  8151. }
  8152.  
  8153. if ( !AlreadyHasModel )
  8154. {
  8155. if ( NewRound )
  8156.  
  8157. set_task ( 1.0, "fmUserModelUpdate", id + TASK_MODEL );
  8158. else
  8159. fmUserModelUpdate ( id + TASK_MODEL );
  8160. }
  8161.  
  8162. if ( !IsFrozen [id] )
  8163. {
  8164. if ( IsNemesis [id] )
  8165.  
  8166. fm_set_rendering ( id, kRenderFxGlowShell, 250, 0 , 0, kRenderNormal, 25 );
  8167.  
  8168. else if ( IsAssassin [id] )
  8169.  
  8170. fm_set_rendering ( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25 );
  8171. else
  8172. fm_set_rendering ( id );
  8173. }
  8174.  
  8175. cs_set_user_zoom ( id, CS_RESET_ZOOM, 1 );
  8176.  
  8177. set_pev ( id, pev_armorvalue, 0.0 );
  8178.  
  8179. drop_weapons ( id, 1 );
  8180.  
  8181. drop_weapons ( id, 2 );
  8182.  
  8183. fm_strip_user_weapons ( id );
  8184.  
  8185. fm_give_item ( id, "weapon_knife" );
  8186.  
  8187. InfectionEffects ( id );
  8188.  
  8189. NVision [id] = true;
  8190.  
  8191. if ( !IsBot [id] )
  8192. {
  8193. NVisionEnabled [id] = true;
  8194.  
  8195. remove_task ( id + TASK_NVISION );
  8196.  
  8197. set_task ( 0.1, "UserNVision", id + TASK_NVISION, _, _, "b" );
  8198. }
  8199. else
  8200. cs_set_user_nvg ( id, 1 );
  8201.  
  8202. ExecuteForward ( fwUserInfectedPost, fwDummyResult, id, Infector, Nemesis );
  8203.  
  8204. fnCheckLastZombie ( );
  8205. }
  8206.  
  8207. UserHuman ( id, Survivor, Sniper, SilentMode )
  8208. {
  8209.  
  8210. ExecuteForward ( fwUserHumanizeAttempt, fwDummyResult, id, Survivor )
  8211.  
  8212. if ( fwDummyResult >= ZRISES_PLUGIN_HANDLED && ModeStarted && fnGetHumans ( ) > LastPlayerLeaving ) return;
  8213.  
  8214. ExecuteForward ( fwUserHumanizedPre, fwDummyResult, id, Survivor );
  8215.  
  8216. remove_task ( id + TASK_MODEL );
  8217.  
  8218. remove_task ( id + TASK_BLOOD );
  8219.  
  8220. remove_task ( id + TASK_BURN );
  8221.  
  8222. remove_task ( id + TASK_NVISION );
  8223.  
  8224. IsZombie [id] = false;
  8225.  
  8226. IsNemesis [id] = false;
  8227.  
  8228. IsAssassin [id] = false;
  8229.  
  8230. IsSurvivor [id] = false;
  8231.  
  8232. IsSniper [id] = false;
  8233.  
  8234. FirstZombie [id] = false;
  8235.  
  8236. CanBuy [id] = true;
  8237.  
  8238. NVision [id] = false;
  8239.  
  8240. NVisionEnabled [id] = false;
  8241.  
  8242. set_pev ( id, pev_effects, pev ( id, pev_effects ) &~ EF_BRIGHTLIGHT );
  8243.  
  8244. NoDamage [id] = false;
  8245.  
  8246. set_pev ( id, pev_effects, pev ( id, pev_effects ) &~ EF_NODRAW );
  8247.  
  8248. BurningDuration [id] = 0;
  8249.  
  8250. drop_weapons ( id, 1 );
  8251.  
  8252. drop_weapons ( id, 2 );
  8253.  
  8254. fm_strip_user_weapons ( id );
  8255.  
  8256. fm_give_item ( id, "weapon_knife" );
  8257.  
  8258. if ( Survivor )
  8259. {
  8260. IsSurvivor [id] = true;
  8261.  
  8262. if ( get_pcvar_num ( GetCvar [zRisesSurvivorHealth] ) < 3500 )
  8263.  
  8264. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesHumanHealth] ) * fnGetAlive ( ) );
  8265. else
  8266. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesSurvivorHealth] ) );
  8267.  
  8268. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesSurvivorGravity] ) );
  8269.  
  8270. fm_give_item ( id, "weapon_xm1014" );
  8271. fm_give_item ( id, "weapon_ak47" );
  8272. fm_give_item ( id, "weapon_hegrenade" );
  8273.  
  8274. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_XM1014], AMMOTYPE [CSW_XM1014], MAXBPAMMO [CSW_XM1014] );
  8275. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_AK47], AMMOTYPE [CSW_AK47], MAXBPAMMO [CSW_AK47] );
  8276. }
  8277. else if ( Sniper )
  8278. {
  8279. IsSniper [id] = true
  8280.  
  8281. if ( get_pcvar_num ( GetCvar [zRisesSniperHealth] ) < 2000 )
  8282.  
  8283. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesHumanHealth] ) * fnGetAlive ( ) );
  8284. else
  8285. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesSniperHealth] ) );
  8286.  
  8287. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesSniperGravity] ) );
  8288.  
  8289. fm_give_item ( id, "weapon_awp" ) ;
  8290.  
  8291. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [CSW_AWP], AMMOTYPE [CSW_AWP], MAXBPAMMO [CSW_AWP] );
  8292. }
  8293. else
  8294. {
  8295. fm_set_user_health ( id, get_pcvar_num ( GetCvar [zRisesHumanHealth] ) );
  8296.  
  8297. if ( !IsFrozen [id] ) set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesHumanGravity] ) );
  8298.  
  8299. set_task ( 0.2, "GUNS", id + TASK_SPAWN );
  8300.  
  8301. if ( !SilentMode )
  8302. {
  8303. static Sound [64];
  8304.  
  8305. ArrayGetString ( SoundAntidote, random_num ( 0, ArraySize ( SoundAntidote ) - 1 ), Sound, charsmax ( Sound ) );
  8306.  
  8307. EmitSound ( id, CHAN_ITEM, Sound );
  8308.  
  8309. set_hudmessage ( 20, 155, 255, 0.05, 0.45, 0, 0.0, 5.0, 1.0, 1.0, -1 );
  8310.  
  8311. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s has used an antidote...", PlayerName [id] )
  8312. }
  8313. }
  8314.  
  8315. if ( fm_cs_get_user_team ( id ) != FM_CS_TEAM_CT )
  8316. {
  8317. remove_task ( id + TASK_TEAM );
  8318.  
  8319. fm_cs_set_user_team ( id, FM_CS_TEAM_CT);
  8320.  
  8321. fm_user_team_update ( id );
  8322. }
  8323.  
  8324. static CurrentModel [32], TempModel [32], AlreadyHasModel, i, iRandom, size;
  8325.  
  8326. AlreadyHasModel = false;
  8327.  
  8328. fm_cs_get_user_model ( id, CurrentModel, charsmax ( CurrentModel ) );
  8329.  
  8330. if ( IsSurvivor [id] )
  8331. {
  8332. size = ArraySize ( ModelSurvivor );
  8333.  
  8334. for ( i = 0; i < size; i ++ )
  8335. {
  8336. ArrayGetString ( ModelSurvivor, i, TempModel, charsmax ( TempModel ) );
  8337.  
  8338. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8339. }
  8340.  
  8341. if ( !AlreadyHasModel )
  8342. {
  8343. iRandom = random_num ( 0, size - 1 );
  8344.  
  8345. ArrayGetString ( ModelSurvivor, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8346. }
  8347. }
  8348. else if ( IsSniper [id] )
  8349. {
  8350. size = ArraySize ( ModelSniper );
  8351.  
  8352. for ( i = 0; i < size; i ++ )
  8353. {
  8354. ArrayGetString ( ModelSniper, i, TempModel, charsmax ( TempModel ) );
  8355.  
  8356. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8357. }
  8358.  
  8359. if ( !AlreadyHasModel )
  8360. {
  8361. iRandom = random_num ( 0, size - 1 );
  8362.  
  8363. ArrayGetString ( ModelSniper, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8364. }
  8365. }
  8366. else
  8367. {
  8368. if ( get_user_flags ( id ) & ADMIN_IMMUNITY )
  8369. {
  8370. for ( i = 0; i < ArraySize ( ModelOwnerHuman ); i ++ )
  8371. {
  8372. ArrayGetString ( ModelOwnerHuman, i, TempModel, charsmax ( TempModel ) )
  8373.  
  8374. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8375. }
  8376.  
  8377. if ( !AlreadyHasModel )
  8378. {
  8379. iRandom = random_num ( 0, size - 1 );
  8380.  
  8381. ArrayGetString ( ModelOwnerHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8382. }
  8383. }
  8384. else if ( get_user_flags ( id ) & ADMIN_RESERVATION )
  8385. {
  8386. for ( i = 0; i < ArraySize ( ModelAdminHuman ); i ++ )
  8387. {
  8388. ArrayGetString ( ModelAdminHuman, i, TempModel, charsmax ( TempModel ) )
  8389.  
  8390. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8391. }
  8392.  
  8393. if ( !AlreadyHasModel )
  8394. {
  8395. iRandom = random_num ( 0, size - 1 );
  8396.  
  8397. ArrayGetString ( ModelAdminHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8398. }
  8399. }
  8400. else
  8401. {
  8402. for ( i = 0; i < ArraySize ( ModelHuman ); i ++ )
  8403. {
  8404. ArrayGetString ( ModelHuman, i, TempModel, charsmax ( TempModel ) )
  8405.  
  8406. if ( equal ( CurrentModel, TempModel ) ) AlreadyHasModel = true;
  8407. }
  8408.  
  8409. if ( !AlreadyHasModel )
  8410. {
  8411. iRandom = random_num ( 0, size - 1 );
  8412.  
  8413. ArrayGetString ( ModelHuman, iRandom, PlayerModel [id], charsmax ( PlayerModel [ ] ) );
  8414. }
  8415. }
  8416. }
  8417.  
  8418. if ( !AlreadyHasModel )
  8419. {
  8420. if ( NewRound )
  8421.  
  8422. set_task ( 1.0, "fmUserModelUpdate", id + TASK_MODEL );
  8423. else
  8424. fmUserModelUpdate ( id + TASK_MODEL );
  8425. }
  8426.  
  8427. if ( !IsFrozen [id] )
  8428. {
  8429. if ( IsSurvivor [id] || IsSniper [id] )
  8430.  
  8431. fm_set_rendering ( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25 );
  8432. else
  8433. fm_set_rendering ( id );
  8434. }
  8435.  
  8436. if ( IsBot [id] ) cs_set_user_nvg ( id, 0 );
  8437.  
  8438. ExecuteForward ( fwUserHumanizedPost, fwDummyResult, id, Survivor );
  8439.  
  8440. fnCheckLastZombie ( );
  8441. }
  8442.  
  8443. public CacheCvars ( )
  8444. {
  8445. CachedHumanSpeed = get_pcvar_float ( GetCvar [zRisesHumanSpeed] );
  8446.  
  8447. CachedNemesisSpeed = get_pcvar_float ( GetCvar [zRisesNemesisSpeed] );
  8448.  
  8449. CachedAssassinSpeed = get_pcvar_float ( GetCvar [zRisesAssassinSpeed] );
  8450.  
  8451. CachedSurvivorSpeed = get_pcvar_float ( GetCvar [zRisesSurvivorSpeed] );
  8452.  
  8453. CachedSniperSpeed = get_pcvar_float ( GetCvar [zRisesSniperSpeed] );
  8454. }
  8455.  
  8456. public RegisterHamCzBots ( id )
  8457. {
  8458. if ( HamCzBots || !IsConnected [id] ) return;
  8459.  
  8460. RegisterHamFromEntity ( Ham_Spawn, id, "fwPlayerSpawnPost", 1 );
  8461. RegisterHamFromEntity ( Ham_Killed, id, "fwPlayerKilled" );
  8462. RegisterHamFromEntity ( Ham_Killed, id, "fwPlayerKilledPost", 1 );
  8463. RegisterHamFromEntity ( Ham_TakeDamage, id, "fwTakeDamage" );
  8464. RegisterHamFromEntity ( Ham_TakeDamage, id, "fwTakeDamagePost", 1 );
  8465. RegisterHamFromEntity ( Ham_TraceAttack, id, "fwTraceAttack" );
  8466.  
  8467. HamCzBots = true;
  8468.  
  8469. if ( is_user_alive ( id ) ) fwPlayerSpawnPost ( id );
  8470. }
  8471.  
  8472. public BotBuyExtras ( TaskIndex )
  8473. {
  8474. if ( !IsAlive [ID_SPAWN] || IsNemesis [ID_SPAWN] || IsAssassin [ID_SPAWN] || IsSurvivor [ID_SPAWN] || IsSniper [ID_SPAWN] ) return;
  8475.  
  8476. if ( !IsZombie [ID_SPAWN] )
  8477. {
  8478. BuyExtraItem ( ID_SPAWN, EXTRA_NVISION );
  8479.  
  8480. BuyExtraItem ( ID_SPAWN, random ( EXTRA_WEAPONS_STARTID -1 ) );
  8481. }
  8482. else
  8483. {
  8484. BuyExtraItem ( ID_SPAWN, EXTRA_ANTIDOTE );
  8485. }
  8486. }
  8487.  
  8488. public RefillBpAmmo ( const Args [], id )
  8489. {
  8490. if ( !IsAlive [id] || IsZombie [id] ) return;
  8491.  
  8492. set_msg_block ( get_user_msgid ( "AmmoPickup" ), BLOCK_ONCE );
  8493.  
  8494. ExecuteHamB ( Ham_GiveAmmo, id, MAXBPAMMO [Args[0]], AMMOTYPE [Args[0]], MAXBPAMMO [Args[0]] );
  8495. }
  8496.  
  8497. BalanceTeams ( )
  8498. {
  8499. static iPlayersNum;
  8500.  
  8501. iPlayersNum = fnGetPlaying ( );
  8502.  
  8503. if ( iPlayersNum < 1 ) return;
  8504.  
  8505. static iTerrors, iMaxTerrors, id, Team [33];
  8506.  
  8507. iMaxTerrors = iPlayersNum / 2;
  8508.  
  8509. iTerrors = 0;
  8510.  
  8511. for ( id = 1; id <= MaxPlayers; id ++ )
  8512. {
  8513. if ( !IsConnected [id] ) continue;
  8514.  
  8515. Team [id] = fm_cs_get_user_team ( id );
  8516.  
  8517. if ( Team [id] == FM_CS_TEAM_SPECTATOR || Team [id] == FM_CS_TEAM_UNASSIGNED ) continue;
  8518.  
  8519. remove_task ( id + TASK_TEAM );
  8520.  
  8521. fm_cs_set_user_team ( id, FM_CS_TEAM_CT );
  8522.  
  8523. Team [id] = FM_CS_TEAM_CT;
  8524. }
  8525.  
  8526. while ( iTerrors < iMaxTerrors )
  8527. {
  8528. if ( ++ id > MaxPlayers ) id = 1;
  8529.  
  8530. if ( !IsConnected [id] ) continue;
  8531.  
  8532. if ( Team [id] != FM_CS_TEAM_CT ) continue;
  8533.  
  8534. if ( random_num ( 0, 1 ) )
  8535. {
  8536. fm_cs_set_user_team ( id, FM_CS_TEAM_T );
  8537.  
  8538. Team [id] = FM_CS_TEAM_T;
  8539.  
  8540. iTerrors ++;
  8541. }
  8542. }
  8543. }
  8544.  
  8545. public SendWelcomeMessage ( )
  8546. {
  8547. client_print_color ( 0, print_team_grey, "^1****^4 Zombie Outstanding^1 by^3 SideWinder^1 ||^4 ZmOldSchool.ZapTop.Ro^1 ****");
  8548.  
  8549. client_print_color ( 0, print_team_default, "^4[Zombie Outstanding]^1 Press^4 M^1 to open the game menu!");
  8550.  
  8551. set_hudmessage ( 20, 155, 255, -1.0, 0.17, 1, 0.0, 3.0, 2.0, 1.0, -1 );
  8552.  
  8553. ShowSyncHudMsg ( 0, HudMsgSync [0], "The T-Virus has been set loose..." );
  8554. }
  8555.  
  8556. CheckRound ( leaving_player )
  8557. {
  8558. if ( EndRound || task_exists ( TASK_MAKEZOMBIE ) ) return;
  8559.  
  8560. static iPlayersNum, id; iPlayersNum = fnGetAlive ( );
  8561.  
  8562. if ( iPlayersNum < 2 ) return;
  8563.  
  8564. if ( IsZombie [leaving_player] && fnGetZombies ( ) == 1 )
  8565. {
  8566. if ( fnGetHumans ( ) == 1 && fnGetCTs ( ) == 1 ) return;
  8567.  
  8568. while ( ( id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) ) ) == leaving_player ) { }
  8569.  
  8570. client_print_color ( 0, print_team_default, "%s Last zombie,^3 %s^1 disconnected,^4 %s^1 is the last zombie.", CHAT_PREFIX, PlayerName [leaving_player], PlayerName [id] )
  8571.  
  8572. LastPlayerLeaving = true;
  8573.  
  8574. if ( IsNemesis [leaving_player] )
  8575. {
  8576. UserZombie ( id, 0, 1, 0, 0, 0 );
  8577.  
  8578. if ( ModeNemesis ) zRoundStarted ( MODE_NEMESIS, id );
  8579. }
  8580.  
  8581. else if ( IsAssassin [leaving_player] )
  8582. {
  8583. UserZombie ( id, 0, 0, 1, 0, 0 );
  8584.  
  8585. if ( ModeAssassin ) zRoundStarted ( MODE_ASSASSIN, id );
  8586. }
  8587. else
  8588. UserZombie ( id, 0, 0, 0, 0, 0 );
  8589.  
  8590. LastPlayerLeaving = false;
  8591.  
  8592. if ( IsNemesis [leaving_player] )
  8593.  
  8594. fm_set_user_health ( id, pev ( leaving_player, pev_health ) );
  8595.  
  8596. if ( IsAssassin [leaving_player] )
  8597.  
  8598. fm_set_user_health ( id, pev ( leaving_player, pev_health ) );
  8599. }
  8600. else if ( !IsZombie [leaving_player] && fnGetHumans ( ) == 1 )
  8601. {
  8602. if ( fnGetZombies ( ) == 1 && fnGetTs ( ) == 1 ) return;
  8603.  
  8604. while ( ( id = fnGetRandomAlive ( random_num ( 1, iPlayersNum ) ) ) == leaving_player ) { }
  8605.  
  8606. client_print_color ( 0, print_team_default, "%s Last human,^3 %s^1 disconnected,^4 %s^1 is the last human.", CHAT_PREFIX, PlayerName [leaving_player], PlayerName [id] )
  8607.  
  8608. LastPlayerLeaving = true;
  8609.  
  8610. if ( IsSurvivor [leaving_player] )
  8611. {
  8612. UserHuman ( id, 1, 0, 0 );
  8613.  
  8614. if ( ModeSurvivor ) zRoundStarted ( MODE_SURVIVOR, id );
  8615. }
  8616. else if ( IsSniper [leaving_player] )
  8617. {
  8618. UserHuman ( id, 0, 1, 0 );
  8619.  
  8620. if ( ModeSniper ) zRoundStarted ( MODE_SNIPER, id );
  8621. }
  8622. else
  8623. UserHuman ( id, 0, 0, 0 );
  8624.  
  8625. LastPlayerLeaving = false;
  8626.  
  8627. if ( IsSurvivor [leaving_player] )
  8628.  
  8629. fm_set_user_health ( id, pev ( leaving_player, pev_health ) );
  8630.  
  8631. if ( IsSniper [leaving_player] )
  8632.  
  8633. fm_set_user_health ( id, pev ( leaving_player, pev_health ) );
  8634. }
  8635. }
  8636.  
  8637. public AmbienceSoundEffects ( TaskIndex )
  8638. {
  8639. static Sound [64], iRandom, Duration;
  8640.  
  8641. if ( NemesisRound )
  8642. {
  8643. iRandom = random_num ( 0, ArraySize ( SoundAmbience_02 ) - 1 )
  8644.  
  8645. ArrayGetString ( SoundAmbience_02, iRandom, Sound, charsmax ( Sound ) );
  8646.  
  8647. Duration = 136;
  8648. }
  8649. else if ( AssassinRound )
  8650. {
  8651. iRandom = random_num ( 0, ArraySize( SoundAmbience_03 ) - 1 )
  8652.  
  8653. ArrayGetString ( SoundAmbience_03, iRandom, Sound, charsmax ( Sound ) );
  8654.  
  8655. Duration = 106
  8656. }
  8657. else if ( SurvivorRound )
  8658. {
  8659. iRandom = random_num ( 0, ArraySize( SoundAmbience_04 ) - 1 )
  8660.  
  8661. ArrayGetString ( SoundAmbience_04, iRandom, Sound, charsmax ( Sound ) );
  8662.  
  8663. Duration = 106
  8664. }
  8665. else if ( SniperRound )
  8666. {
  8667. iRandom = random_num ( 0, ArraySize( SoundAmbience_05 ) - 1 )
  8668.  
  8669. ArrayGetString ( SoundAmbience_05, iRandom, Sound, charsmax ( Sound ) );
  8670.  
  8671. Duration = 136
  8672. }
  8673. else if ( SwarmRound )
  8674. {
  8675. iRandom = random_num ( 0, ArraySize( SoundAmbience_06 ) - 1 )
  8676.  
  8677. ArrayGetString ( SoundAmbience_06, iRandom, Sound, charsmax ( Sound ) );
  8678.  
  8679. Duration = 136
  8680. }
  8681. else if ( PlagueRound )
  8682. {
  8683. iRandom = random_num ( 0, ArraySize( SoundAmbience_07 ) - 1 )
  8684.  
  8685. ArrayGetString ( SoundAmbience_07, iRandom, Sound, charsmax ( Sound ) );
  8686.  
  8687. Duration = 136
  8688. }
  8689. else if ( ArmageddonRound )
  8690. {
  8691. iRandom = random_num ( 0, ArraySize ( SoundAmbience_08 ) - 1 )
  8692.  
  8693. ArrayGetString ( SoundAmbience_08, iRandom, Sound, charsmax ( Sound ) );
  8694.  
  8695. Duration = 136
  8696. }
  8697. else if ( ApocalypseRound )
  8698. {
  8699. iRandom = random_num ( 0, ArraySize( SoundAmbience_09 ) - 1 )
  8700.  
  8701. ArrayGetString ( SoundAmbience_09, iRandom, Sound, charsmax ( Sound ) );
  8702.  
  8703. Duration = 136
  8704. }
  8705. else if ( NightmareRound )
  8706. {
  8707. iRandom = random_num ( 0, ArraySize( SoundAmbience_10 ) - 1 )
  8708.  
  8709. ArrayGetString ( SoundAmbience_10, iRandom, Sound, charsmax ( Sound ) );
  8710.  
  8711. Duration = 136
  8712. }
  8713. else
  8714. {
  8715. iRandom = random_num ( 0, ArraySize( SoundAmbience_01 ) - 1 )
  8716.  
  8717. ArrayGetString ( SoundAmbience_01, iRandom, Sound, charsmax ( Sound ) );
  8718.  
  8719. Duration = 136
  8720. }
  8721.  
  8722. EmitSound ( 0, CHAN_AUTO, Sound );
  8723.  
  8724. set_task ( float ( Duration ), "AmbienceSoundEffects", TASK_AMBIENCESOUNDS );
  8725. }
  8726.  
  8727. AmbienceSoundStop ( ) client_cmd ( 0, "stopsound" );
  8728.  
  8729. InfectionExplode ( Entity )
  8730. {
  8731. if ( EndRound ) return;
  8732.  
  8733. static Float: Origin [3];
  8734.  
  8735. pev ( Entity, pev_origin, Origin );
  8736.  
  8737. CreateBlastInfection ( Origin );
  8738.  
  8739. static Sound [64];
  8740.  
  8741. ArrayGetString ( GrenadeInfect, random_num ( 0, ArraySize ( GrenadeInfect ) - 1 ), Sound, charsmax ( Sound ) )
  8742.  
  8743. EmitSound ( Entity, CHAN_AUTO, Sound );
  8744.  
  8745. static Attacker;
  8746.  
  8747. Attacker = pev ( Entity, pev_owner );
  8748.  
  8749. static Victim;
  8750.  
  8751. Victim = -1
  8752.  
  8753. while ( ( Victim = engfunc ( EngFunc_FindEntityInSphere, Victim, Origin, 240.0 ) ) != 0 )
  8754. {
  8755. if ( !is_user_valid_alive ( Victim ) || IsZombie [Victim] || NoDamage [Victim] ) continue;
  8756.  
  8757. if ( fnGetHumans ( ) == 1 )
  8758. {
  8759. ExecuteHamB ( Ham_Killed, Victim, Attacker, 0 );
  8760.  
  8761. continue;
  8762. }
  8763.  
  8764. ArrayGetString ( GrenadeInfectPlayer, random_num ( 0, ArraySize ( GrenadeInfectPlayer ) - 1 ), Sound, charsmax ( Sound ) );
  8765.  
  8766. EmitSound ( Victim, CHAN_AUTO, Sound );
  8767.  
  8768. UserZombie ( Victim, Attacker, 0, 1, 1, 0 );
  8769. }
  8770.  
  8771. engfunc ( EngFunc_RemoveEntity, Entity );
  8772. }
  8773.  
  8774. public HeExplode ( Entity )
  8775. {
  8776. static Float: Origin [3];
  8777.  
  8778. pev ( Entity, pev_origin, Origin );
  8779.  
  8780. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  8781. write_byte ( 3 );
  8782. engfunc ( EngFunc_WriteCoord, Origin [0] );
  8783. engfunc ( EngFunc_WriteCoord, Origin [1] );
  8784. engfunc ( EngFunc_WriteCoord, Origin [2] );
  8785. write_short ( HExplode );
  8786. write_byte ( 30 );
  8787. write_byte ( 15 );
  8788. write_byte ( 0 );
  8789. message_end ( );
  8790.  
  8791. static Attacker;
  8792.  
  8793. Attacker = pev ( Entity, pev_owner );
  8794.  
  8795. for ( new Victim = 1; Victim < MaxPlayers + 1; Victim ++ )
  8796. {
  8797. if ( !is_user_connected ( Victim ) || !is_user_alive ( Victim ) ) continue;
  8798.  
  8799. if ( IsZombie [Victim] )
  8800. {
  8801. static Float: fDistance, Float: fDamage;
  8802.  
  8803. fDistance = entity_range ( Victim, Entity );
  8804.  
  8805. if ( fDistance < 300.0 )
  8806. {
  8807. fDamage = 667.0 - fDistance;
  8808.  
  8809. ScreenFadeEffect ( Victim, 1.0, 250, 0, 0, fDistance < 220 ? 220 : 205 );
  8810.  
  8811. ScreenShakeEffect ( Victim, 1.0 );
  8812.  
  8813. EmitSound ( Victim, CHAN_AUTO, "fvox/flatline.wav" );
  8814.  
  8815. if ( float ( get_user_health ( Victim ) ) - fDamage > 0.0 )
  8816.  
  8817. ExecuteHamB ( Ham_TakeDamage, Victim, Entity, Attacker, fDamage, DMG_BLAST );
  8818. else
  8819. ExecuteHamB ( Ham_Killed, Victim, Attacker, 4 );
  8820.  
  8821. if ( !IsNemesis [Victim] && !IsAssassin [Victim] ) fDamage *= 0.75;
  8822.  
  8823. if ( fDamage >= get_pcvar_num ( GetCvar [zRisesAmmoDamage] ) )
  8824.  
  8825. AmmoPacks [Attacker] += 2;
  8826. else
  8827. AmmoPacks [Attacker] += 1;
  8828.  
  8829. client_print_color ( Attacker, print_team_grey, "%s Damage to^4 %s^1 ::^4 %0.0f^1 damage", CHAT_PREFIX, PlayerName [Victim], fDamage );
  8830. }
  8831. }
  8832. }
  8833.  
  8834. engfunc ( EngFunc_RemoveEntity, Entity );
  8835. }
  8836.  
  8837.  
  8838. FireExplode ( Entity )
  8839. {
  8840. static Float: Origin [3];
  8841.  
  8842. pev ( Entity, pev_origin, Origin );
  8843.  
  8844. CreateBlastFire ( Origin );
  8845.  
  8846. static Sound [64];
  8847.  
  8848. ArrayGetString ( GrenadeFire, random_num ( 0, ArraySize ( GrenadeFire ) - 1 ), Sound, charsmax ( Sound ) )
  8849.  
  8850. EmitSound ( Entity, CHAN_WEAPON, Sound );
  8851.  
  8852. static Victim;
  8853.  
  8854. Victim = -1;
  8855.  
  8856. while ( ( Victim = engfunc ( EngFunc_FindEntityInSphere, Victim, Origin, 240.0 ) ) != 0 )
  8857. {
  8858. if ( !is_user_valid_alive ( Victim ) || !IsZombie [Victim] || NoDamage [Victim] ) continue;
  8859.  
  8860. if ( IsNemesis [Victim] || IsAssassin [Victim] )
  8861.  
  8862. BurningDuration [Victim] += 4;
  8863. else
  8864. BurningDuration [Victim] += 4 * 5;
  8865.  
  8866. if ( !task_exists ( Victim + TASK_BURN ) ) set_task ( 0.2, "BurningFlame", Victim + TASK_BURN, _, _, "b" );
  8867. }
  8868.  
  8869. engfunc ( EngFunc_RemoveEntity, Entity );
  8870. }
  8871.  
  8872. FrostExplode ( Entity )
  8873. {
  8874. static Float: Origin [3];
  8875.  
  8876. pev ( Entity, pev_origin, Origin )
  8877.  
  8878. CreateBlastFrost ( Origin )
  8879.  
  8880. static Sound [64];
  8881.  
  8882. ArrayGetString ( GrenadeFrost, random_num ( 0, ArraySize ( GrenadeFrost ) - 1 ), Sound, charsmax ( Sound ) )
  8883.  
  8884. EmitSound ( Entity, CHAN_WEAPON, Sound );
  8885.  
  8886. static Victim;
  8887.  
  8888. Victim = -1;
  8889.  
  8890.  
  8891. while ( ( Victim = engfunc ( EngFunc_FindEntityInSphere, Victim, Origin, 240.0 ) ) != 0 )
  8892. {
  8893. if ( !is_user_valid_alive ( Victim ) || !IsZombie [Victim] || IsFrozen [Victim] || NoDamage [Victim] ) continue;
  8894.  
  8895. if ( IsNemesis [Victim] || IsAssassin [Victim] )
  8896. {
  8897. static Origin_2 [3]; get_user_origin ( Victim, Origin_2 );
  8898.  
  8899. ArrayGetString ( GrenadeFrostBreak, random_num ( 0, ArraySize ( GrenadeFrostBreak ) - 1 ), Sound, charsmax ( Sound ) )
  8900.  
  8901. EmitSound ( Victim, CHAN_AUTO, Sound );
  8902.  
  8903. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin_2 );
  8904. write_byte ( TE_BREAKMODEL );
  8905. write_coord ( Origin_2 [0] );
  8906. write_coord ( Origin_2 [1] );
  8907. write_coord ( Origin_2 [2] + 24 );
  8908. write_coord ( 16 );
  8909. write_coord ( 16 );
  8910. write_coord ( 16 );
  8911. write_coord ( random_num (-50, 50) );
  8912. write_coord ( random_num (-50, 50) );
  8913. write_coord ( 25 );
  8914. write_byte ( 10 );
  8915. write_short ( GlassSpr );
  8916. write_byte ( 10 );
  8917. write_byte ( 25 );
  8918. write_byte ( 0x01 );
  8919. message_end ( );
  8920.  
  8921. continue;
  8922. }
  8923.  
  8924. fm_set_rendering ( Victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25 );
  8925.  
  8926. ArrayGetString ( GrenadeFrostPlayer, random_num ( 0, ArraySize ( GrenadeFrostPlayer ) - 1 ), Sound, charsmax ( Sound ) );
  8927.  
  8928. EmitSound ( Victim, CHAN_AUTO, Sound );
  8929.  
  8930. message_begin ( MSG_ONE, get_user_msgid ( "ScreenFade" ), _, Victim );
  8931. write_short ( 0 );
  8932. write_short ( 0 );
  8933. write_short ( 0x0004 );
  8934. write_byte ( 0 );
  8935. write_byte ( 100 );
  8936. write_byte ( 200 );
  8937. write_byte ( 100 );
  8938. message_end ( );
  8939.  
  8940. if ( pev ( Victim, pev_flags ) & FL_ONGROUND )
  8941.  
  8942. set_pev ( Victim, pev_gravity, 999999.9 );
  8943. else
  8944. set_pev ( Victim, pev_gravity, 0.000001 );
  8945.  
  8946. IsFrozen [Victim] = true;
  8947.  
  8948. set_task ( 3.0, "RemoveFreeze", Victim );
  8949. }
  8950.  
  8951. engfunc ( EngFunc_RemoveEntity, Entity );
  8952. }
  8953.  
  8954. public RemoveFreeze ( id )
  8955. {
  8956. if ( !IsAlive [id] || !IsFrozen [id] ) return;
  8957.  
  8958. IsFrozen [id] = false;
  8959.  
  8960. if ( IsZombie [id] )
  8961. {
  8962. if ( IsNemesis [id] )
  8963.  
  8964. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesNemesisGravity] ) );
  8965.  
  8966. else if ( IsAssassin [id] )
  8967.  
  8968. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesAssassinGravity] ) );
  8969.  
  8970. else
  8971.  
  8972. set_pev ( id, pev_gravity, Float:ArrayGetCell ( ZClassGravity_01, ZombieClass [id] ) );
  8973. }
  8974. else
  8975. {
  8976. if ( IsSurvivor [id] )
  8977.  
  8978. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesSurvivorGravity] ) );
  8979.  
  8980. else if ( IsSniper [id] )
  8981.  
  8982. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesSniperGravity] ) );
  8983. else
  8984. set_pev ( id, pev_gravity, get_pcvar_float ( GetCvar [zRisesHumanGravity] ) );
  8985. }
  8986.  
  8987. if ( IsZombie [id] )
  8988. {
  8989. if ( IsNemesis [id] )
  8990.  
  8991. fm_set_rendering ( id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25 );
  8992.  
  8993. else if ( IsAssassin [id] )
  8994.  
  8995. fm_set_rendering ( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25 );
  8996. else
  8997. fm_set_rendering ( id );
  8998. }
  8999. else
  9000. {
  9001. if ( IsSurvivor [id] || IsSniper [id] )
  9002.  
  9003. fm_set_rendering ( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25 );
  9004. else
  9005. fm_set_rendering ( id );
  9006. }
  9007.  
  9008. message_begin ( MSG_ONE, get_user_msgid ( "ScreenFade" ), _, id );
  9009. write_short ( 1<<12 );
  9010. write_short ( 0 );
  9011. write_short ( 0x0000 );
  9012. write_byte ( 0 );
  9013. write_byte ( 50 );
  9014. write_byte ( 200 );
  9015. write_byte ( 100 );
  9016. message_end ( );
  9017.  
  9018.  
  9019. static Sound [64];
  9020.  
  9021. ArrayGetString ( GrenadeFrostBreak, random_num ( 0, ArraySize ( GrenadeFrostBreak ) - 1 ), Sound, charsmax ( Sound ) );
  9022.  
  9023. EmitSound ( id, CHAN_AUTO, Sound );
  9024.  
  9025. static Origin [3]; get_user_origin ( id, Origin )
  9026.  
  9027. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  9028. write_byte ( TE_BREAKMODEL );
  9029. write_coord ( Origin [0] );
  9030. write_coord ( Origin [1] );
  9031. write_coord ( Origin [2]+24 );
  9032. write_coord ( 16 );
  9033. write_coord ( 16 );
  9034. write_coord ( 16 );
  9035. write_coord ( random_num (-50, 50) );
  9036. write_coord ( random_num (-50, 50) );
  9037. write_coord ( 25 );
  9038. write_byte ( 10 );
  9039. write_short ( GlassSpr );
  9040. write_byte ( 10 );
  9041. write_byte ( 25 );
  9042. write_byte ( 0x01 );
  9043. message_end ( );
  9044.  
  9045. ExecuteForward ( fwUserUnfrozen, fwDummyResult, id );
  9046. }
  9047.  
  9048. public RemoveStuff ( )
  9049. {
  9050. static Ent
  9051.  
  9052. Ent = -1;
  9053.  
  9054. while ( ( Ent = engfunc ( EngFunc_FindEntityByString, Ent, "classname", "func_door_rotating" ) ) != 0 )
  9055.  
  9056. engfunc ( EngFunc_SetOrigin, Ent, Float: {8192.0 ,8192.0 ,8192.0} );
  9057. }
  9058.  
  9059. ReplaceWeaponModels ( id, weaponid )
  9060. {
  9061. switch ( weaponid )
  9062. {
  9063. case CSW_KNIFE:
  9064. {
  9065. if ( IsZombie [id] )
  9066. {
  9067. if ( IsNemesis [id] )
  9068. {
  9069. set_pev ( id, pev_viewmodel2, GetModelKnifeNemesis );
  9070.  
  9071. set_pev ( id, pev_weaponmodel2, "" );
  9072. }
  9073. else if ( IsAssassin [id] )
  9074. {
  9075. set_pev ( id, pev_viewmodel2, GetModelKnifeAssassin );
  9076.  
  9077. set_pev ( id, pev_weaponmodel2, "" );
  9078. }
  9079. else
  9080. {
  9081. static ClawModel [100];
  9082.  
  9083. ArrayGetString ( ZClassClawModel_01, ZombieClass [id], ClawModel, charsmax ( ClawModel ) );
  9084.  
  9085. format ( ClawModel, charsmax ( ClawModel ), "models/ZombieOutstanding/%s", ClawModel );
  9086.  
  9087. set_pev ( id, pev_viewmodel2, ClawModel );
  9088.  
  9089. set_pev ( id, pev_weaponmodel2, "" );
  9090. }
  9091. }
  9092. else
  9093. {
  9094. set_pev ( id, pev_viewmodel2, GetModelKnifeHuman );
  9095.  
  9096. set_pev ( id, pev_weaponmodel2, "models/p_knife.mdl" );
  9097. }
  9098. }
  9099. case CSW_AWP:
  9100. {
  9101. if ( IsSniper [id] )
  9102. {
  9103. set_pev ( id, pev_viewmodel2, vGetModelAwpSniper );
  9104.  
  9105. set_pev ( id, pev_weaponmodel2, pGetModelAwpSniper );
  9106. }
  9107. }
  9108. case CSW_HEGRENADE:
  9109. {
  9110. if ( IsZombie [id] )
  9111.  
  9112. set_pev ( id, pev_viewmodel2, GetModelGrenadeInfect );
  9113. else
  9114. set_pev ( id, pev_viewmodel2, GetModelGrenadeExplode );
  9115. }
  9116. case CSW_FLASHBANG:
  9117. {
  9118. set_pev ( id, pev_viewmodel2, GetModelGrenadeFire );
  9119. }
  9120. case CSW_SMOKEGRENADE:
  9121. {
  9122. set_pev ( id, pev_viewmodel2, GetModelGrenadeFrost );
  9123. }
  9124. case CSW_AK47:
  9125. {
  9126. if (zp_get_gold_ak [id] )
  9127. {
  9128. set_pev ( id, pev_viewmodel2, Goldenak47_v );
  9129.  
  9130. set_pev ( id, pev_weaponmodel2, Goldenak47_p );
  9131. }
  9132. }
  9133. case CSW_DEAGLE:
  9134. {
  9135. if (zp_get_gold_de [id] )
  9136. {
  9137. set_pev ( id, pev_viewmodel2, Goldev );
  9138.  
  9139. set_pev ( id, pev_weaponmodel2, Goldep );
  9140. }
  9141. }
  9142. }
  9143. }
  9144.  
  9145. ResetVars ( id, resetall )
  9146. {
  9147. IsZombie [id] = false;
  9148.  
  9149. IsNemesis [id] = false;
  9150.  
  9151. IsAssassin [id] = false;
  9152.  
  9153. IsSurvivor [id] = false;
  9154.  
  9155. IsSniper [id] = false;
  9156.  
  9157. FirstZombie [id] = false;
  9158.  
  9159. LastZombie [id] = false;
  9160.  
  9161. LastHuman [id] = false;
  9162.  
  9163. IsFrozen [id] = false;
  9164.  
  9165. NoDamage [id] = false;
  9166.  
  9167. NVision [id] = false;
  9168.  
  9169. NVisionEnabled [id] = false;
  9170.  
  9171. CanBuy [id] = true;
  9172.  
  9173. BurningDuration [id] = 0;
  9174.  
  9175. if ( resetall )
  9176. {
  9177. AmmoPacks [id] = get_pcvar_num ( GetCvar [zRisesStartPacks] );
  9178.  
  9179. ZombieClass [id] = ZCLASS_NONE;
  9180.  
  9181. ZombieClassNext [id] = ZCLASS_NONE;
  9182.  
  9183. DamageDealt [id] = 0;
  9184. }
  9185. }
  9186.  
  9187. public SpecNVision ( id )
  9188. {
  9189. if ( !IsConnected [id] || IsAlive [id] || IsBot [id] ) return;
  9190.  
  9191. NVision [id] = true;
  9192.  
  9193. NVisionEnabled [id] = true;
  9194.  
  9195. remove_task ( id + TASK_NVISION );
  9196.  
  9197. set_task ( 0.1, "UserNVision", id + TASK_NVISION, _, _, "b" );
  9198. }
  9199.  
  9200. public SpectatorHudMessage ( TaskIndex )
  9201. {
  9202. static id; id = ID_SHOWHUD;
  9203.  
  9204. if ( !IsAlive [id] )
  9205. {
  9206. id = pev ( id, pev_iuser2 );
  9207.  
  9208. if ( !IsAlive [id] ) return;
  9209. }
  9210.  
  9211. static Class [32], Red, Green, Blue;
  9212.  
  9213. TaskReward [ID_SHOWHUD] --;
  9214.  
  9215. if ( TaskReward [ID_SHOWHUD] == 0 )
  9216. {
  9217. TaskReward [ID_SHOWHUD] = 600;
  9218.  
  9219. client_print_color ( ID_SHOWHUD, print_team_grey, "%s You got^4 +4^1 packs^1 for your^3 10 minutes", CHAT_PREFIX );
  9220.  
  9221. AmmoPacks [ID_SHOWHUD] += 4;
  9222. }
  9223.  
  9224. if ( IsZombie [id] )
  9225. {
  9226. Red = 153;
  9227.  
  9228. Green = 76;
  9229.  
  9230. Blue = 0;
  9231.  
  9232. if ( IsNemesis [id] )
  9233.  
  9234. formatex ( Class, charsmax ( Class ), "Nemesis" );
  9235.  
  9236. else if ( IsAssassin [id] )
  9237.  
  9238. formatex ( Class, charsmax ( Class ), "Assassin" );
  9239. else
  9240.  
  9241. copy ( Class, charsmax ( Class ), ZombieClassName [id] );
  9242. }
  9243. else
  9244. {
  9245. Red = 0;
  9246.  
  9247. Green = 175;
  9248.  
  9249. Blue = 255;
  9250.  
  9251. if ( IsSurvivor [id] )
  9252.  
  9253. formatex ( Class, charsmax ( Class ), "Survivor" );
  9254.  
  9255. else if ( IsSniper [id] )
  9256.  
  9257. formatex ( Class, charsmax ( Class ), "Sniper" );
  9258.  
  9259. else
  9260.  
  9261. formatex ( Class, charsmax ( Class ), "Human" );
  9262. }
  9263.  
  9264. if ( id != ID_SHOWHUD )
  9265. {
  9266.  
  9267. static HealthString [16], PacksString [16], points[32], UserIp [16], Country [44], City[44];
  9268.  
  9269. AddCommas ( pev ( id, pev_health ), HealthString, charsmax ( HealthString ) );
  9270.  
  9271. AddCommas ( AmmoPacks [id], PacksString, charsmax ( PacksString ) );
  9272.  
  9273. AddCommas (g_iPoints[id], points, 31 );
  9274.  
  9275. get_user_ip ( id, UserIp, charsmax ( UserIp ) );
  9276.  
  9277. geoip_country_ex ( UserIp, Country, charsmax ( City ) );
  9278.  
  9279. geoip_city ( UserIp, City, charsmax ( City ) );
  9280.  
  9281. set_hudmessage ( 10, 180, 150, -1.0, 0.80, 0, 6.0, 1.1, 0.0, 0.0, -1 );
  9282.  
  9283. ShowSyncHudMsg ( ID_SHOWHUD, HudMsgSync [1], "Spectating %s%s^n%s, Health: %s Armor: %d Packs: %s Points: %s^nFrom: %s, %s", g_vip[id] ? "(Gold Member ®) " : "", PlayerName [id], Class, HealthString, pev ( id, pev_armorvalue ), PacksString, points, Country, City )
  9284. }
  9285. else
  9286. {
  9287.  
  9288.  
  9289. static HealthString [16], PacksString [16], points[32];
  9290.  
  9291. AddCommas ( pev ( ID_SHOWHUD, pev_health ), HealthString, charsmax ( HealthString ) );
  9292.  
  9293. AddCommas ( AmmoPacks [ID_SHOWHUD], PacksString, charsmax ( PacksString ) );
  9294.  
  9295. AddCommas ( g_iPoints[id], points, 31 );
  9296.  
  9297. set_hudmessage ( Red, Green, Blue, 0.02, 0.90, 0, 6.00, 1.10, 0.00, 0.00, -1 );
  9298.  
  9299. if ( !IsZombie [id] )
  9300.  
  9301. ShowSyncHudMsg ( ID_SHOWHUD, HudMsgSync [1], "%s, Health: %s Armor: %d Packs: %s Points: %s", Class, HealthString, pev ( ID_SHOWHUD, pev_armorvalue ), PacksString, points );
  9302.  
  9303. else
  9304.  
  9305. ShowSyncHudMsg ( ID_SHOWHUD, HudMsgSync [1], "%s, Health: %s Armor: %d Packs: %s Points: %s", Class, HealthString, pev ( ID_SHOWHUD, pev_armorvalue ), PacksString, points );
  9306.  
  9307. }
  9308. }
  9309.  
  9310. public MadnessOver ( TaskIndex )
  9311. {
  9312. NoDamage [ID_BLOOD] = false;
  9313.  
  9314. fm_set_rendering ( ID_BLOOD );
  9315. }
  9316.  
  9317.  
  9318. stock LoadSpawns ( )
  9319. {
  9320. CollectSpawnsEnt ( "info_player_start" );
  9321. CollectSpawnsEnt ( "info_player_deathmatch" );
  9322. }
  9323.  
  9324. stock CollectSpawnsEnt ( const ClassName [ ] )
  9325. {
  9326. new Ent = -1;
  9327.  
  9328. while ( ( Ent = engfunc ( EngFunc_FindEntityByString, Ent, "classname", ClassName ) ) != 0 )
  9329. {
  9330. new Float:originF [3]; pev ( Ent, pev_origin, originF );
  9331.  
  9332. Spawns [SpawnCount] [0] = originF [0];
  9333. Spawns [SpawnCount] [1] = originF [1];
  9334. Spawns [SpawnCount] [2] = originF [2];
  9335.  
  9336. SpawnCount ++;
  9337.  
  9338. if ( SpawnCount >= sizeof Spawns ) break;
  9339. }
  9340. }
  9341.  
  9342. fnGetZombies ( )
  9343. {
  9344. static iZombies, id;
  9345.  
  9346. iZombies = 0;
  9347.  
  9348. for ( id = 1; id <= MaxPlayers; id ++ )
  9349. {
  9350. if ( IsAlive [id] && IsZombie [id] )
  9351.  
  9352. iZombies ++;
  9353. }
  9354.  
  9355. return iZombies;
  9356. }
  9357.  
  9358. fnGetHumans ( )
  9359. {
  9360. static iHumans, id;
  9361.  
  9362. iHumans = 0;
  9363.  
  9364. for ( id = 1; id <= MaxPlayers; id ++ )
  9365. {
  9366. if ( IsAlive [id] && !IsZombie [id] )
  9367.  
  9368. iHumans ++;
  9369. }
  9370.  
  9371. return iHumans;
  9372. }
  9373.  
  9374. fnGetAlive ( )
  9375. {
  9376. static iAlive, id;
  9377.  
  9378. iAlive = 0;
  9379.  
  9380. for ( id = 1; id <= MaxPlayers; id ++ )
  9381. {
  9382. if ( IsAlive [id] )
  9383.  
  9384. iAlive ++;
  9385. }
  9386.  
  9387. return iAlive;
  9388. }
  9389.  
  9390. fnGetRandomAlive ( n )
  9391. {
  9392. static iAlive, id;
  9393.  
  9394. iAlive = 0;
  9395.  
  9396. for ( id = 1; id <= MaxPlayers; id ++ )
  9397. {
  9398. if ( IsAlive [id] )
  9399.  
  9400. iAlive ++;
  9401.  
  9402. if ( iAlive == n )
  9403.  
  9404. return id;
  9405. }
  9406.  
  9407. return -1;
  9408. }
  9409.  
  9410. fnGetPlaying ( )
  9411. {
  9412. static iPlaying, id, Team
  9413.  
  9414. iPlaying = 0
  9415.  
  9416. for ( id = 1; id <= MaxPlayers; id ++ )
  9417. {
  9418. if ( IsConnected [id] )
  9419. {
  9420. Team = fm_cs_get_user_team ( id );
  9421.  
  9422. if ( Team != FM_CS_TEAM_SPECTATOR && Team != FM_CS_TEAM_UNASSIGNED )
  9423.  
  9424. iPlaying ++;
  9425. }
  9426. }
  9427. return iPlaying;
  9428. }
  9429.  
  9430. fnGetCTs ( )
  9431. {
  9432. static iCTs, id;
  9433.  
  9434. iCTs = 0;
  9435.  
  9436. for ( id = 1; id <= MaxPlayers; id ++ )
  9437. {
  9438. if ( IsConnected [id] )
  9439. {
  9440. if ( fm_cs_get_user_team ( id ) == FM_CS_TEAM_CT )
  9441.  
  9442. iCTs ++;
  9443. }
  9444. }
  9445. return iCTs;
  9446. }
  9447.  
  9448. fnGetTs ( )
  9449. {
  9450. static iTs, id;
  9451.  
  9452. iTs = 0;
  9453.  
  9454. for ( id = 1; id <= MaxPlayers; id ++ )
  9455. {
  9456. if ( IsConnected [id] )
  9457. {
  9458. if ( fm_cs_get_user_team ( id ) == FM_CS_TEAM_T )
  9459.  
  9460. iTs ++;
  9461. }
  9462. }
  9463. return iTs;
  9464. }
  9465.  
  9466. fnCheckLastZombie ( )
  9467. {
  9468. static id;
  9469.  
  9470. for ( id = 1; id <= MaxPlayers; id ++ )
  9471. {
  9472. if ( IsAlive [id] && IsZombie [id] && !IsNemesis [id] && !IsAssassin [id] && fnGetZombies ( ) == 1 )
  9473. {
  9474. if ( !LastZombie [id] )
  9475. {
  9476. ExecuteForward ( fwUserLastZombie, fwDummyResult, id );
  9477. }
  9478.  
  9479. LastZombie [id] = true;
  9480. }
  9481. else
  9482. LastZombie [id] = false;
  9483.  
  9484. if ( IsAlive [id] && !IsZombie [id] && !IsSurvivor [id] && !IsSniper [id] && fnGetHumans ( ) == 1 )
  9485. {
  9486. if ( !LastHuman [id] )
  9487. {
  9488. ExecuteForward ( fwUserLastHuman, fwDummyResult, id );
  9489. }
  9490.  
  9491. LastHuman [id] = true;
  9492. }
  9493. else
  9494. LastHuman [id] = false;
  9495. }
  9496. }
  9497.  
  9498. SaveStats ( id )
  9499. {
  9500. if ( DBName [id] [0] && !equal ( PlayerName [id], DBName [id] ) )
  9501. {
  9502. if ( DBSlot >= sizeof DBName ) DBSlot = MaxPlayers + 1;
  9503.  
  9504. copy ( DBName [DBSlot], charsmax ( DBName [ ] ), DBName [id] );
  9505.  
  9506. DBPacks [DBSlot] = DBPacks [id];
  9507.  
  9508. DBZombieClass [DBSlot] = DBZombieClass [id];
  9509.  
  9510. DBSlot ++;
  9511. }
  9512.  
  9513. copy ( DBName [id], charsmax ( DBName [ ] ), PlayerName [id] );
  9514.  
  9515. DBPacks [id] = AmmoPacks [id];
  9516.  
  9517. DBZombieClass [id] = ZombieClassNext [id];
  9518. }
  9519.  
  9520. LoadStats ( id )
  9521. {
  9522. static i;
  9523.  
  9524. for ( i = 0; i < sizeof DBName; i ++ )
  9525. {
  9526. if ( equal ( PlayerName [id], DBName [i] ) )
  9527. {
  9528. AmmoPacks [id] = DBPacks [i];
  9529.  
  9530. ZombieClass [id] = DBZombieClass [i];
  9531.  
  9532. ZombieClassNext[id] = DBZombieClass [i];
  9533.  
  9534. return;
  9535. }
  9536. }
  9537. }
  9538.  
  9539. CheckAllowedZombie ( id )
  9540. {
  9541. if ( ( IsZombie [id] && !IsNemesis [id] && !IsAssassin [id] ) || EndRound || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && !IsZombie [id] && fnGetHumans ( ) == 1 ) )
  9542.  
  9543. return false;
  9544.  
  9545. return true;
  9546. }
  9547.  
  9548. CheckAllowedHuman ( id )
  9549. {
  9550. if ( ( !IsZombie [id] && !IsSurvivor [id] && !IsSniper [id] ) || EndRound || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && IsZombie [id] && fnGetZombies ( ) == 1 ) )
  9551.  
  9552. return false;
  9553.  
  9554. return true;
  9555. }
  9556.  
  9557. CheckAllowedNemesis ( id )
  9558. {
  9559. if ( EndRound || IsNemesis [id] || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && !IsZombie [id] && fnGetHumans ( ) == 1 ) )
  9560.  
  9561. return false;
  9562.  
  9563. return true;
  9564. }
  9565.  
  9566. CheckAllowedAssassin ( id )
  9567. {
  9568. if ( EndRound || IsAssassin [id] || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && !IsZombie [id] && fnGetHumans ( ) == 1 ) )
  9569.  
  9570. return false;
  9571.  
  9572. return true;
  9573. }
  9574.  
  9575. CheckAllowedSurvivor ( id )
  9576. {
  9577. if ( EndRound || IsSurvivor [id] || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && IsZombie [id] && fnGetZombies ( ) == 1 ) )
  9578.  
  9579. return false;
  9580.  
  9581. return true;
  9582. }
  9583.  
  9584. CheckAllowedSniper ( id )
  9585. {
  9586. if ( EndRound || IsSniper [id] || !IsAlive [id] || task_exists ( TASK_WELCOMEMSG ) || ( !NewRound && IsZombie [id] && fnGetZombies ( ) == 1 ) )
  9587.  
  9588. return false;
  9589.  
  9590. return true;
  9591. }
  9592.  
  9593. CheckAllowedRespawn ( id )
  9594. {
  9595. static Team;
  9596.  
  9597. Team = fm_cs_get_user_team ( id );
  9598.  
  9599. if ( EndRound || Team == FM_CS_TEAM_SPECTATOR || Team == FM_CS_TEAM_UNASSIGNED || IsAlive [id] )
  9600.  
  9601. return false;
  9602.  
  9603. return true;
  9604. }
  9605.  
  9606. CheckAllowedSwarm ( )
  9607. {
  9608. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil) < 2 || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) >= fnGetAlive ( ) )
  9609.  
  9610. return false;
  9611.  
  9612. return true;
  9613. }
  9614.  
  9615. CheckAllowedMulti ( )
  9616. {
  9617. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) < 2 || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) >= fnGetAlive ( ) )
  9618.  
  9619. return false;
  9620.  
  9621. return true;
  9622. }
  9623.  
  9624. CheckAllowedPlague ( )
  9625. {
  9626. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( ( fnGetAlive ( ) - ( 2 + 3 ) ) * 0.4, floatround_ceil ) < 1 ||
  9627.  
  9628. fnGetAlive ( ) - ( 3 + 2 + floatround ( ( fnGetAlive ( ) - ( 2 + 3 ) ) * 0.4, floatround_ceil ) ) < 1 )
  9629.  
  9630. return false;
  9631.  
  9632. return true;
  9633. }
  9634.  
  9635. CheckAllowedArmageddon ( )
  9636. {
  9637. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) < 2 || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) >= fnGetAlive ( ) )
  9638.  
  9639. return false;
  9640.  
  9641. return true;
  9642. }
  9643.  
  9644. CheckAllowedApocalypse ( )
  9645. {
  9646. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) < 2 || floatround ( fnGetAlive ( ) * 0.5, floatround_ceil ) >= fnGetAlive ( ) )
  9647.  
  9648. return false;
  9649.  
  9650. return true;
  9651. }
  9652.  
  9653. CheckAllowedNightmare ( )
  9654. {
  9655. if ( EndRound || !NewRound || task_exists ( TASK_WELCOMEMSG ) || floatround ( fnGetAlive ( ) * 0.2, floatround_ceil ) < 2 || floatround ( fnGetAlive ( ) * 0.2, floatround_ceil ) >= fnGetAlive ( ) )
  9656.  
  9657. return false;
  9658.  
  9659. return true;
  9660. }
  9661.  
  9662. CommandZombie ( id, player )
  9663. {
  9664. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Zombie^1", PlayerName [id], PlayerName [player] );
  9665.  
  9666. log_to_file( "ZombieOutstanding.log", "%s made %s a Zombie", PlayerName [id], PlayerName [player] );
  9667.  
  9668. if ( NewRound )
  9669. {
  9670. remove_task ( TASK_MAKEZOMBIE );
  9671.  
  9672. remove_task ( TASK_ID );
  9673.  
  9674. cmdMakeZombie ( MODE_INFECTION, player );
  9675. }
  9676.  
  9677. else
  9678.  
  9679. UserZombie ( player, 0, 0, 0, 0, 0 );
  9680. }
  9681.  
  9682.  
  9683. CommandHuman ( id, player )
  9684. {
  9685. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Human", PlayerName [id], PlayerName [player] );
  9686.  
  9687. log_to_file ( "ZombieOutstanding.log", "%s made %s a Human", PlayerName [id], PlayerName [player] );
  9688.  
  9689. UserHuman ( player, 0, 0, 0 );
  9690. }
  9691.  
  9692. CommandNemesis ( id, player )
  9693. {
  9694. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Nemesis", PlayerName [id], PlayerName [player] )
  9695.  
  9696. log_to_file ( "ZombieOutstanding.log", "%s made %s a Nemesis", PlayerName [id], PlayerName [player] );
  9697.  
  9698. if ( NewRound )
  9699. {
  9700. remove_task ( TASK_MAKEZOMBIE );
  9701.  
  9702. remove_task ( TASK_ID );
  9703.  
  9704. cmdMakeZombie ( MODE_NEMESIS, player );
  9705. }
  9706.  
  9707. else
  9708.  
  9709. UserZombie ( player, 0, 1, 0, 0, 0 );
  9710. }
  9711.  
  9712. CommandAssassin ( id, player )
  9713. {
  9714. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 an^4 Assassin", PlayerName [id], PlayerName [player] );
  9715.  
  9716. log_to_file ( "ZombieOutstanding.log", "%s made %s an Assassin", PlayerName [id], PlayerName [player] );
  9717.  
  9718. if ( NewRound )
  9719. {
  9720. remove_task ( TASK_MAKEZOMBIE );
  9721.  
  9722. remove_task ( TASK_ID );
  9723.  
  9724. cmdMakeZombie ( MODE_ASSASSIN, player );
  9725. }
  9726.  
  9727. else
  9728.  
  9729. UserZombie ( player, 0, 0, 1, 0, 0 );
  9730. }
  9731.  
  9732. CommandSurvivor ( id, player )
  9733. {
  9734. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Survivor", PlayerName [id], PlayerName [player] )
  9735.  
  9736. log_to_file ( "ZombieOutstanding.log", "%s made %s a Survivor", PlayerName [id], PlayerName [player] );
  9737.  
  9738. if ( NewRound )
  9739. {
  9740. remove_task ( TASK_MAKEZOMBIE );
  9741.  
  9742. remove_task ( TASK_ID );
  9743.  
  9744. cmdMakeZombie ( MODE_SURVIVOR, player );
  9745. }
  9746.  
  9747. else
  9748.  
  9749. UserHuman ( player, 1, 0, 0 );
  9750. }
  9751.  
  9752. CommandSniper ( id, player )
  9753. {
  9754. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Sniper", PlayerName [id], PlayerName [player] )
  9755.  
  9756. log_to_file ( "ZombieOutstanding.log", "%s made %s a Sniper", PlayerName [id], PlayerName [player] );
  9757.  
  9758. if ( NewRound )
  9759. {
  9760. remove_task ( TASK_MAKEZOMBIE );
  9761.  
  9762. remove_task ( TASK_ID );
  9763.  
  9764. cmdMakeZombie ( MODE_SNIPER, player );
  9765. }
  9766.  
  9767. else
  9768.  
  9769. UserHuman ( player, 0, 1, 0 );
  9770. }
  9771.  
  9772. CommandRespawn ( id, player )
  9773. {
  9774. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 made^3 %s^1 a^4 Human", PlayerName [id], PlayerName [player] );
  9775.  
  9776. log_to_file ( "ZombieOutstanding.log", "%s made %s a Human", PlayerName [id], PlayerName [player] );
  9777.  
  9778. ExecuteHamB ( Ham_CS_RoundRespawn, player );
  9779. }
  9780.  
  9781. CommandSwarm ( id )
  9782. {
  9783. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Swarm^1 round!", PlayerName [id] );
  9784.  
  9785. log_to_file ( "ZombieOutstanding.log", "%s started Swarm round", PlayerName [id] );
  9786.  
  9787. remove_task ( TASK_MAKEZOMBIE );
  9788.  
  9789. remove_task ( TASK_ID );
  9790.  
  9791. cmdMakeZombie ( MODE_SWARM, 0 );
  9792. }
  9793.  
  9794. CommandMulti ( id )
  9795. {
  9796. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Multiple Infections^1 round!", PlayerName [id] );
  9797.  
  9798. log_to_file ( "ZombieOutstanding.log", "%s started Multiple Infections round", PlayerName [id] );
  9799.  
  9800. remove_task ( TASK_MAKEZOMBIE );
  9801.  
  9802. remove_task ( TASK_ID );
  9803.  
  9804. cmdMakeZombie ( MODE_MULTI, 0 );
  9805. }
  9806.  
  9807. CommandPlague ( id )
  9808. {
  9809. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Plague^1 round!", PlayerName [id] );
  9810.  
  9811. log_to_file ( "ZombieOutstanding.log", "%s started Plague round", PlayerName [id] );
  9812.  
  9813. remove_task ( TASK_MAKEZOMBIE );
  9814.  
  9815. remove_task ( TASK_ID );
  9816.  
  9817. cmdMakeZombie ( MODE_PLAGUE, 0 );
  9818. }
  9819.  
  9820. CommandArmageddon ( id )
  9821. {
  9822. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Armageddon^1 round!", PlayerName [id] );
  9823.  
  9824. log_to_file ( "ZombieOutstanding.log", "%s started Armageddon round", PlayerName [id] );
  9825.  
  9826. remove_task ( TASK_MAKEZOMBIE );
  9827.  
  9828. remove_task ( TASK_ID );
  9829.  
  9830. cmdMakeZombie ( MODE_ARMAGEDDON, 0 );
  9831. }
  9832.  
  9833. CommandApocalypse ( id )
  9834. {
  9835. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Assassins vs Snipers^1 round!", PlayerName [id] );
  9836.  
  9837. log_to_file ( "ZombieOutstanding.log", "%s started Assassins vs Snipers round", PlayerName [id] );
  9838.  
  9839. remove_task ( TASK_MAKEZOMBIE );
  9840.  
  9841. remove_task ( TASK_ID );
  9842.  
  9843. cmdMakeZombie ( MODE_APOCALYPSE, 0 );
  9844. }
  9845.  
  9846. CommandNightmare ( id )
  9847. {
  9848. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 started^4 Nightmare^1 round!", PlayerName [id] );
  9849.  
  9850. log_to_file ( "ZombieOutstanding.log", "%s started Nightmare round", PlayerName [id] );
  9851.  
  9852. remove_task ( TASK_MAKEZOMBIE );
  9853.  
  9854. remove_task ( TASK_ID );
  9855.  
  9856. cmdMakeZombie ( MODE_NIGHTMARE, 0 );
  9857. }
  9858.  
  9859. zHasRoundStarted ( )
  9860. {
  9861. if ( NewRound ) return 0;
  9862.  
  9863. if ( ModeStarted ) return 1;
  9864.  
  9865. return 2;
  9866. }
  9867.  
  9868. register_item ( const Name [ ], Cost, Team )
  9869. {
  9870. ArrayPushString ( ExtraItemName_01, Name );
  9871.  
  9872. ArrayPushCell ( ExtraItemCost_01, Cost );
  9873.  
  9874. ArrayPushCell ( ExtraItemTeam_01, Team );
  9875.  
  9876. ArrayPushCell ( ExtraItemNew, 1 );
  9877.  
  9878. iExtraItem ++;
  9879. }
  9880.  
  9881.  
  9882. register_zombie_class ( const Name [ ], const Info [ ], const model [ ], const clawmodel[], hp, speed, Float:gravity, Float:knockback )
  9883. {
  9884. ArrayPushString ( ZClassName_01, Name )
  9885.  
  9886. ArrayPushString ( ZClassInfo_01, Info )
  9887.  
  9888. ArrayPushCell ( ZClassModelsStart_01, ArraySize ( ZClassPlayerModel_01 ) );
  9889.  
  9890. ArrayPushString ( ZClassPlayerModel_01, model );
  9891.  
  9892. ArrayPushCell ( ZClassModelSend_01, ArraySize ( ZClassPlayerModel_01 ) );
  9893.  
  9894. ArrayPushCell ( ZClassModelIndex_01, -1 );
  9895.  
  9896. ArrayPushString ( ZClassClawModel_01, clawmodel );
  9897.  
  9898. ArrayPushCell ( ZClassHealth_01, hp );
  9899.  
  9900. ArrayPushCell ( ZClassSpeed_01, speed );
  9901.  
  9902. ArrayPushCell ( ZClassGravity_01, gravity );
  9903.  
  9904. ArrayPushCell ( ZClassKnockback_01, knockback );
  9905.  
  9906. ArrayPushCell ( ZClassNew, 1 );
  9907.  
  9908. new prec_mdl [100];
  9909.  
  9910. if ( ArrayGetCell ( ZClassNew, iZClass ) )
  9911. {
  9912. formatex ( prec_mdl, charsmax ( prec_mdl ), "models/player/%s/%s.mdl", model, model );
  9913.  
  9914. ArraySetCell ( ZClassModelIndex_01, ArrayGetCell ( ZClassModelsStart_01, iZClass ), engfunc ( EngFunc_PrecacheModel, prec_mdl ) );
  9915.  
  9916. formatex ( prec_mdl, charsmax ( prec_mdl ), "models/ZombieOutstanding/%s", clawmodel );
  9917.  
  9918. engfunc ( EngFunc_PrecacheModel, prec_mdl );
  9919. }
  9920.  
  9921. iZClass ++;
  9922. }
  9923.  
  9924. public UserNVision ( TaskIndex )
  9925. {
  9926. static origin [3]; get_user_origin ( ID_NVISION, origin );
  9927.  
  9928. message_begin ( MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, ID_NVISION );
  9929. write_byte ( TE_DLIGHT );
  9930. write_coord ( origin [0] );
  9931. write_coord ( origin [1] );
  9932. write_coord ( origin [2] );
  9933. write_byte ( 80 );
  9934.  
  9935. if ( NoDamage [ID_NVISION] )
  9936. {
  9937. write_byte ( 0 );
  9938. write_byte ( 150 );
  9939. write_byte ( 200 );
  9940. }
  9941. else
  9942. {
  9943. write_byte ( 0 );
  9944. write_byte ( 150 );
  9945. write_byte ( 200 );
  9946. }
  9947.  
  9948. write_byte ( 3 );
  9949. write_byte ( 0 );
  9950. message_end ( );
  9951. }
  9952.  
  9953. InfectionEffects ( id )
  9954. {
  9955. if ( !IsFrozen [id] )
  9956. {
  9957. ScreenFadeEffect ( id, 0.5, 255, 0, 0, 255 );
  9958. }
  9959.  
  9960.  
  9961. ScreenShakeEffect ( id, 0.5 );
  9962.  
  9963. static Origin [3]; get_user_origin ( id, Origin );
  9964.  
  9965. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  9966. write_byte ( TE_IMPLOSION );
  9967. write_coord ( Origin [0] );
  9968. write_coord ( Origin [1] );
  9969. write_coord ( Origin[2] );
  9970. write_byte ( 128 );
  9971. write_byte ( 20 );
  9972. write_byte ( 3 );
  9973. message_end ( );
  9974.  
  9975. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  9976. write_byte ( TE_PARTICLEBURST );
  9977. write_coord ( Origin [0] );
  9978. write_coord ( Origin [1] );
  9979. write_coord ( Origin [2] );
  9980. write_short ( 50 );
  9981. write_byte ( 70 );
  9982. write_byte ( 3 );
  9983. message_end ( );
  9984.  
  9985. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  9986. write_byte ( TE_DLIGHT );
  9987. write_coord ( Origin [0] );
  9988. write_coord ( Origin [1] );
  9989. write_coord ( Origin [2] );
  9990. write_byte ( 20 );
  9991. write_byte ( 250 );
  9992. write_byte ( 0 );
  9993. write_byte ( 40 );
  9994. write_byte ( 2 );
  9995. write_byte ( 0 );
  9996. message_end ( );
  9997. }
  9998.  
  9999. public BurningFlame ( TaskIndex )
  10000. {
  10001. static origin [3], flags;
  10002.  
  10003. get_user_origin ( ID_BURN, origin );
  10004.  
  10005. flags = pev ( ID_BURN, pev_flags );
  10006.  
  10007. if ( NoDamage [ID_BURN] || ( flags & FL_INWATER ) || BurningDuration [ID_BURN] < 1 )
  10008. {
  10009. message_begin ( MSG_PVS, SVC_TEMPENTITY, origin );
  10010. write_byte ( TE_SMOKE );
  10011. write_coord ( origin [0] );
  10012. write_coord ( origin [1] );
  10013. write_coord ( origin [2] - 50 );
  10014. write_short ( SmokeSpr );
  10015. write_byte ( random_num (15, 20) );
  10016. write_byte ( random_num (10, 20) );
  10017. message_end ( );
  10018.  
  10019. remove_task ( TaskIndex );
  10020.  
  10021. return;
  10022. }
  10023.  
  10024. if ( !IsNemesis [ID_BURN] && !IsAssassin [ID_BURN] && !random_num ( 0, 20 ) )
  10025. {
  10026. static Sound [64];
  10027.  
  10028. ArrayGetString ( GrenadeFirePlayer, random_num ( 0, ArraySize ( GrenadeFirePlayer ) - 1 ), Sound, charsmax ( Sound ) )
  10029.  
  10030. EmitSound ( ID_BURN, CHAN_AUTO, Sound );
  10031. }
  10032.  
  10033. if ( !IsNemesis [ID_BURN] && !IsAssassin [ID_BURN] && ( flags & FL_ONGROUND ) && 1.0 > 0.0 )
  10034. {
  10035. static Float: velocity [3];
  10036.  
  10037. pev ( ID_BURN, pev_velocity, velocity );
  10038.  
  10039. xs_vec_mul_scalar ( velocity, 1.0, velocity );
  10040.  
  10041. set_pev ( ID_BURN, pev_velocity, velocity );
  10042. }
  10043.  
  10044. static health;
  10045.  
  10046. health = pev ( ID_BURN, pev_health );
  10047.  
  10048. if ( health - floatround ( 20.0, floatround_ceil ) > 0 )
  10049.  
  10050. fm_set_user_health ( ID_BURN, health - floatround ( 20.0, floatround_ceil ) );
  10051.  
  10052. message_begin ( MSG_PVS, SVC_TEMPENTITY, origin );
  10053.  
  10054. write_byte ( TE_SPRITE );
  10055.  
  10056. write_coord ( origin [0] + random_num (-5, 5) );
  10057.  
  10058. write_coord ( origin [1] + random_num (-5, 5) );
  10059.  
  10060. write_coord ( origin [2] + random_num (-10, 10) );
  10061.  
  10062. write_short ( FlameSpr );
  10063.  
  10064. write_byte ( random_num (5, 10) );
  10065.  
  10066. write_byte ( 200 );
  10067.  
  10068. message_end ( );
  10069.  
  10070. BurningDuration [ID_BURN]--
  10071. }
  10072.  
  10073. CreateBlastInfection ( const Float: Origin [3] )
  10074. {
  10075. engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0 );
  10076. write_byte ( 21 );
  10077. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10078. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10079. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10080. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10081. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10082. engfunc ( EngFunc_WriteCoord, Origin [2] + 470.0 );
  10083. write_short ( ExploSpr );
  10084. write_byte ( 0 );
  10085. write_byte ( 0 );
  10086. write_byte ( 4 );
  10087. write_byte ( 60 );
  10088. write_byte ( 0 );
  10089. write_byte ( 0 );
  10090. write_byte ( 250 );
  10091. write_byte ( 0 );
  10092. write_byte ( 200 );
  10093. write_byte ( 0 );
  10094. message_end ( );
  10095. }
  10096.  
  10097. CreateBlastFire ( const Float: Origin [3] )
  10098. {
  10099. engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0 );
  10100. write_byte ( 21 );
  10101. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10102. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10103. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10104. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10105. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10106. engfunc ( EngFunc_WriteCoord, Origin [2] + 470.0 );
  10107. write_short ( ExploSpr );
  10108. write_byte ( 0 );
  10109. write_byte ( 0 );
  10110. write_byte ( 4 );
  10111. write_byte ( 60 );
  10112. write_byte ( 0 );
  10113. write_byte ( 250 );
  10114. write_byte ( 40 );
  10115. write_byte ( 0 );
  10116. write_byte ( 200 );
  10117. write_byte ( 0 );
  10118. message_end ( )
  10119. }
  10120.  
  10121. CreateBlastFrost ( const Float: Origin [3] )
  10122. {
  10123. engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0 );
  10124. write_byte ( 21 );
  10125. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10126. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10127. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10128. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10129. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10130. engfunc ( EngFunc_WriteCoord, Origin [2] + 470.0 );
  10131. write_short ( ExploSpr );
  10132. write_byte ( 0 );
  10133. write_byte ( 0 );
  10134. write_byte ( 4 );
  10135. write_byte ( 60 );
  10136. write_byte ( 0 );
  10137. write_byte ( 0 );
  10138. write_byte ( 100 );
  10139. write_byte ( 200 );
  10140. write_byte ( 200 );
  10141. write_byte ( 0 );
  10142. message_end ( );
  10143. }
  10144.  
  10145. FixDeadAttrib ( id )
  10146. {
  10147. message_begin ( MSG_BROADCAST, get_user_msgid ( "ScoreAttrib" ) );
  10148. write_byte ( id );
  10149. write_byte ( 0 );
  10150. message_end ( );
  10151. }
  10152.  
  10153. SendDeathMsg ( Attacker, Victim )
  10154. {
  10155. message_begin ( MSG_BROADCAST, get_user_msgid ( "DeathMsg" ) );
  10156. write_byte ( Attacker );
  10157. write_byte ( Victim );
  10158. write_byte ( 1 );
  10159. write_string ( "infection" )
  10160. message_end ( )
  10161. }
  10162.  
  10163. UpdateFrags ( Attacker, Victim, frags, deaths, scoreboard )
  10164. {
  10165. set_pev ( Attacker, pev_frags, float ( pev ( Attacker, pev_frags ) + frags ) );
  10166.  
  10167. fm_cs_set_user_deaths ( Victim, cs_get_user_deaths ( Victim ) + deaths );
  10168.  
  10169. if ( scoreboard )
  10170. {
  10171. message_begin ( MSG_BROADCAST, get_user_msgid ( "ScoreInfo" ) );
  10172. write_byte ( Attacker );
  10173. write_short ( pev ( Attacker, pev_frags ) );
  10174. write_short ( cs_get_user_deaths ( Attacker ) );
  10175. write_short ( 0 );
  10176. write_short ( fm_cs_get_user_team ( Attacker ) );
  10177. message_end ( );
  10178.  
  10179. message_begin ( MSG_BROADCAST, get_user_msgid ( "ScoreInfo" ) );
  10180. write_byte ( Victim );
  10181. write_short ( pev ( Victim, pev_frags ) );
  10182. write_short ( cs_get_user_deaths ( Victim ) );
  10183. write_short ( 0 );
  10184. write_short ( fm_cs_get_user_team ( Victim ) );
  10185. message_end ( );
  10186. }
  10187. }
  10188.  
  10189. PlaySound ( id, const Sound [ ] ) client_cmd ( id, "spk ^"%s^"", Sound );
  10190.  
  10191. EmitSound ( Index, Channel, const Sound [ ] ) emit_sound ( Index, Channel, Sound, 1.0, ATTN_NORM, 1, 105 );
  10192.  
  10193. AddCommas ( iNum , szOutput[] , iLen )
  10194. {
  10195. new szTmp [17] , iOutputPos , iNumPos , iNumLen;
  10196.  
  10197. iNumLen = num_to_str( iNum , szTmp , charsmax( szTmp ) );
  10198.  
  10199. if ( iNumLen <= 3 )
  10200. {
  10201. iOutputPos += copy ( szOutput [iOutputPos] , iLen , szTmp );
  10202. }
  10203. else
  10204. {
  10205. while ( ( iNumPos < iNumLen ) && ( iOutputPos < iLen ) )
  10206. {
  10207. szOutput[ iOutputPos++ ] = szTmp[ iNumPos++ ];
  10208.  
  10209. if ( ( iNumLen - iNumPos ) && !( ( iNumLen - iNumPos ) % 3 ) )
  10210.  
  10211. szOutput[ iOutputPos++ ] = ',';
  10212. }
  10213.  
  10214. szOutput[ iOutputPos ] = EOS;
  10215. }
  10216.  
  10217. return iOutputPos;
  10218. }
  10219.  
  10220. /* --------------- | Extra Items | -------------- */
  10221.  
  10222. public BuyTripMine ( id )
  10223. {
  10224. if ( !IsAlive [id] )
  10225. {
  10226. client_print_color ( id, print_team_grey, "%s You should be^3 Alive^1.", CHAT_PREFIX );
  10227.  
  10228. return PLUGIN_CONTINUE;
  10229. }
  10230.  
  10231. if ( IsZombie [id] || IsNemesis [id] || IsAssassin [id] )
  10232. {
  10233. client_print_color ( id, print_team_grey, "%s You should be^3 Human^1.", CHAT_PREFIX );
  10234.  
  10235. return PLUGIN_CONTINUE;
  10236. }
  10237.  
  10238. if ( AmmoPacks [id] < 5 )
  10239. {
  10240. client_print_color ( id, print_team_grey, "%s You need^4 %d ammo packs^1.", CHAT_PREFIX, 5 );
  10241.  
  10242. return PLUGIN_CONTINUE;
  10243. }
  10244.  
  10245.  
  10246. AmmoPacks [id] -= 5;
  10247.  
  10248. HasTripMines [id] ++;
  10249.  
  10250. client_print_color ( id, print_team_grey, "%s You bought a trip mine. Press^3 V^1 to plant it or^3 C^1 to take it.", CHAT_PREFIX );
  10251.  
  10252. client_cmd ( id, "bind ^"v^" ^"createlaser^"" );
  10253.  
  10254. client_cmd ( id, "bind ^"c^" ^"removelaser^"" );
  10255.  
  10256. return PLUGIN_CONTINUE;
  10257. }
  10258.  
  10259. public PlantTripMine ( id )
  10260. {
  10261. if( !IsAlive [id] )
  10262. {
  10263. client_print_color ( id, print_team_grey, "%s You should be^3 Alive^1.", CHAT_PREFIX );
  10264.  
  10265. return PLUGIN_HANDLED;
  10266. }
  10267.  
  10268. if ( IsZombie [id] || IsNemesis [id] || IsAssassin [id] )
  10269. {
  10270. client_print_color ( id, print_team_grey, "%s You should be^3 Human^1.", CHAT_PREFIX );
  10271.  
  10272. return PLUGIN_HANDLED;
  10273. }
  10274.  
  10275. if ( !HasTripMines [id] )
  10276. {
  10277. client_print_color ( id, print_team_default, "%s You don't have a trip mine to plant.", CHAT_PREFIX );
  10278.  
  10279. return PLUGIN_HANDLED;
  10280. }
  10281.  
  10282. if ( PlantedMines [id] > 1 )
  10283. {
  10284. client_print_color ( id, print_team_grey, "%s You can plant only^3 2^1 mines.", CHAT_PREFIX );
  10285.  
  10286. return PLUGIN_HANDLED;
  10287. }
  10288.  
  10289.  
  10290. if ( HasPlanting [id] || HasRemoving [id] ) return PLUGIN_HANDLED;
  10291.  
  10292. if ( CanPlant ( id ) )
  10293. {
  10294. HasPlanting [id] = true;
  10295.  
  10296. message_begin ( MSG_ONE_UNRELIABLE, 108, _, id );
  10297. write_byte ( 1 );
  10298. write_byte ( 0 );
  10299. message_end ( );
  10300.  
  10301. set_task ( 1.2, "fwPlantMines", id + TASK_CREATE );
  10302. }
  10303.  
  10304. return PLUGIN_HANDLED;
  10305. }
  10306.  
  10307. public TakeTripMine ( id )
  10308. {
  10309. if ( !IsAlive [id] )
  10310. {
  10311. client_print_color ( id, print_team_grey, "%s You should be^3 Alive^1.", CHAT_PREFIX );
  10312.  
  10313. return PLUGIN_HANDLED;
  10314. }
  10315.  
  10316. if ( IsZombie [id] || IsNemesis [id] || IsAssassin [id] )
  10317. {
  10318. client_print_color ( id, print_team_grey, "%s You should be^3 Human^1.", CHAT_PREFIX );
  10319.  
  10320. return PLUGIN_HANDLED;
  10321. }
  10322.  
  10323. if ( !PlantedMines [id] )
  10324. {
  10325. client_print_color ( id, print_team_default, "%s You don't have a planted mine.", CHAT_PREFIX );
  10326.  
  10327. return PLUGIN_HANDLED;
  10328. }
  10329.  
  10330. if ( HasPlanting [id] || HasRemoving [id] ) return PLUGIN_HANDLED;
  10331.  
  10332. if ( CanTake ( id ) )
  10333. {
  10334. HasRemoving [id] = true;
  10335.  
  10336. message_begin ( MSG_ONE_UNRELIABLE, 108, _, id );
  10337. write_byte ( 1 );
  10338. write_byte ( 0 );
  10339. message_end ( );
  10340.  
  10341. set_task ( 1.2, "fwTakeMines", id + TASK_REMOVE );
  10342. }
  10343.  
  10344. return PLUGIN_HANDLED;
  10345. }
  10346.  
  10347. public fwPlantMines ( id )
  10348. {
  10349. id -= TASK_CREATE;
  10350.  
  10351. HasPlanting [id] = false;
  10352.  
  10353. static Float: Origin [3]; entity_get_vector ( id, EV_VEC_origin, Origin );
  10354.  
  10355. static Float: TraceDirection [3], Float: TraceEnd [3], Float: iTraceResult [3], Float: Normal [3];
  10356.  
  10357. velocity_by_aim ( id, 128, TraceDirection );
  10358.  
  10359. TraceEnd [0] = TraceDirection [0] + Origin [0];
  10360.  
  10361. TraceEnd [1] = TraceDirection [1] + Origin [1];
  10362.  
  10363. TraceEnd [2] = TraceDirection [2] + Origin [2];
  10364.  
  10365. static Float: Fraction, iTr; iTr = 0;
  10366.  
  10367. engfunc ( EngFunc_TraceLine, Origin, TraceEnd, 0, id, iTr );
  10368.  
  10369. get_tr2 ( iTr, TR_vecEndPos, iTraceResult );
  10370.  
  10371. get_tr2 ( iTr, TR_vecPlaneNormal, Normal );
  10372.  
  10373. get_tr2 ( iTr, TR_flFraction, Fraction );
  10374.  
  10375. static Entity; Entity = create_entity ( "info_target" );
  10376.  
  10377. if ( !Entity ) return;
  10378.  
  10379. entity_set_string ( Entity, EV_SZ_classname, "zRises_TripMine");
  10380.  
  10381. entity_set_model ( Entity, GetModelTripmine );
  10382.  
  10383. entity_set_size ( Entity, Float: { -4.0, -4.0, -4.0 }, Float: { 4.0, 4.0, 4.0 } );
  10384.  
  10385. fm_set_rendering ( Entity, kRenderFxGlowShell, 0, 120, 240, kRenderNormal, 13 );
  10386.  
  10387. entity_set_int ( Entity, EV_INT_iuser2, id );
  10388.  
  10389. PlantedMines [id] ++;
  10390.  
  10391. set_pev ( Entity, pev_iuser3, PlantedMines [id] );
  10392.  
  10393. entity_set_float ( Entity, EV_FL_frame, 0.0 );
  10394.  
  10395. entity_set_float ( Entity, EV_FL_framerate, 0.0 );
  10396.  
  10397. entity_set_int ( Entity, EV_INT_movetype, MOVETYPE_FLY );
  10398.  
  10399. entity_set_int ( Entity, EV_INT_solid, SOLID_NOT );
  10400.  
  10401. entity_set_int ( Entity, EV_INT_body, 3 );
  10402.  
  10403. entity_set_int ( Entity, EV_INT_sequence, 7 );
  10404.  
  10405. entity_set_float ( Entity, EV_FL_takedamage, DAMAGE_NO );
  10406.  
  10407. entity_set_int ( Entity, EV_INT_iuser1, 0 );
  10408.  
  10409. static Float: NewOrigin [3], Float: EntAngles [3];
  10410.  
  10411. NewOrigin [0] = iTraceResult [0] + ( Normal [0] * 8.0 );
  10412.  
  10413. NewOrigin [1] = iTraceResult [1] + ( Normal [1] * 8.0 );
  10414.  
  10415. NewOrigin [2] = iTraceResult [2] + ( Normal [2] * 8.0 );
  10416.  
  10417. entity_set_origin ( Entity, NewOrigin );
  10418.  
  10419. vector_to_angle ( Normal, EntAngles );
  10420.  
  10421. entity_set_vector ( Entity, EV_VEC_angles, EntAngles );
  10422.  
  10423. EntAngles [0] *= -1.0;
  10424.  
  10425. EntAngles [1] *= -1.0;
  10426.  
  10427. EntAngles [2] *= -1.0;
  10428.  
  10429. entity_set_vector ( Entity, EV_VEC_v_angle, EntAngles );
  10430.  
  10431. HasTripMines [id] --;
  10432.  
  10433. EmitSound ( Entity, CHAN_AUTO, "ZombieOutstanding/mine_deploy.wav" );
  10434.  
  10435. EmitSound ( Entity, CHAN_AUTO, "ZombieOutstanding/mine_charge.wav" );
  10436.  
  10437. entity_set_float ( Entity, EV_FL_nextthink, get_gametime ( ) + 0.6 );
  10438. }
  10439.  
  10440. public fwTakeMines ( id )
  10441. {
  10442. id -= TASK_REMOVE;
  10443.  
  10444. HasRemoving [id] = false;
  10445.  
  10446. static Entity, ClassName [32], Float: OwnerOrigin [3], Float: EntityOrigin [3];
  10447.  
  10448. for ( Entity = 0; Entity < 601; Entity ++ )
  10449. {
  10450. if ( !is_valid_ent ( Entity ) ) continue;
  10451.  
  10452. ClassName [0] = '^0';
  10453.  
  10454. entity_get_classname ( Entity, ClassName );
  10455.  
  10456. if ( equal ( ClassName, "zRises_TripMine" ) )
  10457. {
  10458. if ( entity_get_owner ( Entity ) == id )
  10459. {
  10460. entity_get_vector ( id, EV_VEC_origin, OwnerOrigin );
  10461.  
  10462. entity_get_vector ( Entity, EV_VEC_origin, EntityOrigin );
  10463.  
  10464. if ( get_distance_f ( OwnerOrigin, EntityOrigin ) < 55.0 )
  10465. {
  10466. PlantedMines [id] --;
  10467.  
  10468. HasTripMines [id] ++;
  10469.  
  10470. remove_entity ( Entity );
  10471.  
  10472. break;
  10473. }
  10474. }
  10475. }
  10476. }
  10477. }
  10478.  
  10479. public bool: CanPlant ( id )
  10480. {
  10481. static Float: Origin [3];
  10482.  
  10483. entity_get_vector ( id, EV_VEC_origin, Origin );
  10484.  
  10485. static Float: TraceDirection [3], Float: TraceEnd [3], Float: iTraceResult [3], Float: Normal [3];
  10486.  
  10487. velocity_by_aim ( id, 64, TraceDirection );
  10488.  
  10489. TraceEnd [0] = TraceDirection [0] + Origin [0];
  10490.  
  10491. TraceEnd [1] = TraceDirection [1] + Origin [1];
  10492.  
  10493. TraceEnd [2] = TraceDirection [2] + Origin [2];
  10494.  
  10495. static Float: Fraction, iTr; iTr = 0;
  10496.  
  10497. engfunc ( EngFunc_TraceLine, Origin, TraceEnd, 0, id, iTr );
  10498.  
  10499. get_tr2 ( iTr, TR_vecEndPos, iTraceResult );
  10500.  
  10501. get_tr2 ( iTr, TR_vecPlaneNormal, Normal );
  10502.  
  10503. get_tr2 ( iTr, TR_flFraction, Fraction );
  10504.  
  10505. if ( Fraction >= 1.0 )
  10506. {
  10507. client_print_color ( id, print_team_default, "%s You must plant the tripmine on a wall.", CHAT_PREFIX );
  10508.  
  10509. return false;
  10510. }
  10511.  
  10512. return true;
  10513. }
  10514.  
  10515. public bool: CanTake ( id )
  10516. {
  10517. static Entity, ClassName [32], Float: OwnerOrigin [3], Float: EntityOrigin [3];
  10518.  
  10519. for ( Entity = 0; Entity < 601; Entity ++ )
  10520. {
  10521. if ( !is_valid_ent ( Entity ) ) continue;
  10522.  
  10523. ClassName [0] = '^0';
  10524.  
  10525. entity_get_classname ( Entity, ClassName );
  10526.  
  10527. if ( equal ( ClassName, "zRises_TripMine" ) )
  10528. {
  10529. if ( entity_get_owner ( Entity ) == id )
  10530. {
  10531. entity_get_vector ( id, EV_VEC_origin, OwnerOrigin );
  10532.  
  10533. entity_get_vector ( Entity, EV_VEC_origin, EntityOrigin );
  10534.  
  10535. if ( get_distance_f ( OwnerOrigin, EntityOrigin ) < 55.0 )
  10536.  
  10537. return true;
  10538. }
  10539. }
  10540. }
  10541.  
  10542. return false;
  10543. }
  10544.  
  10545. public fwRemoveMinesByOwner ( id )
  10546. {
  10547. static Entity, ClassName [32];
  10548.  
  10549. for ( Entity = 0; Entity < 601; Entity ++ )
  10550. {
  10551. if ( !is_valid_ent ( Entity ) ) continue;
  10552.  
  10553. ClassName [0] = '^0';
  10554.  
  10555. entity_get_classname ( Entity, ClassName );
  10556.  
  10557. if ( equal ( ClassName, "zRises_TripMine" ) )
  10558.  
  10559. if ( entity_get_int ( Entity, EV_INT_iuser2 ) == id )
  10560.  
  10561. remove_entity ( Entity );
  10562. }
  10563. }
  10564.  
  10565. fwExplodeMine ( Entity )
  10566. {
  10567. PlantedMines [entity_get_owner ( Entity )] --;
  10568.  
  10569. static Float: Origin [3], Float: ZombieOrigin [3], Float: Velocity [3];
  10570.  
  10571. entity_get_vector ( Entity, EV_VEC_origin, Origin );
  10572.  
  10573. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10574. write_byte ( 3 );
  10575. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10576. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10577. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10578. write_short ( HExplode )
  10579. EmitSound ( Entity, CHAN_AUTO, "fvox/flatline.wav" );
  10580. write_byte ( 55 );
  10581. write_byte ( 15 );
  10582. write_byte ( 0 );
  10583. message_end ( );
  10584.  
  10585. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10586. write_byte ( 3 );
  10587. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10588. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10589. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10590. write_short( HExplode );
  10591. EmitSound ( Entity, CHAN_AUTO, "fvox/flatline.wav" );
  10592. write_byte ( 65 );
  10593. write_byte ( 15 );
  10594. write_byte ( 0 );
  10595. message_end ( );
  10596.  
  10597. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10598. write_byte ( 3 );
  10599. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10600. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10601. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10602. write_short ( HExplode );
  10603. EmitSound ( Entity, CHAN_AUTO, "fvox/flatline.wav" );
  10604. write_byte ( 85 );
  10605. write_byte ( 15 );
  10606. write_byte ( 0 );
  10607. message_end ( );
  10608.  
  10609. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10610. write_byte ( 21 );
  10611. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10612. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10613. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10614. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10615. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10616. engfunc ( EngFunc_WriteCoord, Origin [2] + 400.0 );
  10617. write_short ( ExploSpr );
  10618. write_byte ( 0 );
  10619. write_byte ( 0 );
  10620. write_byte ( 4 );
  10621. write_byte ( 60 );
  10622. write_byte ( 0 );
  10623. write_byte ( 121 );
  10624. write_byte ( 121 );
  10625. write_byte ( 121 );
  10626. write_byte ( 200 );
  10627. write_byte ( 0 );
  10628. message_end ( );
  10629.  
  10630. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10631. write_byte ( 21 );
  10632. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10633. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10634. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10635. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10636. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10637. engfunc ( EngFunc_WriteCoord, Origin [2] + 700.0 );
  10638. write_short ( ExploSpr );
  10639. write_byte ( 0 );
  10640. write_byte ( 0 );
  10641. write_byte ( 4 );
  10642. write_byte ( 110 );
  10643. write_byte ( 0 );
  10644. write_byte ( 121 );
  10645. write_byte ( 121 );
  10646. write_byte ( 121 );
  10647. write_byte ( 200 );
  10648. write_byte ( 0 );
  10649. message_end ( );
  10650.  
  10651. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  10652. write_byte ( 21 );
  10653. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10654. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10655. engfunc ( EngFunc_WriteCoord, Origin [2] );
  10656. engfunc ( EngFunc_WriteCoord, Origin [0] );
  10657. engfunc ( EngFunc_WriteCoord, Origin [1] );
  10658. engfunc ( EngFunc_WriteCoord, Origin [2] + 900.0 );
  10659. write_short ( ExploSpr );
  10660. write_byte ( 0 );
  10661. write_byte ( 0 );
  10662. write_byte ( 4 );
  10663. write_byte ( 160 );
  10664. write_byte ( 0 );
  10665. write_byte ( 121 );
  10666. write_byte ( 121 );
  10667. write_byte ( 121 );
  10668. write_byte ( 200 );
  10669. write_byte ( 0 );
  10670. message_end ( );
  10671.  
  10672. static iZombie;
  10673.  
  10674. for ( iZombie = 1; iZombie < MaxPlayers + 1; iZombie ++ )
  10675. {
  10676. if ( is_user_connected ( iZombie ) )
  10677. {
  10678. if ( is_user_alive ( iZombie ) )
  10679. {
  10680. entity_get_vector ( iZombie, EV_VEC_origin, ZombieOrigin );
  10681.  
  10682. if ( get_distance_f ( Origin, ZombieOrigin ) < 340.0 )
  10683. {
  10684. entity_get_vector ( iZombie, EV_VEC_velocity, Velocity );
  10685.  
  10686. Velocity [2] += 240.0;
  10687.  
  10688. Velocity [1] += 200.0;
  10689.  
  10690. Velocity [0] += 160.0;
  10691.  
  10692. entity_set_vector ( iZombie, EV_VEC_velocity, Velocity );
  10693. }
  10694. }
  10695. }
  10696. }
  10697.  
  10698. for ( new i = 1; i < MaxPlayers + 1; i ++ )
  10699. {
  10700. if ( !is_user_connected ( i ) || !is_user_alive ( i ) ) continue;
  10701.  
  10702. if ( IsZombie [i] )
  10703. {
  10704. static Float: fDistance, Float: fDamage;
  10705.  
  10706. fDistance = entity_range ( i, Entity );
  10707.  
  10708. if ( fDistance < 340 )
  10709. {
  10710. fDamage = 2850.0 - fDistance;
  10711.  
  10712. static Float: fVelocity [3];
  10713.  
  10714. pev ( i, pev_velocity, fVelocity );
  10715.  
  10716. xs_vec_mul_scalar ( fVelocity, 1.75, fVelocity );
  10717.  
  10718. set_pev ( i, pev_velocity, fVelocity );
  10719.  
  10720. ScreenFadeEffect ( i, 1.0, 250, 0, 0, fDistance < 220 ? 220 : 205 );
  10721.  
  10722. ScreenShakeEffect ( i, 1.0 );
  10723.  
  10724. if ( float ( get_user_health ( i ) ) - fDamage > 0 )
  10725.  
  10726. ExecuteHamB ( Ham_TakeDamage, i, Entity, entity_get_owner ( Entity ), fDamage, DMG_BLAST );
  10727. else
  10728. ExecuteHamB ( Ham_Killed, i, entity_get_owner ( Entity ), 2 );
  10729.  
  10730. if ( !IsNemesis [i] && !IsAssassin [i] ) fDamage *= 0.75;
  10731.  
  10732. client_print_color ( entity_get_owner ( Entity ), print_team_default, "%s Damage to^4 %s^1 ::^4 %0.0f^1 damage", CHAT_PREFIX, PlayerName [i], fDamage );
  10733. }
  10734. }
  10735. }
  10736.  
  10737. for ( new i = 1; i < MaxPlayers + 1; i ++ )
  10738. {
  10739. if ( !is_user_connected ( i ) || !is_user_alive ( i ) ) continue;
  10740.  
  10741. if ( !IsZombie [i] )
  10742. {
  10743. ScreenShakeEffect ( i, 1.0 )
  10744.  
  10745. if ( entity_range ( i, Entity ) < 340 )
  10746. {
  10747. static Float: fVelocity [3];
  10748.  
  10749. pev ( i, pev_velocity, fVelocity );
  10750.  
  10751. xs_vec_mul_scalar ( fVelocity, 1.5, fVelocity );
  10752.  
  10753. set_pev ( i, pev_velocity, fVelocity );
  10754. }
  10755. }
  10756. }
  10757.  
  10758. remove_entity ( Entity );
  10759. }
  10760.  
  10761. public fwThinkMine ( Entity )
  10762. {
  10763. static Float: GameTime, iStatus;
  10764.  
  10765. GameTime = get_gametime ( );
  10766.  
  10767. iStatus = entity_get_status ( Entity );
  10768.  
  10769. switch ( iStatus )
  10770. {
  10771. case 0:
  10772. {
  10773. entity_set_int ( Entity, EV_INT_iuser1, 1 );
  10774.  
  10775. entity_set_float ( Entity, EV_FL_takedamage, DAMAGE_YES );
  10776.  
  10777. entity_set_int ( Entity, EV_INT_solid, SOLID_BBOX );
  10778.  
  10779. entity_set_float ( Entity, EV_FL_health, 800.0 + 1000.0 );
  10780.  
  10781. EmitSound ( Entity, CHAN_AUTO, "ZombieOutstanding/mine_activate.wav" );
  10782. }
  10783. case 1:
  10784. {
  10785. static Float: Health;
  10786.  
  10787. Health = entity_get_float ( Entity, EV_FL_health );
  10788.  
  10789. if ( is_user_alive ( entity_get_owner ( Entity ) ) )
  10790. {
  10791. if ( entity_get_owner ( Entity ) )
  10792. {
  10793. if ( pev ( Entity, pev_iuser3 ) == 1 )
  10794. {
  10795. set_hudmessage ( 0, 120, 240, 0.08, 0.3, 0, 0.0, 0.12, 2.0, 1.0, -1 ),
  10796.  
  10797. ShowSyncHudMsg ( entity_get_owner ( Entity ), HudMsgSync [0], "First mine's health: %0.0f", Health - 1000.0 );
  10798. }
  10799. else if ( pev ( Entity, pev_iuser3 ) == 2 )
  10800. {
  10801. set_hudmessage ( 0, 120, 240, 0.08, 0.33, 0, 0.0, 0.12, 2.0, 1.0, -1 ),
  10802.  
  10803. ShowSyncHudMsg ( entity_get_owner ( Entity ), HudMsgSync [1], "Second mine's health: %0.0f", Health - 1000.0 );
  10804. }
  10805. }
  10806.  
  10807. if ( Health <= 1000.0 )
  10808. {
  10809. fwExplodeMine ( Entity );
  10810.  
  10811. return FMRES_IGNORED;
  10812. }
  10813. }
  10814. }
  10815. }
  10816.  
  10817. if ( is_valid_ent ( Entity ) )
  10818.  
  10819. entity_set_float ( Entity, EV_FL_nextthink, GameTime + 0.1 );
  10820.  
  10821. return FMRES_IGNORED;
  10822. }
  10823.  
  10824. public fwStartFrame ( )
  10825. {
  10826. iTime = get_gametime ( );
  10827.  
  10828. static id;
  10829.  
  10830. for ( id = 1; id <= MaxPlayers; id ++ )
  10831.  
  10832. JPForward ( id );
  10833. }
  10834.  
  10835. public JPForward ( id )
  10836. {
  10837. if ( !is_user_alive ( id ) && ( IsZombie [id] || IsNemesis [id] || IsSurvivor [id] ) )
  10838.  
  10839. return FMRES_IGNORED;
  10840.  
  10841. if ( !HasJet [id] ) return FMRES_IGNORED;
  10842.  
  10843. if ( JPCal [id] < iTime ){
  10844.  
  10845. JPEnergy ( id );
  10846.  
  10847. JPCal [id] = iTime + 1.0;
  10848. }
  10849.  
  10850. CheckRocket ( id );
  10851.  
  10852. new Clip, Ammo;
  10853.  
  10854. new WeaponID = get_user_weapon ( id, Clip, Ammo );
  10855.  
  10856. if ( WeaponID == CSW_KNIFE || WeaponID != CSW_KNIFE )
  10857. {
  10858. if ( ( pev ( id, pev_button ) & IN_ATTACK2 ) )
  10859. {
  10860. Attack_02 ( id );
  10861. }
  10862. }
  10863. if( ( !( pev ( id, pev_flags ) & FL_ONGROUND ) ) && ( pev ( id, pev_button ) & IN_JUMP && pev ( id, pev_button ) & IN_DUCK ) )
  10864. {
  10865. if ( ( FlyEnergy [id] > 100 * 0.3 ) && ( FlyEnergy [id] <= 100 ) )
  10866. {
  10867. if ( JPSound [id] < iTime )
  10868. {
  10869. EmitSound ( id, CHAN_AUTO, "ZombieOutstanding/jetpack_fly.wav" );
  10870.  
  10871. JPSound [id] = iTime + 1.0;
  10872. }
  10873. }
  10874. else if ( ( FlyEnergy [id] > 0 ) && ( FlyEnergy [id] < 100 * 0.3 ) )
  10875. {
  10876. if ( JPSound [id] < iTime )
  10877. {
  10878. EmitSound ( id, CHAN_AUTO, "ZombieOutstanding/jetpack_blow.wav" );
  10879.  
  10880. JPSound [id] = iTime + 1.0;
  10881. }
  10882. }
  10883.  
  10884. HumanFly ( id );
  10885.  
  10886. Attack_01 ( id );
  10887. }
  10888.  
  10889. return FMRES_IGNORED
  10890. }
  10891. public JPEnergy ( id )
  10892. {
  10893. if ( !( pev ( id, pev_flags ) & FL_ONGROUND ) && pev ( id, pev_button ) & IN_ATTACK )
  10894. {
  10895. new Clip, Ammo;
  10896.  
  10897. new WeaponID = get_user_weapon ( id, Clip, Ammo )
  10898.  
  10899. if ( WeaponID == CSW_KNIFE )
  10900. {
  10901. if ( FlyEnergy [id] > 100 * 0.09 )
  10902.  
  10903. FlyEnergy [id] = FlyEnergy [id] - 10;
  10904. }
  10905. }
  10906. else if ( ( !( pev ( id, pev_flags ) & FL_ONGROUND ) ) && ( pev ( id, pev_button ) & IN_JUMP && pev ( id, pev_button ) & IN_DUCK ) )
  10907. {
  10908. if ( FlyEnergy [id] > 100 * 0.09 )
  10909.  
  10910. FlyEnergy [id] = FlyEnergy [id] - 10;
  10911. }
  10912.  
  10913. if ( pev ( id, pev_flags ) & FL_ONGROUND )
  10914.  
  10915. FlyEnergy [id] = FlyEnergy [id] + 3;
  10916. }
  10917.  
  10918. public Attack_01 ( id )
  10919. {
  10920. if ( Fly [id] )
  10921. {
  10922. static Float: JetpackData_01 [3];
  10923.  
  10924. pev ( id, pev_velocity, JetpackData_01 );
  10925.  
  10926. new Origin [3], Float: Aim [3];
  10927.  
  10928. VelocityByAim ( id, 10, Aim );
  10929.  
  10930. get_user_origin ( id, Origin );
  10931.  
  10932. Origin [0] -= floatround ( Aim [0] );
  10933.  
  10934. Origin [1] -= floatround ( Aim [1] );
  10935.  
  10936. Origin [2] -= floatround ( Aim [2] );
  10937.  
  10938.  
  10939. if( ( pev ( id, pev_button ) & IN_JUMP && pev ( id, pev_button ) & IN_DUCK ) && !( pev ( id, pev_flags ) & FL_ONGROUND ) )
  10940. {
  10941.  
  10942. message_begin ( MSG_ALL,SVC_TEMPENTITY );
  10943. write_byte ( 17 );
  10944. write_coord ( Origin [0] );
  10945. write_coord ( Origin [1] );
  10946. write_coord ( Origin [2] );
  10947. write_short ( xFireBallSpr );
  10948. write_byte ( 9 );
  10949. write_byte ( 180 );
  10950. message_end ( );
  10951.  
  10952. static Float: Speed;
  10953.  
  10954. Speed = floatsqroot ( JetpackData_01 [0] * JetpackData_01 [0] + JetpackData_01 [1] * JetpackData_01 [1] )
  10955.  
  10956. if ( Speed !=0.0 )
  10957. {
  10958. set_pev ( id, EV_INT_movetype,6 );
  10959.  
  10960. set_pev ( id, pev_frame, 0.9 );
  10961. }
  10962.  
  10963. if ( Speed < 350.0 )
  10964.  
  10965. Speed += 100.0;
  10966.  
  10967. static Float: JetpackData_02 [3];
  10968.  
  10969. pev ( id, pev_angles, JetpackData_02 );
  10970.  
  10971. JetpackData_02 [2] = 0.0;
  10972.  
  10973. angle_vector ( JetpackData_02, ANGLEVECTOR_FORWARD, JetpackData_02 );
  10974.  
  10975. JetpackData_02 [0] *= Speed;
  10976.  
  10977. JetpackData_02 [1] *= Speed;
  10978.  
  10979. JetpackData_01 [0] = JetpackData_02 [0];
  10980.  
  10981. JetpackData_01 [1] = JetpackData_02 [1];
  10982. }
  10983.  
  10984. if ( JetpackData_01 [2] < 350.0 && JetpackData_01 [2] > 0.0 )
  10985.  
  10986. JetpackData_01 [2] += 35.0;
  10987.  
  10988. else if ( JetpackData_01 [2] < 0.0 )
  10989.  
  10990. JetpackData_01 [2] += ( 35.0 * 1.15 );
  10991.  
  10992. set_pev ( id, pev_velocity, JetpackData_01 );
  10993. }
  10994. }
  10995.  
  10996. public Attack_02 ( id )
  10997. {
  10998. if ( Rocket [id] )
  10999. {
  11000. new RocketEntity = create_entity ( "info_target" );
  11001.  
  11002. if ( RocketEntity == 0 ) return PLUGIN_CONTINUE;
  11003.  
  11004. entity_set_string ( RocketEntity, EV_SZ_classname, "zRisesJetpackRocket" );
  11005.  
  11006. entity_set_model ( RocketEntity, GetModelRocket );
  11007.  
  11008. entity_set_size ( RocketEntity, Float:{0.0, 0.0, 0.0}, Float: {0.0, 0.0, 0.0} );
  11009.  
  11010. entity_set_int ( RocketEntity, EV_INT_movetype, MOVETYPE_FLY );
  11011.  
  11012. entity_set_int ( RocketEntity, EV_INT_solid, SOLID_BBOX );
  11013.  
  11014. new Float: vSrc [3];
  11015.  
  11016. entity_get_vector ( id, EV_VEC_origin, vSrc );
  11017.  
  11018. new Float: Aim [3], Float: Origin [3];
  11019.  
  11020. VelocityByAim ( id, 64, Aim );
  11021.  
  11022. entity_get_vector ( id, EV_VEC_origin, Origin );
  11023.  
  11024. vSrc [0] += Aim [0];
  11025. vSrc [1] += Aim [1];
  11026.  
  11027. entity_set_origin ( RocketEntity, vSrc );
  11028.  
  11029. new Float: Velocity [3], Float: Angles [3], iOrigin [3]
  11030.  
  11031. VelocityByAim ( id, 1700, Velocity );
  11032.  
  11033. entity_set_vector ( RocketEntity, EV_VEC_velocity, Velocity );
  11034.  
  11035. vector_to_angle ( Velocity, Angles );
  11036.  
  11037. entity_set_vector ( RocketEntity, EV_VEC_angles, Angles );
  11038.  
  11039. entity_set_edict ( RocketEntity,EV_ENT_owner, id );
  11040.  
  11041. entity_set_float ( RocketEntity, EV_FL_takedamage, 1.0 );
  11042.  
  11043. set_pev ( RocketEntity, pev_effects, EF_LIGHT );
  11044.  
  11045. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  11046.  
  11047. write_byte ( 22 );
  11048.  
  11049. write_short ( RocketEntity );
  11050.  
  11051. write_short ( JPSmokeSpr );
  11052.  
  11053. write_byte ( 25 );
  11054.  
  11055. write_byte ( 8 );
  11056.  
  11057. write_byte ( 255 );
  11058.  
  11059. write_byte ( 255 );
  11060.  
  11061. write_byte ( 255 );
  11062.  
  11063. write_byte ( 200 );
  11064.  
  11065. message_end ( );
  11066.  
  11067.  
  11068. message_begin ( MSG_BROADCAST, SVC_TEMPENTITY );
  11069. write_byte ( TE_BEAMTORUS );
  11070. write_coord ( iOrigin [0] );
  11071. write_coord ( iOrigin [1] );
  11072. write_coord ( iOrigin [2] );
  11073. write_coord ( iOrigin [0] );
  11074. write_coord ( iOrigin [1] );
  11075. write_coord ( iOrigin [2] + 10 );
  11076. write_short ( xFireBallSpr );
  11077. write_byte ( 0 );
  11078. write_byte ( 0 );
  11079. write_byte ( 8 );
  11080. write_byte ( 50 );
  11081. write_byte ( 0 );
  11082. write_byte ( 0 );
  11083. write_byte ( 255 );
  11084. write_byte ( 0 );
  11085. write_byte ( 255 );
  11086. write_byte ( 0 );
  11087. message_end ( );
  11088.  
  11089. EmitSound ( RocketEntity, CHAN_AUTO, "ZombieOutstanding/rocket_fire.wav" );
  11090.  
  11091. Shot [id] = true;
  11092.  
  11093. LastRocket [id] = iTime + 12.0;
  11094. }
  11095. return PLUGIN_CONTINUE
  11096. }
  11097.  
  11098. public CheckModels ( id )
  11099. {
  11100. if ( IsZombie [id] || IsNemesis [id] || IsSurvivor [id] ) return FMRES_IGNORED
  11101.  
  11102. if ( HasJet [id] )
  11103. {
  11104. new Clip, Ammo;
  11105.  
  11106. new WeaponID = get_user_weapon ( id, Clip, Ammo );
  11107.  
  11108. if ( WeaponID == CSW_KNIFE )
  11109.  
  11110. SwitchModel ( id );
  11111.  
  11112. return PLUGIN_CONTINUE
  11113. }
  11114. return PLUGIN_CONTINUE
  11115. }
  11116.  
  11117. public SwitchModel ( id )
  11118. {
  11119. entity_set_string ( id,EV_SZ_viewmodel, "models/v_egon.mdl" );
  11120.  
  11121. entity_set_string ( id,EV_SZ_weaponmodel, "models/p_egon.mdl" );
  11122. }
  11123.  
  11124. public RemoveJetpacks ( )
  11125. {
  11126. new NextItem = find_ent_by_class ( -1, "zRisesJetpack" );
  11127.  
  11128. while ( NextItem )
  11129. {
  11130. remove_entity ( NextItem );
  11131.  
  11132. NextItem = find_ent_by_class ( -1, "zRisesJetpack" );
  11133. }
  11134.  
  11135. return PLUGIN_CONTINUE;
  11136. }
  11137.  
  11138. public HumanFly ( id )
  11139. {
  11140. if ( FlyEnergy [id] <= 100 * 0.1 )
  11141. {
  11142. JPOff ( id );
  11143. }
  11144. if ( FlyEnergy [id] > 100 * 0.1 )
  11145. {
  11146. JPOn ( id );
  11147. }
  11148. }
  11149.  
  11150. public JPOn ( id )
  11151. {
  11152. Fly [id] = true;
  11153. }
  11154. public JPOff ( id )
  11155. {
  11156. Fly [id] = false;
  11157. }
  11158.  
  11159. public CheckRocket ( id )
  11160. {
  11161. if ( LastRocket [id] > iTime )
  11162. {
  11163. RK_Forbidden ( id );
  11164.  
  11165. RSound [id] = true;
  11166. }
  11167. else
  11168. {
  11169. if ( Shot [id] )
  11170. {
  11171. RSound [id] = false;
  11172.  
  11173. Shot [id] = false;
  11174. }
  11175.  
  11176. RK_Sound ( id );
  11177.  
  11178. RK_Allow ( id);
  11179. }
  11180. }
  11181.  
  11182. public RK_Allow ( id ) Rocket [id] = true;
  11183.  
  11184.  
  11185. public RK_Forbidden ( id ) Rocket [id] = false;
  11186.  
  11187.  
  11188. public RK_Sound ( id )
  11189. {
  11190. if ( !RSound [id] )
  11191. {
  11192. EmitSound ( id, CHAN_ITEM, "items/9mmclip2.wav" );
  11193.  
  11194. RSound [id] = true;
  11195. }
  11196.  
  11197. }
  11198.  
  11199. public DropJetpack ( id )
  11200. {
  11201. if ( HasJet [id] )
  11202. {
  11203. new Float: Aim [3], Float: Origin [3];
  11204.  
  11205. VelocityByAim ( id, 64, Aim );
  11206.  
  11207. entity_get_vector ( id, EV_VEC_origin, Origin );
  11208.  
  11209. Origin [0] += Aim [0];
  11210.  
  11211. Origin [1] += Aim [1];
  11212.  
  11213. new Jetpack = create_entity ( "info_target" );
  11214.  
  11215. entity_set_string ( Jetpack, EV_SZ_classname, "zRisesJetpack" );
  11216.  
  11217. entity_set_model ( Jetpack, "models/p_egon.mdl" );
  11218.  
  11219. entity_set_size ( Jetpack, Float: {-16.0,-16.0,-16.0}, Float: {16.0,16.0,16.0} );
  11220.  
  11221. entity_set_int ( Jetpack, EV_INT_solid, 1 );
  11222.  
  11223. entity_set_int ( Jetpack, EV_INT_movetype, 6 );
  11224.  
  11225. entity_set_vector ( Jetpack, EV_VEC_origin, Origin ) ;
  11226.  
  11227. HasJet [id] = 0;
  11228.  
  11229. Rocket [id] = false;
  11230. }
  11231. }
  11232.  
  11233. public pfn_touch ( ptr, ptd )
  11234. {
  11235. if( is_valid_ent ( ptr ) )
  11236. {
  11237. new ClassName [32];
  11238.  
  11239. entity_get_string ( ptr, EV_SZ_classname, ClassName, charsmax ( ClassName ) );
  11240.  
  11241. if ( equal ( ClassName, "zRisesJetpack" ) )
  11242. {
  11243. if ( is_valid_ent ( ptd ) )
  11244. {
  11245. new id = ptd;
  11246.  
  11247. if ( id > 0 && id < MaxPlayers + 2 )
  11248. {
  11249. if ( !HasJet [id] && !IsZombie [id] && is_user_alive ( id ) )
  11250. {
  11251. HasJet [id] = 1 ;
  11252.  
  11253. FlyEnergy [id] = 10;
  11254.  
  11255. Rocket [id] = true ;
  11256.  
  11257. EmitSound ( id, CHAN_BODY, "items/gunpickup2.wav" );
  11258.  
  11259. engclient_cmd ( id, "weapon_knife" )
  11260.  
  11261. SwitchModel ( id )
  11262.  
  11263. remove_entity ( ptr )
  11264. }
  11265. }
  11266. }
  11267. }
  11268. else if ( equal ( ClassName, "zRisesJetpackRocket" ) )
  11269. {
  11270. new Float: Origin [3], iOrigin [3];
  11271.  
  11272. entity_get_vector ( ptr, EV_VEC_origin, Origin );
  11273.  
  11274. FVecIVec ( Origin, iOrigin );
  11275.  
  11276. JPRadiusDamage ( ptr );
  11277.  
  11278. message_begin (MSG_BROADCAST, SVC_TEMPENTITY, iOrigin);
  11279. write_byte (3);
  11280. write_coord (iOrigin[0]);
  11281. write_coord (iOrigin[1]);
  11282. write_coord (iOrigin[2]);
  11283. write_short (HExplode)
  11284. write_byte (55);
  11285. write_byte (15);
  11286. write_byte (0);
  11287. message_end ();
  11288.  
  11289. message_begin (MSG_BROADCAST, SVC_TEMPENTITY, iOrigin);
  11290. write_byte (3);
  11291. write_coord (iOrigin[0]);
  11292. write_coord (iOrigin[1]);
  11293. write_coord (iOrigin[2]);
  11294. write_short (HExplode);
  11295. write_byte (65);
  11296. write_byte (15);
  11297. write_byte (0);
  11298. message_end ();
  11299.  
  11300. message_begin (MSG_BROADCAST,SVC_TEMPENTITY,iOrigin);
  11301. write_byte (3)
  11302. write_coord (iOrigin[0]);
  11303. write_coord (iOrigin[1]);
  11304. write_coord (iOrigin[2]);
  11305. write_short (HExplode);
  11306. write_byte (85);
  11307. write_byte (15);
  11308. write_byte (0);
  11309. message_end ();
  11310.  
  11311. message_begin (MSG_ALL,SVC_TEMPENTITY,iOrigin)
  11312. write_byte (21)
  11313. write_coord (iOrigin[0])
  11314. write_coord (iOrigin[1])
  11315. write_coord (iOrigin[2])
  11316. write_coord (iOrigin[0])
  11317. write_coord (iOrigin[1])
  11318. write_coord (iOrigin[2]+650)
  11319. write_short (WhiteSpr)
  11320. write_byte (0)
  11321. write_byte (1)
  11322. write_byte (6)
  11323. write_byte (100)
  11324. write_byte (1)
  11325. write_byte (255)
  11326. write_byte (255)
  11327. write_byte (255)
  11328. write_byte (200)
  11329. write_byte (0)
  11330. message_end ()
  11331.  
  11332. message_begin (MSG_ALL,SVC_TEMPENTITY,iOrigin)
  11333. write_byte (21)
  11334. write_coord (iOrigin[0])
  11335. write_coord (iOrigin[1])
  11336. write_coord (iOrigin[2])
  11337. write_coord (iOrigin[0])
  11338. write_coord (iOrigin[1])
  11339. write_coord (iOrigin[2]+650)
  11340. write_short (WhiteSpr)
  11341. write_byte (0)
  11342. write_byte (1)
  11343. write_byte (6)
  11344. write_byte (100)
  11345. write_byte (1)
  11346. write_byte (255)
  11347. write_byte (255)
  11348. write_byte (255)
  11349. write_byte (200)
  11350. write_byte (0)
  11351. message_end ()
  11352.  
  11353. message_begin (MSG_ALL,SVC_TEMPENTITY,iOrigin)
  11354. write_byte (21)
  11355. write_coord (iOrigin[0])
  11356. write_coord (iOrigin[1])
  11357. write_coord (iOrigin[2])
  11358. write_coord (iOrigin[0])
  11359. write_coord (iOrigin[1])
  11360. write_coord (iOrigin[2]+650)
  11361. write_short (WhiteSpr)
  11362. write_byte (0)
  11363. write_byte (1)
  11364. write_byte (6)
  11365. write_byte (100)
  11366. write_byte (1)
  11367. write_byte (255)
  11368. write_byte (255)
  11369. write_byte (255)
  11370. write_byte (200)
  11371. write_byte (0)
  11372. message_end ()
  11373.  
  11374. if ( is_valid_ent ( ptd ) )
  11375. {
  11376. new ClassName_02 [32];
  11377.  
  11378. entity_get_string ( ptd, EV_SZ_classname, ClassName_02, charsmax ( ClassName_02 ) );
  11379.  
  11380. if ( equal ( ClassName_02, "func_breakable" ) )
  11381.  
  11382. force_use ( ptr, ptd );
  11383. }
  11384.  
  11385. remove_entity ( ptr );
  11386. }
  11387. }
  11388. return PLUGIN_CONTINUE
  11389. }
  11390.  
  11391. public zUserInfectedPre ( id, infector )
  11392. {
  11393. cmdDrop ( id );
  11394.  
  11395. HasJet [id] = 0;
  11396.  
  11397. FlyEnergy [id] = 0;
  11398.  
  11399. Rocket [id] = false;
  11400.  
  11401. IsTryder [id] = false;
  11402.  
  11403. HasUnlimitedClip [id] = false;
  11404.  
  11405. MultiJumps [id] = false;
  11406. }
  11407.  
  11408. public TaskRegenerationHealth ( TaskIndex )
  11409. {
  11410. if ( !IsAlive [ID_REGENERATION] || !IsZombie [ID_REGENERATION] )
  11411. {
  11412. remove_task ( ID_REGENERATION + TASK_REGENERATION );
  11413.  
  11414. return;
  11415. }
  11416.  
  11417. if ( pev ( ID_REGENERATION, pev_health ) <= 10.0 )
  11418. {
  11419. remove_task ( ID_REGENERATION + TASK_REGENERATION );
  11420.  
  11421. return;
  11422. }
  11423.  
  11424. if ( pev ( ID_REGENERATION, pev_health ) < 6300 )
  11425. {
  11426. new RegenerationHealth = pev ( ID_REGENERATION, pev_health ) + 350;
  11427.  
  11428. set_pev ( ID_REGENERATION, pev_health, float ( min ( RegenerationHealth, 6300 ) ) );
  11429.  
  11430. set_hudmessage ( 0, 255, 0, -1.0, 0.0, 0, 6.0, 1.0 );
  11431.  
  11432. ShowSyncHudMsg ( ID_REGENERATION, HudMsgSync [0], "== REGENERATOR ==^nRegeneration: +%d HP Gained !", 350 );
  11433.  
  11434. DoScreenFade ( ID_REGENERATION, 0.10, 0.20, 0, 255, 0, 94 );
  11435.  
  11436. static Origin [3];
  11437.  
  11438. get_user_origin ( ID_REGENERATION, Origin );
  11439.  
  11440. message_begin ( MSG_PVS, SVC_TEMPENTITY, Origin );
  11441.  
  11442. write_byte ( TE_PARTICLEBURST );
  11443.  
  11444. write_coord ( Origin [0] );
  11445.  
  11446. write_coord ( Origin [1] );
  11447.  
  11448. write_coord ( Origin [2] );
  11449.  
  11450. write_short ( 50 );
  11451.  
  11452. write_byte ( 70 );
  11453.  
  11454. write_byte ( 3 );
  11455.  
  11456. message_end ( )
  11457. }
  11458. }
  11459.  
  11460. public TakeGlow ( id ) fm_set_rendering ( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0 );
  11461.  
  11462. stock JPRadiusDamage ( Entity )
  11463. {
  11464. new id = entity_get_edict ( Entity, EV_ENT_owner );
  11465.  
  11466. new Packs;
  11467.  
  11468. for ( new i = 1; i < MaxPlayers + 1; i ++ )
  11469. {
  11470. if ( is_user_alive ( i ) )
  11471. {
  11472. new Distance = floatround ( entity_range ( Entity, i ) );
  11473.  
  11474. if ( Distance <= 600 )
  11475. {
  11476. new HP = get_user_health ( i );
  11477.  
  11478. new Float: Damage = 950.0 - ( 950.0 / 600.0 ) * float ( Distance );
  11479.  
  11480. new Origin [3]; get_user_origin ( i, Origin );
  11481.  
  11482. new iPos = ++ iPosition [id];
  11483.  
  11484. if ( iPos == sizeof ( iCoords ) )
  11485.  
  11486. iPos = iPosition [id] = 0;
  11487.  
  11488.  
  11489. if ( IsZombie [id] != IsZombie [i] )
  11490. {
  11491. if ( Damage >= 800 )
  11492.  
  11493. Packs = 2;
  11494. else
  11495. Packs = 1;
  11496.  
  11497. if ( HP > Damage )
  11498. {
  11499. AmmoPacks [id] += Packs;
  11500.  
  11501. JPTakeDamage ( i, floatround ( Damage ), Origin, DMG_BLAST );
  11502.  
  11503. set_hudmessage ( 0, 40, 80, Float: iCoords [iPos] [0], Float: iCoords [iPos] [1], 0, 0.1, 2.5, 0.02, 0.02, -1 );
  11504.  
  11505. ShowSyncHudMsg ( id, HudMsgSync [3], "%i", floatround ( Damage ) );
  11506.  
  11507. client_print_color ( id, print_team_grey, "%s Damage to^4 %s^1 ::^4 %i^1 damage", CHAT_PREFIX, PlayerName [i], floatround ( Damage ) );
  11508. }
  11509. else
  11510. {
  11511. LogKill ( id, i, "Jetpack Rocket", 0 );
  11512.  
  11513. AmmoPacks [id] += 4;
  11514. }
  11515. }
  11516. }
  11517. }
  11518. }
  11519. }
  11520.  
  11521. stock LogKill ( Killer, Victim, Weapon [ ], Headshot )
  11522. {
  11523. set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_SET );
  11524.  
  11525. ExecuteHamB ( Ham_Killed, Victim, Killer, 2 );
  11526.  
  11527. set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_NOT );
  11528.  
  11529.  
  11530. message_begin ( MSG_BROADCAST, get_user_msgid ( "DeathMsg" ) );
  11531. write_byte ( Killer );
  11532. write_byte ( Victim );
  11533. write_byte ( Headshot );
  11534. write_string ( Weapon );
  11535. message_end ( );
  11536.  
  11537. if ( get_user_team ( Killer ) != get_user_team ( Victim ) )
  11538.  
  11539. set_pev ( Killer, pev_frags, float ( pev ( Killer, pev_frags ) + 1 ) );
  11540.  
  11541. if ( get_user_team ( Killer ) == get_user_team ( Victim ) )
  11542.  
  11543. set_pev ( Killer, pev_frags, float ( pev ( Killer, pev_frags ) - 1 ) );
  11544.  
  11545. new KillerAuthid [32], VictimAuthid [32], KillerTeam [10], VictimTeam [10];
  11546.  
  11547. get_user_team ( Killer, KillerTeam, charsmax ( KillerTeam ) );
  11548.  
  11549. get_user_authid ( Killer, KillerAuthid, charsmax ( KillerAuthid ) );
  11550.  
  11551. get_user_team ( Victim, VictimTeam, charsmax ( VictimTeam ) );
  11552.  
  11553. get_user_authid ( Victim, VictimAuthid, charsmax ( VictimAuthid ) );
  11554.  
  11555. log_message ( "^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", PlayerName [Killer], get_user_userid ( Killer ),
  11556.  
  11557. KillerAuthid, KillerTeam, PlayerName [Victim], get_user_userid ( Victim ), VictimAuthid, VictimTeam, Weapon );
  11558.  
  11559. return PLUGIN_CONTINUE;
  11560. }
  11561.  
  11562. stock JPTakeDamage ( Victim, Damage, Origin [3], Bit )
  11563. {
  11564. message_begin ( MSG_ONE, get_user_msgid ( "Damage" ), {0,0,0}, Victim );
  11565.  
  11566. write_byte ( 21 )
  11567.  
  11568. write_byte ( 20 )
  11569.  
  11570. write_long ( Bit )
  11571.  
  11572. write_coord ( Origin [0] )
  11573.  
  11574. write_coord ( Origin [1] )
  11575.  
  11576. write_coord ( Origin [2] )
  11577.  
  11578. message_end ( )
  11579.  
  11580. fm_set_user_health ( Victim, get_user_health ( Victim ) - Damage );
  11581.  
  11582. EmitSound ( Victim, CHAN_AUTO, "fvox/flatline.wav" );
  11583.  
  11584. ScreenFadeEffect ( Victim, 1.0, 250, 0, 0, 230 );
  11585.  
  11586. ScreenShakeEffect ( Victim, 1.0 );
  11587. }
  11588.  
  11589. public fwTraceLinePost ( Float:start[3], Float:end[3], conditions, id, trace )
  11590. {
  11591. if ( !CheckValidPlayer ( id ) ) return FMRES_IGNORED;
  11592.  
  11593. new iWeaponID = get_user_weapon ( id );
  11594.  
  11595. if ( iWeaponID != CSW_KNIFE )
  11596. {
  11597. OPCancel ( id );
  11598.  
  11599. return FMRES_IGNORED;
  11600. }
  11601.  
  11602. new Enemy = iEnemy [id];
  11603.  
  11604. if ( !Enemy )
  11605. {
  11606. Enemy = get_tr2 ( trace, TR_pHit );
  11607.  
  11608. if ( !CheckValidPlayer (Enemy) || IsZombie [Enemy] )
  11609. {
  11610. OPCancel ( id );
  11611.  
  11612. return FMRES_IGNORED;
  11613. }
  11614.  
  11615. iEnemy [id] = Enemy;
  11616. }
  11617.  
  11618. return FMRES_IGNORED;
  11619. }
  11620.  
  11621. public OPNearEnemy ( id )
  11622. {
  11623. new Enemy = iEnemy [id];
  11624.  
  11625. new Float: Time = get_gametime ( );
  11626.  
  11627. if ( !Enemy || iLastSlash [id] + iDelay > Time )
  11628. {
  11629. InBlink [id] = 0;
  11630.  
  11631. return;
  11632. }
  11633.  
  11634. new Origin [3], OriginEnemy [3];
  11635.  
  11636. get_user_origin ( id, Origin, 0 );
  11637.  
  11638. get_user_origin ( Enemy, OriginEnemy, 0 );
  11639.  
  11640. new Distance = get_distance ( Origin, OriginEnemy );
  11641.  
  11642. if ( 50 <= Distance <= 300 )
  11643. {
  11644. InBlink [id] = 1;
  11645.  
  11646. return;
  11647. }
  11648. else if ( 50 > Distance && InBlink [id] )
  11649. {
  11650. OPSlash ( id );
  11651. }
  11652.  
  11653. OPCancel ( id );
  11654. }
  11655.  
  11656. public OPBlink ( id )
  11657. {
  11658. new Float: NewVelocity [3];
  11659.  
  11660. new Enemy = iEnemy [id];
  11661.  
  11662. new Float: OriginEnemy [3];
  11663.  
  11664. pev ( Enemy, pev_origin, OriginEnemy );
  11665.  
  11666. entity_set_aim ( id, OriginEnemy );
  11667.  
  11668. get_speed_vector2 ( id, Enemy, iSpeed, NewVelocity );
  11669.  
  11670. set_pev ( id, pev_velocity, NewVelocity );
  11671. }
  11672.  
  11673. public OPCancel ( id )
  11674. {
  11675. InBlink [id] = 0;
  11676.  
  11677. iEnemy [id] = 0;
  11678.  
  11679. if ( !iCanceled [id] )
  11680. {
  11681. OPSetBlink ( id );
  11682.  
  11683. iCanceled [id] = 1;
  11684. }
  11685. }
  11686.  
  11687. public OPSlash ( id )
  11688. {
  11689. set_pev ( id, pev_velocity, {0.0,0.0,0.0} );
  11690.  
  11691. new WeaponID = get_user_weapon ( id, _, _ );
  11692.  
  11693. if ( WeaponID == CSW_KNIFE )
  11694. {
  11695. new Weapon [32];
  11696.  
  11697. get_weaponname ( WeaponID, Weapon, charsmax ( Weapon ) );
  11698.  
  11699. new Entity = fm_find_ent_by_owner ( -1, Weapon, id );
  11700.  
  11701. if ( Entity )
  11702. {
  11703. set_pdata_float ( Entity, 46, 0.0 );
  11704.  
  11705. set_pdata_float ( Entity, 47, 0.0 );
  11706.  
  11707. iSlash [id] = 1;
  11708.  
  11709. iLastSlash [id] = get_gametime ( );
  11710.  
  11711. iBlinks [id] -= 1;
  11712.  
  11713. client_print_color ( 0, print_team_grey, "%s^3 %s^1 just used a Knife Blink! (Blinks remaining:^4 %d blinks^1)", CHAT_PREFIX, PlayerName [id], iBlinks [id] );
  11714. }
  11715. }
  11716. }
  11717.  
  11718. public OPSetBlink ( id )
  11719. {
  11720. new Blink = InBlink [id];
  11721.  
  11722. if ( Blink > 1 ) return;
  11723.  
  11724. if ( Blink ) InBlink [id] += 1;
  11725. }
  11726.  
  11727. public CheckValidPlayer ( id )
  11728. {
  11729. if ( 1 <= id <= MaxPlayers && is_user_alive ( id ) )
  11730.  
  11731. return 1;
  11732.  
  11733. return 0;
  11734. }
  11735.  
  11736. stock drop_weapons ( id, dropwhat )
  11737. {
  11738. static Weapons [32], Num, i, WeaponID;
  11739.  
  11740. Num = 0;
  11741.  
  11742. get_user_weapons ( id, Weapons, Num );
  11743.  
  11744. for ( i = 0; i < Num; i ++ )
  11745. {
  11746. WeaponID = Weapons [i];
  11747.  
  11748. if ( ( dropwhat == 1 && ( ( 1 << WeaponID ) & PRIMARY_WEAPONS_BIT_SUM ) ) || ( dropwhat == 2 && ( ( 1 << WeaponID ) & SECONDARY_WEAPONS_BIT_SUM ) ) )
  11749. {
  11750. static DropName [32], WeaponEntity;
  11751.  
  11752. get_weaponname ( WeaponID, DropName, charsmax ( DropName ) );
  11753.  
  11754. WeaponEntity = fm_find_ent_by_owner ( -1, DropName, id );
  11755.  
  11756. set_pev ( WeaponEntity, pev_iuser1, cs_get_user_bpammo ( id, WeaponID ) );
  11757.  
  11758. engclient_cmd ( id, "drop", DropName );
  11759.  
  11760. cs_set_user_bpammo ( id, WeaponID, 0 );
  11761. }
  11762. }
  11763. }
  11764.  
  11765. stock fm_set_kvd ( entity, const key[], const value[], const classname[] )
  11766. {
  11767. set_kvd ( 0, KV_ClassName, classname );
  11768. set_kvd ( 0, KV_KeyName, key );
  11769. set_kvd ( 0, KV_Value, value );
  11770. set_kvd ( 0, KV_fHandled, 0 );
  11771.  
  11772. dllfunc ( DLLFunc_KeyValue, entity, 0 );
  11773. }
  11774.  
  11775. stock fm_set_rendering ( entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16 )
  11776. {
  11777. static Float:color[3];
  11778.  
  11779. color [0] = float (r);
  11780. color [1] = float (g);
  11781. color [2] = float (b);
  11782.  
  11783. set_pev ( entity, pev_renderfx, fx );
  11784. set_pev ( entity, pev_rendercolor, color );
  11785. set_pev ( entity, pev_rendermode, render );
  11786. set_pev ( entity, pev_renderamt, float ( amount ) );
  11787. }
  11788.  
  11789. stock fm_get_speed ( entity )
  11790. {
  11791. static Float: velocity [3];
  11792.  
  11793. pev ( entity, pev_velocity, velocity );
  11794.  
  11795. return floatround ( vector_length ( velocity ) );
  11796. }
  11797.  
  11798. stock fm_get_aim_origin ( id, Float: origin [3] )
  11799. {
  11800. static Float:origin1F[3], Float:origin2F[3]
  11801.  
  11802. pev ( id, pev_origin, origin1F );
  11803.  
  11804. pev ( id, pev_view_ofs, origin2F );
  11805.  
  11806. xs_vec_add ( origin1F, origin2F, origin1F );
  11807.  
  11808. pev ( id, pev_v_angle, origin2F );
  11809.  
  11810. engfunc ( EngFunc_MakeVectors, origin2F );
  11811.  
  11812. global_get ( glb_v_forward, origin2F );
  11813.  
  11814. xs_vec_mul_scalar ( origin2F, 9999.0, origin2F );
  11815.  
  11816. xs_vec_add ( origin1F, origin2F, origin2F );
  11817.  
  11818. engfunc ( EngFunc_TraceLine, origin1F, origin2F, 0, id, 0 );
  11819.  
  11820. get_tr2 ( 0, TR_vecEndPos, origin );
  11821. }
  11822.  
  11823. stock fm_find_ent_by_owner ( entity, const classname[], owner )
  11824. {
  11825. while ( ( entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname ) ) && pev ( entity, pev_owner ) != owner ) { }
  11826.  
  11827. return entity;
  11828. }
  11829.  
  11830. stock fm_set_user_health ( id, health )
  11831. {
  11832. ( health > 0) ? set_pev ( id, pev_health, float ( health ) ) : dllfunc ( DLLFunc_ClientKill, id );
  11833. }
  11834.  
  11835. stock fm_give_item ( id, const item [] )
  11836. {
  11837. static Entity;
  11838.  
  11839. Entity = engfunc ( EngFunc_CreateNamedEntity, engfunc ( EngFunc_AllocString, item ) );
  11840.  
  11841. if ( !pev_valid ( Entity ) ) return;
  11842.  
  11843. static Float: origin [3];
  11844.  
  11845. pev ( id, pev_origin, origin );
  11846.  
  11847. set_pev ( Entity, pev_origin, origin );
  11848.  
  11849. set_pev ( Entity, pev_spawnflags, pev ( Entity, pev_spawnflags ) | SF_NORESPAWN );
  11850.  
  11851. dllfunc ( DLLFunc_Spawn, Entity );
  11852.  
  11853. static Save; Save = pev ( Entity, pev_solid );
  11854.  
  11855. dllfunc ( DLLFunc_Touch, Entity, id );
  11856.  
  11857. if ( pev ( Entity, pev_solid ) != Save ) return;
  11858.  
  11859. engfunc ( EngFunc_RemoveEntity, Entity );
  11860. }
  11861.  
  11862. stock fm_strip_user_weapons ( id )
  11863. {
  11864. static ent;
  11865.  
  11866. ent = engfunc ( EngFunc_CreateNamedEntity, engfunc ( EngFunc_AllocString, "player_weaponstrip" ) );
  11867.  
  11868. if ( !pev_valid ( ent)) return;
  11869.  
  11870. dllfunc ( DLLFunc_Spawn, ent );
  11871.  
  11872. dllfunc ( DLLFunc_Use, ent, id );
  11873.  
  11874. engfunc ( EngFunc_RemoveEntity, ent );
  11875. }
  11876.  
  11877.  
  11878. stock cs_weapon_name_to_id ( const weapon [ ] )
  11879. {
  11880. static i;
  11881.  
  11882. for ( i = 0; i < sizeof WEAPONENTNAMES; i ++ )
  11883. {
  11884. if ( equal ( weapon, WEAPONENTNAMES [i] ) )
  11885. return i;
  11886. }
  11887.  
  11888. return 0;
  11889. }
  11890.  
  11891. stock fmCsGetCurrentWeaponEnt ( id )
  11892. {
  11893. return get_pdata_cbase ( id, 373, 5);
  11894. }
  11895.  
  11896. stock fm_cs_get_weapon_ent_owner ( ent )
  11897. {
  11898. return get_pdata_cbase ( ent, 41, 4 );
  11899. }
  11900.  
  11901. stock fm_set_weapon_ammo ( entity, amount )
  11902. {
  11903. set_pdata_int ( entity, OFFSET_CLIPAMMO, amount, 4 );
  11904. }
  11905.  
  11906. stock fm_cs_set_user_deaths ( id, value )
  11907. {
  11908. set_pdata_int ( id, 444, value, 5 );
  11909. }
  11910.  
  11911. stock fm_cs_get_user_team ( id )
  11912. {
  11913. return get_pdata_int ( id, 114, 5 );
  11914. }
  11915.  
  11916. stock fm_cs_set_user_team ( id, team )
  11917. {
  11918. set_pdata_int ( id, 114, team, 5 );
  11919. }
  11920.  
  11921. stock fm_cs_set_user_money ( id, value )
  11922. {
  11923. set_pdata_int ( id, 115, value, 5 );
  11924. }
  11925.  
  11926. stock fm_user_team_update ( id )
  11927. {
  11928. static Float: CurrentTime;
  11929.  
  11930. CurrentTime = get_gametime ( );
  11931.  
  11932. if ( CurrentTime - TeamsTargetTime >= 0.1 )
  11933. {
  11934. set_task ( 0.1, "fm_cs_set_user_team_msg", id + TASK_TEAM );
  11935.  
  11936. TeamsTargetTime = CurrentTime + 0.1
  11937. }
  11938. else
  11939. {
  11940. set_task ( ( TeamsTargetTime + 0.1 ) - CurrentTime, "fm_cs_set_user_team_msg", id + TASK_TEAM );
  11941.  
  11942. TeamsTargetTime = CurrentTime + 0.1
  11943. }
  11944. }
  11945.  
  11946. public fm_cs_set_user_team_msg ( TaskIndex )
  11947. {
  11948. SwitchingTeam = true;
  11949.  
  11950. emessage_begin ( MSG_ALL, get_user_msgid ( "TeamInfo" ) );
  11951.  
  11952. ewrite_byte ( ID_TEAM );
  11953.  
  11954. ewrite_string ( CS_TEAM_NAMES [fm_cs_get_user_team (ID_TEAM)] );
  11955.  
  11956. emessage_end ( );
  11957.  
  11958. SwitchingTeam = false
  11959.  
  11960. if(IsAlive[ID_TEAM] && g_vip[ID_TEAM] && containi(g_vip_flags[ID_TEAM], "S2") != -1)
  11961. {
  11962. message_begin(MSG_BROADCAST, get_user_msgid("ScoreAttrib"))
  11963. write_byte(ID_TEAM)
  11964. write_byte(4)
  11965. message_end()
  11966. }
  11967. }
  11968.  
  11969.  
  11970. public fm_cs_set_user_model ( TaskIndex )
  11971. {
  11972. set_user_info ( ID_MODEL, "model", PlayerModel [ID_MODEL] );
  11973. }
  11974.  
  11975. stock fm_cs_get_user_model ( player, model [ ], len )
  11976. {
  11977. get_user_info ( player, "model", model, len );
  11978. }
  11979.  
  11980. stock fm_set_user_godmode(index, godmode = 0)
  11981. {
  11982. set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);
  11983.  
  11984. return 1;
  11985. }
  11986.  
  11987. public fmUserModelUpdate ( TaskIndex )
  11988. {
  11989. static Float: CurrentTime;
  11990.  
  11991. CurrentTime = get_gametime ( );
  11992.  
  11993. if ( CurrentTime - ModelTargetTime >= 0.2 )
  11994. {
  11995. fm_cs_set_user_model ( TaskIndex );
  11996.  
  11997. ModelTargetTime = CurrentTime;
  11998. }
  11999. else
  12000. {
  12001. set_task ( ( ModelTargetTime + 0.2 ) - CurrentTime, "fm_cs_set_user_model", TaskIndex );
  12002.  
  12003. ModelTargetTime = ModelTargetTime + 0.2;
  12004. }
  12005. }
  12006.  
  12007. stock client_print_color ( id, iColor = print_team_default, const Msg [ ], any:... )
  12008. {
  12009. if ( id && !is_user_connected ( id ) ) return 0;
  12010.  
  12011. if ( iColor > print_team_grey ) iColor = print_team_default;
  12012.  
  12013. new Message [192];
  12014.  
  12015. if ( iColor == print_team_default )
  12016.  
  12017. Message [0] = 0x04;
  12018.  
  12019. else
  12020.  
  12021. Message [0] = 0x03;
  12022.  
  12023.  
  12024. new iParams = numargs ( )
  12025.  
  12026. if ( id )
  12027. {
  12028. if ( iParams == 3 )
  12029.  
  12030. copy ( Message [1], charsmax ( Message ) -1, Msg );
  12031. else
  12032. vformat ( Message [1], charsmax ( Message ) -1, Msg, 4 );
  12033.  
  12034. if ( iColor )
  12035. {
  12036. new GetTeam [11]; get_user_team ( id, GetTeam, charsmax ( GetTeam ) );
  12037.  
  12038. SendTeamInfo ( id, id, TeamName [iColor] );
  12039.  
  12040. SendSayText ( id, id, Message );
  12041.  
  12042. SendTeamInfo ( id, id, GetTeam );
  12043. }
  12044. else
  12045. SendSayText ( id, id, Message );
  12046. }
  12047. else
  12048. {
  12049. new iPlayers [32], iNum; get_players ( iPlayers, iNum, "ch" );
  12050.  
  12051. if ( !iNum ) return 0;
  12052.  
  12053. new iFool = iPlayers [0];
  12054.  
  12055. if ( iParams == 3 )
  12056.  
  12057. copy ( Message [1], charsmax ( Message ) -1, Msg );
  12058. else
  12059. vformat ( Message [1], charsmax ( Message ) -1, Msg, 4 );
  12060.  
  12061. if ( iColor )
  12062. {
  12063. new GetTeam [11]; get_user_team ( iFool, GetTeam, charsmax ( GetTeam ) );
  12064.  
  12065. SendTeamInfo ( 0, iFool, TeamName [iColor] );
  12066.  
  12067. SendSayText ( 0, iFool, Message);
  12068.  
  12069. SendTeamInfo ( 0, iFool, GetTeam );
  12070. }
  12071.  
  12072. else
  12073.  
  12074. SendSayText ( 0, iFool, Message );
  12075. }
  12076.  
  12077. return 1;
  12078. }
  12079.  
  12080. stock SendTeamInfo ( iReceiver, iPlayerId, GetTeam [] )
  12081. {
  12082. static iTeamInfo = 0;
  12083.  
  12084. if ( !iTeamInfo )
  12085.  
  12086. iTeamInfo = get_user_msgid ( "TeamInfo" );
  12087.  
  12088. message_begin ( iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player = iReceiver );
  12089.  
  12090. write_byte ( iPlayerId );
  12091.  
  12092. write_string ( GetTeam );
  12093.  
  12094. message_end ( );
  12095. }
  12096.  
  12097. stock SendSayText ( iReceiver, iPlayerId, Message [ ] )
  12098. {
  12099. static iSayText = 0;
  12100.  
  12101. if ( !iSayText )
  12102.  
  12103. iSayText = get_user_msgid ( "SayText" );
  12104.  
  12105. message_begin ( iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player = iReceiver );
  12106.  
  12107. write_byte ( iPlayerId );
  12108.  
  12109. write_string ( Message );
  12110.  
  12111. message_end ( );
  12112. }
  12113.  
  12114. public GUNS(TaskIndex)
  12115. {
  12116. static id
  12117. (TaskIndex > MaxPlayers) ? (id = ID_SPAWN) : (id = TaskIndex);
  12118.  
  12119. if (!IsAlive[id] || IsZombie[id] || IsSurvivor[id] || IsSniper[id] || IsBot[id])
  12120. return;
  12121.  
  12122. menu_display( id, g_PrimaryMenu )
  12123. }
  12124.  
  12125. public Fix()
  12126. {
  12127. static i,fpf;
  12128. if(!fpf)fpf=get_maxplayers();
  12129. for(i=1;i<=fpf;i++)
  12130. {
  12131. if(is_user_connected(i))
  12132. Data(i);
  12133. }
  12134. }
  12135.  
  12136. public Calcu()
  12137. {
  12138. static Iterator, ping,fpf;
  12139. if(!fpf)fpf=get_maxplayers();
  12140. for(Iterator=1;Iterator<=fpf;Iterator++ )
  12141. {
  12142. ping=random_num(1,46);
  12143. for (g_Offset[Iterator][0] = 0; g_Offset[Iterator][0] < 4; g_Offset[Iterator][0]++)
  12144. {
  12145. if ((ping - g_Offset[Iterator][0]) % 4 == 0)
  12146. {
  12147. g_Argping[Iterator][0] = (ping - g_Offset[Iterator][0]) / 4;
  12148. break;
  12149. }
  12150. }
  12151. for (g_Offset[Iterator][1] = 0; g_Offset[Iterator][1] < 2; g_Offset[Iterator][1]++)
  12152. {
  12153. if ((ping - g_Offset[Iterator][1]) % 2 == 0){
  12154. g_Argping[Iterator][1] = (ping - g_Offset[Iterator][1]) / 2;
  12155. break;
  12156. }
  12157. }
  12158. g_Argping[Iterator][2] = ping;
  12159. }
  12160. }
  12161.  
  12162. public Data(i)
  12163. {
  12164. static j,send,fpf;
  12165. if(!(pev(i,pev_button)&IN_SCORE)&&!(pev(i,pev_oldbuttons)&IN_SCORE)) return;
  12166. if(!fpf)fpf=get_maxplayers();
  12167. send=0;
  12168. for(j=1;j<=fpf;j++ )
  12169. {
  12170. if(!is_user_connected(j))continue;
  12171. switch(send)
  12172. {
  12173. case 0:
  12174. {
  12175. message_begin(MSG_ONE_UNRELIABLE,SVC_PINGS,_,i);
  12176. write_byte((g_Offset[j][0]*64)+(1+2*(j-1)));
  12177. write_short(g_Argping[j][0]);
  12178. send ++;
  12179. }
  12180. case 1:
  12181. {
  12182. write_byte((g_Offset[j][1]*128)+(2+4*(j-1)));
  12183. write_short(g_Argping[j][1]);
  12184. send ++;
  12185. }
  12186. case 2:
  12187. {
  12188. write_byte((4+8*(j-1)));
  12189. write_short(g_Argping[j][2]);
  12190. write_byte(0);
  12191. message_end();
  12192. send = 0;
  12193. }
  12194. }
  12195. }
  12196. if( send)
  12197. {
  12198. write_byte(0);
  12199. message_end();
  12200. }
  12201. }
  12202.  
  12203. loadPoints(id)
  12204. {
  12205. g_vault = nvault_open("points");
  12206.  
  12207. if (g_vault != INVALID_HANDLE)
  12208. {
  12209. g_iPoints[id] = nvault_get(g_vault, PlayerName[id]);
  12210. nvault_close(g_vault);
  12211. g_vault = INVALID_HANDLE;
  12212. }
  12213. }
  12214.  
  12215. SavePoints(id)
  12216. {
  12217. g_vault = nvault_open("points");
  12218.  
  12219. if (g_vault != INVALID_HANDLE)
  12220. {
  12221. new str[16];
  12222. num_to_str(g_iPoints[id], str, charsmax(str));
  12223.  
  12224. nvault_set(g_vault, PlayerName[id], str);
  12225. nvault_close(g_vault);
  12226. g_vault = INVALID_HANDLE;
  12227. }
  12228. }
  12229.  
  12230. public client_infochanged(id)
  12231. {
  12232. if (!is_user_connected(id))return PLUGIN_CONTINUE;
  12233. static newn[64], oldn[64]
  12234. get_user_name(id,oldn,63)
  12235. get_user_info(id,"name",newn,63)
  12236. if(!equali(oldn,newn)&&strlen(newn)>0)
  12237. {
  12238. new vlt=nvault_open("points")
  12239. if (vlt != INVALID_HANDLE)
  12240. {
  12241. g_iPoints[id]=nvault_get(vlt,newn)
  12242. nvault_close(vlt)
  12243. vlt=INVALID_HANDLE
  12244. }
  12245. }
  12246.  
  12247. if ( !is_user_connected ( id ) || !get_pcvar_num ( AmxMode ) ) return PLUGIN_CONTINUE;
  12248.  
  12249. new NewName [32], OldName [32];
  12250.  
  12251. get_user_name ( id, OldName, charsmax ( OldName ) );
  12252.  
  12253. get_user_info ( id, "name", NewName, charsmax ( NewName ) );
  12254.  
  12255. if ( CaseSensitiveName [id] )
  12256. {
  12257. if ( !equal ( NewName, OldName ) )
  12258. {
  12259. accessUser ( id, NewName );
  12260. }
  12261. }
  12262. else
  12263. {
  12264. if ( !equali ( NewName, OldName ) )
  12265. {
  12266. accessUser ( id, NewName );
  12267. }
  12268. }
  12269.  
  12270. static Name[64] = { 0, ... }, queryData[32] = { 0, ... }, \
  12271. Float:finalChange[33] = { 0.0, ... }, Float:gameTime = 0.0;
  12272.  
  12273. if (is_user_connected(id) == 1 && is_user_bot(id) == 0 && is_user_hltv(id) == 0)
  12274. {
  12275. get_user_info(id, "name", Name, charsmax(Name));
  12276.  
  12277. replace_all(Name, charsmax(Name), "`", "*");
  12278. replace_all(Name, charsmax(Name), "'", "*");
  12279. replace_all(Name, charsmax(Name), "\", "*");
  12280.  
  12281. if (equali(Name, g_Name[id]) == 0)
  12282. {
  12283. resetPlayer(id);
  12284.  
  12285. gameTime = get_gametime();
  12286.  
  12287. if (gameTime < finalChange[id])
  12288. {
  12289. server_cmd("kick #%d %s", get_user_userid(id), Name_Kick_Reason);
  12290. }
  12291.  
  12292. else
  12293. {
  12294. finalChange[id] = gameTime + Name_Change_Interval;
  12295.  
  12296. num_to_str(id, queryData, charsmax(queryData));
  12297.  
  12298. formatex(g_Name[id], charsmax(g_Name[]), "%s", Name);
  12299.  
  12300. get_user_authid(id, g_Steam[id], charsmax(g_Steam[]));
  12301. get_user_ip(id, g_Ip[id], charsmax(g_Ip[]), 1);
  12302.  
  12303. /**
  12304. * -----------------------------------------------------
  12305. * Players
  12306. * -----------------------------------------------------
  12307. * Name
  12308. * Steam
  12309. * Ip
  12310. * Score
  12311. * Kills
  12312. * Deaths
  12313. * headShots
  12314. * Time - The time spent in minutes.
  12315. * timeString - formatted time spent
  12316. * Seen - get_systime() stamp
  12317. * seenString - get_systime() stamp formatted as time string
  12318. * kpdRatio - Kills/ Deaths ratio
  12319. * kmdValue - Kills - Deaths value
  12320. */
  12321. formatex(g_Query, charsmax(g_Query), "SELECT Score, Kills, Deaths, headShots, \
  12322. Time, timeString, Seen, seenString, kpdRatio, kmdValue FROM Players WHERE Name = '%s';", \
  12323. g_Name[id]);
  12324.  
  12325. SQL_ThreadQuery(g_Tuple, "retrieveOrCreatePlayer", g_Query, queryData, sizeof(queryData));
  12326. }
  12327. }
  12328. }
  12329.  
  12330. return PLUGIN_CONTINUE;
  12331. }
  12332.  
  12333. public plugin_end()
  12334. {
  12335. if (g_vault != INVALID_HANDLE)
  12336. {
  12337. nvault_close(g_vault);
  12338. g_vault = INVALID_HANDLE;
  12339. }
  12340.  
  12341. }
  12342.  
  12343. public commandzm(id)
  12344. {
  12345. static menu[ 1248 char ] , len
  12346.  
  12347. len = 0
  12348. len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu^n^n")
  12349. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot))
  12350. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap))
  12351. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap))
  12352. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap))
  12353. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w Armageddon Round\r [%d points]^n^n", get_pcvar_num(cvar_arnd))
  12354. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r0.\w Exit" )
  12355.  
  12356. set_pdata_int(id , 205, 0, 5)
  12357.  
  12358. show_menu(id, KEYS_BUYMENU, menu, -1, "menu_zm")
  12359. }
  12360.  
  12361. public BuyMenuzm(id, key)
  12362. {
  12363. new szName[32]
  12364. get_user_name(id, szName, 31)
  12365.  
  12366. switch(key)
  12367. {
  12368. case 0:
  12369. {
  12370. if (g_iPoints[id] >= get_pcvar_num(cvar_bslot))
  12371. {
  12372. g_slotpass[id] = true
  12373. slot(id)
  12374. g_iPoints[id] -= get_pcvar_num(cvar_bslot)
  12375. }
  12376. else zp_colored_print(id, "^x04[Zombie OutStanding] You don't have enough points!")
  12377. }
  12378. case 1:
  12379. {
  12380. if (g_iPoints[id] >= get_pcvar_num(cvar_100ap))
  12381. {
  12382. AmmoPacks [id] += 100;
  12383. g_iPoints[id] -= get_pcvar_num(cvar_100ap)
  12384. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12385. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 100 ammo packs !!", PlayerName [id] );
  12386. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 100 ammo packs", PlayerName [id]);
  12387. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
  12388. }
  12389. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12390. }
  12391. case 2:
  12392. {
  12393. if (g_iPoints[id] >= get_pcvar_num(cvar_200ap))
  12394. {
  12395. AmmoPacks [id] += 200;
  12396. g_iPoints[id] -= get_pcvar_num(cvar_200ap)
  12397. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12398. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 200 ammo packs !!", PlayerName [id] );
  12399. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 200 ammo packs", PlayerName [id]);
  12400. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
  12401. }
  12402. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12403. }
  12404. case 3:
  12405. {
  12406. if (g_iPoints[id] >= get_pcvar_num(cvar_300ap))
  12407. {
  12408. AmmoPacks [id] += 300;
  12409. g_iPoints[id] -= get_pcvar_num(cvar_300ap)
  12410. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12411. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 300 ammo packs !!", PlayerName [id] );
  12412. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 300 ammo packs", PlayerName [id]);
  12413. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
  12414. }
  12415. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12416. }
  12417. case 4:
  12418. {
  12419. if (g_iPoints[id] >= get_pcvar_num(cvar_arnd))
  12420. {
  12421. if (zHasRoundStarted ( ))
  12422. {
  12423. client_print_color ( id, print_team_default, "%s You can't buy this item!", CHAT_PREFIX );
  12424. g_iPoints[id] >= get_pcvar_num(cvar_arnd)
  12425. return 1
  12426. }
  12427. cmdMakeZombie ( MODE_ARMAGEDDON, 0 );
  12428. remove_task ( TASK_MAKEZOMBIE );
  12429. remove_task ( TASK_ID );
  12430. set_hudmessage ( 205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1 );
  12431. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Armageddon Round through points!", PlayerName [id] );
  12432. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 bought^4 Armageddon Round^1 through points!", PlayerName [id] );
  12433. log_to_file ( "ZombieOutstanding.log", "Player %s bought Armageddon Round through points!", PlayerName [id] );
  12434. }
  12435. }
  12436. default: return PLUGIN_CONTINUE
  12437. }
  12438. return PLUGIN_CONTINUE
  12439. }
  12440.  
  12441. public commandhm(id)
  12442. {
  12443. static menu[ 2048 char ] , len
  12444.  
  12445. len = 0
  12446. len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 1/2^n^n" )
  12447. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Double Damage\r [%d points]^n", get_pcvar_num(cvar_dmg2) )
  12448. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot) )
  12449. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w Buy Admin Model\r [%d points]^n", get_pcvar_num(cvar_bam) )
  12450. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap ))
  12451. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap) )
  12452. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r6.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap) )
  12453. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r7.\w God Mode\r [%d points]^n^n", get_pcvar_num(cvar_god) )
  12454. len += formatex( menu[ len ] , charsmax( menu ) - len , "\d8. Back^n" )
  12455. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r9.\w More^n" )
  12456. len += formatex( menu[ len ], charsmax( menu ) - len, "\r0.\w Exit" )
  12457.  
  12458. set_pdata_int(id , 205, 0, 5)
  12459.  
  12460. show_menu(id, KEYS_BUYMENU, menu, -1, "menu_hm")
  12461. }
  12462.  
  12463. public BuyMenuhm(id, key)
  12464. {
  12465. new szName[32]
  12466. get_user_name(id, szName, 31)
  12467.  
  12468. switch(key)
  12469. {
  12470. case 0:
  12471. {
  12472. if (g_iPoints[id] >= get_pcvar_num(cvar_dmg2))
  12473. {
  12474. g_Damage2[id] = 1
  12475. g_iPoints[id] -= get_pcvar_num(cvar_dmg2)
  12476. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12477. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Double Damage !!", PlayerName [id] );
  12478. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 Double Damage", PlayerName [id]);
  12479. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 Double Damage.")
  12480. return 1
  12481. }
  12482. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12483. }
  12484. case 1:
  12485. {
  12486. if (g_iPoints[id] >= get_pcvar_num(cvar_bslot))
  12487. {
  12488. g_slotpass[id] = true
  12489. slot(id)
  12490. g_iPoints[id] -= get_pcvar_num(cvar_bslot)
  12491. }
  12492. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12493. }
  12494. case 2:
  12495. {
  12496. if (g_iPoints[id] >= get_pcvar_num(cvar_bam))
  12497. {
  12498. g_modelpass[id] = true
  12499. model(id)
  12500. g_iPoints[id] -= get_pcvar_num(cvar_bam)
  12501. }
  12502. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12503. }
  12504. case 3:
  12505. {
  12506. if (g_iPoints[id] >= get_pcvar_num(cvar_100ap))
  12507. {
  12508. AmmoPacks [id] += 100;
  12509. g_iPoints[id] -= get_pcvar_num(cvar_100ap)
  12510. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12511. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 100 ammo packs !!", PlayerName [id] );
  12512. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 100 ammo packs", PlayerName [id]);
  12513. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
  12514. }
  12515. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12516. }
  12517. case 4:
  12518. {
  12519. if (g_iPoints[id] >= get_pcvar_num(cvar_200ap))
  12520. {
  12521. AmmoPacks [id] += 200;
  12522. g_iPoints[id] -= get_pcvar_num(cvar_200ap)
  12523. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12524. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 200 ammo packs !!", PlayerName [id] );
  12525. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 200 ammo packs", PlayerName [id]);
  12526. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
  12527. }
  12528. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12529. }
  12530. case 5:
  12531. {
  12532. if (g_iPoints[id] >= get_pcvar_num(cvar_300ap))
  12533. {
  12534. AmmoPacks [id] += 300;
  12535. g_iPoints[id] -= get_pcvar_num(cvar_300ap)
  12536. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12537. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought 300 ammo packs !!", PlayerName [id] );
  12538. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 300 ammo packs", PlayerName [id]);
  12539. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
  12540. }
  12541. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12542. }
  12543. case 6:
  12544. {
  12545. if (g_iPoints[id] >= get_pcvar_num(cvar_god))
  12546. {
  12547.  
  12548. g_Godmode[id] = true
  12549. fm_set_user_godmode(id, 1)
  12550. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 God Mode.")
  12551. set_hudmessage(212, 0, 177, -1.0, 0.72, 1, 0.0, 5.0, 1.0, 1.0, -1);
  12552. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought God Mode !!", PlayerName [id] );
  12553. zp_colored_print(id, "^x04[Zombie Outstanding]^x03 %s^x01 bought^x04 God Mode", PlayerName [id]);
  12554. g_iPoints[id] -= get_pcvar_num(cvar_god)
  12555. fm_set_rendering ( id, kRenderFxGlowShell, 19,255, 255, 0)
  12556. return 1
  12557. }
  12558. else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12559. }
  12560. case 8: client_cmd(id, "shophm2");
  12561. default: return PLUGIN_CONTINUE
  12562. }
  12563. return PLUGIN_CONTINUE
  12564. }
  12565.  
  12566. public command_buy2(id)
  12567. {
  12568. static menu[ 512 char ] , len
  12569.  
  12570. len = 0
  12571. len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 2/2^n^n")
  12572. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Armageddon Round\r [%d points]^n^n^n^n^n^n^n^n^n", get_pcvar_num(cvar_arnd))
  12573. len += formatex( menu[ len ] , charsmax( menu ) - len , "\r8.\w Back^n")
  12574. len += formatex( menu[ len ] , charsmax( menu ) - len , "\d9. More^n")
  12575. len += formatex( menu[ len ], charsmax( menu ) - len, "\r0. \wExit" )
  12576.  
  12577. set_pdata_int(id , 205, 0, 5)
  12578.  
  12579. show_menu(id, KEYS_BUYMENU, menu, -1, "secondm")
  12580.  
  12581. }
  12582.  
  12583. public BuSubmenu(id, key)
  12584. {
  12585. new szName[32]
  12586. get_user_name(id, szName, 31)
  12587.  
  12588. switch(key)
  12589. {
  12590. case 0:
  12591. {
  12592. if (g_iPoints[id] >= get_pcvar_num(cvar_arnd))
  12593. {
  12594. if (zHasRoundStarted ( ))
  12595. {
  12596. client_print_color ( id, print_team_default, "%s You can't buy this item!", CHAT_PREFIX );
  12597. g_iPoints[id] >= get_pcvar_num(cvar_arnd)
  12598. return 1
  12599. }
  12600.  
  12601. cmdMakeZombie ( MODE_ARMAGEDDON, 0 );
  12602. remove_task ( TASK_MAKEZOMBIE );
  12603. remove_task ( TASK_ID );
  12604. set_hudmessage ( 205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1 );
  12605. ShowSyncHudMsg ( 0, HudMsgSync [0], "%s bought Armageddon Round through points!", PlayerName [id] );
  12606. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^3 %s^1 bought^4 Armageddon Round^1 through points!", PlayerName [id] );
  12607. log_to_file ( "ZombieOutstanding.log", "Player %s bought Armageddon Round through points!", PlayerName [id] );
  12608. }
  12609.  
  12610. else
  12611.  
  12612. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
  12613. }
  12614. case 7: commandhm(id);
  12615. case 8: return PLUGIN_CONTINUE;
  12616. default: return PLUGIN_CONTINUE;
  12617. }
  12618. return PLUGIN_CONTINUE
  12619. }
  12620.  
  12621. public slot(id)
  12622. {
  12623. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  12624.  
  12625. if(get_user_flags(id) & ADMIN_RESERVATION)
  12626. {
  12627. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!");
  12628. return 1
  12629. }
  12630.  
  12631. zp_colored_print(id, "^x04%s^x03 >>^x01 INTRODU PAROLA", TAG);
  12632.  
  12633. new password[16];
  12634. read_args(password, charsmax(password));
  12635. remove_quotes(password);
  12636.  
  12637. if(strlen(password) < 3 || strlen(password) > 15)
  12638. {
  12639. zp_colored_print(id, "^x04%s^x01 Parola^x03 INVALIDA^x01.", TAG);
  12640. zp_colored_print(id, "^x04%s^x03 Parola trebuie sa contina intre^x01 3^x03 si^x01 15 caractere^x03.", TAG);
  12641. zp_colored_print(id, "^x04%s^x01 Reintrodu din nou^x03 parola^x01.", TAG);
  12642.  
  12643. client_cmd(id, "messagemode amx_password_for_slot");
  12644. return PLUGIN_HANDLED;
  12645. }
  12646.  
  12647. new configsDir[64];
  12648. get_configsdir(configsDir, charsmax(configsDir));
  12649. format(configsDir, 63, "%s/Admins.ini", configsDir);
  12650.  
  12651. new name[32];
  12652. get_user_name(id, name, charsmax(name));
  12653.  
  12654. new linetoadd[512];
  12655. formatex(linetoadd, 511, "^r^n^"%s^" ^"%s^" ^"b^"", name, password);
  12656. server_print("Adding: %s", linetoadd);
  12657.  
  12658. if(!write_file(configsDir, linetoadd))
  12659. console_print(id, "%s Failed writing to %s!", TAG, configsDir);
  12660.  
  12661. set_user_info(id, "_pw", password);
  12662. server_cmd("amx_reloadadmins");
  12663.  
  12664. zp_colored_print(id, "^x04%s^x01 Felicitari Ai devenit SLOT (parola ta:^x04 %s^x01)", TAG, password);
  12665. zp_colored_print(id, "^x04%s^x01 Felicitari Ai devenit SLOT (parola ta:^x04 %s^x01)", TAG, password);
  12666.  
  12667. console_print(id, "");
  12668. console_print(id, "****************************");
  12669. console_print(id, "Done! You have now Slot access!");
  12670. console_print(id, "Be careful, to login with your account,");
  12671. console_print(id, "You should type in your console");
  12672. console_print(id, "setinfo _pw ^"password^"");
  12673. console_print(id, "We hope you enjoy you have fun!");
  12674. console_print(id, "****************************");
  12675. console_print(id, "");
  12676. server_cmd("kick #%d Check your console!", get_user_userid(id));
  12677.  
  12678. return PLUGIN_CONTINUE;
  12679. }
  12680.  
  12681.  
  12682. public model(id)
  12683. {
  12684. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  12685.  
  12686. if(get_user_flags(id) & ADMIN_RESERVATION)
  12687. {
  12688. zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!");
  12689. return 1
  12690. }
  12691.  
  12692. zp_colored_print(id, "^x04%s^x03 >>^x01 INTRODU PAROLA", TAG);
  12693.  
  12694. new password[16];
  12695. read_args(password, charsmax(password));
  12696. remove_quotes(password);
  12697.  
  12698. if(strlen(password) < 3 || strlen(password) > 15)
  12699. {
  12700. zp_colored_print(id, "^x04%s^x01 Parola^x03 INVALIDA^x01.", TAG);
  12701. zp_colored_print(id, "^x04%s^x03 Parola trebuie sa contina intre^x01 3^x03 si^x01 15 caractere^x03.", TAG);
  12702. zp_colored_print(id, "^x04%s^x01 Reintrodu din nou^x03 parola^x01.", TAG);
  12703.  
  12704. client_cmd(id, "messagemode amx_password_for_model");
  12705. return PLUGIN_HANDLED;
  12706. }
  12707.  
  12708. new configsDir[64];
  12709. get_configsdir(configsDir, charsmax(configsDir));
  12710. format(configsDir, 63, "%s/Admins.ini", configsDir);
  12711.  
  12712. new name[32];
  12713. get_user_name(id, name, charsmax(name));
  12714.  
  12715. new linetoadd[512];
  12716. formatex(linetoadd, 511, "^r^n^"%s^" ^"%s^" ^"b^"", name, password);
  12717. server_print("Adding: %s", linetoadd);
  12718.  
  12719. if(!write_file(configsDir, linetoadd))
  12720. console_print(id, "%s Failed writing to %s!", TAG, configsDir);
  12721.  
  12722. set_user_info(id, "_pw", password);
  12723. server_cmd("amx_reloadadmins");
  12724.  
  12725. zp_colored_print(id, "^x04%s^x01 Felicitari Ai Admin Model (parola ta:^x04 %s^x01)", TAG, password);
  12726. zp_colored_print(id, "^x04%s^x01 Felicitari Ai Admin Model (parola ta:^x04 %s^x01)", TAG, password);
  12727.  
  12728. console_print(id, "");
  12729. console_print(id, "****************************");
  12730. console_print(id, "Done! You have now admin models access!");
  12731. console_print(id, "Be careful, to login with your account,");
  12732. console_print(id, "You should type in your console");
  12733. console_print(id, "setinfo _pw ^"password^"");
  12734. console_print(id, "We hope you enjoy you have fun!");
  12735. console_print(id, "****************************");
  12736. console_print(id, "");
  12737. server_cmd("kick #%d Check your console!", get_user_userid(id));
  12738.  
  12739. return PLUGIN_CONTINUE;
  12740. }
  12741.  
  12742. zp_colored_print(target, const message[], any:...)
  12743. {
  12744. static buffer[512], i, argscount
  12745. argscount = numargs()
  12746.  
  12747. if (!target)
  12748. {
  12749. static player
  12750. for (player = 1; player <= MaxPlayers; player++)
  12751. {
  12752. if (!is_user_connected(player))
  12753. continue;
  12754.  
  12755. static changed[5], changedcount
  12756. changedcount = 0
  12757.  
  12758. for (i = 2; i < argscount; i++)
  12759. {
  12760. if (getarg(i) == LANG_PLAYER)
  12761. {
  12762. setarg(i, 0, player)
  12763. changed[changedcount] = i
  12764. changedcount++
  12765. }
  12766. }
  12767.  
  12768. vformat(buffer, charsmax(buffer), message, 3)
  12769.  
  12770. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
  12771. write_byte(player)
  12772. write_string(buffer)
  12773. message_end()
  12774.  
  12775. for (i = 0; i < changedcount; i++)
  12776. setarg(changed[i], 0, LANG_PLAYER)
  12777. }
  12778. }
  12779.  
  12780. else
  12781.  
  12782. {
  12783. vformat(buffer, charsmax(buffer), message, 3)
  12784.  
  12785. message_begin(MSG_ONE, g_msgSayText, _, target)
  12786. write_byte(target)
  12787. write_string(buffer)
  12788. message_end()
  12789. }
  12790. }
  12791.  
  12792. stock bool:is_hull_vacant(const Float:origin[3], hull,id)
  12793. {
  12794. static tr
  12795. engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
  12796. if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
  12797. return true
  12798. return false
  12799. }
  12800.  
  12801. stock is_player_stuck ( id )
  12802. {
  12803. static Float:origin [3];
  12804.  
  12805. pev ( id, pev_origin, origin );
  12806.  
  12807. engfunc ( EngFunc_TraceHull, origin, origin, 0, ( pev ( id, pev_flags ) & FL_DUCKING ) ? HULL_HEAD : HULL_HUMAN, id, 0 );
  12808.  
  12809. if ( get_tr2 ( 0, TR_StartSolid ) || get_tr2 ( 0, TR_AllSolid ) || !get_tr2 ( 0, TR_InOpen ) )
  12810.  
  12811. return true;
  12812.  
  12813. return false;
  12814. }
  12815.  
  12816.  
  12817. public remove_ds(id)
  12818. {
  12819. if(has_item[id] || using_item[id])
  12820. {
  12821. has_item[id] = false
  12822. using_item[id] = false
  12823.  
  12824. if(task_exists(id+TASK_HUD)) remove_task(id+TASK_HUD)
  12825. if(task_exists(id+TASK_REMOVE2)) remove_task(id+TASK_REMOVE2)
  12826. }
  12827. }
  12828.  
  12829. public remove_headshot_mode(id)
  12830. {
  12831. id -= TASK_REMOVE2
  12832.  
  12833. has_item[id] = false
  12834. using_item[id] = false
  12835.  
  12836. if(task_exists(id+TASK_HUD)) remove_task(id+TASK_HUD)
  12837. }
  12838.  
  12839. public RE()
  12840. {
  12841. new flags
  12842. for(new i = 1; i <= get_maxplayers(); i++)
  12843. {
  12844. if (is_user_connected(i) && g_bFrozen[i])
  12845. {
  12846. g_bFrozen[i]=false
  12847. flags=pev(i,pev_flags)
  12848. if (flags&FL_FROZEN)
  12849. flags&=~FL_FROZEN, set_pev(i,pev_flags,flags)
  12850. removefrendering(i)
  12851. }
  12852. }
  12853. }
  12854.  
  12855. removefrendering(i)
  12856. {
  12857. static Float:vec[3], Float:amt
  12858. entity_get_vector(i,EV_VEC_rendercolor,vec)
  12859. amt=entity_get_float(i,EV_FL_renderamt)
  12860.  
  12861. if (vec[0]==0.0 && vec[1]==90.0 && vec[2]==128.0&&amt==30.0)
  12862. fm_set_rendering(i)
  12863. }
  12864.  
  12865. public TaskHudMessages ( )
  12866. {
  12867. static i, Msg [512];
  12868.  
  12869. for ( i = 1; i <= get_maxplayers ( ); i ++ )
  12870. {
  12871. if ( is_user_connected ( i ) && !is_user_bot ( i ) )
  12872. {
  12873. set_hudmessage ( random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 2, 0.5, 8.0, 0.05, 0.05, -1 );
  12874.  
  12875. ArrayGetString ( GetMessages, random_num ( 0,ArraySize ( GetMessages ) -1 ), Msg, 511 );
  12876.  
  12877. ShowSyncHudMsg ( i, Handler, Msg );
  12878. }
  12879. }
  12880. }
  12881.  
  12882. public cmdWho ( id )
  12883. {
  12884. new Players [32], Num, iPlayers, Name [32], StringFlags [27];
  12885.  
  12886. get_players ( Players, Num );
  12887.  
  12888. for ( new i = 0; i < Num ; i ++ )
  12889. {
  12890. iPlayers = Players [i];
  12891.  
  12892. get_user_name ( iPlayers, Name, charsmax ( Name ) );
  12893.  
  12894. GetUserFlagsString ( iPlayers, StringFlags, charsmax ( StringFlags ) );
  12895.  
  12896. if ( is_user_admin ( iPlayers ) || PlayerHasTag [iPlayers] )
  12897.  
  12898. console_print ( id, "* %s%s%s%s%s", Name, PlayerHasTag [iPlayers] ? " - " : "", PlayerHasTag [iPlayers] ? PlayerTag [iPlayers] : "", is_user_admin ( iPlayers ) ? " - " : "", is_user_admin ( iPlayers ) ? StringFlags : "" );
  12899. }
  12900.  
  12901. return PLUGIN_HANDLED;
  12902. }
  12903.  
  12904. GetUserFlagsString ( id, Flags [ ], Len ) return get_flags ( get_user_flags ( id ), Flags, Len );
  12905.  
  12906. public fwClientInfoChanged ( id, Buffer )
  12907. {
  12908. if ( !is_user_connected ( id ) ) return FMRES_IGNORED;
  12909.  
  12910. new NewName [32], OldName [32];
  12911.  
  12912. get_user_name ( id, OldName, charsmax ( OldName ) )
  12913.  
  12914. engfunc ( EngFunc_InfoKeyValue, Buffer, "name", NewName, charsmax ( NewName ) );
  12915.  
  12916. if ( !equal ( OldName, NewName ) )
  12917. {
  12918. set_task ( 1.0, "TaskCheckName", id );
  12919.  
  12920. set_task ( 0.1, "LoadPlayerTag", id );
  12921. }
  12922.  
  12923. return FMRES_IGNORED;
  12924. }
  12925.  
  12926. public TaskCheckName ( id )
  12927. {
  12928. if ( is_user_connected ( id ) && !is_user_bot ( id ) && !is_user_hltv ( id ) )
  12929. {
  12930. static Name [32], i;
  12931.  
  12932. get_user_name ( id, Name, charsmax ( Name ) );
  12933.  
  12934. new HostName [64]; get_cvar_string ( "hostname", HostName, charsmax ( HostName ) );
  12935.  
  12936. for ( i = 0; i < WordsCount; i ++ )
  12937. {
  12938. if ( containi ( Name, RestrictedNames [i] ) != -1 )
  12939. {
  12940. set_user_info ( id, "name", HostName );
  12941.  
  12942. break;
  12943. }
  12944. }
  12945. }
  12946. }
  12947.  
  12948. public CheckSay ( id )
  12949. {
  12950. if ( !is_user_connected ( id ) ) return PLUGIN_HANDLED_MAIN;
  12951.  
  12952. new Args [194]; read_args ( Args, charsmax ( Args ) )
  12953.  
  12954. remove_quotes ( Args );
  12955.  
  12956. for ( new i = 0; i < sizeof ( BlockTexts ); i ++ )
  12957. {
  12958. if ( containi ( Args, BlockTexts [i]) != -1 )
  12959.  
  12960. return PLUGIN_HANDLED;
  12961. }
  12962.  
  12963. new iAlive = is_user_alive ( id );
  12964.  
  12965. new CsTeams: iTeam = cs_get_user_team ( id );
  12966.  
  12967. new iPlayers [32], iNum;
  12968.  
  12969. get_players ( iPlayers, iNum );
  12970.  
  12971. new Name [32]; get_user_name ( id, Name, charsmax ( Name ) );
  12972.  
  12973. new const Prefixes [2] [CsTeams] [ ] =
  12974. {
  12975. {
  12976. "^1*DEAD*^1 ",
  12977. "^1*DEAD*^1 ",
  12978. "^1*DEAD*^1 ",
  12979. "^1*SPEC*^1 "
  12980. },
  12981. {
  12982. "",
  12983. "",
  12984. "",
  12985. ""
  12986. }
  12987. };
  12988.  
  12989. new Message [192];
  12990.  
  12991. if ( PlayerHasTag [id] )
  12992.  
  12993. formatex ( Message, charsmax ( Message ), "%s^4%s^3 %s^4 :^1 %s", Prefixes [iAlive] [iTeam], PlayerTag [id], Name, Args );
  12994.  
  12995. else
  12996.  
  12997. formatex ( Message, charsmax ( Message ), "%s^3%s^4 :^1 %s", Prefixes [iAlive] [iTeam], Name, Args );
  12998.  
  12999.  
  13000. new iTarget;
  13001.  
  13002. for( new i = 0; i < iNum; i ++ )
  13003. {
  13004. iTarget = iPlayers [i];
  13005.  
  13006. if ( iTarget == id || ( iAlive || is_user_connected ( iTarget ) ) )
  13007. {
  13008. switch ( get_user_team ( id ) )
  13009. {
  13010. case 1: client_print_color ( iTarget, print_team_red, Message );
  13011.  
  13012. case 2: client_print_color ( iTarget, print_team_blue, Message );
  13013.  
  13014. case 3: client_print_color ( iTarget, print_team_grey, Message );
  13015. }
  13016. }
  13017. }
  13018.  
  13019. return PLUGIN_HANDLED_MAIN;
  13020. }
  13021.  
  13022. public CheckSayTeam ( id )
  13023. {
  13024. if ( !is_user_connected ( id ) ) return PLUGIN_HANDLED_MAIN;
  13025.  
  13026. new Args [194]; read_args ( Args, charsmax ( Args ) )
  13027.  
  13028. remove_quotes ( Args );
  13029.  
  13030. for ( new i = 0; i < sizeof ( BlockTexts ); i ++ )
  13031. {
  13032. if ( containi ( Args, BlockTexts [i]) != -1 )
  13033.  
  13034. return PLUGIN_HANDLED;
  13035. }
  13036.  
  13037. new iAlive = is_user_alive ( id );
  13038.  
  13039. new CsTeams: iTeam = CsTeams:( ( _:cs_get_user_team ( id ) ) % 3 );
  13040.  
  13041. new iPlayers [32], iNum;
  13042.  
  13043. get_players ( iPlayers, iNum );
  13044.  
  13045. new Name [32]; get_user_name ( id, Name, charsmax ( Name ) );
  13046.  
  13047. new const Prefixes [2] [CsTeams] [ ] =
  13048. {
  13049. {
  13050. "^4(^1Spectator^4)^1 ",
  13051. "^1*DEAD*^4 (^1Zombies^4)^1 ",
  13052. "^1*DEAD*^4 (^1Humans^4)^1 ",
  13053. ""
  13054. },
  13055. {
  13056. "^4(^1Spectator^4)^1 ",
  13057. "^4(^1Zombies^4)^1 ",
  13058. "^4(^1Humans^4)^1 ",
  13059. ""
  13060. }
  13061. };
  13062.  
  13063. new Message [192];
  13064.  
  13065. if ( PlayerHasTag [id])
  13066.  
  13067. formatex ( Message, charsmax ( Message ), "%s^4%s ^3%s^4 :^1 %s", Prefixes [iAlive] [iTeam], PlayerTag [id], Name, Args );
  13068. else
  13069. formatex ( Message, charsmax ( Message ), "%s^3%s^4 :^1 %s", Prefixes [iAlive] [iTeam], Name, Args );
  13070.  
  13071.  
  13072. for ( new i = 0, iTeamMate; i < iNum; i ++ )
  13073. {
  13074. iTeamMate = iPlayers [i];
  13075.  
  13076. if ( iTeamMate == id || ( iAlive || is_user_connected ( iTeamMate ) ) && CsTeams:( ( _:cs_get_user_team ( iTeamMate ) ) % 3 ) == iTeam )
  13077. {
  13078. switch ( get_user_team ( id ) )
  13079. {
  13080. case 1: client_print_color ( iTeamMate, print_team_red, Message );
  13081.  
  13082. case 2: client_print_color ( iTeamMate, print_team_blue, Message );
  13083.  
  13084. case 3: client_print_color ( iTeamMate, print_team_grey, Message );
  13085. }
  13086. }
  13087. }
  13088.  
  13089. return PLUGIN_HANDLED_MAIN;
  13090. }
  13091.  
  13092. public cmdReloadTags ( id )
  13093. {
  13094. if ( !( get_user_flags ( id ) & ADMIN_IMMUNITY & ADMIN_PASSWORD ) )
  13095.  
  13096. return PLUGIN_CONTINUE;
  13097.  
  13098. new Players [32], Num;
  13099.  
  13100. get_players ( Players, Num, "c" );
  13101.  
  13102. for ( new i = 0 ; i < Num ; i ++ )
  13103. {
  13104. PlayerHasTag [Players [i] ] = false;
  13105.  
  13106. LoadPlayerTag ( Players [i] );
  13107. }
  13108.  
  13109. console_print ( id, "* Tags have been loaded successfully !" );
  13110.  
  13111. return PLUGIN_HANDLED;
  13112. }
  13113.  
  13114. public LoadPlayerTag ( id )
  13115. {
  13116. PlayerHasTag[ id ] = false;
  13117.  
  13118. new FileOpen = fopen ( File, "rt" );
  13119.  
  13120. if ( !FileOpen ) return PLUGIN_CONTINUE;
  13121.  
  13122. new Data [512], Buffer [2] [32];
  13123.  
  13124. while ( !feof ( FileOpen ) )
  13125. {
  13126. fgets ( FileOpen, Data, charsmax ( Data ) );
  13127.  
  13128. if ( !Data [0] || Data [0] == ';' || ( Data [0] == '/' && Data [1] == '/' ) )
  13129.  
  13130. continue;
  13131.  
  13132. parse ( Data, Buffer [0], charsmax ( Buffer [ ] ), Buffer [1], charsmax ( Buffer [ ] ) )
  13133.  
  13134. new Name [32]; get_user_name ( id, Name, charsmax ( Name ) );
  13135.  
  13136. if ( equal ( Name, Buffer [0] ) )
  13137. {
  13138. PlayerHasTag [id] = true;
  13139.  
  13140. copy ( PlayerTag [id], charsmax ( PlayerTag [ ] ), Buffer [1] );
  13141.  
  13142. break;
  13143. }
  13144. }
  13145.  
  13146. return PLUGIN_CONTINUE;
  13147. }
  13148.  
  13149. public CheckGag ( id )
  13150. {
  13151. new Message [192]; read_args ( Message, charsmax ( Message ) );
  13152.  
  13153. remove_quotes ( Message );
  13154.  
  13155. if ( !UTIL_IsValidMessage ( Message ) ) return PLUGIN_HANDLED;
  13156.  
  13157. if ( PlayerGagged [id] == 1 )
  13158. {
  13159. PlayerGagged [id] = 1;
  13160.  
  13161. client_print_color ( id, print_team_grey, "%s You are gagged now by^3 %s^1. Time Remaining:^4 %i^1 minute%s", CHAT_PREFIX, gName, PlayerGagTime [id], PlayerGagTime [id] == 1 ? "" : "s" );
  13162.  
  13163. return PLUGIN_HANDLED;
  13164. }
  13165.  
  13166. return PLUGIN_CONTINUE;
  13167. }
  13168.  
  13169. public cmdGag ( id )
  13170. {
  13171. if ( !( get_user_flags ( id ) & ADMIN_KICK ) ) return PLUGIN_HANDLED;
  13172.  
  13173. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13174.  
  13175. new Arg [32], Minutes [3];
  13176.  
  13177. read_argv ( 1, Arg, charsmax ( Arg ) );
  13178.  
  13179. read_argv ( 2, Minutes, charsmax ( Minutes ) );
  13180.  
  13181. new Player = cmd_target ( id, Arg, CMDTARGET_ALLOW_SELF );
  13182.  
  13183. if ( !Player ) return PLUGIN_HANDLED;
  13184.  
  13185. new iMinutes = str_to_num ( Minutes );
  13186.  
  13187. if ( PlayerGagged [Player] == 1 )
  13188. {
  13189. console_print ( id, "%s Player ^"%s^" has gagged now.", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13190.  
  13191. return PLUGIN_HANDLED;
  13192. }
  13193.  
  13194. PlayerGagged [Player] = 1;
  13195.  
  13196. PlayerGagTime [Player] = iMinutes;
  13197.  
  13198. copy ( gName, charsmax ( gName ), GetInfo ( id, INFO_NAME ) );
  13199.  
  13200. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 gag^3 %s^1", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ) );
  13201.  
  13202. return PLUGIN_HANDLED;
  13203. }
  13204.  
  13205. public cmdUnGag ( id )
  13206. {
  13207. if ( !( get_user_flags ( id ) & ADMIN_KICK ) ) return PLUGIN_HANDLED;
  13208.  
  13209. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13210.  
  13211. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13212.  
  13213. new Player = cmd_target ( id, Arg, CMDTARGET_ALLOW_SELF );
  13214.  
  13215. if ( !Player ) return PLUGIN_HANDLED;
  13216.  
  13217. if ( PlayerGagged [Player] == 0 )
  13218. {
  13219. console_print ( id, "%s Player ^"%s^" not gagged.", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13220.  
  13221. return PLUGIN_HANDLED;
  13222. }
  13223.  
  13224.  
  13225. PlayerGagged [Player] = 0;
  13226.  
  13227. PlayerGagTime [Player] = 0;
  13228.  
  13229. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 ungag^3 %s", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ))
  13230. return PLUGIN_HANDLED;
  13231. }
  13232.  
  13233. public fwGagThinker ( iEntity )
  13234. {
  13235. if ( pev_valid( iEntity ) )
  13236. {
  13237. set_pev( iEntity, pev_nextthink, get_gametime ( ) + 1.0 );
  13238.  
  13239. new id;
  13240.  
  13241. for ( id = 1; id <= MaxPlayers; id ++ )
  13242. {
  13243. if ( is_user_connected ( id ) && !is_user_bot ( id ) && PlayerGagged [id] == 1 && PlayerGagTime [id] > 0
  13244.  
  13245. && ( ( get_systime ( ) - JoinTime [id] ) >= 60 ) )
  13246. {
  13247. JoinTime [id] = get_systime ( );
  13248.  
  13249. PlayerGagTime [id] -= 1;
  13250.  
  13251. if ( PlayerGagTime [id] <= 0 )
  13252. {
  13253. PlayerGagTime [id] = 0;
  13254.  
  13255. PlayerGagged [id] = 0;
  13256.  
  13257. client_print_color ( id, print_team_default, "%s You are ungagged now.", CHAT_PREFIX );
  13258. }
  13259. }
  13260. }
  13261. }
  13262. }
  13263.  
  13264. public cmdKick ( id )
  13265. {
  13266. if ( !( get_user_flags ( id ) & ADMIN_KICK ) ) return PLUGIN_HANDLED;
  13267.  
  13268. if ( read_argc ( ) < 2 )
  13269. {
  13270. console_print(id, "[Zombie Outstanding] Command usage is amx_kick <#userid or name> [reason]");
  13271. return 1;
  13272. }
  13273.  
  13274. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13275.  
  13276. new Player = cmd_target ( id, Arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF );
  13277.  
  13278. if ( !Player ) return PLUGIN_HANDLED;
  13279.  
  13280. new Reason [32]; read_argv ( 2, Reason, charsmax ( Reason ) );
  13281.  
  13282. remove_quotes ( Reason );
  13283.  
  13284. if ( is_user_bot ( Player ) )
  13285.  
  13286. server_cmd ( "kick #%d You are kicked!", get_user_userid ( Player ) );
  13287. else
  13288. {
  13289. if ( Reason [0] )
  13290. {
  13291.  
  13292. server_cmd ( "kick #%d ^"%s^"", get_user_userid ( Player ), Reason );
  13293. }
  13294. else
  13295. {
  13296. server_cmd("kick #%d You are kicked!", get_user_userid ( Player ) );
  13297. }
  13298. }
  13299.  
  13300. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 kicked^4 %s^1 due to^3 %s", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ), Reason );
  13301.  
  13302. console_print ( id, "%s Client ^"%s^" kicked", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13303.  
  13304. return PLUGIN_HANDLED;
  13305. }
  13306.  
  13307. public cmdUnban ( id )
  13308. {
  13309. if ( !( get_user_flags ( id ) & ADMIN_BAN ) ) return PLUGIN_HANDLED;
  13310.  
  13311. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13312.  
  13313. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13314.  
  13315. if ( contain ( Arg, "." ) != -1 )
  13316. {
  13317. server_cmd ( "removeip ^"%s^";writeip", Arg )
  13318.  
  13319. console_print ( id, "%s Ip ^"%s^" removed from ban list", CONSOLE_PREFIX, Arg );
  13320. }
  13321. else
  13322. {
  13323. server_cmd ( "removeid ^"%s^";writeid", Arg );
  13324.  
  13325. console_print ( id, "%s Authid ^"%s^" removed from ban list", CONSOLE_PREFIX, Arg );
  13326. }
  13327.  
  13328. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 UnBan^4 %s^3", GetInfo ( id, INFO_NAME ), Arg );
  13329.  
  13330. return PLUGIN_HANDLED;
  13331. }
  13332.  
  13333. public cmdAddBan ( id, level, cid )
  13334. {
  13335. if ( !( get_user_flags ( id ) & ADMIN_BAN ) ) return PLUGIN_HANDLED;
  13336.  
  13337. if ( read_argc ( ) < 3 )
  13338. {
  13339. console_print(id, "[Zombie Outstanding] Command usage is amx_addban <name> <ip> <time> <reason>");
  13340. return 1
  13341. }
  13342.  
  13343. new Arg [32], Minutes [32], Reason [32];
  13344.  
  13345. read_argv ( 1, Arg, charsmax ( Arg ) );
  13346.  
  13347. read_argv ( 2, Minutes, charsmax ( Minutes ) );
  13348.  
  13349. read_argv ( 3, Reason, charsmax ( Reason ) );
  13350.  
  13351. trim ( Arg );
  13352.  
  13353. if ( contain ( Arg, "." ) != -1 )
  13354. {
  13355. server_cmd ( "addip ^"%s^" ^"%s^";wait;writeip", Minutes, Arg );
  13356.  
  13357. console_print ( id, "%s Ip ^"%s^" added to ban list", CONSOLE_PREFIX, Arg );
  13358. }
  13359. else
  13360. {
  13361. server_cmd ( "banid ^"%s^" ^"%s^";wait;writeid", Minutes, Arg );
  13362.  
  13363. console_print ( id, "%s Authid ^"%s^" added to ban list", CONSOLE_PREFIX, Arg );
  13364. }
  13365.  
  13366. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 banned^4 %s^1 permanently due to^3 %s", GetInfo ( id, INFO_NAME ), Arg, Reason );
  13367.  
  13368. return PLUGIN_HANDLED
  13369. }
  13370.  
  13371. public cmdBan ( id )
  13372. {
  13373. if ( !( get_user_flags ( id ) & ADMIN_BAN ) ) return PLUGIN_HANDLED;
  13374.  
  13375. if ( read_argc ( ) < 3 )
  13376. {
  13377. console_print(id, "[Zombie Outstanding] Command usage is amx_ban <#userid or name> <time> [reason]");
  13378. return 1;
  13379. }
  13380.  
  13381. new Target [32], Minutes [8], Reason [64];
  13382.  
  13383. read_argv ( 1, Target, charsmax ( Target ) );
  13384.  
  13385. read_argv ( 2, Minutes, charsmax ( Minutes ) );
  13386.  
  13387. read_argv ( 3, Reason, charsmax ( Reason ) );
  13388.  
  13389. new Player = cmd_target ( id, Target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF );
  13390.  
  13391. if ( !Player ) return PLUGIN_HANDLED;
  13392.  
  13393. new nNum = str_to_num ( Minutes );
  13394.  
  13395. if ( nNum < 0 )
  13396. {
  13397. nNum = 0;
  13398.  
  13399. Minutes = "0";
  13400. }
  13401.  
  13402. new Temp [64], Banned [16];
  13403.  
  13404. if ( nNum )
  13405.  
  13406. format ( Temp, charsmax ( Temp ), "for %s min", Minutes );
  13407. else
  13408. format ( Temp, charsmax ( Temp ), "permanently" );
  13409.  
  13410. format ( Banned, charsmax ( Banned ), "Banned" );
  13411.  
  13412. if ( Reason [0] )
  13413. {
  13414. server_cmd ( "kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", get_user_userid ( Player ), Reason, Banned, Temp, Minutes, GetInfo ( Player, INFO_IP ) );
  13415. }
  13416. else
  13417. {
  13418. server_cmd ( "kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", get_user_userid ( Player ), Banned, Temp, Minutes, GetInfo ( Player, INFO_IP ) );
  13419. }
  13420.  
  13421. if ( nNum )
  13422.  
  13423. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 banned^4 %s^1 for^3 %s^1 minutes due to^3 %s", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), nNum, nNum == 1 ? "" : "s" );
  13424.  
  13425. else
  13426.  
  13427. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 banned^4 %s^1 permanently due to^3 %s", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Reason );
  13428.  
  13429. console_print ( id, "%s Client ^"%s^" banned", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13430.  
  13431. return PLUGIN_HANDLED;
  13432. }
  13433.  
  13434. public cmdSlay ( id )
  13435. {
  13436. if ( !( get_user_flags ( id ) & ADMIN_SLAY ) ) return PLUGIN_HANDLED;
  13437.  
  13438. if ( read_argc ( ) < 2 )
  13439. {
  13440. console_print(id, "[Zombie Outstanding] Command usage is amx_slay <#userid or name>");
  13441. return 1;
  13442. }
  13443.  
  13444. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13445.  
  13446. new Player = cmd_target ( id, Arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE );
  13447.  
  13448. if ( !Player ) return PLUGIN_HANDLED
  13449.  
  13450. user_kill ( Player );
  13451.  
  13452. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^4 %s^1 slayed^4 %s", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ) );
  13453.  
  13454. console_print ( id, "%s Client ^"%s^" slayed", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13455.  
  13456. return PLUGIN_HANDLED;
  13457. }
  13458.  
  13459. public cmdSlap ( id )
  13460. {
  13461. if ( !( get_user_flags ( id ) & ADMIN_SLAY ) ) return PLUGIN_HANDLED;
  13462.  
  13463. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13464.  
  13465. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13466.  
  13467. new Player = cmd_target ( id, Arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE );
  13468.  
  13469. if ( !Player ) return PLUGIN_HANDLED;
  13470.  
  13471. user_slap ( Player, 0 );
  13472.  
  13473. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 slap^3 %s", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ) );
  13474.  
  13475. console_print ( id, "%s Client ^"%s^" slaped", CONSOLE_PREFIX, GetInfo ( Player, INFO_NAME ) );
  13476.  
  13477. return PLUGIN_HANDLED;
  13478. }
  13479.  
  13480. public ChangeMap ( Map [ ] ) server_cmd ( "changelevel %s", Map );
  13481.  
  13482. public cmdSayChat(id)
  13483. {
  13484. if ( !( get_user_flags ( id ) & ADMIN_SLAY ) ) return PLUGIN_HANDLED;
  13485.  
  13486. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13487.  
  13488. new said[6], i = 0
  13489. read_argv(1, said, 5)
  13490.  
  13491. while (said[i] == '@')
  13492. {
  13493. i++
  13494. }
  13495.  
  13496. if (!i || i > 3)
  13497. {
  13498. return PLUGIN_CONTINUE
  13499. }
  13500.  
  13501. new message[192], a = 0
  13502. read_args(message, 191)
  13503. remove_quotes(message)
  13504.  
  13505. switch (said[i])
  13506. {
  13507. case 'r': a = 1
  13508. case 'g': a = 2
  13509. case 'b': a = 3
  13510. case 'y': a = 4
  13511. case 'm': a = 5
  13512. case 'c': a = 6
  13513. case 'o': a = 7
  13514. }
  13515.  
  13516. new n, s = i
  13517. if (a)
  13518. {
  13519. n++
  13520. s++
  13521. }
  13522. while (said[s] && isspace(said[s]))
  13523. {
  13524. n++
  13525. s++
  13526. }
  13527.  
  13528.  
  13529. new name[32], authid[32], userid
  13530.  
  13531. get_user_authid(id, authid, 31)
  13532. get_user_name(id, name, 31)
  13533. userid = get_user_userid(id)
  13534.  
  13535. log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
  13536. log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
  13537.  
  13538. if (++g_msgChannel > 6 || g_msgChannel < 3)
  13539. {
  13540. g_msgChannel = 3
  13541. }
  13542.  
  13543. new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
  13544.  
  13545. set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)
  13546.  
  13547. switch ( get_pcvar_num(amx_show_activity) )
  13548. {
  13549. case 3, 4:
  13550. {
  13551. new maxpl = get_maxplayers();
  13552. for (new pl = 1; pl <= maxpl; pl++)
  13553. {
  13554. if (is_user_connected(pl) && !is_user_bot(pl))
  13555. {
  13556. if (is_user_admin(pl))
  13557. {
  13558. show_hudmessage(pl, "%s : %s", name, message[i + n])
  13559. client_print(pl, print_notify, "%s : %s", name, message[i + n])
  13560. }
  13561. else
  13562. {
  13563. show_hudmessage(pl, "%s", message[i + n])
  13564. client_print(pl, print_notify, "%s", message[i + n])
  13565. }
  13566. }
  13567. }
  13568. }
  13569. case 2:
  13570. {
  13571. show_hudmessage(0, "%s : %s", name, message[i + n])
  13572. client_print(0, print_notify, "%s : %s", name, message[i + n])
  13573. }
  13574. default:
  13575. {
  13576. show_hudmessage(0, "%s", message[i + n])
  13577. client_print(0, print_notify, "%s", message[i + n])
  13578. }
  13579. }
  13580.  
  13581. return PLUGIN_HANDLED
  13582. }
  13583.  
  13584. public cmdMap ( id )
  13585. {
  13586. if ( !( get_user_flags ( id ) & ADMIN_SLAY ) ) return PLUGIN_HANDLED;
  13587.  
  13588. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13589.  
  13590. new Arg [32], ArgLen = read_argv ( 1, Arg, charsmax ( Arg ) );
  13591.  
  13592. if ( !is_map_valid ( Arg ) )
  13593. {
  13594. console_print ( id, "%s Map ^"%s^" is not valid!", CONSOLE_PREFIX, Arg );
  13595.  
  13596. return PLUGIN_HANDLED;
  13597. }
  13598.  
  13599. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 changed map to^4 %s", GetInfo ( id, INFO_NAME ), Arg );
  13600.  
  13601. new ModName [10]; get_modname ( ModName, charsmax ( ModName ) )
  13602.  
  13603. if ( !equal ( ModName, "zp" ) )
  13604. {
  13605. message_begin ( MSG_ALL, SVC_INTERMISSION );
  13606.  
  13607. message_end ( );
  13608. }
  13609.  
  13610. set_task ( 2.0, "ChangeMap", 0, Arg, ArgLen + 1 );
  13611.  
  13612. return PLUGIN_HANDLED;
  13613. }
  13614.  
  13615. public cmdNick ( id )
  13616. {
  13617. if ( !( get_user_flags ( id ) & ADMIN_LEVEL_H ) ) return PLUGIN_HANDLED;
  13618.  
  13619. if ( read_argc ( ) < 3 ) return PLUGIN_HANDLED;
  13620.  
  13621. new Arg_01 [32], Arg_02 [32];
  13622.  
  13623. read_argv ( 1, Arg_01, charsmax ( Arg_01 ) );
  13624.  
  13625. read_argv ( 2, Arg_02, charsmax ( Arg_02 ) );
  13626.  
  13627. new Player = cmd_target ( id, Arg_01, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF );
  13628.  
  13629. if ( !Player ) return PLUGIN_HANDLED;
  13630.  
  13631. set_user_info ( Player, "name", Arg_02 );
  13632.  
  13633. client_cmd ( Player, "name ^"%s^"", Arg_02 );
  13634.  
  13635. client_print_color ( 0, print_team_grey, "^4[Zombie Outstanding]^1 Admin^3 %s^1 Change nick of^3 %s^1 to^4 %s", GetInfo ( id, INFO_NAME ), GetInfo ( Player, INFO_NAME ), Arg_02 );
  13636.  
  13637. console_print ( id, "%s Changed nick of ^"%s^" to ^"%s^"", GetInfo ( Player, INFO_NAME ), Arg_02 );
  13638.  
  13639. return PLUGIN_HANDLED;
  13640. }
  13641.  
  13642. public cmdIp ( id )
  13643. {
  13644. if ( !( get_user_flags ( id ) & ADMIN_LEVEL_H ) ) return PLUGIN_HANDLED;
  13645.  
  13646. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13647.  
  13648. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13649.  
  13650. new Player = cmd_target ( id, Arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF );
  13651.  
  13652. if ( !Player ) return PLUGIN_HANDLED;
  13653.  
  13654. console_print ( id, "%s - Nick: %s | Ip: %s", CONSOLE_PREFIX, GetInfo (Player, INFO_NAME ), GetInfo ( Player, INFO_IP ) );
  13655.  
  13656. return PLUGIN_HANDLED;
  13657. }
  13658.  
  13659. public cmdSay ( id )
  13660. {
  13661. if ( !(get_user_flags ( id ) & ADMIN_CHAT ) ) return PLUGIN_HANDLED;
  13662.  
  13663. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13664.  
  13665. new Message [192]; read_args ( Message, charsmax ( Message ) );
  13666.  
  13667. remove_quotes ( Message );
  13668.  
  13669. client_print_color ( 0, print_team_grey, "^1*^3 ALL^1 *^4 %s^3 :^1 %s", GetInfo ( id, INFO_NAME ), Message );
  13670.  
  13671. console_print ( id, "* ALL * %s : %s", GetInfo ( id, INFO_NAME ), Message );
  13672.  
  13673. log_amx ( "Chat: ^"%s (%s)^" say ^"%s^"", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Message );
  13674.  
  13675. log_message ( "^"%s (%s)^" triggered ^"amx_say^" (text ^"%s^")", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Message );
  13676.  
  13677. return PLUGIN_HANDLED;
  13678. }
  13679.  
  13680. public cmdPsay ( id )
  13681. {
  13682. if ( !( get_user_flags ( id ) & ADMIN_CHAT ) ) return PLUGIN_HANDLED;
  13683.  
  13684. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13685.  
  13686. new Arg [32]; read_argv ( 1, Arg, charsmax ( Arg ) );
  13687.  
  13688. new Priv = cmd_target ( id, Arg, 0 );
  13689.  
  13690. if ( !Priv ) return PLUGIN_HANDLED;
  13691.  
  13692. new Length = strlen ( Arg ) + 1;
  13693.  
  13694. new Message [192]; read_args ( Message, charsmax ( Message ) );
  13695.  
  13696. if ( Message [0] == '"' && Message [Length] == '"' )
  13697. {
  13698. Message [0] = ' ';
  13699.  
  13700. Message [Length] = ' ';
  13701.  
  13702. Length += 2;
  13703. }
  13704.  
  13705. remove_quotes ( Message [Length] );
  13706.  
  13707. if ( id && id != Priv )
  13708.  
  13709. client_print_color ( id, print_team_grey, "^1(^3%s^1)^4 %s^3 :^1 %s", GetInfo ( Priv, INFO_NAME ), GetInfo ( id, INFO_NAME ), Message [Length] );
  13710.  
  13711. client_print_color ( id, print_team_grey, "^1(^3%s^1)^4 %s^3 :^1 %s", GetInfo ( Priv, INFO_NAME ), GetInfo ( id, INFO_NAME ), Message [Length] );
  13712.  
  13713. console_print ( id, "(%s) %s : %s", GetInfo ( Priv, INFO_NAME ), GetInfo ( id, INFO_NAME ), Message [Length] );
  13714.  
  13715. log_message ( "^"%s (%s)^" triggered ^"amx_psay^" against ^"%s (%s)^" (text ^"%s^")", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), GetInfo ( Priv, INFO_NAME ), GetInfo ( Priv, INFO_AUTHID ), Message [Length] );
  13716.  
  13717. return PLUGIN_HANDLED;
  13718. }
  13719.  
  13720. public cmdTsay ( id )
  13721. {
  13722. if ( !( get_user_flags ( id ) & ADMIN_CHAT ) ) return PLUGIN_HANDLED;
  13723.  
  13724. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13725.  
  13726. new Message [192]; read_args ( Message, charsmax ( Message ) );
  13727.  
  13728. remove_quotes ( Message );
  13729.  
  13730. new Length = 0;
  13731.  
  13732. if ( ++ MsgChannel > 6 || MsgChannel < 3 )
  13733.  
  13734. MsgChannel = 3;
  13735.  
  13736. new Float: VerPos = ( 0.40 ) + float ( MsgChannel ) / 35.0
  13737.  
  13738. set_hudmessage ( 255, 255, 255, 0.01, VerPos, 0, 6.0, 6.0, 0.5, 0.15, -1 );
  13739.  
  13740. show_hudmessage ( 0, "%s : %s", GetInfo ( id, INFO_NAME ), Message [Length] )
  13741.  
  13742. client_print ( 0, print_notify, "%s : %s", GetInfo ( id, INFO_NAME ), Message [Length] );
  13743.  
  13744. console_print ( id, "%s : %s", GetInfo ( id, INFO_NAME ), Message [Length] );
  13745.  
  13746. log_message ( "^"%s (%s)^" triggered ^"amx_tsay^" (text ^"%s^")", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Message [Length] );
  13747.  
  13748. return PLUGIN_HANDLED;
  13749. }
  13750.  
  13751. public cmdSayAdmin ( id )
  13752. {
  13753. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13754.  
  13755. new Said [2]; read_argv ( 1, Said, charsmax ( Said ) );
  13756.  
  13757. if ( Said [0] != '@' ) return PLUGIN_CONTINUE;
  13758.  
  13759. new Message [192]; read_args ( Message, charsmax ( Message ) );
  13760.  
  13761. remove_quotes ( Message );
  13762.  
  13763. new Players [32], Num;
  13764.  
  13765. log_message ("^"%s (%s)^" triggered ^"amx_chat^" (text ^"%s^")", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Message [1] );
  13766.  
  13767. if ( is_user_admin ( id ) )
  13768.  
  13769. format ( Message, charsmax ( Message ), "^1*^3 ADMIN^1 *^4 %s^3 :^1 %s", GetInfo ( id, INFO_NAME ), Message [1] );
  13770. else
  13771. format ( Message, charsmax ( Message ), "^1*^3 PLAYER^1 *^4 %s^3 :^1 %s", GetInfo ( id, INFO_NAME ), Message [1] );
  13772.  
  13773. get_players ( Players, Num );
  13774.  
  13775. for ( new i = 0; i < Num; ++ i )
  13776. {
  13777. if ( Players [i] != id && get_user_flags ( Players [i] ) & ADMIN_CHAT )
  13778.  
  13779. client_print_color ( Players [i], print_team_grey, "%s", Message );
  13780. }
  13781.  
  13782. client_print_color ( id, print_team_grey, "%s", Message );
  13783.  
  13784. return PLUGIN_HANDLED;
  13785. }
  13786.  
  13787. public cmdChat ( id )
  13788. {
  13789. if ( !( get_user_flags ( id ) & ADMIN_CHAT ) ) return PLUGIN_HANDLED;
  13790.  
  13791. if ( read_argc ( ) < 2 ) return PLUGIN_HANDLED;
  13792.  
  13793. new Message [192];
  13794.  
  13795. new Players [32], Num;
  13796.  
  13797. read_args ( Message, charsmax ( Message ) );
  13798.  
  13799. remove_quotes ( Message );
  13800.  
  13801. log_message ( "^"%s (%s)^" triggered ^"amx_chat^" (text ^"%s^")", GetInfo ( id, INFO_NAME ), GetInfo ( id, INFO_AUTHID ), Message );
  13802.  
  13803. format ( Message, charsmax ( Message ), "^1*^3 ADMIN^1 *^4 %s^3 :^1 %s", GetInfo ( id, INFO_NAME ), Message );
  13804.  
  13805. console_print ( id, "(ADMIN) %s : %s", GetInfo ( id, INFO_NAME ), Message );
  13806.  
  13807. get_players ( Players, Num );
  13808.  
  13809. for ( new i = 0; i < Num; ++ i )
  13810. {
  13811. if ( access ( Players [i], ADMIN_CHAT ) )
  13812.  
  13813. client_print_color ( Players [i], print_team_grey, "%s", Message );
  13814. }
  13815.  
  13816. return PLUGIN_HANDLED;
  13817. }
  13818.  
  13819. public client_connect ( id ) CaseSensitiveName [id] = false;
  13820.  
  13821. AdminsLoadSettings ( FileName [ ] )
  13822. {
  13823. new File = fopen ( FileName, "r" );
  13824.  
  13825. if ( File )
  13826. {
  13827. new Text [512], Flags [32], Access [32], AuthData [44], Password [32];
  13828.  
  13829. while ( !feof ( File ) )
  13830. {
  13831. fgets ( File, Text, charsmax ( Text ) );
  13832.  
  13833. trim ( Text );
  13834.  
  13835. if (Text[0]==';') continue;
  13836.  
  13837. Flags [0] = 0;
  13838. Access [0] = 0;
  13839. AuthData [0] = 0;
  13840. Password [0] = 0;
  13841.  
  13842. if ( parse ( Text, AuthData, charsmax ( AuthData ), Password, charsmax ( Password ), Access, charsmax ( Access ),Flags, charsmax ( Flags ) ) < 2 )
  13843.  
  13844. continue;
  13845.  
  13846.  
  13847. admins_push ( AuthData, Password, read_flags ( Access ), read_flags ( Flags ) );
  13848.  
  13849. AdminCount ++;
  13850. }
  13851.  
  13852. fclose ( File );
  13853. }
  13854.  
  13855. return PLUGIN_HANDLED;
  13856. }
  13857.  
  13858. #if defined USING_SQL
  13859. public adminSql ( )
  13860. {
  13861. new Table [32], Error [128], Type [12], Errno
  13862.  
  13863. new Handle: info = SQL_MakeStdTuple ( );
  13864.  
  13865. new Handle: sql = SQL_Connect ( info, Errno, Error, charsmax ( Error ) );
  13866.  
  13867. get_cvar_string ( "amx_sql_table", Table, charsmax ( Table ) );
  13868.  
  13869. SQL_GetAffinity ( Type, charsmax ( Type ) );
  13870.  
  13871. if ( sql == Empty_Handle )
  13872. {
  13873. server_print ( "%s SQL error: can't connect: '%s'", CONSOLE_PREFIX, Error );
  13874.  
  13875. new Director [64]; get_configsdir ( Director, charsmax ( Director ) );
  13876.  
  13877. format ( Director, charsmax ( Director ), "%s/%s", Director, ADMINS_FILE_NAME );
  13878.  
  13879. AdminsLoadSettings ( Director );
  13880.  
  13881. return PLUGIN_HANDLED;
  13882. }
  13883.  
  13884. new Handle: query;
  13885.  
  13886. if ( equali ( Type, "sqlite" ) )
  13887. {
  13888. if ( !sqlite_TableExists ( sql, Table ) )
  13889. {
  13890. SQL_QueryAndIgnore ( sql, "CREATE TABLE %s ( auth TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', access TEXT NOT NULL DEFAULT '', flags TEXT NOT NULL DEFAULT '' )", Table );
  13891. }
  13892.  
  13893. query = SQL_PrepareQuery ( sql, "SELECT auth, password, access, flags FROM %s", Table );
  13894. }
  13895. else
  13896. {
  13897. SQL_QueryAndIgnore ( sql, "CREATE TABLE IF NOT EXISTS `%s` ( `auth` VARCHAR( 32 ) NOT NULL, `password` VARCHAR( 32 ) NOT NULL, `access` VARCHAR( 32 ) NOT NULL, `flags` VARCHAR( 32 ) NOT NULL ) COMMENT = 'AMX Mod X Admins'", Table );
  13898.  
  13899. query = SQL_PrepareQuery ( sql,"SELECT `auth`,`password`,`access`,`flags` FROM `%s`", Table );
  13900. }
  13901.  
  13902. if ( !SQL_Execute ( query ) )
  13903. {
  13904. SQL_QueryError ( query, Error, charsmax ( Error ) )
  13905.  
  13906. server_print ( "%s SQL error: can't load admins: '%s'", CONSOLE_PREFIX, Error );
  13907. }
  13908. else if (! SQL_NumResults ( query ) )
  13909. {
  13910. server_print ( "%s No admins found.", CONSOLE_PREFIX );
  13911. }
  13912. else
  13913. {
  13914. AdminCount = 0
  13915.  
  13916. new qcolAuth = SQL_FieldNameToNum ( query, "auth" );
  13917. new qcolPass = SQL_FieldNameToNum ( query, "password" );
  13918. new qcolAccess = SQL_FieldNameToNum ( query, "access" );
  13919. new qcolFlags = SQL_FieldNameToNum ( query, "flags" );
  13920.  
  13921. new AuthData [44], Password [44], Access [32], Flags [32];
  13922.  
  13923. while ( SQL_MoreResults ( query ) )
  13924. {
  13925. SQL_ReadResult ( query, qcolAuth, AuthData, charsmax ( AuthData ) );
  13926. SQL_ReadResult ( query, qcolPass, Password, charsmax ( Password ) );
  13927. SQL_ReadResult ( query, qcolAccess, Access, charsmax ( Access ) );
  13928. SQL_ReadResult ( query, qcolFlags, Flags, charsmax ( Flags ) );
  13929.  
  13930. admins_push ( AuthData, Password, read_flags ( Access ), read_flags ( Flags ) );
  13931.  
  13932. ++ AdminCount;
  13933.  
  13934. SQL_NextRow ( query );
  13935. }
  13936.  
  13937. server_print ( "%s Loaded %d admin%s from database !", CONSOLE_PREFIX, AdminCount == 1 ? "1" : AdminCount, AdminCount == 1 ? "" : "s" );
  13938.  
  13939. SQL_FreeHandle ( query );
  13940. SQL_FreeHandle ( sql );
  13941. SQL_FreeHandle ( info );
  13942. }
  13943.  
  13944. return PLUGIN_HANDLED;
  13945. }
  13946. #endif
  13947.  
  13948. public cmdReload ( id )
  13949. {
  13950. if ( !( get_user_flags ( id ) & ADMIN_IMMUNITY & ADMIN_PASSWORD ) )
  13951.  
  13952. remove_user_flags ( 0, read_flags ( "z" ) );
  13953.  
  13954. admins_flush ( );
  13955.  
  13956. #if !defined USING_SQL
  13957.  
  13958. new FileName [128]; get_configsdir ( FileName, charsmax ( FileName ) );
  13959.  
  13960. format ( FileName, charsmax ( FileName ), "%s/%s", FileName, ADMINS_FILE_NAME );
  13961.  
  13962. AdminCount = 0;
  13963.  
  13964. AdminsLoadSettings ( FileName );
  13965.  
  13966. if ( id != 0 )
  13967. {
  13968. if ( AdminCount == 1 )
  13969. {
  13970. console_print ( id, "%s Loaded 1 admin from file !", CONSOLE_PREFIX );
  13971. }
  13972. else
  13973. {
  13974. console_print ( id, "%s Loaded %d admins from file !", CONSOLE_PREFIX, AdminCount );
  13975. }
  13976. }
  13977.  
  13978. #else
  13979.  
  13980. AdminCount = 0;
  13981.  
  13982. adminSql ( );
  13983.  
  13984. if ( id != 0 )
  13985. {
  13986. if ( AdminCount == 1 )
  13987. {
  13988. console_print ( id, "%s Loaded 1 admin from database !", CONSOLE_PREFIX );
  13989. }
  13990. else
  13991. {
  13992. console_print ( id, "%s Loaded %d admins from database !", CONSOLE_PREFIX, AdminCount );
  13993. }
  13994. }
  13995.  
  13996. #endif
  13997.  
  13998. new Players [32], Num, Pv, Name [32];
  13999.  
  14000. get_players ( Players, Num );
  14001.  
  14002. for ( new i = 0; i < Num; i ++ )
  14003. {
  14004. Pv = Players [i];
  14005.  
  14006. get_user_name ( Pv, Name, charsmax ( Name ) );
  14007.  
  14008. accessUser ( Pv, Name );
  14009. }
  14010.  
  14011. return PLUGIN_HANDLED;
  14012. }
  14013.  
  14014. getAccess ( id, Name [], Authid [], Ip [], Password [] )
  14015. {
  14016. new Index = -1, Result = 0;
  14017.  
  14018. static Count, Flags, Access, AuthData [44], password [32];
  14019.  
  14020. CaseSensitiveName [id] = false;
  14021.  
  14022. Count = admins_num ( );
  14023.  
  14024. for ( new i = 0; i < Count; ++ i )
  14025. {
  14026. Flags = admins_lookup ( i, AdminProp_Flags );
  14027.  
  14028. admins_lookup ( i,AdminProp_Auth, AuthData, charsmax ( AuthData ) );
  14029.  
  14030. if ( Flags & FLAG_AUTHID )
  14031. {
  14032. if ( equal ( Authid, AuthData ) )
  14033. {
  14034. Index = i;
  14035.  
  14036. break;
  14037. }
  14038. }
  14039. else if ( Flags & FLAG_IP )
  14040. {
  14041. new c = strlen ( AuthData );
  14042.  
  14043. if ( AuthData [c - 1] == '.' )
  14044. {
  14045. if ( equal ( AuthData, Ip, c ) )
  14046. {
  14047. Index = i;
  14048.  
  14049. break;
  14050. }
  14051. }
  14052. else if ( equal ( Ip, AuthData ) )
  14053. {
  14054. Index = i;
  14055.  
  14056. break;
  14057. }
  14058. }
  14059. else
  14060. {
  14061. if ( Flags & FLAG_CASE_SENSITIVE )
  14062. {
  14063. if ( Flags & FLAG_TAG )
  14064. {
  14065. if ( contain ( Name, AuthData ) != -1 )
  14066. {
  14067. Index = i;
  14068.  
  14069. CaseSensitiveName [id] = true;
  14070.  
  14071. break;
  14072. }
  14073. }
  14074. else if ( equal ( Name, AuthData ) )
  14075. {
  14076. Index = i;
  14077.  
  14078. CaseSensitiveName [id] = true;
  14079.  
  14080. break;
  14081. }
  14082. }
  14083. else
  14084. {
  14085. if ( Flags & FLAG_TAG )
  14086. {
  14087. if ( containi ( Name, AuthData ) != -1 )
  14088. {
  14089. Index = i;
  14090.  
  14091. break;
  14092. }
  14093. }
  14094. else if ( equali ( Name, AuthData ) )
  14095. {
  14096. Index = i;
  14097.  
  14098. break;
  14099. }
  14100. }
  14101. }
  14102. }
  14103.  
  14104. if ( Index != -1 )
  14105. {
  14106. Access = admins_lookup ( Index, AdminProp_Access );
  14107.  
  14108. if ( Flags & FLAG_NOPASS )
  14109. {
  14110. Result |= 8;
  14111.  
  14112. new sflags [32]; get_flags ( Access, sflags, charsmax ( sflags ) );
  14113.  
  14114. set_user_flags ( id, Access );
  14115.  
  14116. }
  14117. else
  14118. {
  14119.  
  14120. admins_lookup ( Index, AdminProp_Password, password, charsmax ( password ) );
  14121.  
  14122. if ( equal ( password, Password ) )
  14123. {
  14124. Result |= 12;
  14125.  
  14126. set_user_flags ( id, Access );
  14127.  
  14128. new sflags [32]; get_flags ( Access, sflags, charsmax ( sflags ) );
  14129. }
  14130. else
  14131. {
  14132. Result |= 1
  14133.  
  14134. if ( Flags & FLAG_KICK )
  14135. {
  14136. Result |= 2
  14137.  
  14138. log_amx ( "Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", Name, get_user_userid ( id ), Authid, AuthData, Ip );
  14139. }
  14140. }
  14141. }
  14142. }
  14143. else if ( get_pcvar_float ( AmxMode ) == 2.0 )
  14144. {
  14145. Result |= 2
  14146. }
  14147. else
  14148. {
  14149. new DefAccess [32]; get_pcvar_string ( AmxDefaultAccess, DefAccess, charsmax ( DefAccess ) );
  14150.  
  14151. if ( !strlen ( DefAccess ) )
  14152. {
  14153. copy ( DefAccess, charsmax ( DefAccess ), "z" );
  14154. }
  14155.  
  14156. new iDefAccess = read_flags ( DefAccess );
  14157.  
  14158. if ( iDefAccess )
  14159. {
  14160. Result |= 8
  14161.  
  14162. set_user_flags ( id, iDefAccess );
  14163. }
  14164. }
  14165.  
  14166. return Result;
  14167. }
  14168.  
  14169. accessUser ( id, Name [] = "" )
  14170. {
  14171. remove_user_flags ( id );
  14172.  
  14173. new UserIp [32], UserAuthid [32], Password [32], PassField [32], UserName [32];
  14174.  
  14175. get_user_ip ( id, UserIp, charsmax ( UserIp ), 1 );
  14176.  
  14177. get_user_authid ( id, UserAuthid, charsmax ( UserAuthid ) );
  14178.  
  14179. if ( Name [0] )
  14180. {
  14181. copy ( UserName, charsmax ( UserName ), Name );
  14182. }
  14183. else
  14184. {
  14185. get_user_name ( id, UserName, charsmax ( UserName ) );
  14186. }
  14187.  
  14188. get_pcvar_string ( AmxPasswordField, PassField, charsmax ( PassField ) );
  14189.  
  14190. get_user_info ( id, PassField, Password, charsmax ( Password ) );
  14191.  
  14192. new Result = getAccess ( id, UserName, UserAuthid, UserIp, Password );
  14193.  
  14194. if ( Result & 1 )
  14195. {
  14196. engclient_print ( id, engprint_console, "* Invalid Password !" );
  14197. }
  14198.  
  14199. if ( Result & 2 )
  14200. {
  14201. server_cmd ( "kick #%d ^"You have no entry to the server...^"", get_user_userid ( id ) );
  14202.  
  14203. return PLUGIN_HANDLED;
  14204. }
  14205.  
  14206. if ( Result & 4 )
  14207. {
  14208. engclient_print ( id, engprint_console, "* Password accepted" );
  14209. }
  14210.  
  14211. if ( Result & 8 )
  14212. {
  14213. engclient_print ( id, engprint_console, "* Privileges set" );
  14214. }
  14215.  
  14216. return PLUGIN_CONTINUE;
  14217. }
  14218.  
  14219. stock GagThinker ( )
  14220. {
  14221. new iEntity = create_entity ( "info_target" );
  14222.  
  14223. if( ! pev_valid ( iEntity ) ) return PLUGIN_HANDLED;
  14224.  
  14225. set_pev ( iEntity, pev_classname, "GagThinker_" );
  14226.  
  14227. set_pev ( iEntity, pev_nextthink, get_gametime ( ) + 1.0 );
  14228.  
  14229. return PLUGIN_HANDLED;
  14230. }
  14231.  
  14232. stock GetInfo ( id, const iInfo )
  14233. {
  14234. new InfoToReturn [64];
  14235.  
  14236. switch( iInfo )
  14237. {
  14238. case INFO_NAME:
  14239. {
  14240. new Name[ 32]; get_user_name ( id, Name, charsmax ( Name ) );
  14241.  
  14242. copy ( InfoToReturn, charsmax ( InfoToReturn ), Name );
  14243. }
  14244. case INFO_IP:
  14245. {
  14246. new Ip [32]; get_user_ip ( id, Ip, charsmax ( Ip ), 1 );
  14247.  
  14248. copy ( InfoToReturn, charsmax ( InfoToReturn ), Ip );
  14249. }
  14250. case INFO_AUTHID:
  14251. {
  14252. new AuthId [35]; get_user_authid ( id, AuthId, charsmax ( AuthId ) );
  14253.  
  14254. copy ( InfoToReturn, charsmax ( InfoToReturn ), AuthId );
  14255. }
  14256. }
  14257.  
  14258. return InfoToReturn;
  14259. }
  14260.  
  14261. stock bool:UTIL_IsValidMessage ( const Message [ ] )
  14262. {
  14263. new iLen = strlen ( Message );
  14264.  
  14265. if ( !iLen ) return false;
  14266.  
  14267. for ( new i = 0; i < iLen; i ++ )
  14268. {
  14269. if ( Message [i] != ' ' )
  14270.  
  14271. return true;
  14272. }
  14273.  
  14274. return false;
  14275. }
  14276.  
  14277.  
  14278. public zUserInfectedPost ( id, infector )
  14279. {
  14280. if ( IsAlive [infector] && IsZombie [infector] && !IsNemesis [infector] && !IsAssassin [infector] )
  14281. {
  14282. switch ( ZombieClass [infector] )
  14283. {
  14284. case ZCLASS_HUNTER:
  14285. {
  14286. fm_set_user_health ( infector, pev ( infector, pev_health ) + 250 );
  14287.  
  14288. DoScreenFade ( infector, 0.60, 1.15, 255, 10, 10, 94 );
  14289.  
  14290. fm_set_rendering ( infector, kRenderFxGlowShell, 255, 10, 10, kRenderNormal, 27 );
  14291.  
  14292. set_user_footsteps ( infector, 1 );
  14293.  
  14294. set_hudmessage ( 0, 255, 0, -1.0, 0.0, 0, 6.0, 1.0 );
  14295.  
  14296. ShowSyncHudMsg ( infector, HudMsgSync [0], "== HUNTER ==^nRegeneration: +250 HP Gained !" );
  14297. }
  14298. }
  14299.  
  14300. set_task ( 2.0, "TakeGlow", infector );
  14301. }
  14302. }
  14303.  
  14304.  
  14305. public TraceAttack(ent, attacker, Float:damage, Float:dir[3], ptr, iDamageType)
  14306. {
  14307. if ((CurrentWeapon [attacker] == CSW_AK47) && (zp_get_gold_ak [attacker] ))
  14308. {
  14309. new Float:flEnd[3];
  14310. get_tr2(ptr, TR_vecEndPos, flEnd);
  14311.  
  14312. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  14313. write_byte(TE_BEAMENTPOINT);
  14314. write_short(attacker | 0x1000);
  14315. engfunc(EngFunc_WriteCoord, flEnd[0]);
  14316. engfunc(EngFunc_WriteCoord, flEnd[1]);
  14317. engfunc(EngFunc_WriteCoord, flEnd[2]);
  14318. write_short(SpriteTexture);
  14319. write_byte(0); // framerate
  14320. write_byte(0); // framerate
  14321. write_byte(1); // life
  14322. write_byte(5); // width
  14323. write_byte(0); // noise
  14324. write_byte(255); // r, g, b
  14325. write_byte(215); // r, g, b
  14326. write_byte(0); // r, g, b
  14327. write_byte(200); // brightness
  14328. write_byte(10); // speed
  14329. message_end();
  14330. }
  14331. return HAM_IGNORED;
  14332. }
  14333.  
  14334. public TraceAttack_02(ent, attacker, Float:damage, Float:dir[3], ptr, iDamageType)
  14335. {
  14336. if ((CurrentWeapon [attacker] == CSW_DEAGLE) && (zp_get_gold_de [attacker]))
  14337. {
  14338. new Float:flEnd[3];
  14339. get_tr2(ptr, TR_vecEndPos, flEnd);
  14340.  
  14341. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  14342. write_byte(TE_BEAMENTPOINT);
  14343. write_short(attacker | 0x1000);
  14344. engfunc(EngFunc_WriteCoord, flEnd[0]);
  14345. engfunc(EngFunc_WriteCoord, flEnd[1]);
  14346. engfunc(EngFunc_WriteCoord, flEnd[2]);
  14347. write_short(SpriteTexture);
  14348. write_byte(0); // framerate
  14349. write_byte(0); // framerate
  14350. write_byte(1); // life
  14351. write_byte(5); // width
  14352. write_byte(0); // noise
  14353. write_byte(255); // r, g, b
  14354. write_byte(215); // r, g, b
  14355. write_byte(0); // r, g, b
  14356. write_byte(200); // brightness
  14357. write_byte(10); // speed
  14358. message_end();
  14359. }
  14360. return HAM_IGNORED;
  14361. }
  14362.  
  14363. addCommas2(Number, Output[], outputSize)
  14364. {
  14365. static Temporary[16] = { 0, ... }, outputPosition = 0, \
  14366. numberPosition = 0, numberLength = 0;
  14367.  
  14368. formatex(Temporary, charsmax(Temporary), "");
  14369. outputPosition = numberPosition = numberLength = 0;
  14370.  
  14371. if (Number < 0)
  14372. {
  14373. Output[outputPosition++] = '-';
  14374.  
  14375. Number = abs(Number);
  14376. }
  14377.  
  14378. numberLength = num_to_str(Number, Temporary, charsmax(Temporary));
  14379.  
  14380. if (numberLength <= 3)
  14381. outputPosition += copy(Output[outputPosition], outputSize, Temporary);
  14382.  
  14383. else
  14384. {
  14385. while (numberPosition < numberLength && outputPosition < outputSize)
  14386. {
  14387. Output[outputPosition++] = Temporary[numberPosition++];
  14388.  
  14389. if ((numberLength - numberPosition) && !((numberLength - numberPosition) % 3))
  14390. Output[outputPosition++] = ',';
  14391. }
  14392.  
  14393. Output[outputPosition] = 0;
  14394. }
  14395.  
  14396. return outputPosition;
  14397. }
  14398.  
  14399. public cmdCommandHook ( INT_PLAYER )
  14400. {
  14401. static STRING_ARGUMENT [11]; read_argv ( 1, STRING_ARGUMENT, charsmax ( STRING_ARGUMENT ) );
  14402.  
  14403. if ( equali ( STRING_ARGUMENT, "top", 3 ) || equali( STRING_ARGUMENT, "/top", 4 ) )
  14404. {
  14405. new HANDLE_MENU = menu_create ( "Top", "FUNC_MENU_HANDLER" );
  14406.  
  14407. new STRING_STATS [8], STRING_BODY [8], STRING_NAME [32], STRING_TEMP [128], STRING_TEMP_NUM [4], INT_VARIABLE_01, STATSNUM = get_statsnum ( );
  14408.  
  14409. if ( STATSNUM < INT_MAX_PLAYERS_MENU )
  14410.  
  14411. INT_VARIABLE_01 = STATSNUM;
  14412.  
  14413. else
  14414. INT_VARIABLE_01 = INT_MAX_PLAYERS_MENU;
  14415.  
  14416. for ( new INT_VARIABLE_02 = 0; INT_VARIABLE_02 < INT_VARIABLE_01; INT_VARIABLE_02 ++ )
  14417. {
  14418. get_stats ( INT_VARIABLE_02, STRING_STATS, STRING_BODY, STRING_NAME, charsmax ( STRING_NAME ) );
  14419.  
  14420. num_to_str ( INT_VARIABLE_02 + 1, STRING_TEMP_NUM, charsmax ( STRING_TEMP_NUM ) );
  14421.  
  14422. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\y%s \wRank: \r%i \wKills: \r%i \wDeaths: \r%i", STRING_NAME, INT_VARIABLE_02 + 1, \
  14423. STRING_STATS [INT_STATS_KILLS], STRING_STATS [INT_STATS_DEATHS] );
  14424.  
  14425. menu_additem ( HANDLE_MENU, STRING_TEMP, STRING_TEMP_NUM, 0 );
  14426. }
  14427.  
  14428. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14429.  
  14430. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14431.  
  14432. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14433.  
  14434. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14435. }
  14436.  
  14437. if ( equali ( STRING_ARGUMENT, "rank" ) || equali ( STRING_ARGUMENT, "/rank" ) )
  14438. {
  14439. new Command[32] , Argument[32], queryData[32];
  14440.  
  14441. read_argv(0, Command, charsmax(Command));
  14442. read_argv(1, Argument, charsmax(Argument));
  14443.  
  14444. num_to_str(INT_PLAYER, queryData, charsmax(queryData));
  14445.  
  14446. formatex(g_Query, charsmax(g_Query), "SELECT DISTINCT kmdValue \
  14447. FROM Players WHERE kmdValue >= %d ORDER BY kmdValue ASC;", g_kmdValue[INT_PLAYER]);
  14448.  
  14449. SQL_ThreadQuery(g_Tuple, "printRankChat", g_Query, queryData, sizeof(queryData));
  14450. }
  14451.  
  14452. if ( equali ( STRING_ARGUMENT, "statsme" ) || equali ( STRING_ARGUMENT, "/statsme" ) )
  14453. {
  14454. new INT_RANK_POS, STRING_STATS_01 [8], STRING_BODY [8], STRING_TEMP [128], STRING_STATS_02 [4];
  14455.  
  14456. INT_RANK_POS = get_user_stats ( INT_PLAYER, STRING_STATS_01, STRING_BODY );
  14457.  
  14458. get_user_stats2 ( INT_PLAYER, STRING_STATS_02 );
  14459.  
  14460. new HANDLE_MENU = menu_create ( "Rank", "FUNC_MENU_HANDLER" );
  14461.  
  14462. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRank: \r%i", INT_RANK_POS );
  14463.  
  14464. menu_additem ( HANDLE_MENU, STRING_TEMP, "1", 0 );
  14465.  
  14466. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wKills: \r%i", STRING_STATS_01 [INT_STATS_KILLS] );
  14467.  
  14468. menu_additem ( HANDLE_MENU, STRING_TEMP, "2", 0 );
  14469.  
  14470. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wDeaths: \r%i", STRING_STATS_01 [INT_STATS_DEATHS] );
  14471.  
  14472. menu_additem ( HANDLE_MENU, STRING_TEMP, "3", 0 );
  14473.  
  14474. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHeadshots: \r%i", STRING_STATS_01 [INT_STATS_HS] );
  14475.  
  14476. menu_additem ( HANDLE_MENU, STRING_TEMP, "4", 0 );
  14477.  
  14478. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wTeam kills: \r%i", STRING_STATS_01 [INT_STATS_TKS] );
  14479.  
  14480. menu_additem ( HANDLE_MENU, STRING_TEMP, "5", 0 );
  14481.  
  14482. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wShots: \r%i", STRING_STATS_01 [INT_STATS_SHOTS] );
  14483.  
  14484. menu_additem ( HANDLE_MENU, STRING_TEMP, "6", 0 );
  14485.  
  14486. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHits: \r%i", STRING_STATS_01 [INT_STATS_HITS] );
  14487.  
  14488. menu_additem ( HANDLE_MENU, STRING_TEMP, "7", 0 );
  14489.  
  14490. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wDamage: \r%i", STRING_STATS_01 [INT_STATS_DAMAGE] );
  14491.  
  14492. menu_additem ( HANDLE_MENU, STRING_TEMP, "8", 0 );
  14493.  
  14494. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHead hits: \r%i", STRING_BODY [INT_STATS_HIT_HEAD] );
  14495.  
  14496. menu_additem ( HANDLE_MENU, STRING_TEMP, "13", 0 );
  14497.  
  14498. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wChest hits: \r%i", STRING_BODY [INT_STATS_HIT_CHEST] );
  14499.  
  14500. menu_additem ( HANDLE_MENU, STRING_TEMP, "14", 0 );
  14501.  
  14502. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wStomach hits: \r%i", STRING_BODY [INT_STATS_HIT_STOMACH] );
  14503.  
  14504. menu_additem ( HANDLE_MENU, STRING_TEMP, "15", 0 );
  14505.  
  14506. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wLeftarm hits: \r%i", STRING_BODY [INT_STATS_HIT_LEFTARM] );
  14507.  
  14508. menu_additem ( HANDLE_MENU, STRING_TEMP, "16", 0 );
  14509.  
  14510. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRightarm hits: \r%i", STRING_BODY [INT_STATS_HIT_RIGHTARM] );
  14511.  
  14512. menu_additem ( HANDLE_MENU, STRING_TEMP, "17", 0 );
  14513.  
  14514. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wLeftleg hits: \r%i", STRING_BODY [INT_STATS_HIT_LEFTLEG] );
  14515.  
  14516. menu_additem ( HANDLE_MENU, STRING_TEMP, "18", 0 );
  14517.  
  14518. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRightleg hits: \r%i", STRING_BODY [INT_STATS_HIT_RIGHTLEG] );
  14519.  
  14520. menu_additem ( HANDLE_MENU, STRING_TEMP, "19", 0 );
  14521.  
  14522. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14523.  
  14524. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14525.  
  14526. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14527.  
  14528. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14529. }
  14530.  
  14531. if ( equali ( STRING_ARGUMENT, "stats" ) || equali ( STRING_ARGUMENT, "/stats" ) )
  14532. {
  14533. new STRING_NAME [32], STRING_TEMP_NUM [4];
  14534. new HANDLE_MENU = menu_create ( "Choose the player", "FUNC_MENU_STATS_HANDLER" );
  14535.  
  14536. for( new id = 1; id <= MaxPlayers; id++ )
  14537. {
  14538. if ( is_user_connected ( id ) )
  14539. {
  14540. get_user_name ( id, STRING_NAME, charsmax ( STRING_NAME ) );
  14541.  
  14542. num_to_str ( id, STRING_TEMP_NUM, charsmax ( STRING_TEMP_NUM ) );
  14543.  
  14544. menu_additem ( HANDLE_MENU, STRING_NAME, STRING_TEMP_NUM, 0 );
  14545. }
  14546. }
  14547.  
  14548. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14549.  
  14550. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14551.  
  14552. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14553.  
  14554. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14555. }
  14556.  
  14557. if ( equali ( STRING_ARGUMENT, "damage" ) || equali ( STRING_ARGUMENT, "/damage" ) || equali( STRING_ARGUMENT, "/dmg" ) || equali( STRING_ARGUMENT, "dmg" ) )
  14558. {
  14559. new HANDLE_MENU = menu_create ( "Damage Top", "FUNC_MENU_HANDLER" );
  14560.  
  14561. new STRING_STATS [8], STRING_BODY [8], STRING_NAME [32], STRING_TEMP [128], STRING_TEMP_NUM [4], INT_VARIABLE_01, STATSNUM = get_statsnum ( );
  14562.  
  14563. if ( STATSNUM < INT_MAX_PLAYERS_MENU )
  14564.  
  14565. INT_VARIABLE_01 = STATSNUM;
  14566. else
  14567. INT_VARIABLE_01 = INT_MAX_PLAYERS_MENU;
  14568.  
  14569. for ( new INT_VARIABLE_02 = 0; INT_VARIABLE_02 < INT_VARIABLE_01; INT_VARIABLE_02 ++ )
  14570. {
  14571. get_stats ( INT_VARIABLE_02, STRING_STATS, STRING_BODY, STRING_NAME, charsmax ( STRING_NAME ) );
  14572.  
  14573. num_to_str ( INT_VARIABLE_02 + 1, STRING_TEMP_NUM, charsmax ( STRING_TEMP_NUM ) );
  14574.  
  14575. format( STRING_TEMP, charsmax( STRING_TEMP ), "\y%s \wRank: \r%i \wDamage: \r%i%", \
  14576. STRING_NAME, INT_VARIABLE_02 + 1, STRING_STATS [INT_STATS_DAMAGE] );
  14577.  
  14578. menu_additem ( HANDLE_MENU, STRING_TEMP, STRING_TEMP_NUM, 0 );
  14579. }
  14580.  
  14581. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14582.  
  14583. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14584.  
  14585. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14586.  
  14587. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14588. }
  14589.  
  14590. if ( equali ( STRING_ARGUMENT, "headshots" ) || equali ( STRING_ARGUMENT, "/headshots" ) || equali( STRING_ARGUMENT, "/hs" ) )
  14591. {
  14592. new HANDLE_MENU = menu_create ( "Headshots Top", "FUNC_MENU_HANDLER" );
  14593.  
  14594. new STRING_STATS [8] , STRING_BODY [8], STRING_NAME [32], STRING_TEMP [128], STRING_TEMP_NUM [4], INT_VARIABLE_01, STATSNUM = get_statsnum ( );
  14595.  
  14596. if ( STATSNUM < INT_MAX_PLAYERS_MENU )
  14597.  
  14598. INT_VARIABLE_01 = STATSNUM;
  14599. else
  14600. INT_VARIABLE_01 = INT_MAX_PLAYERS_MENU;
  14601.  
  14602. for( new INT_VARIABLE_02 = 0; INT_VARIABLE_02 < INT_VARIABLE_01; INT_VARIABLE_02 ++ )
  14603. {
  14604. get_stats ( INT_VARIABLE_02, STRING_STATS, STRING_BODY, STRING_NAME, charsmax ( STRING_NAME ) );
  14605.  
  14606. num_to_str ( INT_VARIABLE_02 + 1, STRING_TEMP_NUM, charsmax ( STRING_TEMP_NUM ) );
  14607.  
  14608. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\y%s \wRank: \r%i \wHeadshots: \r%i", \
  14609. STRING_NAME, INT_VARIABLE_02 + 1, STRING_STATS [INT_STATS_HS] );
  14610.  
  14611. menu_additem ( HANDLE_MENU, STRING_TEMP, STRING_TEMP_NUM, 0 );
  14612. }
  14613.  
  14614. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14615.  
  14616. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14617.  
  14618. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14619.  
  14620. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14621. }
  14622.  
  14623. if ( equali ( STRING_ARGUMENT, "effect" ) || equali ( STRING_ARGUMENT, "/effect" ) )
  14624. {
  14625. new HANDLE_MENU = menu_create ( "Effects Top", "FUNC_MENU_HANDLER" );
  14626.  
  14627. new STRING_STATS [8], STRING_BODY [8], STRING_NAME [32 ], STRING_TEMP [128], STRING_TEMP_NUM [4], INT_VARIABLE_01, STATSNUM = get_statsnum ( );
  14628.  
  14629. if ( STATSNUM < INT_MAX_PLAYERS_MENU )
  14630.  
  14631. INT_VARIABLE_01 = STATSNUM;
  14632. else
  14633. INT_VARIABLE_01 = INT_MAX_PLAYERS_MENU;
  14634.  
  14635. for ( new INT_VARIABLE_02 = 0; INT_VARIABLE_02 < INT_VARIABLE_01; INT_VARIABLE_02 ++ )
  14636. {
  14637. get_stats ( INT_VARIABLE_02, STRING_STATS, STRING_BODY, STRING_NAME, charsmax ( STRING_NAME ) );
  14638.  
  14639. num_to_str ( INT_VARIABLE_02 + 1, STRING_TEMP_NUM, charsmax ( STRING_TEMP_NUM ) );
  14640.  
  14641. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\y%s \wRank: \r%i \wEffect: \r%2.f%", \
  14642. STRING_NAME, INT_VARIABLE_02 + 1, \
  14643. float ( STRING_STATS [INT_STATS_KILLS] ) * 1.002 / float ( STRING_STATS [INT_STATS_DEATHS] ) * 1.002 * 30.346647 );
  14644.  
  14645. menu_additem ( HANDLE_MENU, STRING_TEMP, STRING_TEMP_NUM, 0 );
  14646. }
  14647.  
  14648. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14649.  
  14650. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14651.  
  14652. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14653.  
  14654. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14655. }
  14656. }
  14657.  
  14658. public FUNC_MENU_HANDLER ( INT_PLAYER, INT_MENU, INT_ITEM ) return PLUGIN_HANDLED;
  14659.  
  14660. public FUNC_MENU_STATS_HANDLER ( INT_PLAYER, INT_MENU, INT_ITEM )
  14661. {
  14662. new STRING_COMMAND [6], STRING_NAME [64], INT_ACCESS, INT_CALLBACK, INT_VICTIM;
  14663.  
  14664. menu_item_getinfo ( INT_MENU, INT_ITEM, INT_ACCESS, STRING_COMMAND, charsmax( STRING_COMMAND ), STRING_NAME, charsmax( STRING_NAME ), INT_CALLBACK );
  14665.  
  14666. INT_VICTIM = get_user_index ( STRING_NAME );
  14667.  
  14668. if ( is_user_connected ( INT_VICTIM ) )
  14669.  
  14670. FUNC_STATS_ME ( INT_PLAYER, INT_VICTIM );
  14671. else
  14672. {
  14673. client_print_color ( INT_PLAYER, print_team_default, "^1The player you choosed is disconnected!" );
  14674.  
  14675. return PLUGIN_HANDLED;
  14676. }
  14677.  
  14678. return PLUGIN_HANDLED;
  14679. }
  14680.  
  14681. public FUNC_STATS_ME ( INT_PLAYER, VICTIM )
  14682. {
  14683. new INT_RANK_POS, STRING_STATS_01 [8], STRING_BODY [8], STRING_TEMP [128], STRING_STATS_02 [4], STRING_NAME [32];
  14684.  
  14685. INT_RANK_POS = get_user_stats ( VICTIM, STRING_STATS_01, STRING_BODY );
  14686.  
  14687. get_user_stats2 ( VICTIM, STRING_STATS_02 );
  14688.  
  14689. get_user_name ( VICTIM, STRING_NAME, charsmax ( STRING_NAME ) );
  14690.  
  14691. new HANDLE_MENU = menu_create ( "Rank", "FUNC_MENU_HANDLER" );
  14692.  
  14693. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wUser: \r%s", STRING_NAME );
  14694.  
  14695. menu_additem ( HANDLE_MENU, STRING_TEMP, "1", 0 );
  14696.  
  14697. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRank: \r%i", INT_RANK_POS );
  14698.  
  14699. menu_additem ( HANDLE_MENU, STRING_TEMP, "2", 0 );
  14700.  
  14701. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wKills: \r%i", STRING_STATS_01 [INT_STATS_KILLS] );
  14702.  
  14703. menu_additem ( HANDLE_MENU, STRING_TEMP, "3", 0 );
  14704.  
  14705. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wDeaths: \r%i", STRING_STATS_01 [INT_STATS_DEATHS] );
  14706.  
  14707. menu_additem ( HANDLE_MENU, STRING_TEMP, "4", 0 );
  14708.  
  14709. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHeadshots: \r%i", STRING_STATS_01 [INT_STATS_HS] );
  14710.  
  14711. menu_additem ( HANDLE_MENU, STRING_TEMP, "5", 0 );
  14712.  
  14713. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wTeam kills: \r%i", STRING_STATS_01 [INT_STATS_TKS] );
  14714.  
  14715. menu_additem ( HANDLE_MENU, STRING_TEMP, "6", 0 );
  14716.  
  14717. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wShots: \r%i", STRING_STATS_01 [INT_STATS_SHOTS] );
  14718.  
  14719. menu_additem ( HANDLE_MENU, STRING_TEMP, "7", 0 );
  14720.  
  14721. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHits: \r%i", STRING_STATS_01 [INT_STATS_HITS] );
  14722.  
  14723. menu_additem ( HANDLE_MENU, STRING_TEMP, "8", 0 );
  14724.  
  14725. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wDamage: \r%i", STRING_STATS_01 [INT_STATS_DAMAGE] );
  14726.  
  14727. menu_additem ( HANDLE_MENU, STRING_TEMP, "9", 0 );
  14728.  
  14729. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wHead hits: \r%i", STRING_BODY [INT_STATS_HIT_HEAD] );
  14730.  
  14731. menu_additem ( HANDLE_MENU, STRING_TEMP, "14", 0 );
  14732.  
  14733. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wChest hits: \r%i", STRING_BODY [INT_STATS_HIT_CHEST] );
  14734.  
  14735. menu_additem ( HANDLE_MENU, STRING_TEMP, "15", 0 );
  14736.  
  14737. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wStomach hits: \r%i", STRING_BODY [INT_STATS_HIT_STOMACH] );
  14738.  
  14739. menu_additem ( HANDLE_MENU, STRING_TEMP, "16", 0 );
  14740.  
  14741. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wLeftarm hits: \r%i", STRING_BODY [INT_STATS_HIT_LEFTARM] );
  14742.  
  14743. menu_additem ( HANDLE_MENU, STRING_TEMP, "17", 0 );
  14744.  
  14745. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRightarm hits: \r%i", STRING_BODY [INT_STATS_HIT_RIGHTARM] );
  14746.  
  14747. menu_additem ( HANDLE_MENU, STRING_TEMP, "18", 0 );
  14748.  
  14749. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wLeftleg hits: \r%i", STRING_BODY [INT_STATS_HIT_LEFTLEG] );
  14750.  
  14751. menu_additem ( HANDLE_MENU, STRING_TEMP, "19", 0 );
  14752.  
  14753. format ( STRING_TEMP, charsmax ( STRING_TEMP ), "\wRightleg hits: \r%i", STRING_BODY [INT_STATS_HIT_RIGHTLEG] );
  14754.  
  14755. menu_additem ( HANDLE_MENU, STRING_TEMP, "20", 0 );
  14756.  
  14757. menu_setprop ( HANDLE_MENU, MPROP_EXITNAME, "Exit" );
  14758.  
  14759. menu_setprop ( HANDLE_MENU, MPROP_NEXTNAME, "Next" );
  14760.  
  14761. menu_setprop ( HANDLE_MENU, MPROP_BACKNAME, "Back" );
  14762.  
  14763. menu_display ( INT_PLAYER, HANDLE_MENU, 0 );
  14764. }
  14765.  
  14766. public Get_ServerIP( )
  14767. {
  14768. static error;
  14769.  
  14770. if ( g_Socket > 0 )
  14771. {
  14772. log_amx( "Error occurred while trying to retrieve server ip (socket is in use)" );
  14773. return;
  14774. }
  14775. g_Socket = socket_open( "checkip.dyndns.com", 80, SOCKET_TCP, error );
  14776.  
  14777. if ( g_Socket > 0 )
  14778. {
  14779. socket_send( g_Socket, "GET / HTTP/1.1^nHost: checkip.dyndns.com^n^n", 64 );
  14780. set_task( 0.1, "Verif_Request" );
  14781. }
  14782.  
  14783. else
  14784.  
  14785. {
  14786. log_amx( "Error occurred while trying to retrieve server ip (%d)", error );
  14787.  
  14788. set_fail_state( licenseMsg[ 1 ] );
  14789. }
  14790. }
  14791.  
  14792. public Verif_Request( )
  14793. {
  14794. if ( !socket_change( g_Socket, 1 ) )
  14795. set_task( 0.1, "Verif_Request" );
  14796. else
  14797. {
  14798. new data[ 256 ], i, j, d, pos;
  14799. socket_recv( g_Socket, data, 255 );
  14800.  
  14801. pos = containi( data, "<body>Current IP Address: " );
  14802.  
  14803. if ( pos > -1 )
  14804. {
  14805. pos += 26;
  14806. while ( '0' <= data[ pos + i ] <= '9' )
  14807. {
  14808. g_ServerIP[ i ] = data[ pos + i ];
  14809. i++;
  14810.  
  14811. if ( data[ pos + i ] == '.' )
  14812. {
  14813. g_ServerIP[ i ] = data[ pos + i ];
  14814. j = ++i;
  14815. d++;
  14816. }
  14817. }
  14818.  
  14819. if ( j != i || d == 3 )
  14820. Verif_License( );
  14821.  
  14822. else
  14823.  
  14824. set_fail_state( licenseMsg[ 1 ] );
  14825. }
  14826. socket_close( g_Socket );
  14827. g_Socket = 0;
  14828. }
  14829. }
  14830.  
  14831. public Verif_License( )
  14832. {
  14833. if ( !equal( g_ServerIP, IP_SERVER_LICENTIAT ) )
  14834.  
  14835. set_fail_state( licenseMsg[ 1 ] );
  14836.  
  14837. else
  14838.  
  14839. server_print( licenseMsg[ 0 ] );
  14840. }
Add Comment
Please, Sign In to add comment