|E| Plugin V.I.P

person L E V I N
schedule Jan 25, 2018
forum 3
visibility 38
Jan 25, 2018 at 6:20 PM
Original Post
#1
Member

Un plugin pentru VIP simplu, dar foarte eficient față de restu!

 

 

V1

Spoiler

/* Plugin generated by AMXX-Studio */

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

#define PLUGIN		"[ CSO ] VIP"
#define VERSION 		"0.1"
#define AUTHOR 		"Opo4uMapy"

#define VIP_CSO 	ADMIN_LEVEL_A
const DMG_HEGRENADE = (1<<24)

new szTwoJump[33], szJump[33], szDoJump[33]

new Float:g_damage[33]

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_event("ResetHUD", "ResetHUD", "be")

	RegisterHam(Ham_Spawn, "player", "SpawnPlayer", 1)
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")

	register_forward(FM_PlayerPreThink, "TwoJump")
	register_forward(FM_PlayerPostThink, "PostTwoJump")
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {
	
	if(victim == attacker)
		return HAM_IGNORED
		
	if(damage_type & DMG_HEGRENADE)
		return HAM_IGNORED
		
	if(!is_user_connected(attacker))
		return HAM_IGNORED

	if(~get_user_flags(attacker) & VIP_CSO)
		return HAM_IGNORED

	g_damage[attacker]+damage

	if(g_damage[attacker] > 500.0) 
	{
		//aici setati puncte, bani, ce vreti
		g_damage[attacker] -= 500.0//??
	}

	return HAM_IGNORED	
}

public SpawnPlayer(id)
{
	if(!is_user_alive(id))
		return

	if(~get_user_flags(id) & VIP_CSO)
		return


	//set_user_health(id, get_user_health(id) + 100) setati la spawn orice..

	set_user_armor(id, 100)
	szTwoJump[id] = true
}

public TwoJump(id)
{
	if(szTwoJump[id] && (get_user_flags(id) & VIP_CSO))  
	{
		new szButton = pev(id, pev_button)
		new szOldButton = pev(id, pev_oldbuttons)

		if((szButton & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND) && !(szOldButton & IN_JUMP))
		{
			if((szJump[id] < 2)/* && (get_user_flags(id) & ADMIN_LEVEL_A)*/)
			{
				szDoJump[id] = true
				szJump[id]++

				return PLUGIN_CONTINUE
			}
		}
		if((pev(id, pev_flags) & FL_ONGROUND))
		{
			szJump[id] = 0
		}
	}
	return PLUGIN_CONTINUE
}

public PostTwoJump(id)
{
	if(szTwoJump[id] && get_user_flags(id) & VIP_CSO)
	{
		if(!is_user_alive(id)) 
			return PLUGIN_CONTINUE

		if(szDoJump[id])
		{
			new Float:szVelocity[3]  

			pev(id, pev_velocity, szVelocity)

			szVelocity[2] = random_float(295.0,305.0)
			set_pev(id, pev_velocity, szVelocity)

			szDoJump[id] = false

			return PLUGIN_CONTINUE
		}
	}      

	return PLUGIN_CONTINUE
}	

public client_connect(id) 
	g_damage[id] = 0.0

public client_disconnect(id)
	g_damage[id] = 0.0

public ResetHUD(id) 
	set_task(0.5, "VIP", id + 6910)

public VIP(TaskID)
{
	new id = TaskID - 6910
	
	if(get_user_flags(id) & VIP_CSO)
	{
		message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
		write_byte(id)
		write_byte(4)
		message_end()
	}
	return PLUGIN_HANDLED
}  

 

 

 

 

V2

Spoiler

#include < amxmodx >
#include < cstrike >
#include < geoip >
#include < fakemeta >

forward vip_connected( const id );

#define ANTI_FLOOD    // Uncomment this if you want enable ANTI_FLOOD system
#define COLORED_RADIO // Uncomment this if you want radio messages to be colored
#define ADMIN_SEE_ALL // Uncomment this if you want admins to see all team-chats

new const g_szTeams[ 3 ][ ] = {
   "Spectator",
   "Terrorist",
   "Counter-Terrorist"
};

new g_szCountryCode[ 33 ][ 11 ];
new bool:g_bAdmin[ 33 ];
new g_iMsgSayText;

#if defined ANTI_FLOOD
   new Float:g_flLastMsg[ 33 ];
   new Float:g_flFlooding[ 33 ];
   new g_iFloodCount[ 33 ];
