hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 22:49



Jelenlévő felhasználók

Jelenleg 529 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 529 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: AfkSpectator
HozzászólásElküldve: 2013.02.27. 20:34 
Offline
Tud valamit
Avatar

Csatlakozott: 2013.01.21. 17:29
Hozzászólások: 101
Megköszönt másnak: 32 alkalommal
Megköszönték neki: 2 alkalommal
Sziasztok feltettem azt a plugint ami az afk t egy idő után kiteszi spectate ba. Nem működik és konzolba ezt írja: Unknown command: spectator
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #define MIN_AFK_TIME 60 // I use this incase stupid admins accidentally set mp_afktime to something silly.
  4. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
  5. #define CHECK_FREQ 5 // This is also the warning message frequency.
  6.  
  7. new g_oldangles[33][3]
  8. new g_afktime[33]
  9. new bool:g_spawned[33] = {false, ...}
  10.  
  11. public plugin_init() {
  12. register_plugin("AFK spectate","1.2","pizzahut")
  13. register_cvar("afk_version", "1.2", FCVAR_SERVER)
  14. register_cvar("mp_afktime", "300") // Kick people AFK longer than this time.
  15. register_cvar("mp_afkminplayers", "1") // Only kick AFKs when there is at least this many players on the server.
  16. set_task(float(CHECK_FREQ),"checkPlayers",0,"",0,"b",0)
  17. register_logevent("playerSpawned",3,"1=changed role to")
  18. register_logevent("playerSpecs",3,"1=joined team","2=SPECTATOR")
  19. }
  20.  
  21. public checkPlayers()
  22. {
  23. new name[64]
  24. for (new i = 1; i <= get_maxplayers(); i++)
  25. {
  26. if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && (get_user_team(i)>0))
  27. {
  28. new newangle[3]
  29. get_user_origin(i, newangle)
  30. get_user_name(i,name,64)
  31. if((newangle[0] == g_oldangles[i][0]) && (newangle[1] == g_oldangles[i][1]) && (newangle[2] == g_oldangles[i][2]))
  32. {
  33. g_afktime[i] += CHECK_FREQ
  34. check_afktime(i)
  35. }
  36. else
  37. {
  38. g_oldangles[i][0] = newangle[0]
  39. g_oldangles[i][1] = newangle[1]
  40. g_oldangles[i][2] = newangle[2]
  41. g_afktime[i] = 0
  42. }
  43. }
  44. else afk_reset(i)
  45. }
  46. return PLUGIN_CONTINUE
  47. }
  48.  
  49. check_afktime(id) {
  50. new numplayers = get_playersnum()
  51. new minplayers = get_cvar_num("mp_afkminplayers")
  52. if (numplayers >= minplayers)
  53. {
  54. if(g_spawned[id])
  55. {
  56. new maxafktime = get_cvar_num("mp_afktime")
  57. if(maxafktime < MIN_AFK_TIME)
  58. {
  59. log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
  60. maxafktime = MIN_AFK_TIME
  61. set_cvar_num("mp_afktime", MIN_AFK_TIME)
  62. }
  63.  
  64. if(maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
  65. {
  66. new timeleft = maxafktime - g_afktime[id]
  67. client_print(id, print_chat, "You have %i seconds to move or you will be put into spectator mode for being AFK.", timeleft)
  68. }
  69. else if(g_afktime[id] > maxafktime)
  70. {
  71. client_print(id, print_chat, "You are put into spectator mode for being AFK longer than %i seconds.", maxafktime)
  72. client_cmd(id,"spectate")
  73. }
  74. }
  75. else if(g_afktime[id] > 30) client_cmd(id,"spectate")
  76. }
  77. }
  78.  
  79. public playerSpawned()
  80. {
  81. new id = get_id()
  82. g_spawned[id] = true
  83. return PLUGIN_CONTINUE
  84. }
  85.  
  86. public playerSpecs()
  87. {
  88. new id = get_id()
  89. afk_reset(id)
  90. return PLUGIN_CONTINUE
  91. }
  92.  
  93. afk_reset(id)
  94. {
  95. g_afktime[id] = 0
  96. new newangle[3]
  97. get_user_origin(id,newangle)
  98. g_oldangles[id][0] = newangle[0]
  99. g_oldangles[id][1] = newangle[1]
  100. g_oldangles[id][2] = newangle[2]
  101. g_spawned[id] = false
  102. }
  103.  
  104. get_id()
  105. {
  106. new Arg1[64]
  107. read_logargv(0,Arg1,64)
  108. new p_name[64]
  109. parse_loguser(Arg1,p_name,64)
  110. new name[64],id=0
  111. for (new i=1;i<=get_maxplayers();i++)
  112. {
  113. if(is_user_connected(i))
  114. {
  115. get_user_name(i,name,64)
  116. if(equal(p_name,name)) id = i
  117. }
  118. }
  119. return id
  120. }
  121.  
  122. public server_changelevel(map[])
  123. {
  124. for (new i = 1; i <= get_maxplayers(); i++) afk_reset(i)
  125. return PLUGIN_CONTINUE
  126. }
  127.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AfkSpectator
HozzászólásElküldve: 2013.05.03. 06:35 
Offline
Tud valamit

Csatlakozott: 2013.01.21. 10:10
Hozzászólások: 138
Megköszönt másnak: 20 alkalommal
Megköszönték neki: 6 alkalommal
DanComment írta:
Sziasztok feltettem azt a plugint ami az afk t egy idő után kiteszi spectate ba. Nem működik és konzolba ezt írja: Unknown command: spectator
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #define MIN_AFK_TIME 60 // I use this incase stupid admins accidentally set mp_afktime to something silly.
  4. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
  5. #define CHECK_FREQ 5 // This is also the warning message frequency.
  6.  
  7. new g_oldangles[33][3]
  8. new g_afktime[33]
  9. new bool:g_spawned[33] = {false, ...}
  10.  
  11. public plugin_init() {
  12. register_plugin("AFK spectate","1.2","pizzahut")
  13. register_cvar("afk_version", "1.2", FCVAR_SERVER)
  14. register_cvar("mp_afktime", "300") // Kick people AFK longer than this time.
  15. register_cvar("mp_afkminplayers", "1") // Only kick AFKs when there is at least this many players on the server.
  16. set_task(float(CHECK_FREQ),"checkPlayers",0,"",0,"b",0)
  17. register_logevent("playerSpawned",3,"1=changed role to")
  18. register_logevent("playerSpecs",3,"1=joined team","2=SPECTATOR")
  19. }
  20.  
  21. public checkPlayers()
  22. {
  23. new name[64]
  24. for (new i = 1; i <= get_maxplayers(); i++)
  25. {
  26. if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && (get_user_team(i)>0))
  27. {
  28. new newangle[3]
  29. get_user_origin(i, newangle)
  30. get_user_name(i,name,64)
  31. if((newangle[0] == g_oldangles[i][0]) && (newangle[1] == g_oldangles[i][1]) && (newangle[2] == g_oldangles[i][2]))
  32. {
  33. g_afktime[i] += CHECK_FREQ
  34. check_afktime(i)
  35. }
  36. else
  37. {
  38. g_oldangles[i][0] = newangle[0]
  39. g_oldangles[i][1] = newangle[1]
  40. g_oldangles[i][2] = newangle[2]
  41. g_afktime[i] = 0
  42. }
  43. }
  44. else afk_reset(i)
  45. }
  46. return PLUGIN_CONTINUE
  47. }
  48.  
  49. check_afktime(id) {
  50. new numplayers = get_playersnum()
  51. new minplayers = get_cvar_num("mp_afkminplayers")
  52. if (numplayers >= minplayers)
  53. {
  54. if(g_spawned[id])
  55. {
  56. new maxafktime = get_cvar_num("mp_afktime")
  57. if(maxafktime < MIN_AFK_TIME)
  58. {
  59. log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
  60. maxafktime = MIN_AFK_TIME
  61. set_cvar_num("mp_afktime", MIN_AFK_TIME)
  62. }
  63.  
  64. if(maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
  65. {
  66. new timeleft = maxafktime - g_afktime[id]
  67. client_print(id, print_chat, "You have %i seconds to move or you will be put into spectator mode for being AFK.", timeleft)
  68. }
  69. else if(g_afktime[id] > maxafktime)
  70. {
  71. client_print(id, print_chat, "You are put into spectator mode for being AFK longer than %i seconds.", maxafktime)
  72. client_cmd(id,"spectate")
  73. }
  74. }
  75. else if(g_afktime[id] > 30) client_cmd(id,"spectate")
  76. }
  77. }
  78.  
  79. public playerSpawned()
  80. {
  81. new id = get_id()
  82. g_spawned[id] = true
  83. return PLUGIN_CONTINUE
  84. }
  85.  
  86. public playerSpecs()
  87. {
  88. new id = get_id()
  89. afk_reset(id)
  90. return PLUGIN_CONTINUE
  91. }
  92.  
  93. afk_reset(id)
  94. {
  95. g_afktime[id] = 0
  96. new newangle[3]
  97. get_user_origin(id,newangle)
  98. g_oldangles[id][0] = newangle[0]
  99. g_oldangles[id][1] = newangle[1]
  100. g_oldangles[id][2] = newangle[2]
  101. g_spawned[id] = false
  102. }
  103.  
  104. get_id()
  105. {
  106. new Arg1[64]
  107. read_logargv(0,Arg1,64)
  108. new p_name[64]
  109. parse_loguser(Arg1,p_name,64)
  110. new name[64],id=0
  111. for (new i=1;i<=get_maxplayers();i++)
  112. {
  113. if(is_user_connected(i))
  114. {
  115. get_user_name(i,name,64)
  116. if(equal(p_name,name)) id = i
  117. }
  118. }
  119. return id
  120. }
  121.  
  122. public server_changelevel(map[])
  123. {
  124. for (new i = 1; i <= get_maxplayers(); i++) afk_reset(i)
  125. return PLUGIN_CONTINUE
  126. }
  127.  


Azért nem megy a plugin, mert nincs "befejezve"
SMA Forráskód: [ Mindet kijelol ]
  1. return PLUGIN_CONTINUE => HANDLED


Tesztelve, működik:

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx> #include <cstrike> // AFK Task offset const afk_task = 4000 // pcvars new cvar_afktime new cvar_afkimmunity // player origins new last_origins[33] public plugin_init() { register_plugin("AFK to Spectator", "0.1", "MeRcyLeZZ") // AFK time in seconds, before player is transferred cvar_afktime = register_cvar("amx_afktime", "40") // Admin immunity? cvar_afkimmunity = register_cvar("amx_afkimmunity", "1") } public client_putinserver(id) { remove_task(id+afk_task) set_task(get_pcvar_float(cvar_afktime), "check_afk", id+afk_task) } public client_disconnect(id) { remove_task(id+afk_task) } public check_afk(taskid) { new id = taskid - afk_task; if (!is_user_alive(id)) { set_task(get_pcvar_float(cvar_afktime), "check_afk", taskid) return; } new origin[3] // get origin get_user_origin(id, origin) if (origin[0] == last_origins[id][0] && origin[1] == last_origins[id][1] && origin[2] == last_origins[id][2]) { if (get_user_flags(id) & ADMIN_IMMUNITY && get_pcvar_num(cvar_afkimmunity)) { client_print(id, print_chat, "[AMXX AFK] You have immunity. You won't be transferred.") } else { new name[32] get_user_name( id , name , sizeof name - 1) client_print(0, print_chat, "[AMXX AFK] %s has been transferred to the Spectator Team.",name) user_kill(id, 1) cs_set_user_team(id, CS_TEAM_SPECTATOR) } } // save new origin last_origins[id][0] = origin[0] last_origins[id][1] = origin[1] last_origins[id][2] = origin[2] set_task(get_pcvar_float(cvar_afktime), "check_afk", taskid) // keep checking }


A kód elég hülyén van, de sajnos nem tudtam vele mit kezdeni, de itt a forrás ha te tudod hogy kell normálisan megjeleníteni a kódot ;)

LINK: http://forums.alliedmods.net/showthread.php?t=69219

_________________
See you next time! :)

Ha hasznosnak találtad a hozzászólásomat, köszönd meg a Kép lenyomásával..!! :)

Ők köszönték meg UlTiMaT3 nek ezt a hozzászólást: DanComment (2013.06.27. 19:24)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 85 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole