HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #define PLUGIN "[ZP] Extra cucc : Sátáni élet"
  2. #define AUTHOR "Leon McVeran"
  3. #define VERSION "v0.0"
  4. #define PDATE "24th April 2010"
  5.  
  6. #include <amxmodx>
  7. #include <fakemeta>
  8. #include <hamsandwich>
  9. #include <zombieplague>
  10.  
  11. #define TASK_REGENERATION 134000
  12. #define REGEN_FREQ 2.5
  13.  
  14. new bool:g_bHasExtraItem[33]
  15. new g_iExtraItem
  16.  
  17. new CVAR_regen_max
  18. new CVAR_regen_add
  19.  
  20. new gMsgScreenFade
  21.  
  22. public plugin_init(){
  23. register_plugin(PLUGIN, VERSION, AUTHOR)
  24.  
  25. g_iExtraItem = zp_register_extra_item("Sátáni élet", 4, ZP_TEAM_ZOMBIE)
  26.  
  27. CVAR_regen_max = register_cvar("zp_regen_max", "0.50")//Akkor kezdjen el regenerálódni a zombi élete amikor a HP-ja 50%-on vagy alatta van.
  28. CVAR_regen_add = register_cvar("zp_regen_add", "25")//Mennyi HP-t adjon az életéhez 2.5 másodpercenként
  29. }
  30.  
  31. public plugin_cfg(){
  32. gMsgScreenFade = get_user_msgid("ScreenFade")
  33.  
  34. set_task(REGEN_FREQ, "func_regeneration", TASK_REGENERATION, _, _, "b")
  35. }
  36.  
  37. public zp_extra_item_selected(iPlayer, iExtraItem){
  38. if (iExtraItem == g_iExtraItem) g_bHasExtraItem[iPlayer] = true
  39. }
  40.  
  41. public func_regeneration(){
  42.  
  43. new iPlayers[32], pNum
  44. get_players(iPlayers, pNum,"")
  45. for (new p = 0; p < pNum; p++){
  46.  
  47. // Spieler hat das Extra Item gekauft
  48. if (g_bHasExtraItem[iPlayers[p]]){
  49.  
  50. // Spieler ist tot oder kein Zombie
  51. if (!is_user_alive(iPlayers[p]) || !zp_get_user_zombie(iPlayers[p])){
  52. g_bHasExtraItem[iPlayers[p]] = false
  53. }
  54. else{
  55.  
  56. // Wenn max. Gesundheit -1 ist dann handelt es sich um einen Nemesis
  57. new iMaxHealth = zp_get_zombie_maxhealth(iPlayers[p])
  58. if (iMaxHealth != -1){
  59. new iMaxRegen = floatround(iMaxHealth * get_pcvar_float(CVAR_regen_max))
  60. new iCurHealth = fm_get_user_health(iPlayers[p])
  61. if (iCurHealth < iMaxRegen){
  62.  
  63. new iNewHealth = iCurHealth + get_pcvar_num(CVAR_regen_add)
  64. if (iNewHealth > iMaxRegen){
  65. fm_set_user_health(iPlayers[p], iMaxRegen)
  66. }
  67. else{
  68. fm_set_user_health(iPlayers[p], iNewHealth)
  69. }
  70.  
  71. message_begin(MSG_ONE_UNRELIABLE, gMsgScreenFade, {0, 0, 0}, iPlayers[p])
  72. write_short(1<<10)
  73. write_short(1<<10)
  74. write_short(0x0000)
  75. write_byte(200)
  76. write_byte(0)
  77. write_byte(0)
  78. write_byte(50)
  79. message_end()
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  86.  
  87. stock fm_set_user_health(index, health){
  88. health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index)
  89.  
  90. return 1
  91. }
  92.  
  93. stock fm_get_user_health(index){
  94. return pev(index, pev_health)
  95. }
  96.