hlmod.hu
https://hlmod.hu/

AFK Specbe teszi
https://hlmod.hu/viewtopic.php?f=9&t=2118
Oldal: 1 / 2

Szerző:  demetera [2010.12.17. 17:45 ]
Hozzászólás témája:  AFK Specbe teszi

Sziasztok!

Kéne egy nagyon egyszerű kis plugin. Nem kell mindenféle plusz dolog a pluginba csak simán AFK-t tegye a specbe.
Légyszíves akinek megvan az tegye fel:)
Köszii

Szerző:  cartmen [2010.12.17. 21:51 ]
Hozzászólás témája:  Re: AFK Specbe teszi

http://amxmodx.crys.hu/site/?p=pluginz&c=l&f=afkkicker

Szerző:  demetera [2010.12.17. 22:16 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Hello!

Na pont az ilyen hopzzászólástól féltem!
Kérlek olvasd el figyelmesen mit írtam!

Szerző:  demetera [2010.12.18. 11:07 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Na talltam egyet, de vaalami gond van:S Nem rakja specbe az AFK-át.

Nézzétek át pls!
Kód:
/*
This is based on Cheesy Peteza's afk kick plugin.

It will *not* kick, but instead simply put a player who is afk into spectator mode.
This is to keep teams even, rather than making room on a full server.
Especially it works if a player was automatically put into a team (on map change or join).

mp_afktime 300      Time a player is allowed to be AFK in seconds before they are kicked. (minimum 30 sec)
         They time is only accumulated while they are alive.
mp_afkminplayers 2   Minimum number of players required to be on the server before the plugin starts kicking.

version history
1.0c  Check for AFK will be done when player joins a team, spawned or not.
1.0d  No longer kick for being AFK. Instead, player is put into spectator mode.
1.0e  Bug fix: removed is_user_alive query, doesn't work well if the player isn't spawned yet.
1.1   If player hasn't spawned, but is in a team other than spectator, he will be put into spec mode *early* (30s).
1.1.1 Bug fix: Resetting afk data when a player is moved to spectator mode.
1.1.2 Fixed detection if a player has spawned.
1.2   Reset AFK on map change.
*/

#include <amxmodx>

#define MIN_AFK_TIME 30      // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15      // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5      // This is also the warning message frequency.

new g_oldangles[33][3]
new g_afktime[33]
new bool:g_spawned[33] = {false, ...}

public plugin_init() {
   register_plugin("AFK spectate","1.2","pizzahut")
   register_cvar("afk_version", "1.2", FCVAR_SERVER)
   register_cvar("mp_afktime", "300")   // Kick people AFK longer than this time.
   register_cvar("mp_afkminplayers", "1")   // Only kick AFKs when there is at least this many players on the server.
   set_task(float(CHECK_FREQ),"checkPlayers",0,"",0,"b",0)
   register_logevent("playerSpawned",3,"1=changed role to")
   register_logevent("playerSpecs",3,"1=joined team","2=SPECTATOR")
}

public checkPlayers()
{
   new name[64]
   for (new i = 1; i <= get_maxplayers(); i++)
   {
      if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && (get_user_team(i)>0))
      {
         new newangle[3]
         get_user_origin(i, newangle)
         get_user_name(i,name,64)
         if((newangle[0] == g_oldangles[i][0]) && (newangle[1] == g_oldangles[i][1]) && (newangle[2] == g_oldangles[i][2]))
         {
            g_afktime[i] += CHECK_FREQ
            check_afktime(i)
         }
         else
         {
            g_oldangles[i][0] = newangle[0]
            g_oldangles[i][1] = newangle[1]
            g_oldangles[i][2] = newangle[2]
            g_afktime[i] = 0
         }
      }
      else   afk_reset(i)
   }
   return PLUGIN_CONTINUE
}

check_afktime(id) {
   new numplayers = get_playersnum()
   new minplayers = get_cvar_num("mp_afkminplayers")
   if (numplayers >= minplayers)
   {
      if(g_spawned[id])
      {
         new maxafktime = get_cvar_num("mp_afktime")
         if(maxafktime < MIN_AFK_TIME)
         {
            log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
            maxafktime = MIN_AFK_TIME
            set_cvar_num("mp_afktime", MIN_AFK_TIME)
         }

         if(maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
         {
            new timeleft = maxafktime - g_afktime[id]
            client_print(id, print_chat, "You have %i seconds to move or you will be put into spectator mode for being AFK.", timeleft)
         }
         else if(g_afktime[id] > maxafktime)
         {
            client_print(id, print_chat, "You are put into spectator mode for being AFK longer than %i seconds.", maxafktime)
                           client_cmd(id,"spectate")
         }
      }
      else if(g_afktime[id] > 30) client_cmd(id,"spectate")
   }
}

public playerSpawned()
{
   new id = get_id()
   g_spawned[id] = true
   return PLUGIN_CONTINUE
}

public playerSpecs()
{
   new id = get_id()
   afk_reset(id)
   return PLUGIN_CONTINUE
}

afk_reset(id)
{
   g_afktime[id] = 0
   new newangle[3]
   get_user_origin(id,newangle)
   g_oldangles[id][0] = newangle[0]
   g_oldangles[id][1] = newangle[1]
   g_oldangles[id][2] = newangle[2]
   g_spawned[id] = false
}

get_id()
{
   new Arg1[64]
   read_logargv(0,Arg1,64)
   new p_name[64]
   parse_loguser(Arg1,p_name,64)
   new name[64],id=0
   for (new i=1;i<=get_maxplayers();i++)
   {
      if(is_user_connected(i))
      {
         get_user_name(i,name,64)
         if(equal(p_name,name)) id = i
      }
   }
   return id
}

public server_changelevel(map[])
{
   for (new i = 1; i <= get_maxplayers(); i++) afk_reset(i)
   return PLUGIN_CONTINUE
}


Én erre a részre gyanakszom:

Kód:
            client_print(id, print_chat, "You are put into spectator mode for being AFK longer than %i seconds.", maxafktime)
                           client_cmd(id,"spectate")
         }
      }
      else if(g_afktime[id] > 30) client_cmd(id,"spectate")

Szerző:  demetera [2010.12.19. 08:51 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Ezaz!!! Ne segítsetek!

Szerző:  Metal [2010.12.19. 10:11 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Letelik az idő, és nem teszi ki? Afk time mennyire van állítva? Kivártad azt az időt?

Szerző:  demetera [2010.12.19. 10:48 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Hello!

Letelt az idő és csak a konzolba ír valamit hogy nem ismeri a spectate cspatot.

Szerző:  KeXxX [2010.12.19. 12:23 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Azért mert: spectate van írva a specate helyett vagy a specator helyett

Szerző:  CheeseDave [2010.12.19. 13:32 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Nemhiszem hogy van parancs amivel ilyen egyszerűen be lehet állítani valakit spectatornak.

http://www.amxmodx.org/funcwiki.php?go=func&id=200
Kód:
 cs_set_user_team(id,CS_TEAM_SPECTATOR)


Vigyázz, mert életben marad a játékos ilyenkor. Javasolt utána
http://www.amxmodx.org/funcwiki.php?go=func&id=169
Kód:
user_kill(id,1)

Szerző:  Metal [2010.12.19. 15:18 ]
Hozzászólás témája:  Re: AFK Specbe teszi

Hy CheeseDave :D

Igaz, ez egyszerű :) Viszont kiegészíteném 1 dologgal:
Be kell tenni a cstrike könyvtárat is azaz:
Kód:
#include <cstrike>


GLHF :)

Oldal: 1 / 2 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/