HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define VERSION "2.1"
  5.  
  6. new g_kills[33] = {0,...}
  7. new g_deaths[33] = {0,...}
  8. new g_levels[13] = {3, 5, 7, 9, 11, 13, 16, 19, 22, 25, 28, 31, 35}
  9.  
  10. new g_roundKills[33], g_top
  11. new g_firstBlood
  12.  
  13. new bool:g_died[33]
  14.  
  15. new streakSounds[13][] =
  16. {
  17. "qs/rampage.wav",
  18. "qs/killingspree.wav",
  19. "qs/dominating.wav",
  20. "qs/unstoppable.wav",
  21. "qs/ultrakill.wav",
  22. "qs/eagleeye.wav",
  23. "qs/ownage.wav",
  24. "qs/ludicrouskill.wav",
  25. "qs/headhunter.wav",
  26. "qs/whickedsick.wav",
  27. "qs/monsterkill.wav",
  28. "qs/holyshit.wav",
  29. "qs/godlike.wav"
  30. }
  31.  
  32. new streakMsgs[13][] =
  33. {
  34. "RAMPAGE",
  35. "KILLING_SPREE",
  36. "DOMINATING",
  37. "UNSTOPPABLE",
  38. "ULTRA_KILL",
  39. "EAGLE_EYE",
  40. "OWNAGE",
  41. "LUDICROUS_KILL",
  42. "HEAD_HUNTER",
  43. "WHICKED_SICK",
  44. "MONSTER_KILL",
  45. "HOLY_SHIT",
  46. "GODLIKE"
  47. }
  48.  
  49. new qs_enable, qs_streak, qs_firstblood, qs_headshot, qs_humiliatingdefeat, qs_hattrick, qs_flawlessvictory
  50.  
  51. new g_msgHudSync
  52.  
  53. public plugin_init()
  54. {
  55. register_plugin("Quake Sounds", VERSION, "hleV")
  56. register_cvar("qs_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  57.  
  58. register_dictionary("quakesounds.txt")
  59. register_dictionary("common.txt")
  60.  
  61. register_concmd("amx_quakesounds", "cmdQuakeSounds", ADMIN_RCON, "<1|0> - enables/disables Quake Sounds")
  62. register_clcmd("say qs_version", "cmdSayVersion")
  63.  
  64. qs_enable = register_cvar("qs_enable", "1")
  65. qs_streak = register_cvar("qs_streak", "1")
  66. qs_firstblood = register_cvar("qs_firstblood", "1")
  67. qs_headshot = register_cvar("qs_headshot", "1")
  68. qs_humiliatingdefeat = register_cvar("qs_humiliatingdefeat", "1")
  69. qs_hattrick = register_cvar("qs_hattrick", "4")
  70. qs_flawlessvictory = register_cvar("qs_flawlessvictory", "6")
  71.  
  72. register_event("DeathMsg", "death", "a", "1>0")
  73. register_event("DeathMsg", "deathHS", "a", "3=1")
  74. register_event("DeathMsg", "deathHD", "a", "4&kni")
  75. register_event("SendAudio", "roundEnd", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
  76. register_event("SendAudio", "soundCTWin", "a", "2=%!MRAD_ctwin")
  77. register_event("SendAudio", "soundTWin", "a", "2=%!MRAD_terwin")
  78.  
  79. register_logevent("gameStart", 2, "1=Game_Commencing")
  80. register_logevent("roundStart", 2, "1=Round_Start")
  81.  
  82. g_msgHudSync = CreateHudSyncObj()
  83. }
  84.  
  85. public cmdQuakeSounds(id, level)
  86. {
  87. if (!(get_user_flags(id) & level))
  88. {
  89. console_print(id, "%L", LANG_SERVER, "NO_ACC_COM")
  90.  
  91. return PLUGIN_HANDLED
  92. }
  93.  
  94. new arg[2]
  95. read_argv(1, arg, 1)
  96.  
  97. if (equali(arg, "1"))
  98. {
  99. if (get_pcvar_num(qs_enable))
  100. console_print(id, "%L", LANG_SERVER, "ALREADY_ENABLED")
  101. else
  102. {
  103. set_pcvar_num(qs_enable, 1)
  104. console_print(id, "%L", LANG_SERVER, "ENABLED")
  105. }
  106. }
  107. else if (equali(arg, "0"))
  108. {
  109. if (get_pcvar_num(qs_enable))
  110. {
  111. set_pcvar_num(qs_enable, 0)
  112. console_print(id, "%L", LANG_SERVER, "DISABLED")
  113. }
  114. else
  115. console_print(id, "%L", LANG_SERVER, "ALREADY_DISABLED")
  116. }
  117. else
  118. console_print(id, "%L: amx_quakesounds <1|0>", LANG_SERVER, "USAGE")
  119.  
  120. return PLUGIN_HANDLED
  121. }
  122.  
  123. public cmdSayVersion(id)
  124. client_print(id, print_chat, "Quake Sounds %s by hleV | Download @ www.amxmodx.org", VERSION)
  125.  
  126. public client_connect(id)
  127. {
  128. g_kills[id] = 0
  129. g_deaths[id] = 0
  130. g_roundKills[id] = 0
  131. g_top = 0
  132. }
  133.  
  134. public death()
  135. {
  136. if (!get_pcvar_num(qs_enable))
  137. return PLUGIN_HANDLED
  138.  
  139. new killer = read_data(1)
  140. new victim = read_data(2)
  141.  
  142. g_kills[victim] = 0
  143. g_deaths[victim] += 1
  144. g_died[victim] = true
  145.  
  146. if (get_pcvar_num(qs_streak) && killer != victim)
  147. {
  148. g_kills[killer] += 1
  149. g_kills[victim] = 0
  150.  
  151. for (new i = 0; i < 13; i++)
  152. if (g_kills[killer] == g_levels[i])
  153. streakAnnounce(killer, i)
  154. }
  155.  
  156. if (get_pcvar_num(qs_firstblood) && g_firstBlood && killer != victim)
  157. {
  158. new name[32]
  159. get_user_name(killer, name, 31)
  160.  
  161. set_hudmessage(200, 200, 200, -1.0, 0.27, 0, 6.0, 5.0)
  162. ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "FIRST_BLOOD", name)
  163. client_cmd(0, "spk qs/firstBlood")
  164.  
  165. g_firstBlood = 0
  166. }
  167.  
  168. if (get_pcvar_num(qs_hattrick) && killer != victim)
  169. {
  170. g_roundKills[killer] = g_roundKills[killer] + 1
  171.  
  172. topPlayer()
  173. }
  174.  
  175. return PLUGIN_CONTINUE
  176. }
  177.  
  178. streakAnnounce(killer, level)
  179. {
  180. new name[32]
  181. get_user_name(killer, name, 32)
  182.  
  183. set_hudmessage(200, 200, 200, -1.0, 0.27, 0, 6.0, 5.0)
  184. ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, streakMsgs[level], name)
  185. client_cmd(0, "spk %s", streakSounds[level])
  186. }
  187.  
  188. public topPlayer()
  189. {
  190. new players[32], score, playerNum
  191. get_players(players, playerNum)
  192.  
  193. for (new i = 0; i < playerNum; i++)
  194. {
  195. if (g_roundKills[players[i]] > score)
  196. {
  197. score = g_roundKills[players[i]]
  198. g_top = players[i]
  199. }
  200. else if (g_roundKills[players[i]] == score)
  201. g_top = 0
  202. }
  203. }
  204.  
  205. public gameStart() g_firstBlood = 1
  206.  
  207. public roundStart()
  208. {
  209. if (get_pcvar_num(qs_firstblood) >= 2)
  210. g_firstBlood = 1
  211.  
  212. for (new i = 1; i <= get_maxplayers(); i++)
  213. g_died[i] = false
  214. }
  215.  
  216. public deathHS()
  217. {
  218. if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_headshot))
  219. return PLUGIN_HANDLED
  220.  
  221. if (get_pcvar_num(qs_headshot) == 1)
  222. client_cmd(read_data(1), "spk qs/headshot")
  223. else if (get_pcvar_num(qs_headshot) >= 2)
  224. client_cmd(0, "spk qs/headshot")
  225.  
  226. return PLUGIN_CONTINUE
  227. }
  228.  
  229. public deathHD()
  230. {
  231. if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_humiliatingdefeat))
  232. return PLUGIN_HANDLED
  233.  
  234. if (get_pcvar_num(qs_humiliatingdefeat) == 1)
  235. client_cmd(read_data(1), "spk qs/humiliatingdefeat")
  236. else if (get_pcvar_num(qs_humiliatingdefeat) >= 2)
  237. client_cmd(0, "spk qs/humiliatingdefeat")
  238.  
  239. return PLUGIN_CONTINUE
  240. }
  241.  
  242. public roundEnd()
  243. {
  244. if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_hattrick))
  245. return PLUGIN_HANDLED
  246.  
  247. new players[32], playerNum
  248. get_players(players, playerNum)
  249.  
  250. if (g_top != 0 && g_roundKills[g_top] >= get_pcvar_num(qs_hattrick))
  251. set_task(3.0, "setHattrick", g_top)
  252.  
  253. for (new i = 0; i < playerNum; i++)
  254. {
  255. g_roundKills[players[i]] = 0
  256. g_top = 0
  257. }
  258.  
  259. return PLUGIN_CONTINUE
  260. }
  261.  
  262. public setHattrick(g_top)
  263. {
  264. new name[32]
  265. get_user_name(g_top, name, 32)
  266.  
  267. set_hudmessage(200, 200, 200, -1.0, 0.27, 0, 6.0, 5.0)
  268. ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "HATTRICK", name)
  269. client_cmd(0, "spk qs/hattrick")
  270. }
  271.  
  272. public soundCTWin() checkAlive("CT")
  273. public soundTWin() checkAlive("TERRORIST")
  274.  
  275. checkAlive(const team[])
  276. {
  277. if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_flawlessvictory))
  278. return PLUGIN_HANDLED
  279.  
  280. new players[32], playerNum, bool:g_flawlessVictory = true
  281. get_players(players, playerNum, "e", team)
  282.  
  283. for (new i = 0; i < playerNum; i++)
  284. {
  285. if (!is_user_alive(players[i]) && g_died[players[i]])
  286. {
  287. g_flawlessVictory = false
  288.  
  289. break
  290. }
  291. }
  292.  
  293. if (g_flawlessVictory)
  294. set_task(1.5, "setFlawlessVictory", team[0])
  295.  
  296. return 1
  297. }
  298.  
  299. public setFlawlessVictory(team)
  300. {
  301. if (team == 'C')
  302. {
  303. set_hudmessage(200, 200, 200, 0.64, 0.85, 0, 6.0, 10.0)
  304. show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_CT")
  305. client_cmd(0, "speak qs/flawlessvictory")
  306. }
  307. else if (team == 'T')
  308. {
  309. set_hudmessage(200, 200, 200, 0.64, 0.85, 0, 6.0, 10.0)
  310. show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_T")
  311. client_cmd(0, "speak qs/flawlessvictory")
  312. }
  313. }
  314.  
  315. public plugin_precache()
  316. {
  317. new i
  318.  
  319. for (i = 0; i < 13; i++)
  320. precache_sound(streakSounds[i])
  321.  
  322. precache_sound("qs/firstblood.wav")
  323. precache_sound("qs/headshot.wav")
  324. precache_sound("qs/humiliatingdefeat.wav")
  325. precache_sound("qs/hattrick.wav")
  326. precache_sound("qs/flawlessvictory.wav")
  327. }