#endif

public plugin_init( ) {
   register_plugin( "Fix", "1.1", "xPaw" );
   
#if defined ANTI_FLOOD
   register_dictionary( "antiflood.txt" );
#endif
   
#if defined COLORED_RADIO
   register_message( get_user_msgid( "TextMsg" ), "MessageTextMsg" );
#endif
   
   register_clcmd( "say",      "CmdSay" );
   register_clcmd( "say_team",   "CmdTeamSay" );
   
   g_iMsgSayText = get_user_msgid( "SayText" );
}

public client_authorized( id )
   g_bAdmin[ id ] = bool:( get_user_flags( id ) & ADMIN_RCON );

public client_disconnect( id )
   g_bAdmin[ id ] = false;

public vip_connected( const id )
   add( g_szCountryCode[ id ], 10, "^4[VIP]" );
   
public client_putinserver( id ) {
   new szIP[ 16 ], szCode[ 3 ];
   get_user_ip( id, szIP, 15, 1 );
   
   if( szIP[ 0 ] == 'l' )
      get_user_ip( 0, szIP, 15, 1 );
   
   if( !geoip_code2_ex( szIP, szCode ) ) {
      szCode[ 0 ] = '-';
      szCode[ 1 ] = '-';
   }
   
   formatex( g_szCountryCode[ id ], 10, "[%s]", szCode );
   
#if defined ANTI_FLOOD
   g_iFloodCount[ id ] = 0;
#endif
}

public CmdSay( id ) {
#if defined ANTI_FLOOD
   if( CheckFlood( id ) )
      return PLUGIN_HANDLED;
#endif
   
   new szSaid[ 192 ];
   read_args( szSaid, 191 );
   remove_quotes( szSaid );
   
   new i, x, iTeam = strlen( szSaid );
   
   if( !iTeam ) return PLUGIN_HANDLED;
   
   for( i = 0; i < iTeam; i++ ) {
      if( szSaid[ i ] != ' ' ) {
         x = 1;
         break;
      }
   }
   
   if( !x ) return PLUGIN_HANDLED;
   
   new szName[ 32 ], szMessage[ 191 ];
   
   for( i = 0; i < iTeam; i++ )
      for( x = '^1'; x <= '^4'; x++ )
         if( szSaid[ i ] == x )
            szSaid[ i ] = ' ';
   
   replace_all( szSaid, 190, "%s", " s" );
   
   get_user_name( id, szName, 31 );
   
   new szTeam[ 2 ];
   get_user_team( id, szTeam, 1 );
   switch( szTeam[ 0 ] ) {
      case 'T': iTeam = 1;
      case 'C': iTeam = 2;
      default: iTeam = 0;
   }
   
   new szTag[ 8 ];
   
   if( !iTeam )
      szTag = "*SPEC* ";
   else if( !is_user_alive( id ) )
      szTag = "*DEAD* ";
   
   formatex( szMessage, 190, "^3%s^1 %s^3%s^1:%s %s", g_szCountryCode[ id ], szTag, szName, g_bAdmin[ id ] ? "^4" : "", szSaid );
   szMessage[ 189 ] = '^0';
   
   SendMessage( MSG_BROADCAST, id, 0, szMessage );
   
   // Logs
   get_user_authid( id, szMessage, 40 );
   log_message( "^"%s<0><%s><%c>^" say ^"%s^"", szName, szMessage, szTeam[ 0 ], szSaid );
   
   return PLUGIN_HANDLED;
}

