Afk spectator![rezolvat]

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
Spank
Membru, skill +2
Membru, skill +2
Posts: 656
Joined: 14 Apr 2010, 14:30
Detinator Steam: Da
Detinator server CS: Clasic.Promns.Ro
SteamID: Danyel11
Location: Sibiu
Has thanked: 62 times
Been thanked: 4 times

11 Sep 2012, 17:20

Dupa cum spune si titlul asi vrea si eu pluginul acela care deupa x secunde transfera un jucator spectator,nu dore sa primesca kick jucatorul doar sa il puna spectator! Am vazut pe net tot felul de pluginuri dar nu aveau link de download bun sau nu mergea.
RoyalServer 2
User avatar
cosmin111
Membru, skill +2
Membru, skill +2
Posts: 863
Joined: 07 Jul 2011, 12:02
Detinator Steam: Da
CS Status: Ma plictisesc de moarte :))
Detinator server CS: Da
SteamID: Privat Vrei ceva PM
Location: Bucuresti
Has thanked: 1 time
Been thanked: 53 times

11 Sep 2012, 18:41

Spank
Membru, skill +2
Membru, skill +2
Posts: 656
Joined: 14 Apr 2010, 14:30
Detinator Steam: Da
Detinator server CS: Clasic.Promns.Ro
SteamID: Danyel11
Location: Sibiu
Has thanked: 62 times
Been thanked: 4 times

11 Sep 2012, 18:56

Nu merge! alte pareri?
ursuletzu_TVR4
Membru, skill +1
Membru, skill +1
Posts: 375
Joined: 19 May 2012, 14:51
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 28 times
Been thanked: 20 times
Contact:

11 Sep 2012, 19:28

| Afiseaza codul
/* Plugin by Melbs, of eatingshoes.com */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>	// for setting HP on "hurt" punishment... rather not use...hmm

#pragma semicolon 1


// ***************************************************
// ******************** DEFINES **********************

#define PLUGIN "AFManager"
#define VERSION "1.0"
#define AUTHOR "melbs"

#define MAX_LENGTH 32
#define CHECK_TASK 31337

// ****** types of punishment ******
#define POKE	1
#define PROD	2
#define HURT	3
#define SLAY	4
#define MOVE	5
#define KICK	6

// ****** cvar defines ******
#define AFKCMD		"afm_afkcmd",		"1"	// allow "say /afk" command
#define AFKTIME 	"afm_afktime",		"25.0"	// amount of time to be marked as afk
#define ANNOUNCE	"afm_announce",		"1"	// announce punishments to server
#define CHECKTIME	"afm_checktime",	"7.0"	// time between checks
#define DROPBOMB	"afm_dropbomb",		"1"	
#define ENABLE		"afm_enable",		"1"
#define HPTICKAMOUNT	"afm_hptickamount",	"5"	// health subtracted when punishment is hp drop
#define HPTICKTIME	"afm_hpticktime",	"5"	// time between health being taken
#define LOG		"afm_log",		"0"	// log actions
#define MINPLAYERS	"afm_minplayers",	"2"	// min player # for checking afks
#define PREFIX		"afm_prefix",		"[afk]"	// the name of afks. If useprefix == 1
#define PUNISHMENT 	"afm_punishment",	"2"	// type of punishment
#define USEPREFIX	"afm_useprefix",	"0"	// add prefix to afkers?


// ***************************************************
// ******************** GLOBALS **********************
new const AMX_SAYLANG[]="[AFM] %L";
new g_playersnum;
new g_players[MAX_LENGTH];
new Float:g_times[MAX_LENGTH+1] = { 0.0, ... }; // sum time players are afk
new g_origins[MAX_LENGTH+1][3];	// NOTE: initializes to garbage; this is not a problem
				// g_origins[0] used as a tmp for comparison in main loop			
// ****** variable pointers ******
new g_pcv_afkcmd;
new g_pcv_afktime;
new g_pcv_announce;
new g_pcv_checktime;
new g_pcv_dropbomb;
new g_pcv_enable;
new g_pcv_hptickamount;
new g_pcv_hpticktime;
new g_pcv_log;
new g_pcv_minplayers;
new g_pcv_prefix;
new g_pcv_punishment;
new g_pcv_useprefix;
new g_pcv_freezetime;


// ***************************************************
// ******************* FUNCTIONS *********************

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("afm_version",VERSION, FCVAR_SERVER|FCVAR_SPONLY);

	// register variables
	g_pcv_afkcmd = 		register_cvar(AFKCMD);
	g_pcv_afktime = 	register_cvar(AFKTIME);
	g_pcv_announce = 	register_cvar(ANNOUNCE);
	g_pcv_checktime = 	register_cvar(CHECKTIME);
	g_pcv_dropbomb = 	register_cvar(DROPBOMB);
	g_pcv_enable = 		register_cvar(ENABLE);
	g_pcv_hptickamount  = 	register_cvar(HPTICKAMOUNT);
	g_pcv_hpticktime  = 	register_cvar(HPTICKTIME);
	g_pcv_log = 		register_cvar(LOG);
	g_pcv_minplayers  = 	register_cvar(MINPLAYERS);
	g_pcv_prefix = 		register_cvar(PREFIX);
	g_pcv_punishment = 	register_cvar(PUNISHMENT);
	g_pcv_useprefix = 	register_cvar(USEPREFIX);

	register_dictionary("afm_lang.txt");

	// register for new round event, so we know when freezetime is happening
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	
	register_clcmd("say /afk", "move_afk_cmd",-1, "- Move to spectate to afk for a bit");
	
	g_pcv_freezetime = get_cvar_pointer("mp_freezetime");
}

public event_new_round()
{
	remove_task(CHECK_TASK);

	// if the plugin is enabled and has minimum required players
	if( is_enabled() && get_playersnum() >= get_minplayers() ) {
		new Float:freezetime = get_freezetime();
		
		if ( freezetime == 0.0 )
			start_check_afk_think(0);
		else
			set_task(freezetime, "start_check_afk_think", CHECK_TASK);
	}
	
	return PLUGIN_CONTINUE;
}
	
public move_afk_cmd(p_player)
{
	if( afkcmd_enabled() )
		move_to_spec(p_player);
	else
		client_print(p_player, print_console, AMX_SAYLANG, p_player, "NOACCESS");
}
	
public move_to_spec(p_player)
{
	if( is_user_alive(p_player) )
	{
		// must kill to actually switch team
		user_kill(p_player, 1);	// slay but dont change k/d
		cs_set_user_deaths(p_player, cs_get_user_deaths(p_player) - 1);
	}
	
	cs_set_user_team(p_player, CS_TEAM_SPECTATOR);
}

public start_check_afk_think(p_id)
	set_task(get_checkinterval(), "check_afk_think", CHECK_TASK,_,0,"b");

