HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <dhudmessage>
  6.  
  7. new knife_kill, grenade_kill, headshot, normal_kill
  8.  
  9. new level[32]
  10. new bool:kills[32]
  11.  
  12. new one_kill
  13. new two_kill
  14. new three_kill
  15. new four_kill
  16. new five_kill
  17. new six_kill
  18. new seven_kill
  19. new eight_kill
  20. new g_lastkill
  21. new g_firstblood
  22.  
  23. public plugin_precache()
  24. {
  25. headshot = precache_model("sprites/headshot.spr")
  26. knife_kill = precache_model("sprites/knife_kill.spr")
  27. grenade_kill = precache_model("sprites/grenade_kill.spr")
  28. one_kill = precache_model("sprites/1_kill.spr")
  29. two_kill = precache_model("sprites/2_kill.spr")
  30. three_kill = precache_model("sprites/3_kill.spr")
  31. four_kill = precache_model("sprites/4_kill.spr")
  32. five_kill = precache_model("sprites/5_kill.spr")
  33. six_kill = precache_model("sprites/6_kill.spr")
  34. seven_kill = precache_model("sprites/7_kill.spr")
  35. eight_kill = precache_model("sprites/8_kill.spr")
  36. normal_kill = precache_model("sprites/normal_kill.spr")
  37. precache_sound("misc/headshot.wav")
  38. precache_sound("misc/knife_kill.wav")
  39. precache_sound("misc/grenade_kill.wav")
  40. precache_sound("misc/wallshot.wav")
  41. precache_sound("misc/1_kill.wav")
  42. precache_sound("misc/2_kill.wav")
  43. precache_sound("misc/3_kill.wav")
  44. precache_sound("misc/4_kill.wav")
  45. precache_sound("misc/5_kill.wav")
  46. precache_sound("misc/6_kill.wav")
  47. precache_sound("misc/7_kill.wav")
  48. precache_sound("misc/8_kill.wav")
  49. precache_sound("misc/firstblood.wav")
  50. precache_sound("misc/last_kill.wav")
  51. precache_sound("misc/unstoppable.wav")
  52. }
  53.  
  54. public plugin_init()
  55. {
  56. register_plugin("Death Sprite Effect","1.5","RaZzoR")
  57. register_event("DeathMsg","onDeath","a")
  58. register_event("DeathMsg","onDeath_level","a")
  59. register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
  60. register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  61. register_event("RoundTime", "eNewRound", "bc")
  62. }
  63.  
  64. public eNewRound()
  65. {
  66. if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
  67. {
  68. g_firstblood = 1
  69. }
  70. }
  71.  
  72. public eRestart()
  73. {
  74. eEndRound()
  75. g_firstblood = 1
  76. }
  77.  
  78. public eEndRound()
  79. {
  80.  
  81. }
  82.  
  83. public client_disconnect(id)
  84. {
  85. level[id]= 0
  86. }
  87. public client_putinserver(id)
  88. {
  89. level[id]= 0
  90. }
  91.  
  92. public onDeath()
  93. {
  94. new name_attacker[32]
  95. new name_victim[32]
  96. new wpn[3]
  97. new hs = read_data(3)
  98. new attacker = read_data(1)
  99. new victim = read_data(2)
  100.  
  101. get_user_name(attacker, name_attacker, 31)
  102. get_user_name(victim, name_victim, 31)
  103. read_data(4,wpn,2)
  104.  
  105. if (wpn[0] != 'k' && wpn[1] != 'r' && !can_see_fm(attacker, victim))
  106. {
  107. if (hs)
  108. {
  109. set_dhudmessage(255, 0, 0, -1.0, 0.20, 0, 6.0, 3.0, 0.1, 1.5)
  110. show_dhudmessage(attacker, "FALON AT FEJLOVES!^n-|IGEN! :D|-")
  111. client_cmd(attacker,"spk misc/headshot")
  112. }
  113. else
  114. {
  115. set_dhudmessage(0, 98, 139, -1.0, 0.25, 0, 6.0, 3.0, 0.1, 1.5)
  116. show_dhudmessage(attacker, "FALON AT OLES!")
  117. client_cmd(attacker,"spk misc/wallshot")
  118. }
  119. }
  120. else if (hs && wpn[0] != 'k' && wpn[1] != 'r')
  121. {
  122. show_sprite(victim, headshot)
  123. client_cmd(attacker,"spk misc/headshot")
  124. }
  125. else if (wpn[0] == 'k')
  126. {
  127. show_sprite(victim, knife_kill)
  128. client_cmd(attacker,"spk misc/knife_kill")
  129. }
  130. else if (wpn[1] == 'r')
  131. {
  132. show_sprite(victim, grenade_kill)
  133. client_cmd(attacker,"spk misc/grenade_kill")
  134. }
  135. else
  136. {
  137. show_sprite(victim, normal_kill)
  138. }
  139.  
  140. return PLUGIN_CONTINUE
  141. }
  142.  
  143. public onDeath_level()
  144. {
  145. new players_ct[32], players_t[32], ict, ite
  146. get_players(players_ct,ict,"ae","CT")
  147. get_players(players_t,ite,"ae","TERRORIST")
  148. if (ict == 0 || ite == 0) g_lastkill = 1
  149.  
  150. new attacker = read_data(1)
  151. new victim = read_data(2)
  152. new name_attacker[32]
  153. new name_victim[32]
  154.  
  155. level[attacker] += 1
  156. level[victim]= 0
  157.  
  158. get_user_name(attacker, name_attacker, 31)
  159. get_user_name(victim, name_victim, 31)
  160.  
  161. if((victim == attacker) || (get_user_team(attacker) == get_user_team(victim)) || !victim || !attacker)
  162. return PLUGIN_CONTINUE
  163.  
  164.  
  165.  
  166. if (g_firstblood && attacker!=victim && attacker>0)
  167. {
  168. g_firstblood = 0
  169. set_dhudmessage(255, 105, 180, -1.0, 0.35, 0, 6.0, 3.0, 0.1, 1.5)
  170. show_dhudmessage(0, "ELSO OLES: ^n %s megolte %s-t!", name_attacker, name_victim)
  171. client_cmd(0, "speak misc/firstblood")
  172. }
  173. if (g_lastkill == 1)
  174. {
  175. g_lastkill = 0
  176. set_dhudmessage(255, 215, 0, -1.0, 0.30, 0, 6.0, 3.0, 0.1, 1.5)
  177. show_dhudmessage(0, "UTOLSO OLES: ^n %s megolte %s-t!", name_attacker, name_victim)
  178. client_cmd(0, "speak misc/last_kill")
  179. }
  180. if (level[attacker] == 1)
  181. {
  182. show_sprite(victim, one_kill)
  183. kills[victim] = true
  184. client_cmd(attacker,"spk misc/1_kill")
  185.  
  186. }
  187. if (level[attacker] == 2)
  188. {
  189. show_sprite(victim, two_kill)
  190. kills[victim] = true
  191. client_cmd(attacker,"spk misc/2_kill")
  192.  
  193. }
  194. if (level[attacker] == 3)
  195. {
  196. show_sprite(victim, three_kill)
  197. kills[victim] = true
  198. client_cmd(attacker,"spk misc/3_kill")
  199.  
  200. }
  201. if (level[attacker] == 4)
  202. {
  203. show_sprite(victim, four_kill)
  204. kills[victim] = true
  205. client_cmd(attacker,"spk misc/4_kill")
  206.  
  207. }
  208. if (level[attacker] == 5)
  209. {
  210. show_sprite(victim, five_kill)
  211. kills[victim] = true
  212. client_cmd(attacker,"spk misc/5_kill")
  213.  
  214. }
  215. if (level[attacker] == 6)
  216. {
  217. show_sprite(victim, six_kill)
  218. kills[victim] = true
  219. client_cmd(attacker,"spk misc/6_kill")
  220.  
  221. }
  222. if (level[attacker] == 7)
  223. {
  224. show_sprite(victim, seven_kill)
  225. kills[victim] = true
  226. client_cmd(attacker,"spk misc/7_kill")
  227.  
  228. }
  229. if (level[attacker] == 8)
  230. {
  231. show_sprite(victim, eight_kill)
  232. kills[victim] = true
  233. client_cmd(attacker,"spk misc/8_kill")
  234.  
  235.  
  236.  
  237. }
  238.  
  239. return PLUGIN_CONTINUE
  240. }
  241.  
  242. public show_sprite(attacker, sprite)
  243. {
  244. if(!is_user_connected(attacker))
  245. return PLUGIN_CONTINUE
  246.  
  247.  
  248.  
  249. static origin[3]
  250. get_user_origin(attacker, origin)
  251.  
  252. message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
  253. write_byte(TE_SPRITE)
  254. write_coord(origin[0])
  255. write_coord(origin[1])
  256. write_coord(origin[2]+65)
  257. write_short(sprite)
  258. write_byte(10)
  259. write_byte(250)
  260. message_end()
  261.  
  262. return PLUGIN_CONTINUE
  263. }
  264.  
  265. public podesi_boolove(id)
  266. {
  267. kills[id] = false
  268. }
  269.  
  270. bool:can_see_fm(entindex1, entindex2)
  271. {
  272. if (!entindex1 || !entindex2)
  273. return false
  274.  
  275. if (pev_valid(entindex1) && pev_valid(entindex1))
  276. {
  277. new flags = pev(entindex1, pev_flags)
  278. if (flags & EF_NODRAW || flags & FL_NOTARGET)
  279. {
  280. return false
  281. }
  282.  
  283. new Float:lookerOrig[3]
  284. new Float:targetBaseOrig[3]
  285. new Float:targetOrig[3]
  286. new Float:temp[3]
  287.  
  288. pev(entindex1, pev_origin, lookerOrig)
  289. pev(entindex1, pev_view_ofs, temp)
  290. lookerOrig[0] += temp[0]
  291. lookerOrig[1] += temp[1]
  292. lookerOrig[2] += temp[2]
  293.  
  294. pev(entindex2, pev_origin, targetBaseOrig)
  295. pev(entindex2, pev_view_ofs, temp)
  296. targetOrig[0] = targetBaseOrig [0] + temp[0]
  297. targetOrig[1] = targetBaseOrig [1] + temp[1]
  298. targetOrig[2] = targetBaseOrig [2] + temp[2]
  299.  
  300. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player
  301. if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  302. {
  303. return false
  304. }
  305. else
  306. {
  307. new Float:flFraction
  308. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  309. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  310. {
  311. return true
  312. }
  313. else
  314. {
  315. targetOrig[0] = targetBaseOrig [0]
  316. targetOrig[1] = targetBaseOrig [1]
  317. targetOrig[2] = targetBaseOrig [2]
  318. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player
  319. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  320. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  321. {
  322. return true
  323. }
  324. else
  325. {
  326. targetOrig[0] = targetBaseOrig [0]
  327. targetOrig[1] = targetBaseOrig [1]
  328. targetOrig[2] = targetBaseOrig [2] - 17.0
  329. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the legs of seen player
  330. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  331. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  332. {
  333. return true
  334. }
  335. }
  336. }
  337. }
  338. }
  339. return false
  340. }