public CmdTeamSay( id ) {
#if defined ANTI_FLOOD
   if( CheckFlood( id ) )
      return PLUGIN_HANDLED;
#endif
   
   new szSaid[ 192 ];
   read_args( szSaid, 191 );
   remove_quotes( szSaid );
   
   new i, x, iTeam = strlen( szSaid );
   
   if( !iTeam ) return PLUGIN_HANDLED;
   
   for( i = 0; i < iTeam; i++ ) {
      if( szSaid[ i ] != ' ' ) {
         x = 1;
         break;
      }
   }
   
   if( !x ) return PLUGIN_HANDLED;
   
   new szName[ 32 ], szMessage[ 191 ];
   
   for( i = 0; i < iTeam; i++ )
      for( x = '^1'; x <= '^4'; x++ )
         if( szSaid[ i ] == x )
            szSaid[ i ] = ' ';
   
   replace_all( szSaid, 190, "%s", " s" );
   
   new iPlayer, iPlayers[ 32 ], iNum;
   get_user_name( id, szName, 31 );
   get_players( iPlayers, iNum, "ch" );
   
   new szTeam[ 2 ];
   get_user_team( id, szTeam, 1 );
   switch( szTeam[ 0 ] ) {
      case 'T': iTeam = 1;
      case 'C': iTeam = 2;
      default: iTeam = 0;
   }
   
   formatex( szMessage, 190, "^3%s^1 %s(%s)^3 %s^1:%s %s", g_szCountryCode[ id ], ( iTeam && !is_user_alive( id ) ) ? "*DEAD* " : "", g_szTeams[ iTeam ], szName, g_bAdmin[ id ] ? "^4" : "", szSaid );
   szMessage[ 189 ] = '^0';
   
   for( i = 0; i < iNum; i++ ) {
      iPlayer = iPlayers[ i ];
      
#if defined ADMIN_SEE_ALL
      if( get_user_team( iPlayer ) == iTeam || g_bAdmin[ iPlayer ] )
#else
      if( get_user_team( iPlayer ) == iTeam )
#endif
         SendMessage( MSG_ONE_UNRELIABLE, id, iPlayer, szMessage );
   }
   
   // Logs
   get_user_authid( id, szMessage, 40 );
   log_message( "^"%s<0><%s><%c>^" say_team ^"%s^"", szName, szMessage, szTeam[ 0 ], szSaid );
   
   return PLUGIN_HANDLED;
}

#if defined ANTI_FLOOD
   public CheckFlood( id ) {
      new Float:flGametime = get_gametime( );
      
      if( g_flLastMsg[ id ] + 0.25 > flGametime )
         return true;
      
      g_flLastMsg[ id ] = flGametime;
      
      if( g_flFlooding[ id ] > flGametime ) {
         if( g_iFloodCount[ id ] >= 3 ) {
            client_print( id, print_notify, "** %L **", id, "STOP_FLOOD" );
            client_print( id, print_center, "** %L **", id, "STOP_FLOOD" );
            
            g_flFlooding[ id ] = flGametime + 3.75;
            
            return true;
         }
         
         g_iFloodCount[ id ]++;
      }
      else if( g_iFloodCount[ id ] )
         g_iFloodCount[ id ]--;
      
      g_flFlooding[ id ] = flGametime + 0.75;
      
      return false;
   }
#endif

#if defined COLORED_RADIO
   public MessageTextMsg( ) {
      if( get_msg_args( ) != 5 || get_msg_arg_int( 1 ) != 5 )
         return PLUGIN_CONTINUE;
      
      static szMessage[ 33 ];
      get_msg_arg_string( 3, szMessage, 32 );
      
      if( equal( szMessage, "#Game_radio" ) ) {
         get_msg_arg_string( 5, szMessage, 32 );
         
         if( equal( szMessage, "#Fire_in_the_hole" ) ) {
            get_msg_arg_string( 2, szMessage, 3 );
            
            switch( get_user_weapon( str_to_num( szMessage ) ) ) {
               case CSW_HEGRENADE:    szMessage = "%s1 (RADIO): %s2 [explosive]";
               case CSW_SMOKEGRENADE: szMessage = "%s1 (RADIO): %s2 [smokegren]";
               case CSW_FLASHBANG:    szMessage = "%s1 (RADIO): %s2 [flashbang]";
               default:               szMessage = "%s1 (RADIO): %s2";
            }
         } else
            szMessage = "%s1 (RADIO): %s2";
         
         set_msg_arg_string( 3, szMessage );
      }
      
      return PLUGIN_CONTINUE;
   }
#endif

SendMessage( const iType, const iSender, const id, const szMessage[ ] ) {
   message_begin( iType, g_iMsgSayText, _, id );
   write_byte( iSender );
   write_string( szMessage );
   message_end( );
} 
Jan 25, 2018 at 6:39 PM
#2
Member

Primul are functii pentru modul de zombie.

Si in al doilea unde-s armele?

Jan 25, 2018 at 8:56 PM
#3
Member

sunt doar exemple, cu un start foarte bun.

Jan 27, 2018 at 6:55 AM
#4
Member

O prostie dupa parerea mea.

Atat de simplu poate sa faca o cerere.

Join the Discussion

You need to be logged in to post a reply.

loginLogin to Reply