HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* Admin Posion.
  2. *
  3. * (c) Copyright 2002-2003, AssKicR
  4. * This file is provided as is (no warranties).
  5. */
  6.  
  7. #include <amxmodx>
  8. #include <amxmisc>
  9. #include <fun>
  10. #include <engine_const>
  11.  
  12. /*
  13. * Usage: amx_poison <nick> <damage/second> <secs>
  14. * Examples:
  15. * amx_poison AssKicR 10 10 - makes AssKicR loose 10hp every sec for 10secs
  16. * amx_poison HaXXor 1 100 - makes HaXXor loose 1 hp every sec for 100secs
  17. *
  18. *
  19. * Know Bugs::
  20. * None
  21. *
  22. */
  23.  
  24. new g_isPoisoned[33]
  25. new g_PoisonDmg[33]
  26. new g_PoisonTime[33]
  27. new gmsgDamage
  28. //----------------------------------------------------------------------------------------------
  29. public plugin_init()
  30. {
  31. // Plugin Info
  32. register_plugin("Admin Poison","1.1","AssKicR")
  33. register_concmd("amx_poison","cmdPoison",ADMIN_SLAY,"<nick> <damage/second> <secs>")
  34. set_task(1.0,"posion_loop",0,"",0,"b" )
  35. register_event("DeathMsg","death","a")
  36. register_event("ResetHUD","newround","b")
  37. }
  38. //----------------------------------------------------------------------------------------------
  39. public posion_loop()
  40. {
  41. for ( new id=1; id<=32; id++ ) {
  42. if ( g_isPoisoned[id] && is_user_alive(id) )
  43. {
  44. if ( is_user_alive(id) )
  45. {
  46. new userHealth=get_user_health(id)
  47. set_user_health(id, userHealth - g_PoisonDmg[id] )
  48. g_PoisonTime[id]=(g_PoisonTime[id]-1)
  49. if (g_PoisonTime[id]<=0)
  50. {
  51. g_isPoisoned[id]=false
  52. }
  53. if ( userHealth - g_PoisonDmg[id] <= 0 )
  54. {
  55. message_begin( MSG_BROADCAST, get_user_msgid("DeathMsg"),{0,0,0},0)
  56. write_byte(id)
  57. write_byte(id)
  58. write_byte(0)
  59. write_string("infection")
  60. message_end()
  61. }
  62. }
  63.  
  64. new korigin[3]
  65. get_user_origin(id,korigin)
  66. message_begin(MSG_ONE, gmsgDamage, {0,0,0}, id)
  67. write_byte(30) // dmg_save
  68. write_byte(30) // dmg_take
  69. write_long((DMG_ENERGYBEAM)) // visibleDamageBits
  70. write_coord(korigin[0]) // damageOrigin.x
  71. write_coord(korigin[1]) // damageOrigin.y
  72. write_coord(korigin[2]) // damageOrigin.z
  73. message_end()
  74. }
  75. }
  76. }
  77. //----------------------------------------------------------------------------------------------
  78. //----------------------------------------------------------------------------------------------
  79. public client_connect(id) {
  80. g_isPoisoned[id]=false
  81. }
  82. //----------------------------------------------------------------------------------------------
  83. public client_disconnect(id) {
  84. g_isPoisoned[id]=false
  85. }
  86. //----------------------------------------------------------------------------------------------
  87. public death() {
  88. new id = read_data(2)
  89. g_isPoisoned[id]=false
  90. }
  91. //----------------------------------------------------------------------------------------------
  92. public newround(id) {
  93. g_isPoisoned[id]=false
  94. }
  95. //----------------------------------------------------------------------------------------------
  96.  
  97. public cmdPoison(id,level,cid){
  98. if (!cmd_access(id,level,cid,2))
  99. return PLUGIN_HANDLED
  100.  
  101. new arg[32]
  102. read_argv(1,arg,31)
  103.  
  104. new player = cmd_target(id,arg,5)
  105. if (!player) return PLUGIN_HANDLED
  106. new spower[32],authid[16],name2[32],authid2[16],name[32],newarg[32]
  107.  
  108. read_argv(2,spower,31)
  109. new damage = str_to_num(spower)
  110.  
  111. read_argv(3,newarg,31)
  112. new ptime = str_to_num(newarg)
  113.  
  114. if (damage == 0 && ptime == 0) {
  115. g_isPoisoned[player]=true
  116. g_PoisonDmg[player]=1
  117. g_PoisonTime[player]=99
  118. }
  119. if (damage <= 0) {
  120. client_print(id,print_console,"Nem tudsz 0-val, vagy kevesebbel mergezni!")
  121. return PLUGIN_HANDLED
  122. }
  123.  
  124. if (ptime <= 0) {
  125. client_print(id,print_console,"Nem tudsz 0masodpercig mergezni!")
  126. return PLUGIN_HANDLED
  127. }
  128. g_isPoisoned[player]=true
  129. g_PoisonDmg[player]=damage
  130. g_PoisonTime[player]=ptime
  131. get_user_authid(id,authid,15)
  132. get_user_name(id,name,31)
  133. get_user_authid(player,authid2,15)
  134. get_user_name(player,name2,31)
  135. log_amx("Cmd: ^"%s<%d><%s><>^" posion with %d damage each second for %d seconds ^"%s<%d><%s><>^"",
  136. name,get_user_userid(id),authid, damage, ptime,name2,get_user_userid(player),authid2 )
  137.  
  138. switch(get_cvar_num("amx_show_activity")) {
  139. case 2: client_print(0,print_chat,"ADMIN %s: Megmergezte %s-t.O most %d eletet veszit masodpercenkent",name,name2,damage)
  140. case 1: client_print(0,print_chat,"ADMIN: Megmergezte %s-t.O most %d eletet veszit masodpercenkent",name2,damage)
  141. }
  142.  
  143. return PLUGIN_HANDLED
  144. }