←  Pluginy AMXX

AMXX.pl: Support AMX Mod X i SourceMod

»

m_afk_guard

  • +
  • -
Miczu's Photo Miczu 26.10.2008

Prosty a zarazem inny niz pozostale afk kickery. Odporny na stary sposob na ominiecie afk kickera - np. powolne i ciagle poruszanie sie do przodu.

Instalacja standardowa.

Cvary:

m_afk_kontrol_mode 0|1|2
0 - off
1 - kick po czasie -> m_afk_kontrol_time
2 - przeniesienie po m_afk_kontrol_time do speca oraz kick po m_afk_kontrol_time2 (czyli razem kick po m_afk_kontrol_time+m_afk_kontrol_time2)
m_afk_kontrol_time (def. 45 [s]) - czas po ktorym dostaje sie kicka za afk/przenosi do speca.
m_afk_kontrol_time2 (def. 255 [s]) - czas po jakim wywala ze speca.

Attached Files

Quote

  • +
  • -
Abes Mapper's Photo Abes Mapper 26.10.2008

Na podstawie czego on kickuje? O:)
Quote

  • +
  • -
Miczu's Photo Miczu 26.10.2008

Na podstawie braku aktywnosci - AFK :P

Aktywnosc obiawia sie przez klikanie klawiszy (ciagle trzymanie W nie zadziala) lub zmienianie kąta widzenia (operowanie celownikiem) ale krecenie sie na boki <- lub -> tez nam nic nie da.

Mowiac inaczej bez jakiegos bota sie tego nie ominie :D
Quote

  • +
  • -
Abes Mapper's Photo Abes Mapper 26.10.2008

A jak gościu kampi?
Quote

  • +
  • -
Miczu's Photo Miczu 26.10.2008

Jak rusza celownikiem, lub cos klika od czasu do czasu to jest bezpieczny ;>
Quote

  • +
  • -
darkman's Photo darkman 26.10.2008

next dobry plugin, GJ
Quote

  • +
  • -
kasza's Photo kasza 03.12.2008

a ktos mi powie jak dokladmnie wpisac te ccvary?? tak zeby wyrzucalo na spekta a potem z serwa??
Quote

  • +
  • -
Knopers's Photo Knopers 03.12.2008

normalnie najlepiej do server.cfg dopisujesz ;>
Quote

  • +
  • -
kasza's Photo kasza 04.12.2008

"normalnie"jak bym wiedzial jak to normalnie to bym nie pytal!!
Quote

  • +
  • -
Knopers's Photo Knopers 04.12.2008

m_afk_kontrol_mode 2
Dopisz do server.cfg po za tym to już jest ustawienie standardowe i nic nie musisz pisać możesz jedynie zmienić czas po jakim będzie wyrzucało do specta a potem kick
m_afk_kontrol_time 45 - po 45 sek. przenosi do speca.
m_afk_kontrol_time2 255 - po 255 sek. wywala ze specta.
też dopisz do server.cfg

Ps: nie ten dział , Admin/Mod niech nie daje warna tylko pousuwa posty to taka mała prośba
Quote

  • +
  • -
kasza's Photo kasza 04.12.2008

dzięki Ci ;] niec nie bd zmienial rozwale ;]
Quote

  • +
  • -
Abes Mapper's Photo Abes Mapper 05.12.2008

Cvary dodaje się do amxx.cfg
Quote

  • +
  • -
Knopers's Photo Knopers 05.12.2008

ale do server.cfg też można :]
Quote

  • +
  • -
Miczu's Photo Miczu 05.12.2008

Zgadzam sie z ziomalem, dodawanie do server.cfg moze niesc ze soba problemy... chociazby moze nie dzialac xD
Quote

  • +
  • -
bartek124's Photo bartek124 25.12.2008

Dobra, zrobiłem :P.

Poniżej wersja, która nie kickuje osób z flagą "n".

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGIN "m_afk_guard"
#define VERSION "0.1"
#define AUTHOR "Miczu"
#define FLAGA ADMIN_LEVEL_B

new Float: p_time[33]
new Float: angle[33]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_cvar("m_afk_kontrol_mode","2")		//0 - off
							//1 - afk time -> kick
							//2 - afk time -> spec ->afk time 2 ->kick		
	register_cvar("m_afk_kontrol_time","45")
	register_cvar("m_afk_kontrol_time2","255")
	
	register_think("Afk_Guard","g_think")
	make_guard()
}

public make_guard()
{
	new ent = create_entity("info_target")
	entity_set_string(ent, EV_SZ_classname,"Afk_Guard")
	entity_set_float(ent,EV_FL_nextthink,halflife_time() + 1.0)
}