public check_afk_think(p_ent)
{
	get_players(g_players, g_playersnum);
	for(new i=0; i < g_playersnum; i++)
	{
		new player = g_players;
		
		// make sure the player is still alive to check origin
		if( is_user_alive(player) )
		{
			// get current position of player
			get_user_origin(player, g_origins[0]);
			
			// if origins are the same, assume the player has not moved. ignore gaps in interval
			if( equal(g_origins[player], g_origins[0], 3) ) {
				g_times[player] += get_checkinterval();
			} else {
				g_times[player] = 0.0;
				copy(g_origins[player], 3, g_origins[0]);	// copy the new origin to the old
			}

			new Float:afktime = get_afktime();
			if(g_times[player] >= afktime ) {
				handle_afk(player, afktime);	// the player is now considered AFK
			}
		}
	}

	return PLUGIN_CONTINUE;
}

handle_afk(p_player, Float:p_afktime)
{
	new afktime = floatround(p_afktime);
	new playername[MAX_LENGTH];
	get_user_name(p_player, playername, MAX_LENGTH - 1);
	
	switch ( get_punishment() )
	{
		case POKE:
		{
			client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_POKE", playername, afktime);
			do_log(p_player, playername, afktime, "LOG_POKE");
		}
		case PROD:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_PROD", playername, afktime);
				
			user_slap(p_player, 5);
			do_log(p_player, playername, afktime, "LOG_PROD");
		}
		case HURT:
		{
			// if already hurting player, do not handle
			if(!task_exists(p_player))
			{
				if(announcing_enabled())
					client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_HURT", playername, afktime);

				set_task( get_hpticktime(), "hurt_player", p_player, g_origins[p_player], 3, "b");
				do_log(p_player, playername, afktime, "LOG_HURT");
			}
		}
		case SLAY:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_SLAY", playername, afktime);
	
			user_kill(p_player, 1);	// slay but dont change k/d
			cs_set_user_deaths(p_player, cs_get_user_deaths(p_player) - 1);
			do_log(p_player, playername, afktime, "LOG_SLAY");
			
		}
		case MOVE:
		{
			if(announcing_enabled())
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_SPEC", playername, afktime);

			move_to_spec(p_player);
			do_log(p_player, playername, afktime, AMX_SAYLANG);
		}
		case KICK:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_KICK", playername, afktime);
					
			server_cmd("kick #%d ^"%L^"", get_user_userid(p_player), LANG_PLAYER, "DAS_BOOT", afktime);
			do_log(p_player, playername, afktime, "LOG_KICK");
		}
	}
	
	if( is_user_alive(p_player))
	{
		if(dropbomb_enabled() && user_has_weapon(p_player, CSW_C4)) // cs_get_user_team(pPlayer) == CS_TEAM_T &&
		{
			client_cmd(p_player,"drop weapon_c4 ");
	
			if(announcing_enabled())
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_BOMB", playername, afktime);
	
			do_log(p_player, playername, afktime, "LOG_BOMB");
		}
		
		if( prefix_enabled() )
		{
			new prefix[MAX_LENGTH];
			get_pcvar_string(g_pcv_prefix, prefix, MAX_LENGTH - 1);
			
			// if the name is not already prefixed
			if( !equal(playername, prefix, strlen(prefix)) ) {
				client_cmd(p_player, "name ^"%s%s^"", prefix, playername);
							
				if( logging_enabled() ) {
					log_amx(AMX_SAYLANG, LANG_SERVER, "LOG_NAME");
				}
			}
		}
	}
	
	g_times[p_player] = 0.0;	// reset time to save a few cycles next time
}

public hurt_player(const p_origin[], p_player)
{
	new tmporigins[3];
	get_user_origin(p_player, tmporigins);	// do this instead of checking g_origins because we
		// dont know how long the interval is set to.
	
	if(!equal(p_origin, tmporigins, 3))
		remove_task(p_player);
	else
		set_user_health(p_player, get_user_health(p_player) - get_hptickamount());
}

// all logs have the same information displayed, so it's easier to do it like this :)
do_log(p_player, const p_playername[], p_afktime, const p_langkey[])
{
	if( logging_enabled() )
	{
		new ip[MAX_LENGTH];
		new authid[MAX_LENGTH];
	
		get_user_ip(p_player, ip, MAX_LENGTH - 1);
		get_user_authid(p_player, authid, MAX_LENGTH - 1);
	
		log_amx(AMX_SAYLANG, LANG_SERVER, p_langkey, p_playername, authid, ip, p_afktime);
	}
}

stock prefix_enabled()
	return get_pcvar_num(g_pcv_useprefix);

stock dropbomb_enabled()
	return get_pcvar_num(g_pcv_dropbomb);

stock afkcmd_enabled()
	return get_pcvar_num(g_pcv_afkcmd);

stock Float:get_freezetime()
	return get_pcvar_float(g_pcv_freezetime);

stock is_enabled()
	return get_pcvar_num(g_pcv_enable);

stock Float:get_checkinterval()
	return get_pcvar_float(g_pcv_checktime);

stock Float:get_afktime()
	return get_pcvar_float(g_pcv_afktime);

stock get_minplayers()
	return get_pcvar_num(g_pcv_minplayers);

stock get_punishment()
	return get_pcvar_num(g_pcv_punishment);

public get_hptickamount()
	return get_pcvar_num(g_pcv_hptickamount);

stock Float:get_hpticktime()
	return get_pcvar_float(g_pcv_hpticktime);
	
stock announcing_enabled()
	return get_pcvar_num(g_pcv_announce);
	
