Cerere 2 pluginuri 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
User avatar
darkemy14
Membru, skill +1
Membru, skill +1
Posts: 269
Joined: 02 Oct 2011, 16:20
Detinator Steam: Nu
Detinator server CS: Da
Has thanked: 82 times
Been thanked: 1 time
Contact:

19 Jan 2013, 23:40

as vrea 2 pluginuri:

1.daca esti in joc si stai un anumit timp afk sa te bage spectator (nu sa primesti kick)
2. cand tastezi in chat /afk sa te mute la spectatori

multumesc
RoyalServer 2
User avatar
CsN^ ;x
Membru eXtream
Membru eXtream
Posts: 3560
Joined: 02 Apr 2012, 16:58
Detinator Steam: Nu
CS Status: Retras din domeniul Counter-Strike
Reputatie: Fost moderator
Location: Bucuresti
Has thanked: 797 times
Been thanked: 607 times

19 Jan 2013, 23:54

1 )
| 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.

Edit :
2 )

Code: Select all

#include < amxmodx >
#include < cstrike >
#include < fakemeta >
#include < fun >

#define PLUGIN "New Plug-In"
#define VERSION "0.1"
#define AUTHOR "aNNakin"

#define ACCESS ADMIN_SLAY

new gi_LastTeam[ 33 ], g_msgscoreinfo;

new const gs_Pistols[ 2 ][ 16 ] = { "weapon_glock18", "weapon_usp" };
new const gs_Ammo[ 2 ][ 16 ] = { "ammo_9mm", "ammo_45acp" };

public plugin_init ( )
{
   register_plugin ( PLUGIN, VERSION, AUTHOR );
   register_clcmd ( "say /spec", "spec_cmd" );
   register_clcmd ( "say_team /spec", "spec_cmd" );
   
   g_msgscoreinfo = get_user_msgid ( "ScoreInfo" );
}

public client_putinserver ( id ) gi_LastTeam[ id ] = 0;

public spec_cmd ( id )
{
   if ( ! ( get_user_flags ( id ) & ACCESS ) )
      return PLUGIN_HANDLED;
      
   new i_Team = get_user_team ( id );
   if ( gi_LastTeam[ id ] && i_Team == 3 )
   {
         
      cs_set_user_team ( id, ( gi_LastTeam[ id ] == 1 ) ? CS_TEAM_T : CS_TEAM_CT );
      Spawn ( id );
      return PLUGIN_CONTINUE;
   }
   if ( i_Team < 3 )
   {
      gi_LastTeam[ id ] = i_Team;
      new i_Frags = get_user_frags ( id ) + 1;
      new i_Deaths = get_user_deaths ( id ) - 1;
      
      if ( is_user_alive ( id ) )
         user_silentkill ( id );
      cs_set_user_team ( id, CS_TEAM_SPECTATOR );
      
      message_begin ( MSG_ALL, g_msgscoreinfo );
      write_byte ( id );
      write_short ( i_Frags );
      write_short ( i_Deaths );
      write_short ( 0 );
      write_short ( i_Team );
      message_end ( );
   
      client_print ( id, print_chat, "Scrie /spec din nou pentru a reintra in joc" );
      return PLUGIN_CONTINUE;
   }
   
   return PLUGIN_HANDLED;
}

Spawn ( index )
{
   set_pev(index,pev_deadflag,DEAD_RESPAWNABLE);
   set_pev(index,pev_iuser1,0);
   dllfunc(DLLFunc_Think,index);
   engfunc(EngFunc_SetOrigin,index,Float:{-4800.0,-4800.0,-4800.0});
   
   set_task(0.5,"respawn",index);
}

public respawn(index)
{
   if ( is_user_alive ( index ) )
   {
      dllfunc(DLLFunc_Spawn,index);
      set_pev(index,pev_health, 100.0 );
      set_pev(index,pev_armorvalue, 0.0 );
      
      give_item ( index, "weapon_knife" );
      give_item ( index, gs_Pistols[ gi_LastTeam[ index ] ] );
      
      for ( new i; i < 4; i++ )
         give_item ( index, gs_Ammo[ gi_LastTeam[ index ] ] );
   }
      
}
Addons HNS level,gravity,xp DOWNLOAD ( e țeapă)
https://5filme.com/ - un simplu site de filme pentru timpul liber
User avatar
DuhuLeTzu ;x
Membru, skill +2
Membru, skill +2
Posts: 649
Joined: 20 Oct 2012, 02:32
Detinator Steam: Da
Detinator server CS: DR.PLAYCS.RO
Has thanked: 5 times
Been thanked: 100 times

20 Jan 2013, 07:01

Image
Image
User avatar
darkemy14
Membru, skill +1
Membru, skill +1
Posts: 269
Joined: 02 Oct 2011, 16:20
Detinator Steam: Nu
Detinator server CS: Da
Has thanked: 82 times
Been thanked: 1 time
Contact:

21 Jan 2013, 12:59

@Csn este bun al doilea plugin care te pun spec dar este o singura problema .. cand esti spectator is scri /spec te baga la joc cu pistolu indiferent ca este inceputul sau sfarsitul rundei (oricand) is as vrea daca se poate sa nu mai aiba acea optiune sau sa te bage iar in CT sau T dar sa te dea mort.
User avatar
CsN^ ;x
Membru eXtream
Membru eXtream
Posts: 3560
Joined: 02 Apr 2012, 16:58
Detinator Steam: Nu
CS Status: Retras din domeniul Counter-Strike
Reputatie: Fost moderator
Location: Bucuresti
Has thanked: 797 times
Been thanked: 607 times