public client_PreThink(id)
{
	if(get_user_button(id)!=get_user_oldbutton(id)) p_time[id]=get_gametime()
}

public g_think(ent)
{
	
	if(get_cvar_num("m_afk_kontrol_mode"))
	{
		new players[32],num
		new time1 = get_cvar_num("m_afk_kontrol_time")
		new time2 = get_cvar_num("m_afk_kontrol_time2")
		new mode = get_cvar_num("m_afk_kontrol_mode")
		
		get_players(players,num)
		
		for(new i=0;i<num;i++)
		{
			if((get_user_flags(players[i]) & FLAGA) || !is_user_connected(players[i]) || is_user_bot(players[i])) continue
			
			new Float:a[3]
			entity_get_vector(players[i],EV_VEC_angles,a)
			
			if(a[0]!=angle[players[i]]) p_time[players[i]] = get_gametime()
			
			angle[players[i]] = a[0] 
			
			if((p_time[players[i]]+time1)<get_gametime())
			{
			
				if(mode==1) remove_him(players[i])
				else
				{
					if(cs_get_user_team(players[i])!= CS_TEAM_SPECTATOR)
					{
						if(is_user_alive(players[i])) user_silentkill(players[i])
						cs_set_user_team(players[i],CS_TEAM_SPECTATOR)
					}
					else if((p_time[players[i]]+time1+time2)<get_gametime())
					{
						remove_him(players[i])
						
					}
					
				}
			}
		}
		entity_set_float(ent,EV_FL_nextthink,get_gametime() + 1.0)
	}
	else entity_set_float(ent,EV_FL_nextthink,halflife_time() + 10.0)
}

public remove_him(id)
{
	server_cmd("kick #%d", get_user_userid(id), "AFK")
}

public client_putinserver(id)
{
	p_time[id] = get_gametime()
}

W tej części kodu możecie zdefiniować inną flagę
#define FLAGA jakas tam flaga

Definicje znajdziecie TU

Pozdro!!
Quote

  • +
  • -
grankee's Photo grankee 14.01.2014

wersja, która nie wywala hltv
 
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGIN "m_afk_guard"
#define VERSION "0.1"
#define AUTHOR "Miczu"

new Float: p_time[33]
new Float: angle[33]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_cvar("m_afk_kontrol_mode","2")		//0 - off
							//1 - afk time -> kick
							//2 - afk time -> spec ->afk time 2 ->kick		
	register_cvar("m_afk_kontrol_time","45")
	register_cvar("m_afk_kontrol_time2","255")
	
	register_think("Afk_Guard","g_think")
	make_guard()
}

public make_guard()
{
	new ent = create_entity("info_target")
	entity_set_string(ent, EV_SZ_classname,"Afk_Guard")
	entity_set_float(ent,EV_FL_nextthink,halflife_time() + 1.0)
}

public client_PreThink(id)
{
	if(get_user_button(id)!=get_user_oldbutton(id)) p_time[id]=get_gametime()
}

public g_think(ent)
{
	
	if(get_cvar_num("m_afk_kontrol_mode"))
	{
		new players[32],num
		new time1 = get_cvar_num("m_afk_kontrol_time")
		new time2 = get_cvar_num("m_afk_kontrol_time2")
		new mode = get_cvar_num("m_afk_kontrol_mode")
		
		get_players(players,num)
		
		for(new i=0;i<num;i++)
		{
			if(!is_user_connected(players[i]) || is_user_bot(players[i]) || is_user_hltv(players[i])) continue
			
			new Float:a[3]
			entity_get_vector(players[i],EV_VEC_angles,a)
			
			if(a[0]!=angle[players[i]]) p_time[players[i]] = get_gametime()
			
			angle[players[i]] = a[0] 
			
			if((p_time[players[i]]+time1)<get_gametime())
			{
			
				if(mode==1) remove_him(players[i])
				else
				{
					if(cs_get_user_team(players[i])!= CS_TEAM_SPECTATOR)
					{
						if(is_user_alive(players[i])) user_silentkill(players[i])
						cs_set_user_team(players[i],CS_TEAM_SPECTATOR)
					}
					else if((p_time[players[i]]+time1+time2)<get_gametime())
					{
						remove_him(players[i])
						
					}
					
				}
			}
		}
		entity_set_float(ent,EV_FL_nextthink,get_gametime() + 1.0)
	}
	else entity_set_float(ent,EV_FL_nextthink,halflife_time() + 10.0)
}

public remove_him(id)
{
	server_cmd("kick #%d", get_user_userid(id))
}

public client_putinserver(id)
{
	p_time[id] = get_gametime()
}

Edited by grankee, 14.01.2014 20:09.
Quote