stock logging_enabled()
	return get_pcvar_num(g_pcv_log);
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0\\ deflang1033{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/


Cvar-uri (se adaugă în fişierul amxmodx\configs\amxx.cfg):

afk_check "1"
- 0: Dezactivează plugin.
- 1: Activează plugin-ul şi verifică poziţiile de jucători.
- 2: Activează plugin-ul şi verifică ultima activitate ale jucătorilor.

afk_drop_bomb "2"
- 0: Dezactivează funcţia
- 1: Aruncă bomba
- 2: Transferă bomba la un coechipier

afk_transfer_time "9" (minimul este 6)
- Jucătorul este transferat la spectatori dupa 45 de secunde (9 * frecvenţa de 5 secunde)

afk_kick_time "24" (minimul este 6)
- Jucătorul AFK dupa 120 de secunde primeşte kick (24 * frecventa de 5 secunde)

afk_kick_players "12"
- Kick spectatorilor, doar atunci când un număr minim de jucători (12) se joacă. Valoarea "0" va dezactiva această opţiune.
REGULI GENERALE : Afișează regulile forumului
1. Utilizati corect limba romana (folositi cuvinte intregi, virgula, punctul si cratima). NU FOLOSITI limbaj de chat!
2. Raspundeti concret! Fara offtopic, fara mesaje scurte, inutile sau deja postate!
* offtopic = reprezinta devierea de la subiectul care se discuta
3. Folosirea cuvintelor sau inregistrarea cu nume obscene/jignitoare duce la restrictionarea accesului, stergerea contului, etc.
4. Este interzis orice atac la persoana. Discutati ideea, nu persoana !
5. Restrictii reclame :
a) Reclama este permisa in subiecte atat timp cat ele au legatura cu idea care se discuta.
b) In semnatura este permisa o singura reclama SIMPLA de tip TEXT cu dimensiunea fontului setat pe NORMAL
c) Reclama nu este permisa in campurile personale gen: Locatie, CS Status.
d) Nu aveti voie sa deschideti topicuri cu referire exacta la un site in scopul obtinerii de vizite, se considera reclama !
6. Nu folositi imagini in semnatura mai mari decat 500x120. Puteti folosi mai multe imagini care, toate sa nu depaseasca marimea impusa !
7. Folositi CAUTAREA si apoi intrebati pentru ceva daca nu exista pe forum! Numele topicurilor create trebuie sa reflecte continutul subiectului pe care se discuta. Nu vor fi permise topicuri de genul: help, ajutor pls, cum fac, etc
8. Este permisa continuarea unei discutii vechi de pe forum, chiar daca aceasta a fost deschisa cu cativa ani in urma. NU se permite insa dublu-post, triplu-post sau UP-uri.
* dublu-post / triplu - post = adaugarea unor mesaje unul dupa altul intr-o discutie a forumului de catre aceeasi persoana
* UP = adaugarea unor mesaje unul dupa altul cu scopul de a scoate in evidenta discutia respectiva
9. Orice fel de continut cu caracter erotic va fi sters, iar daca este necesar se vor aplica avertismente.
10. Nu este permisa promovarea firmelor de hosting in afara de http://www.eXtreamHost.com , fie ca este vorba de o reclama directa sau indirecta.
11. Nu este permisa postarea de continut ilegal: warez, carding (bine cunoscutele "metode" de furat domenii etc.) si alte practici "neortodoxe", se vor aplica avertismente sau ban, dupa caz si antecedente.

SANCTIONAM DRASTIC INCALCAREA ACESTOR REGULI SI ORICE ABUZ !


WARNINGS/Avertismente
3 Avertismente = BAN pe forum pentru o anumita perioada de timp, in functie de gravitatea regulilor incalcate!
1 Avertisment = 15 de zile

Mesaje private
Abuzul in orice fel de folosirea mesajelor private va duce la sanctionare. In concluzie, vi se va lua dreptul de a mai trimite mesaje.
Reclamatiile cat si penalizarile se regasesc aici: discutii-forum/reclamatii-mesaje-private-t335539.html

Suplimentar
1. In semnatura nu sunt permise linkuri catre jocuri (site-uri) gen bitefight, monstergame, etc.
2. La profilul Detinator server CS se permite reclama catre un server de Counter-Strike.
3. Orice insulta adusa asupra unui administrator se penalizeaza cu ban permanent. Orice insulta adusa asupra unui moderator se penalizeaza (in functie de gravitatea situatiei) de la avertisment pana la ban permanent.
4. Nu se permite ridicarea subiectelor cu mesaje gen "UP!" unul dupa altul, indiferent de timpul dintre raspunsuri.


Atentionari
1. Nu se permite schimbarea numelui pe forum
2. Nu aveti voie cu mai mult de 1 cont / persoana (vi se sterg toate mesajele si contul de utilizator de pe forum drept penalizare) - cei care abuzeaza si isi fac mai multe conturi, risca sa primeasca ban permanent

 

Model postare servere :Afiseaza modelul
Va rugam respectati urmatorul model de postare al serverului, completand campurile cu datele corecte:

Titlul va contine: NUMELE / ADRESA IP a serverului si in paranteze patrate Non.Steam / Steam / Steam & Non.Steam
Adresa poate fi de tip: NUME / IP
Port: portul acestuia
Jucatori: 18 / 22 / 24 (sau cat aveti setat)
Tipul poate fi: Non.Stop (merge 24/24 ore) sau PartTime (functioneaza doar ziua sau intre anumite ore ale zilei/noptii)
Modul poate fi: Normal / ZombieMod / SourceMod / Metamod:Source

Anticheat: Protejat / Neprotejat
Tara: RO / US / DE (sau orice alte INITIALE ale tarii respective)

EXEMPLU:
Titlu (sau numele topicului): ExTrEaM [Steam & Non.Steam]
Continut:
    Adresa: extream.idle.ro (acesta este doar un exemplu!)
    Port: 27015
    Jucatori: 18
    Tip: Non.Stop
    Mod: Normal
    Anticheat: Neprotejat
    Tara: RO

----------- Sfarsit exemplu ---------------------

* Nu va lasati adresa la SITE / FORUM in model pentru ca se considera reclama si primiti avertisment sau topicul dvs. ajunge la cos!
* Titlurile vor fi colorate cu rosu ca in exemplul de deasupra !
* Cine NU respecta modelul prezentat i se va STERGE topicul !!
* NU aveti voie sa adaugati comentarii de genul: serverul meu este cel mai tare..etc. pentru ca iarasi vi se va sterge topicul ! Insa puteti lasa alte informatii diverse (un ID Yahoo, un mail, etc.)
Model postare addonsuri : Afiseaza modelul
Acesta este un tip standard pentru postarea unui addons

A. Continut

- Nu mai stergeti folderul scripting din amxmodx pe motiv ca nu avem nevoie sau ca face lag !
- Nu includeti in addons mai multe pluginuri care fac acelasi lucru, gen hpk.
- Nu includeti in addons pluginul show_ip la care orice jucator are acces la comanda amx_ipban.
- Nu includeti in addons pluginuri care nu stiti ce fac.
- Nu personalizati addons-ul cu reclame catre alte site-uri/forum-uri,etc...
- Postati intotdeauna .sma-ul pluginurilor incluse.

B. Postare

Titlul: Va contine tipul addons-ului ( amxmodx/amxmod/adminmod/war3ft/superhero/csdm/etc..)
- Va rog nu folositi in numele topic-ului caractere ! Gen : "-->> addons by me <--"
- Deoarece am observat cateva confuzii, cand postati un addons, nu scrieti in interiorul postului "titlu : addons,blablabla"


Descriere:

Ce contine addons-ul. Adica ce mod, ce versiune, ce alte facilitati are in plus (booster,hlguard,webmod,statsme,etc.)
* Puteti folosi urmatorii termeni :

* Normal - addons standard.
* Normal+ - addons standard dar cu cateva lucruri modificate.
* War3ft - addons cu puteri war3ft.
* UWC3 - addons cu puteri war3ft diverse.
* Respawn/CSDM - addons care te reinvie imediat dupa ce mori.
* Soccerjam - addons cu fifa/cs instalat.
* Zombie - addons in care jucatorii trebuie 'infectati' de un zombie.
* DeathRun - addons in care jucatorii trebuie sa treaca de obstacole
* Hide N'Seek - addons in
* Divers - addons Neinclus in aceste tipuri (daca credeti ca mai trebuie adaugat un alt tip trimiteti-mi mesaj pe privat !)