21 Jan 2013, 21:23

1.
| Afiseaza codul
#include < amxmodx >
#include < cstrike >

#pragma semicolon 1

new g_Team;

public plugin_init()
{
   register_plugin( "Spec", "0.1", "compaq" );

   register_clcmd( "say /spec", "cmdDo", ADMIN_KICK );
   register_clcmd( "say_team /spec", "cmdDo", ADMIN_KICK );

   register_clcmd( "say /back", "cmdUndo", ADMIN_KICK );
   register_clcmd( "say_team /back", "cmdUndo", ADMIN_KICK );
}

public cmdDo( i_Index )
{
   if( is_user_connected( i_Index ) )
   {

      g_Team = cs_get_user_team( i_Index );

      if( g_Team == CS_TEAM_SPECTATOR )
         return PLUGIN_HANDLED;

      if( is_user_alive( i_Index ) )
      {
         client_cmd( i_Index, "kill" );
         cs_set_user_team( i_Index, CS_TEAM_SPECTATOR );
         client_print( i_Index, print_chat, "Ai fost mutat la spectatori." );
      }

      else
      {
         cs_set_user_team( i_Index, CS_TEAM_SPECTATOR );
         client_print( i_Index, print_chat, "Ai fost mutat la spectatori." );
      }
   }

   return PLUGIN_CONTINUE;
}

public cmdUndo( i_Index )
{
   if( is_user_connected( i_Index ) )
   {
      cs_set_user_team( i_Index, g_Team );
   }
}
2 .
Gammer wrote:poftim http://www.girlshare.ro/1355757.7

prezinta urmatoarele

Code: Select all

	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /forum","forum")
	register_clcmd("say_team /forum","forum")
	register_clcmd("say /retry","retry");
	register_clcmd("say_team /retry","retry");
	register_clcmd("say /spec","spec");
	register_clcmd("say_team /spec","spec");
	register_clcmd("say /ct","ct");
	register_clcmd("say_team /ct","ct");
	register_clcmd("say /t","t")
	register_clcmd("say_team /t","t")
	register_clcmd("say /disc","disc")
	register_clcmd("say_team /disc" , "disc")
	register_clcmd("say /quit","quit")
	register_clcmd("say_team /quit" , "quit")
	register_clcmd("say /kill","kill")
	register_clcmd("say_team /kill" , "kill")
        register_clcmd("say /resetscore", "reset")
        register_clcmd("say_team /restscore", "reset")
        register_clcmd("say /reset", "reset")
        register_clcmd("say_team /rest", "reset")
        register_clcmd("say /rs", "reset")
        register_clcmd("say_team /rs", "reset")
        register_clcmd("say /right", "right")
        register_clcmd("say_team /right", "right")
        register_clcmd("say /left", "left")
        register_clcmd("say_team /left", "left")
	register_clcmd( "say /comenzi", "comenzi" );
	register_clcmd( "say_team /comenzi", "comenzi" );
3 .

Code: Select all

http://www.extreamcs.com/forum/amxmodx/fast-spectate-t102535.html
Inceracale pe am3 :) daca nu foloseste butonu serch ca ti-as puune toate pluginuriile aici si din primu post a fost bun nr 1 ala cu afk spec sau cum era ?
Addons HNS level,gravity,xp DOWNLOAD ( e țeapă)
https://5filme.com/ - un simplu site de filme pentru timpul liber
User avatar
darkemy14
Membru, skill +1
Membru, skill +1
Posts: 269
Joined: 02 Oct 2011, 16:20
Detinator Steam: Nu
Detinator server CS: Da
Has thanked: 82 times
Been thanked: 1 time
Contact:

21 Jan 2013, 21:49

multumesc pentru al doilea plugin pana la urma a mers unu din astea 3 si referit la acel plugin afk si su dupa te baga spec du x secunde nu merge .. adica dupa 45 sec cat este setat acolo nu te baga spec .. decat iti da slap cu vreo 5 sau 10 hp si in chat imi apas niste mesaje cu mcl: not found .. sau ceva de genu (cred ca pe langa pluginul bun are nevoie de fisierul .txt din data/lang)
User avatar
CsN^ ;x
Membru eXtream
Membru eXtream
Posts: 3560
Joined: 02 Apr 2012, 16:58
Detinator Steam: Nu
CS Status: Retras din domeniul Counter-Strike
Reputatie: Fost moderator
Location: Bucuresti
Has thanked: 797 times
Been thanked: 607 times

21 Jan 2013, 22:12

Addons HNS level,gravity,xp DOWNLOAD ( e țeapă)
https://5filme.com/ - un simplu site de filme pentru timpul liber
User avatar
darkemy14
Membru, skill +1
Membru, skill +1
Posts: 269
Joined: 02 Oct 2011, 16:20
Detinator Steam: Nu
Detinator server CS: Da
Has thanked: 82 times
Been thanked: 1 time
Contact:

22 Jan 2013, 13:53

CsN^ ;x wrote:http://www.extreamcs.com/forum/amxmodx/brb-t19594.html asta te ajuta cu ceva ?
multumesc, da este bun, acesta merge numai cu exceptia faptului ca nu te baga inapoi dar este ok ca pot sa apese si ei pe M-> 2 :)) :D
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests