HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. // todo:
  2. // check cvar values for zp_respawn_after_last_human, zp_infection_allow_respawn, zp_nem_allow_respawn, etc.
  3.  
  4. #include <amxmodx>
  5. #include <zombieplague>
  6.  
  7. const Float:AUTORESPAWN_DELAY = 5.0
  8. const TASK_AUTORESPAWN = 100
  9. #define ID_AUTORESPAWN (taskid - TASK_AUTORESPAWN)
  10. new cvar_deathmatch, g_maxplayers
  11.  
  12. public plugin_init()
  13. {
  14. register_plugin("[ZP] Auto Respawn after joining", "0.1", "MeRcyLeZZ")
  15. register_clcmd("joinclass","cmd_joinclass"); // new menus
  16. register_menucmd(register_menuid("Terrorist_Select",1),511,"cmd_joinclass"); // old menus
  17. register_menucmd(register_menuid("CT_Select",1),511,"cmd_joinclass"); // old menus
  18. cvar_deathmatch = get_cvar_pointer("zp_deathmatch")
  19. g_maxplayers = get_maxplayers()
  20. }
  21.  
  22. // Player selects model
  23. public cmd_joinclass(id)
  24. {
  25. if (!get_pcvar_num(cvar_deathmatch))
  26. return;
  27.  
  28. set_task(AUTORESPAWN_DELAY, "auto_respawn_player", id+TASK_AUTORESPAWN)
  29. }
  30.  
  31. public client_disconnect(id)
  32. {
  33. remove_task(id+TASK_AUTORESPAWN)
  34. }
  35.  
  36. public auto_respawn_player(taskid)
  37. {
  38. // Already alive?
  39. if (is_user_alive(ID_AUTORESPAWN))
  40. return;
  41.  
  42. // Nemesis/Survivor round overrides
  43. if (zp_is_survivor_round())
  44. {
  45. zp_respawn_user(ID_AUTORESPAWN, ZP_TEAM_ZOMBIE)
  46. return;
  47. }
  48. if (zp_is_nemesis_round())
  49. {
  50. zp_respawn_user(ID_AUTORESPAWN, ZP_TEAM_HUMAN)
  51. return;
  52. }
  53.  
  54. // Respawn as zombie?
  55. if (get_pcvar_num(cvar_deathmatch) == 2 || (get_pcvar_num(cvar_deathmatch) == 3 && random_num(0, 1)) || (get_pcvar_num(cvar_deathmatch) == 4 && zp_get_zombie_count() < fnGetAlive()/2))
  56. zp_respawn_user(ID_AUTORESPAWN, ZP_TEAM_ZOMBIE)
  57. else
  58. zp_respawn_user(ID_AUTORESPAWN, ZP_TEAM_HUMAN)
  59. }
  60.  
  61. // Get Alive -returns alive players number-
  62. fnGetAlive()
  63. {
  64. new iAlive, id
  65.  
  66. for (id = 1; id <= g_maxplayers; id++)
  67. {
  68. if (is_user_alive(id))
  69. iAlive++
  70. }
  71.  
  72. return iAlive;
  73. }