Autor: Cine a facut addonsul respectiv
Versiune: 1.x 2.x
Descarcare:

Code:
[url=Linkul_catre_addons]Link![/url]


Pluginuri: aici veti scrie ce pluginuri are addons-ul postat (fara cele de baza) si ce fac acestea !
plugin1.amxx - ce face pluginul respectiv
plugin2.amxx - ce face pluginul respectiv
plugin3.amxx - ce face pluginul respectiv

ATENTIE !
- Daca vreti sa postati un addons care nu este facut de dvs.,folositi intai cautarea pentru a va asigura ca addons-ul respectiv nu este deja postat de altcineva !
- De asemenea,daca incercati sa ne pacaliti cu un addons copiat si punandu-va pe dvs ca si autor,topicul va fi mutat la Cos si riscati sa primiti warn !
- NU postati tot link-ul catre addons ! Ci folositi ]URL :
Code:
[url=linkul_catre_addons]cuvant[/url]


C. Raspuns/Reply
1.Cei care posteaza addons-ul !
Daca vi se zice "gj,misto addons" nu raspundeti cu "merci,alte pareri",etc...

2.Cei care raspund !
Nu faceti reply-uri de gen-ul "gj","bravo","misto addons","gg tare",etc...

3.Copiere !
Daca vi se pare ca un addons postat este copiat, nu faceti replay cu "copiat,praf","addons-ul este copiat","nu tu l-ai facut".etc.. ci veniti cu o dovada daca vreti sa fiti bagati in seama! Daca aduceti acuzatii false riscati sa primiti warn ! De asemenea, nu aduceti cuvinte vulgare la adresa autorului, veti primi fara nici o ezitare warn sau chiar ban !
[regulisrv][/regulisrv]
[regulia][/regulia]
Spank
Membru, skill +2
Membru, skill +2
Posts: 656
Joined: 14 Apr 2010, 14:30
Detinator Steam: Da
Detinator server CS: Clasic.Promns.Ro
SteamID: Danyel11
Location: Sibiu
Has thanked: 62 times
Been thanked: 4 times

11 Sep 2012, 19:34

daca citeai cu atentie ce am scris mai sus vedeai ca nu vreau sa ii scoata afara pe sepctatori...vreau sa ii lasa spec cum sa fac sa nu le dea kick?
Last edited by ursuletzu_TVR4 on 11 Sep 2012, 19:39, edited 1 time in total.
Reason: Uitate la cvar-uri setezi afk_kick_players "12" la 0 si nu mai da kick ci doar il muta spectator
User avatar
geo_neo9
Membru, skill +1
Membru, skill +1
Posts: 343
Joined: 29 Aug 2007, 09:45
Detinator Steam: Da
Has thanked: 12 times
Been thanked: 74 times

11 Sep 2012, 19:40

Foloseste amx super, are asa ceva inclus.
Daca nu, foloseste asta: http://forums.alliedmods.net/showthread.php?t=69622
Setezi.

Code: Select all

hobo_afk_kick 0
hobo_afk_time "secunde"
ursuletzu_TVR4
Membru, skill +1
Membru, skill +1
Posts: 375
Joined: 19 May 2012, 14:51
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 28 times
Been thanked: 20 times
Contact:

11 Sep 2012, 19:41

Ti-am raspuns la mesaj
REGULI GENERALE : Afișează regulile forumului
1. Utilizati corect limba romana (folositi cuvinte intregi, virgula, punctul si cratima). NU FOLOSITI limbaj de chat!
2. Raspundeti concret! Fara offtopic, fara mesaje scurte, inutile sau deja postate!
* offtopic = reprezinta devierea de la subiectul care se discuta
3. Folosirea cuvintelor sau inregistrarea cu nume obscene/jignitoare duce la restrictionarea accesului, stergerea contului, etc.
4. Este interzis orice atac la persoana. Discutati ideea, nu persoana !
5. Restrictii reclame :
a) Reclama este permisa in subiecte atat timp cat ele au legatura cu idea care se discuta.
b) In semnatura este permisa o singura reclama SIMPLA de tip TEXT cu dimensiunea fontului setat pe NORMAL
c) Reclama nu este permisa in campurile personale gen: Locatie, CS Status.
d) Nu aveti voie sa deschideti topicuri cu referire exacta la un site in scopul obtinerii de vizite, se considera reclama !
6. Nu folositi imagini in semnatura mai mari decat 500x120. Puteti folosi mai multe imagini care, toate sa nu depaseasca marimea impusa !
7. Folositi CAUTAREA si apoi intrebati pentru ceva daca nu exista pe forum! Numele topicurilor create trebuie sa reflecte continutul subiectului pe care se discuta. Nu vor fi permise topicuri de genul: help, ajutor pls, cum fac, etc
8. Este permisa continuarea unei discutii vechi de pe forum, chiar daca aceasta a fost deschisa cu cativa ani in urma. NU se permite insa dublu-post, triplu-post sau UP-uri.
* dublu-post / triplu - post = adaugarea unor mesaje unul dupa altul intr-o discutie a forumului de catre aceeasi persoana
* UP = adaugarea unor mesaje unul dupa altul cu scopul de a scoate in evidenta discutia respectiva
9. Orice fel de continut cu caracter erotic va fi sters, iar daca este necesar se vor aplica avertismente.
10. Nu este permisa promovarea firmelor de hosting in afara de http://www.eXtreamHost.com , fie ca este vorba de o reclama directa sau indirecta.
11. Nu este permisa postarea de continut ilegal: warez, carding (bine cunoscutele "metode" de furat domenii etc.) si alte practici "neortodoxe", se vor aplica avertismente sau ban, dupa caz si antecedente.

SANCTIONAM DRASTIC INCALCAREA ACESTOR REGULI SI ORICE ABUZ !


WARNINGS/Avertismente
3 Avertismente = BAN pe forum pentru o anumita perioada de timp, in functie de gravitatea regulilor incalcate!
1 Avertisment = 15 de zile

Mesaje private
Abuzul in orice fel de folosirea mesajelor private va duce la sanctionare. In concluzie, vi se va lua dreptul de a mai trimite mesaje.
Reclamatiile cat si penalizarile se regasesc aici: discutii-forum/reclamatii-mesaje-private-t335539.html

Suplimentar
1. In semnatura nu sunt permise linkuri catre jocuri (site-uri) gen bitefight, monstergame, etc.
2. La profilul Detinator server CS se permite reclama catre un server de Counter-Strike.
3. Orice insulta adusa asupra unui administrator se penalizeaza cu ban permanent. Orice insulta adusa asupra unui moderator se penalizeaza (in functie de gravitatea situatiei) de la avertisment pana la ban permanent.
4. Nu se permite ridicarea subiectelor cu mesaje gen "UP!" unul dupa altul, indiferent de timpul dintre raspunsuri.


Atentionari
1. Nu se permite schimbarea numelui pe forum
2. Nu aveti voie cu mai mult de 1 cont / persoana (vi se sterg toate mesajele si contul de utilizator de pe forum drept penalizare) - cei care abuzeaza si isi fac mai multe conturi, risca sa primeasca ban permanent

 

Model postare servere :Afiseaza modelul
Va rugam respectati urmatorul model de postare al serverului, completand campurile cu datele corecte:

Titlul va contine: NUMELE / ADRESA IP a serverului si in paranteze patrate Non.Steam / Steam / Steam & Non.Steam
Adresa poate fi de tip: NUME / IP
Port: portul acestuia
Jucatori: 18 / 22 / 24 (sau cat aveti setat)
Tipul poate fi: Non.Stop (merge 24/24 ore) sau PartTime (functioneaza doar ziua sau intre anumite ore ale zilei/noptii)
Modul poate fi: Normal / ZombieMod / SourceMod / Metamod:Source

Anticheat: Protejat / Neprotejat
Tara: RO / US / DE (sau orice alte INITIALE ale tarii respective)

EXEMPLU:
Titlu (sau numele topicului): ExTrEaM [Steam & Non.Steam]
Continut:
    Adresa: extream.idle.ro (acesta este doar un exemplu!)
    Port: 27015
    Jucatori: 18
    Tip: Non.Stop
    Mod: Normal
    Anticheat: Neprotejat
    Tara: RO

----------- Sfarsit exemplu ---------------------

* Nu va lasati adresa la SITE / FORUM in model pentru ca se considera reclama si primiti avertisment sau topicul dvs. ajunge la cos!
* Titlurile vor fi colorate cu rosu ca in exemplul de deasupra !
* Cine NU respecta modelul prezentat i se va STERGE topicul !!
* NU aveti voie sa adaugati comentarii de genul: serverul meu este cel mai tare..etc. pentru ca iarasi vi se va sterge topicul ! Insa puteti lasa alte informatii diverse (un ID Yahoo, un mail, etc.)
Model postare addonsuri : Afiseaza modelul
Acesta este un tip standard pentru postarea unui addons

A. Continut

- Nu mai stergeti folderul scripting din amxmodx pe motiv ca nu avem nevoie sau ca face lag !
- Nu includeti in addons mai multe pluginuri care fac acelasi lucru, gen hpk.
- Nu includeti in addons pluginul show_ip la care orice jucator are acces la comanda amx_ipban.
- Nu includeti in addons pluginuri care nu stiti ce fac.
- Nu personalizati addons-ul cu reclame catre alte site-uri/forum-uri,etc...
- Postati intotdeauna .sma-ul pluginurilor incluse.

B. Postare

Titlul: Va contine tipul addons-ului ( amxmodx/amxmod/adminmod/war3ft/superhero/csdm/etc..)
- Va rog nu folositi in numele topic-ului caractere ! Gen : "-->> addons by me <--"
- Deoarece am observat cateva confuzii, cand postati un addons, nu scrieti in interiorul postului "titlu : addons,blablabla"


Descriere:

Ce contine addons-ul. Adica ce mod, ce versiune, ce alte facilitati are in plus (booster,hlguard,webmod,statsme,etc.)
* Puteti folosi urmatorii termeni :

* Normal - addons standard.
* Normal+ - addons standard dar cu cateva lucruri modificate.
* War3ft - addons cu puteri war3ft.
* UWC3 - addons cu puteri war3ft diverse.
* Respawn/CSDM - addons care te reinvie imediat dupa ce mori.
* Soccerjam - addons cu fifa/cs instalat.
* Zombie - addons in care jucatorii trebuie 'infectati' de un zombie.
* DeathRun - addons in care jucatorii trebuie sa treaca de obstacole
* Hide N'Seek - addons in
* Divers - addons Neinclus in aceste tipuri (daca credeti ca mai trebuie adaugat un alt tip trimiteti-mi mesaj pe privat !)

Autor: Cine a facut addonsul respectiv
Versiune: 1.x 2.x
Descarcare:

Code:
[url=Linkul_catre_addons]Link![/url]


Pluginuri: aici veti scrie ce pluginuri are addons-ul postat (fara cele de baza) si ce fac acestea !
plugin1.amxx - ce face pluginul respectiv
plugin2.amxx - ce face pluginul respectiv
plugin3.amxx - ce face pluginul respectiv

ATENTIE !
- Daca vreti sa postati un addons care nu este facut de dvs.,folositi intai cautarea pentru a va asigura ca addons-ul respectiv nu este deja postat de altcineva !
- De asemenea,daca incercati sa ne pacaliti cu un addons copiat si punandu-va pe dvs ca si autor,topicul va fi mutat la Cos si riscati sa primiti warn !
- NU postati tot link-ul catre addons ! Ci folositi ]URL :
Code:
[url=linkul_catre_addons]cuvant[/url]


C. Raspuns/Reply
1.Cei care posteaza addons-ul !
Daca vi se zice "gj,misto addons" nu raspundeti cu "merci,alte pareri",etc...

2.Cei care raspund !
Nu faceti reply-uri de gen-ul "gj","bravo","misto addons","gg tare",etc...

3.Copiere !
Daca vi se pare ca un addons postat este copiat, nu faceti replay cu "copiat,praf","addons-ul este copiat","nu tu l-ai facut".etc.. ci veniti cu o dovada daca vreti sa fiti bagati in seama! Daca aduceti acuzatii false riscati sa primiti warn ! De asemenea, nu aduceti cuvinte vulgare la adresa autorului, veti primi fara nici o ezitare warn sau chiar ban !
[regulisrv][/regulisrv]
[regulia][/regulia]
Spank
Membru, skill +2
Membru, skill +2
Posts: 656
Joined: 14 Apr 2010, 14:30
Detinator Steam: Da
Detinator server CS: Clasic.Promns.Ro
SteamID: Danyel11
Location: Sibiu
Has thanked: 62 times
Been thanked: 4 times

11 Sep 2012, 19:49

Multumesc, puteti da t.c
ursuletzu_TVR4
Membru, skill +1
Membru, skill +1
Posts: 375
Joined: 19 May 2012, 14:51
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 28 times
Been thanked: 20 times
Contact:

11 Sep 2012, 19:50

Spank wrote:Multumesc, puteti da t.c
Nu ai pentru ce,topic marcat ca rezolvat!
REGULI GENERALE : Afișează regulile forumului
1. Utilizati corect limba romana (folositi cuvinte intregi, virgula, punctul si cratima). NU FOLOSITI limbaj de chat!
2. Raspundeti concret! Fara offtopic, fara mesaje scurte, inutile sau deja postate!
* offtopic = reprezinta devierea de la subiectul care se discuta
3. Folosirea cuvintelor sau inregistrarea cu nume obscene/jignitoare duce la restrictionarea accesului, stergerea contului, etc.
4. Este interzis orice atac la persoana. Discutati ideea, nu persoana !
5. Restrictii reclame :
a) Reclama este permisa in subiecte atat timp cat ele au legatura cu idea care se discuta.
b) In semnatura este permisa o singura reclama SIMPLA de tip TEXT cu dimensiunea fontului setat pe NORMAL
c) Reclama nu este permisa in campurile personale gen: Locatie, CS Status.
d) Nu aveti voie sa deschideti topicuri cu referire exacta la un site in scopul obtinerii de vizite, se considera reclama !
6. Nu folositi imagini in semnatura mai mari decat 500x120. Puteti folosi mai multe imagini care, toate sa nu depaseasca marimea impusa !
7. Folositi CAUTAREA si apoi intrebati pentru ceva daca nu exista pe forum! Numele topicurilor create trebuie sa reflecte continutul subiectului pe care se discuta. Nu vor fi permise topicuri de genul: help, ajutor pls, cum fac, etc
8. Este permisa continuarea unei discutii vechi de pe forum, chiar daca aceasta a fost deschisa cu cativa ani in urma. NU se permite insa dublu-post, triplu-post sau UP-uri.
* dublu-post / triplu - post = adaugarea unor mesaje unul dupa altul intr-o discutie a forumului de catre aceeasi persoana
* UP = adaugarea unor mesaje unul dupa altul cu scopul de a scoate in evidenta discutia respectiva
9. Orice fel de continut cu caracter erotic va fi sters, iar daca este necesar se vor aplica avertismente.
10. Nu este permisa promovarea firmelor de hosting in afara de http://www.eXtreamHost.com , fie ca este vorba de o reclama directa sau indirecta.
11. Nu este permisa postarea de continut ilegal: warez, carding (bine cunoscutele "metode" de furat domenii etc.) si alte practici "neortodoxe", se vor aplica avertismente sau ban, dupa caz si antecedente.

SANCTIONAM DRASTIC INCALCAREA ACESTOR REGULI SI ORICE ABUZ !


WARNINGS/Avertismente
3 Avertismente = BAN pe forum pentru o anumita perioada de timp, in functie de gravitatea regulilor incalcate!
1 Avertisment = 15 de zile

Mesaje private
Abuzul in orice fel de folosirea mesajelor private va duce la sanctionare. In concluzie, vi se va lua dreptul de a mai trimite mesaje.
Reclamatiile cat si penalizarile se regasesc aici: discutii-forum/reclamatii-mesaje-private-t335539.html

Suplimentar
1. In semnatura nu sunt permise linkuri catre jocuri (site-uri) gen bitefight, monstergame, etc.
2. La profilul Detinator server CS se permite reclama catre un server de Counter-Strike.
3. Orice insulta adusa asupra unui administrator se penalizeaza cu ban permanent. Orice insulta adusa asupra unui moderator se penalizeaza (in functie de gravitatea situatiei) de la avertisment pana la ban permanent.
4. Nu se permite ridicarea subiectelor cu mesaje gen "UP!" unul dupa altul, indiferent de timpul dintre raspunsuri.


Atentionari
1. Nu se permite schimbarea numelui pe forum
2. Nu aveti voie cu mai mult de 1 cont / persoana (vi se sterg toate mesajele si contul de utilizator de pe forum drept penalizare) - cei care abuzeaza si isi fac mai multe conturi, risca sa primeasca ban permanent

 

Model postare servere :Afiseaza modelul
Va rugam respectati urmatorul model de postare al serverului, completand campurile cu datele corecte:

Titlul va contine: NUMELE / ADRESA IP a serverului si in paranteze patrate Non.Steam / Steam / Steam & Non.Steam
Adresa poate fi de tip: NUME / IP
Port: portul acestuia
Jucatori: 18 / 22 / 24 (sau cat aveti setat)
Tipul poate fi: Non.Stop (merge 24/24 ore) sau PartTime (functioneaza doar ziua sau intre anumite ore ale zilei/noptii)
Modul poate fi: Normal / ZombieMod / SourceMod / Metamod:Source

Anticheat: Protejat / Neprotejat
Tara: RO / US / DE (sau orice alte INITIALE ale tarii respective)

EXEMPLU:
Titlu (sau numele topicului): ExTrEaM [Steam & Non.Steam]
Continut:
    Adresa: extream.idle.ro (acesta este doar un exemplu!)
    Port: 27015
    Jucatori: 18
    Tip: Non.Stop
    Mod: Normal
    Anticheat: Neprotejat
    Tara: RO

----------- Sfarsit exemplu ---------------------

* Nu va lasati adresa la SITE / FORUM in model pentru ca se considera reclama si primiti avertisment sau topicul dvs. ajunge la cos!
* Titlurile vor fi colorate cu rosu ca in exemplul de deasupra !
* Cine NU respecta modelul prezentat i se va STERGE topicul !!
* NU aveti voie sa adaugati comentarii de genul: serverul meu este cel mai tare..etc. pentru ca iarasi vi se va sterge topicul ! Insa puteti lasa alte informatii diverse (un ID Yahoo, un mail, etc.)
Model postare addonsuri : Afiseaza modelul
Acesta este un tip standard pentru postarea unui addons

A. Continut

- Nu mai stergeti folderul scripting din amxmodx pe motiv ca nu avem nevoie sau ca face lag !
- Nu includeti in addons mai multe pluginuri care fac acelasi lucru, gen hpk.
- Nu includeti in addons pluginul show_ip la care orice jucator are acces la comanda amx_ipban.
- Nu includeti in addons pluginuri care nu stiti ce fac.
- Nu personalizati addons-ul cu reclame catre alte site-uri/forum-uri,etc...
- Postati intotdeauna .sma-ul pluginurilor incluse.

B. Postare

Titlul: Va contine tipul addons-ului ( amxmodx/amxmod/adminmod/war3ft/superhero/csdm/etc..)
- Va rog nu folositi in numele topic-ului caractere ! Gen : "-->> addons by me <--"
- Deoarece am observat cateva confuzii, cand postati un addons, nu scrieti in interiorul postului "titlu : addons,blablabla"


Descriere:

Ce contine addons-ul. Adica ce mod, ce versiune, ce alte facilitati are in plus (booster,hlguard,webmod,statsme,etc.)
* Puteti folosi urmatorii termeni :

* Normal - addons standard.
* Normal+ - addons standard dar cu cateva lucruri modificate.
* War3ft - addons cu puteri war3ft.
* UWC3 - addons cu puteri war3ft diverse.
* Respawn/CSDM - addons care te reinvie imediat dupa ce mori.
* Soccerjam - addons cu fifa/cs instalat.
* Zombie - addons in care jucatorii trebuie 'infectati' de un zombie.
* DeathRun - addons in care jucatorii trebuie sa treaca de obstacole
* Hide N'Seek - addons in
* Divers - addons Neinclus in aceste tipuri (daca credeti ca mai trebuie adaugat un alt tip trimiteti-mi mesaj pe privat !)

Autor: Cine a facut addonsul respectiv
Versiune: 1.x 2.x
Descarcare:

Code:
[url=Linkul_catre_addons]Link![/url]


