HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fun>
  3. #include <hamsandwich>
  4.  
  5. #pragma semicolon 1;
  6.  
  7. #define PLUGIN "Surf Godmode"
  8. #define VERSION "1.5"
  9. #define AUTHOR "ILUSION"
  10.  
  11. #define DMG_NADE (1 << 24)
  12.  
  13. new g_godmode[33], g_time[33], g_respawn[33];
  14.  
  15. new enabled, timetowait;
  16.  
  17. public plugin_init()
  18. {
  19. register_plugin(PLUGIN, VERSION, AUTHOR);
  20.  
  21. register_clcmd("say /godmode", "cmdGodMode");
  22.  
  23. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
  24. RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack");
  25. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
  26.  
  27. enabled = register_cvar("amx_surf_godmode", "1");
  28. timetowait = register_cvar("amx_surf_wait", "120");
  29.  
  30. register_dictionary("surf_godmode.txt");
  31.  
  32. register_cvar("amx_surf_godmode_version", VERSION, FCVAR_SERVER);
  33. }
  34.  
  35. public plugin_cfg()
  36. {
  37. new map[32];
  38. get_mapname(map, charsmax(map));
  39.  
  40. if (containi(map, "surf_") == -1)
  41. pause("a");
  42. }
  43.  
  44. public client_putinserver(id)
  45. {
  46. g_godmode[id] = false;
  47. g_respawn[id] = false;
  48. }
  49.  
  50. public client_disconnect(id)
  51. {
  52. g_godmode[id] = false;
  53. g_respawn[id] = false;
  54. }
  55.  
  56. public fw_PlayerSpawn_Post(id)
  57. {
  58. if (!get_pcvar_num(enabled))
  59. return HAM_IGNORED;
  60.  
  61. if (g_godmode[id] && is_user_alive(id))
  62. set_user_rendering(id, kRenderFxGlowShell, 255, 255, 50, kRenderNormal, 25);
  63.  
  64. if (!g_respawn[id])
  65. {
  66. new name[32];
  67. get_user_name(id, name, charsmax(name));
  68.  
  69. client_print(id, print_chat, "%L", id, "WELCOME_MSG", name, VERSION);
  70.  
  71. g_respawn[id] = true;
  72. }
  73.  
  74. return HAM_IGNORED;
  75. }
  76.  
  77. public fw_TraceAttack(victim, attacker, Float:dmg, Float:dir[3], traceresult, dmgbits)
  78. {
  79. if (!get_pcvar_num(enabled))
  80. return HAM_IGNORED;
  81.  
  82. if (g_godmode[attacker] || g_godmode[victim])
  83. return HAM_SUPERCEDE;
  84.  
  85. return HAM_IGNORED;
  86. }
  87.  
  88. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  89. {
  90. if (!is_user_connected(attacker) || !get_pcvar_num(enabled))
  91. return HAM_IGNORED;
  92.  
  93. if (damage_type & DMG_NADE && g_godmode[victim] || g_godmode[attacker])
  94. {
  95. SetHamParamFloat(4, 0.0);
  96. return HAM_SUPERCEDE;
  97. }
  98.  
  99. return HAM_IGNORED;
  100. }
  101.  
  102. public cmdGodMode(id)
  103. {
  104. if (!get_pcvar_num(enabled))
  105. {
  106. client_print(id, print_chat, "%L", id, "GODMODE_DISABLED");
  107. return PLUGIN_HANDLED;
  108. }
  109.  
  110. new delay = get_pcvar_num(timetowait);
  111. new wait = get_systime() - g_time[id];
  112.  
  113. if (!g_godmode[id] && delay > wait)
  114. {
  115. client_print(id, print_chat, "%L", id, "GODMODE_WAIT", delay - wait);
  116. return PLUGIN_HANDLED;
  117. }
  118.  
  119. if (!g_godmode[id] && !is_user_alive(id))
  120. {
  121. client_print(id, print_chat, "%L", id, "GODMODE_ALIVE_ONLY");
  122. return PLUGIN_HANDLED;
  123. }
  124.  
  125. if (g_godmode[id])
  126. {
  127. client_print(id, print_chat, "%L", id, "GODMODE_OFF");
  128. set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  129. g_time[id] = get_systime();
  130. g_godmode[id] = false;
  131. }
  132. else
  133. {
  134. set_user_rendering(id, kRenderFxGlowShell, 255, 255, 50, kRenderNormal, 25);
  135. client_print(id, print_chat, "%L", id, "GODMODE_ON");
  136. g_godmode[id] = true;
  137. }
  138.  
  139. return PLUGIN_CONTINUE;
  140. }