Pluginuri: aici veti scrie ce pluginuri are addons-ul postat (fara cele de baza) si ce fac acestea !
plugin1.amxx - ce face pluginul respectiv
plugin2.amxx - ce face pluginul respectiv
plugin3.amxx - ce face pluginul respectiv

ATENTIE !
- Daca vreti sa postati un addons care nu este facut de dvs.,folositi intai cautarea pentru a va asigura ca addons-ul respectiv nu este deja postat de altcineva !
- De asemenea,daca incercati sa ne pacaliti cu un addons copiat si punandu-va pe dvs ca si autor,topicul va fi mutat la Cos si riscati sa primiti warn !
- NU postati tot link-ul catre addons ! Ci folositi ]URL :
Code:
[url=linkul_catre_addons]cuvant[/url]


C. Raspuns/Reply
1.Cei care posteaza addons-ul !
Daca vi se zice "gj,misto addons" nu raspundeti cu "merci,alte pareri",etc...

2.Cei care raspund !
Nu faceti reply-uri de gen-ul "gj","bravo","misto addons","gg tare",etc...

3.Copiere !
Daca vi se pare ca un addons postat este copiat, nu faceti replay cu "copiat,praf","addons-ul este copiat","nu tu l-ai facut".etc.. ci veniti cu o dovada daca vreti sa fiti bagati in seama! Daca aduceti acuzatii false riscati sa primiti warn ! De asemenea, nu aduceti cuvinte vulgare la adresa autorului, veti primi fara nici o ezitare warn sau chiar ban !
[regulisrv][/regulisrv]
[regulia][/regulia]
R0tty
Membru, skill 0
Membru, skill 0
Posts: 76
Joined: 16 Aug 2009, 21:28
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com!
Been thanked: 1 time

12 Sep 2018, 22:40

ursuletzu_TVR4 wrote:
| Afiseaza codul
/* Plugin by Melbs, of eatingshoes.com */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>	// for setting HP on "hurt" punishment... rather not use...hmm

#pragma semicolon 1


// ***************************************************
// ******************** DEFINES **********************

#define PLUGIN "AFManager"
#define VERSION "1.0"
#define AUTHOR "melbs"

#define MAX_LENGTH 32
#define CHECK_TASK 31337

// ****** types of punishment ******
#define POKE	1
#define PROD	2
#define HURT	3
#define SLAY	4
#define MOVE	5
#define KICK	6

// ****** cvar defines ******
#define AFKCMD		"afm_afkcmd",		"1"	// allow "say /afk" command
#define AFKTIME 	"afm_afktime",		"25.0"	// amount of time to be marked as afk
#define ANNOUNCE	"afm_announce",		"1"	// announce punishments to server
#define CHECKTIME	"afm_checktime",	"7.0"	// time between checks
#define DROPBOMB	"afm_dropbomb",		"1"	
#define ENABLE		"afm_enable",		"1"
#define HPTICKAMOUNT	"afm_hptickamount",	"5"	// health subtracted when punishment is hp drop
#define HPTICKTIME	"afm_hpticktime",	"5"	// time between health being taken
#define LOG		"afm_log",		"0"	// log actions
#define MINPLAYERS	"afm_minplayers",	"2"	// min player # for checking afks
#define PREFIX		"afm_prefix",		"[afk]"	// the name of afks. If useprefix == 1
#define PUNISHMENT 	"afm_punishment",	"2"	// type of punishment
#define USEPREFIX	"afm_useprefix",	"0"	// add prefix to afkers?


// ***************************************************
// ******************** GLOBALS **********************
new const AMX_SAYLANG[]="[AFM] %L";
new g_playersnum;
new g_players[MAX_LENGTH];
new Float:g_times[MAX_LENGTH+1] = { 0.0, ... }; // sum time players are afk
new g_origins[MAX_LENGTH+1][3];	// NOTE: initializes to garbage; this is not a problem
				// g_origins[0] used as a tmp for comparison in main loop			
// ****** variable pointers ******
new g_pcv_afkcmd;
new g_pcv_afktime;
new g_pcv_announce;
new g_pcv_checktime;
new g_pcv_dropbomb;
new g_pcv_enable;
new g_pcv_hptickamount;
new g_pcv_hpticktime;
new g_pcv_log;
new g_pcv_minplayers;
new g_pcv_prefix;
new g_pcv_punishment;
new g_pcv_useprefix;
new g_pcv_freezetime;


// ***************************************************
// ******************* FUNCTIONS *********************

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("afm_version",VERSION, FCVAR_SERVER|FCVAR_SPONLY);

	// register variables
	g_pcv_afkcmd = 		register_cvar(AFKCMD);
	g_pcv_afktime = 	register_cvar(AFKTIME);
	g_pcv_announce = 	register_cvar(ANNOUNCE);
	g_pcv_checktime = 	register_cvar(CHECKTIME);
	g_pcv_dropbomb = 	register_cvar(DROPBOMB);
	g_pcv_enable = 		register_cvar(ENABLE);
	g_pcv_hptickamount  = 	register_cvar(HPTICKAMOUNT);
	g_pcv_hpticktime  = 	register_cvar(HPTICKTIME);
	g_pcv_log = 		register_cvar(LOG);
	g_pcv_minplayers  = 	register_cvar(MINPLAYERS);
	g_pcv_prefix = 		register_cvar(PREFIX);
	g_pcv_punishment = 	register_cvar(PUNISHMENT);
	g_pcv_useprefix = 	register_cvar(USEPREFIX);

	register_dictionary("afm_lang.txt");

	// register for new round event, so we know when freezetime is happening
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	
	register_clcmd("say /afk", "move_afk_cmd",-1, "- Move to spectate to afk for a bit");
	
	g_pcv_freezetime = get_cvar_pointer("mp_freezetime");
}

public event_new_round()
{
	remove_task(CHECK_TASK);

	// if the plugin is enabled and has minimum required players
	if( is_enabled() && get_playersnum() >= get_minplayers() ) {
		new Float:freezetime = get_freezetime();
		
		if ( freezetime == 0.0 )
			start_check_afk_think(0);
		else
			set_task(freezetime, "start_check_afk_think", CHECK_TASK);
	}
	
	return PLUGIN_CONTINUE;
}
	
public move_afk_cmd(p_player)
{
	if( afkcmd_enabled() )
		move_to_spec(p_player);
	else
		client_print(p_player, print_console, AMX_SAYLANG, p_player, "NOACCESS");
}
	
public move_to_spec(p_player)
{
	if( is_user_alive(p_player) )
	{
		// must kill to actually switch team
		user_kill(p_player, 1);	// slay but dont change k/d
		cs_set_user_deaths(p_player, cs_get_user_deaths(p_player) - 1);
	}
	
	cs_set_user_team(p_player, CS_TEAM_SPECTATOR);
}

public start_check_afk_think(p_id)
	set_task(get_checkinterval(), "check_afk_think", CHECK_TASK,_,0,"b");

public check_afk_think(p_ent)
{
	get_players(g_players, g_playersnum);
	for(new i=0; i < g_playersnum; i++)
	{
		new player = g_players;
		
		// make sure the player is still alive to check origin
		if( is_user_alive(player) )
		{
			// get current position of player
			get_user_origin(player, g_origins[0]);
			
			// if origins are the same, assume the player has not moved. ignore gaps in interval
			if( equal(g_origins[player], g_origins[0], 3) ) {
				g_times[player] += get_checkinterval();
			} else {
				g_times[player] = 0.0;
				copy(g_origins[player], 3, g_origins[0]);	// copy the new origin to the old
			}

			new Float:afktime = get_afktime();
			if(g_times[player] >= afktime ) {
				handle_afk(player, afktime);	// the player is now considered AFK
			}
		}
	}

	return PLUGIN_CONTINUE;
}

handle_afk(p_player, Float:p_afktime)
{
	new afktime = floatround(p_afktime);
	new playername[MAX_LENGTH];
	get_user_name(p_player, playername, MAX_LENGTH - 1);
	
	switch ( get_punishment() )
	{
		case POKE:
		{
			client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_POKE", playername, afktime);
			do_log(p_player, playername, afktime, "LOG_POKE");
		}
		case PROD:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_PROD", playername, afktime);
				
			user_slap(p_player, 5);
			do_log(p_player, playername, afktime, "LOG_PROD");
		}
		case HURT:
		{
			// if already hurting player, do not handle
			if(!task_exists(p_player))
			{
				if(announcing_enabled())
					client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_HURT", playername, afktime);

				set_task( get_hpticktime(), "hurt_player", p_player, g_origins[p_player], 3, "b");
				do_log(p_player, playername, afktime, "LOG_HURT");
			}
		}
		case SLAY:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_SLAY", playername, afktime);
	
			user_kill(p_player, 1);	// slay but dont change k/d
			cs_set_user_deaths(p_player, cs_get_user_deaths(p_player) - 1);
			do_log(p_player, playername, afktime, "LOG_SLAY");
			
		}
		case MOVE:
		{
			if(announcing_enabled())
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_SPEC", playername, afktime);

			move_to_spec(p_player);
			do_log(p_player, playername, afktime, AMX_SAYLANG);
		}
		case KICK:
		{
			if(announcing_enabled()) 
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_KICK", playername, afktime);
					
			server_cmd("kick #%d ^"%L^"", get_user_userid(p_player), LANG_PLAYER, "DAS_BOOT", afktime);
			do_log(p_player, playername, afktime, "LOG_KICK");
		}
	}
	
	if( is_user_alive(p_player))
	{
		if(dropbomb_enabled() && user_has_weapon(p_player, CSW_C4)) // cs_get_user_team(pPlayer) == CS_TEAM_T &&
		{
			client_cmd(p_player,"drop weapon_c4 ");
	
			if(announcing_enabled())
				client_print(0, print_chat, AMX_SAYLANG, LANG_PLAYER, "MSG_BOMB", playername, afktime);
	
			do_log(p_player, playername, afktime, "LOG_BOMB");
		}
		
		if( prefix_enabled() )
		{
			new prefix[MAX_LENGTH];
			get_pcvar_string(g_pcv_prefix, prefix, MAX_LENGTH - 1);
			
			// if the name is not already prefixed
			if( !equal(playername, prefix, strlen(prefix)) ) {
				client_cmd(p_player, "name ^"%s%s^"", prefix, playername);
							
				if( logging_enabled() ) {
					log_amx(AMX_SAYLANG, LANG_SERVER, "LOG_NAME");
				}
			}
		}
	}
	
	g_times[p_player] = 0.0;	// reset time to save a few cycles next time
}

public hurt_player(const p_origin[], p_player)
{
	new tmporigins[3];
	get_user_origin(p_player, tmporigins);	// do this instead of checking g_origins because we
		// dont know how long the interval is set to.
	
	if(!equal(p_origin, tmporigins, 3))
		remove_task(p_player);
	else
		set_user_health(p_player, get_user_health(p_player) - get_hptickamount());
}

// all logs have the same information displayed, so it's easier to do it like this :)
do_log(p_player, const p_playername[], p_afktime, const p_langkey[])
{
	if( logging_enabled() )
	{
		new ip[MAX_LENGTH];
		new authid[MAX_LENGTH];
	
		get_user_ip(p_player, ip, MAX_LENGTH - 1);
		get_user_authid(p_player, authid, MAX_LENGTH - 1);
	
		log_amx(AMX_SAYLANG, LANG_SERVER, p_langkey, p_playername, authid, ip, p_afktime);
	}
}

stock prefix_enabled()
	return get_pcvar_num(g_pcv_useprefix);

stock dropbomb_enabled()
	return get_pcvar_num(g_pcv_dropbomb);

stock afkcmd_enabled()
	return get_pcvar_num(g_pcv_afkcmd);

stock Float:get_freezetime()
	return get_pcvar_float(g_pcv_freezetime);

stock is_enabled()
	return get_pcvar_num(g_pcv_enable);

stock Float:get_checkinterval()
	return get_pcvar_float(g_pcv_checktime);

stock Float:get_afktime()
	return get_pcvar_float(g_pcv_afktime);

stock get_minplayers()
	return get_pcvar_num(g_pcv_minplayers);

stock get_punishment()
	return get_pcvar_num(g_pcv_punishment);

public get_hptickamount()
	return get_pcvar_num(g_pcv_hptickamount);

stock Float:get_hpticktime()
	return get_pcvar_float(g_pcv_hpticktime);
	
stock announcing_enabled()
	return get_pcvar_num(g_pcv_announce);
	
stock logging_enabled()
	return get_pcvar_num(g_pcv_log);
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0\\ deflang1033{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/


Cvar-uri (se adaugă în fişierul amxmodx\configs\amxx.cfg):

afk_check "1"
- 0: Dezactivează plugin.
- 1: Activează plugin-ul şi verifică poziţiile de jucători.
- 2: Activează plugin-ul şi verifică ultima activitate ale jucătorilor.

afk_drop_bomb "2"
- 0: Dezactivează funcţia
- 1: Aruncă bomba
- 2: Transferă bomba la un coechipier

afk_transfer_time "9" (minimul este 6)
- Jucătorul este transferat la spectatori dupa 45 de secunde (9 * frecvenţa de 5 secunde)

afk_kick_time "24" (minimul este 6)
- Jucătorul AFK dupa 120 de secunde primeşte kick (24 * frecventa de 5 secunde)

afk_kick_players "12"
- Kick spectatorilor, doar atunci când un număr minim de jucători (12) se joacă. Valoarea "0" va dezactiva această opţiune.


poti pune te rog si fisierul .txt pentru data/lang ?
Multumesc !
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2549
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 61 times
Contact:

13 Sep 2018, 05:48

Poți lua toate resursele pluginului direct de aici: https://forums.alliedmods.net/showthread.php?t=158151
no...
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: Dot [Bot] and 12 guests