CoSmiN 31 Posted March 2, 2019 (edited) Descarcare Versiunea 1.0: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Versiunea 1.1: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Versiunea 1.2: Mega.Co.Nz | GirlShare.Ro | SaberCatHost.Com Surse (.sp) #include <sourcemod> #include <sdktools> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new MoneyOffset = -1 new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.0", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) MoneyOffset = FindSendPropInfo( "CCSPlayer", "m_iAccount" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) && MoneyOffset != -1 ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: VipSpeed Handle: SpeedAmmount Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.1", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) VipSpeed = CreateConVar( "vip_fast_speed", "1", "VIP primeste viteza de miscare mai mare" ) SpeedAmmount = CreateConVar( "vip_speed_ammount", "1.2", "Cat de rapid sa se miste VIP" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) RegConsoleCmd( "vips", Command_ShowVips ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public OnClientPutInServer( client ) { SDKHook( client, SDKHook_WeaponSwitchPost, WeaponSwitchPost ) } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } public Action: Command_ShowVips( client, args ) { new Handle: OnlineVips = CreateMenu( OnlineVips_Handler ) SetMenuTitle( OnlineVips, "Online VIPS List" ) new OnlineVipsNum for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) ) { decl String: uNameBuffer[ 32 ] Format( uNameBuffer, sizeof( uNameBuffer ), "%N", i ) AddMenuItem( OnlineVips, "OnSelect", uNameBuffer, ITEMDRAW_DISABLED ) OnlineVipsNum++ } } if( OnlineVipsNum < 1 ) { if( OnlineVips != INVALID_HANDLE ) { CloseHandle( OnlineVips ) } PrintToChat( client, " \x04[VIP]\x10 There are no vips online!" ) } else { SetMenuExitButton( OnlineVips, true ) DisplayMenu( OnlineVips, client, 30 ) } } public Action: WeaponSwitchPost( client, weapon ) { if( IsClientVip( client ) && IsPlayerAlive( client ) && GetConVarBool( VipSpeed ) ) { SetEntPropFloat( client, Prop_Send, "m_flVelocityModifier", GetConVarFloat( SpeedAmmount ) ) } } public OnlineVips_Handler( Handle: OnlineVips, MenuAction: action, client, menu ) { switch( action ) { case MenuAction_End: { if( OnlineVips != INVALID_HANDLE ) { CancelMenu( OnlineVips ) } } } } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike> #include <clientprefs> #define VIP_FLAG ADMFLAG_CUSTOM1 Handle: Armor Handle: Helmet Handle: Bhop Handle: Defuser Handle: VipSpeed Handle: SpeedAmmount Handle: Damage Handle: DamageAmount Handle: HE Handle: Flash Handle: Molotov Handle: Smoke Handle: PistolRoundRule Handle: HpNormalKill Handle: HpKnifeKill Handle: HpHeadShotKill Handle: MaxHP Handle: MoneyPerNormalKill Handle: MoneyPerKnifeKill Handle: MoneyPerHeadShotKill Handle: ExtraMoneyOnSpawn Handle: ShowBombsite Handle: HalfPlantTime Handle: HalfDefuseTimeNoKit Handle: HalfDefuseTimeKit Handle: Notify new Handle: BhopCookie = INVALID_HANDLE new MoneyOffset = -1 new RoundID = 0 bool: CanBhop[ MAXPLAYERS + 1 ] bool: IsPistolRound = false public Plugin:myinfo = { name = "CS:GO VIP", author = "tre3fla", description = "VIP pentru serverele de csgo", version = "1.2", url = "http://extreamcs.com/forum" } public OnPluginStart( ) { Armor = CreateConVar( "vip_give_armor", "1", "VIP primeste 100 armura la spawn" ) Helmet = CreateConVar( "vip_give_helmet", "1", "VIP primeste helmet daca are armura" ) Bhop = CreateConVar( "vip_autobhop", "1", "VIP poate face bhop automat cand tine apasat space" ) Defuser = CreateConVar( "vip_give_ct_defuser", "1", "VIP primeste defuser atunci cand este CT" ) VipSpeed = CreateConVar( "vip_fast_speed", "1", "VIP primeste viteza de miscare mai mare" ) SpeedAmmount = CreateConVar( "vip_speed_amount", "1.2", "Cat de rapid sa se miste VIP" ) Damage = CreateConVar( "vip_high_damage", "1", "VIP va avea damage mai mare" ) DamageAmount = CreateConVar( "vip_damage_amount", "2", "Cu cat sa fie multiplicat damage-ul vipului" ) HE = CreateConVar( "vip_give_he", "1", "VIP primeste un HE la spawn, daca nu are deja unul" ) Flash = CreateConVar( "vip_give_flash", "1", "VIP primeste un flash la spawn, daca nu are deja unul" ) Molotov = CreateConVar( "vip_give_molotov", "1", "VIP primeste molotov la spawn daca nu are deja unul" ) Smoke = CreateConVar( "vip_give_smoke", "1", "VIP primeste smoke la spawn daca nu are deja unul" ) PistolRoundRule = CreateConVar( "vip_disabled_on_pistol_round", "1", "VIP nu va rula un in rundele de pistoale pe competitive" ) ExtraMoneyOnSpawn = CreateConVar( "vip_give_money_on_spawn", "500", "VIP va primi aceea suma de bani la spawn. 0=dezactivat" ) HpNormalKill = CreateConVar( "vip_normal_kill_hp", "10", "VIP va primi HP cand face frag" ) HpKnifeKill = CreateConVar( "vip_knife_kill_hp", "30", "VIP va primi HP cand face frag cu cutitul" ) HpHeadShotKill = CreateConVar( "vip_headshot_hp", "15", "VIP va primit HP cand face frag cu headshot" ) MaxHP = CreateConVar( "vip_max_hp", "100", "HP-ul maxim pe care il poate avea un VIP" ) MoneyPerNormalKill = CreateConVar( "vip_normal_kill_money", "100", "VIP va primi acea suma de bani cand face frag" ) MoneyPerKnifeKill = CreateConVar( "vip_knife_kill_money", "1000", "VIP va primi acea suma de bani cand face frag cu cutitul" ) MoneyPerHeadShotKill = CreateConVar( "vip_headshot_kill_money", "150", "VIP va primi acea suma de bani cand face frag cu headshot" ) ShowBombsite = CreateConVar( "vip_show_bombsite", "1", "VIP de la ct vor vedea in ce bombsite au plantat teroristii bomba" ) HalfPlantTime = CreateConVar( "vip_bomb_plant_time", "2", "Timp in secunde pentru plantarea bombei de catre VIP" ) HalfDefuseTimeNoKit = CreateConVar( "vip_defuse_time_nokit", "5", "Timp necesar pentru ca VIP sa dea defuse bombei cand nu are kit" ) HalfDefuseTimeKit = CreateConVar( "vip_defuse_time_kit", "2.5", "Timp necesar pentru ca VIP sa dea defuse bombei cand are kit" ) Notify = CreateConVar( "vip_notify_on_bonus", "1", "VIP vor vedea mesaje in chat cand primesc hp, bani, etc" ) MoneyOffset = FindSendPropInfo( "CCSPlayer", "m_iAccount" ) RegConsoleCmd( "bhop", Command_ToggleBhop ) RegConsoleCmd( "vips", Command_ShowVips ) BhopCookie = RegClientCookie( "AutoBhop", "Cookie AutoBhop", CookieAccess_Protected ) HookEvent( "player_spawn", Event_PlayerSpawn ) HookEvent( "player_death", Event_PlayerDeath ) HookEvent( "announce_phase_end", Event_PhaseEnd ) HookEvent( "bomb_planted", Event_BombPlanted ) HookEventEx( "bomb_begindefuse", Event_BeginDefuse ) HookEventEx( "bomb_beginplant", Event_BeginPlant ) HookEvent( "round_end", Event_RoundEnd, EventHookMode_PostNoCopy ) } public OnMapStart( ) { RoundID = 0 IsPistolRound = false } public OnClientCookiesCached( client ) { decl String: UserCookie[ 5 ] GetClientCookie( client, BhopCookie, UserCookie, sizeof( UserCookie ) ) if( StrEqual( UserCookie, "1" ) && IsClientVip( client ) ) { CanBhop[ client ] = true } else { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) } } public OnClientPutInServer( client ) { SDKHook( client, SDKHook_WeaponSwitchPost, WeaponSwitchPost ) SDKHook( client, SDKHook_OnTakeDamage, OnTakeDamage ) } public Action: Event_PlayerSpawn( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && !IsFakeClient( client ) ) { if( IsClientVip( client ) ) { RemoveClientGrenades( client ) RequestFrame( GiveSpawnItems, client ) } } return Plugin_Continue } public Action: Event_PlayerDeath( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { return Plugin_Handled } new victim = GetClientOfUserId( GetEventInt( event, "userid" ) ) new attacker = GetClientOfUserId( GetEventInt( event, "attacker" ) ) if( attacker > 0 && attacker < MaxClients && IsClientInGame( attacker ) && victim > 0 && victim < MaxClients && IsClientInGame( victim ) && IsClientVip( attacker ) && attacker != victim ) { new bool:Headshot = GetEventBool( event, "headshot" ) char Arma[ 64 ] GetEventString( event, "weapon", Arma, sizeof( Arma ) ) if( Headshot ) { if( GetConVarInt( MoneyPerHeadShotKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerHeadShotKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerHeadShotKill ) ) } } if( GetConVarInt( HpHeadShotKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpHeadShotKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpHeadShotKill ) ) } } } else if( ( StrContains( Arma, "knife", false ) != -1 ) || ( StrContains( Arma, "bayonet", false ) != -1 ) ) { if( GetConVarInt( MoneyPerKnifeKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerKnifeKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerKnifeKill ) ) } } if( GetConVarInt( HpKnifeKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpKnifeKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpKnifeKill ) ) } } } else { if( GetConVarInt( MoneyPerNormalKill ) > 0 && MoneyOffset != -1 ) { SetEntProp( attacker, Prop_Send, "m_iAccount", GetEntProp( attacker, Prop_Send, "m_iAccount" ) + GetConVarInt( MoneyPerNormalKill ) ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved extra\x06 $%d\x10 for killing an enemy!", GetConVarInt( MoneyPerNormalKill ) ) } } if( GetConVarInt( HpNormalKill ) > 0 && GetClientHealth( attacker ) < GetConVarInt( MaxHP ) ) { new ClientHealth = GetClientHealth( attacker ) ClientHealth += GetConVarInt( HpNormalKill ) if( ClientHealth > GetConVarInt( MaxHP ) ) { ClientHealth = GetConVarInt( MaxHP ) } SetEntProp( attacker, Prop_Data, "m_iHealth", ClientHealth ) if( GetConVarBool( Notify ) ) { PrintToChat( attacker, " \x04[VIP]\x10 You recieved\x06 %d HP\x10 for killing an enemy!", GetConVarInt( HpNormalKill ) ) } } } } return Plugin_Continue } public Event_PhaseEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { IsPistolRound = true } public Event_BeginDefuse( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event,"userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfDefuseTimeKit ) || GetConVarBool( HalfDefuseTimeNoKit ) ) { CreateTimer( 0.0, DefuseBugFix, client ) } } } public Event_BeginPlant( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) if( client > 0 && client < MaxClients && IsPlayerAlive( client ) && IsClientVip( client ) && GetConVarBool( HalfPlantTime ) ) { new Bomb = GetEntPropEnt( client, Prop_Send, "m_hActiveWeapon" ) decl String: EntityName[ 20 ] GetEntityClassname( Bomb, EntityName, sizeof( EntityName ) ) if( StrEqual( EntityName, "weapon_c4", false ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_fArmedTime", GetGameTime()+GetConVarFloat( HalfPlantTime ) ) } } } } public Event_BombPlanted( Handle: event, const String: name[ ], bool: dontBroadcast ) { if( GetConVarBool( PistolRoundRule ) && !IsPistolRound ) { if( GetConVarBool( ShowBombsite ) ) { new client = GetClientOfUserId( GetEventInt( event, "userid" ) ) decl String: Bombsite[ 64 ] GetEntPropString( client, Prop_Send, "m_szLastPlaceName", Bombsite, sizeof( Bombsite ) ) decl String: BombsiteBuffer[ 32 ] if( StrContains( Bombsite, "BombsiteA" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite A" ) } else if( StrContains( Bombsite, "BombsiteB" ) != -1 ) { Format( BombsiteBuffer, sizeof( BombsiteBuffer ), "Bombsite B" ) } for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) && GetClientTeam( i ) == 3 && IsPlayerAlive( i ) ) { PrintToChat( i, " \x04[VIP]\x02 %N\x10 has planted the bomb in\x04 %s", client, BombsiteBuffer ) } } } } } public Event_RoundEnd( Handle: event, const String: name[ ], bool: dontBroadcast ) { RoundID++ if( RoundID == 1 ) { IsPistolRound = true } else { IsPistolRound = false } } public Action: OnPlayerRunCmd( client, &buttons, &impulse, Float: vel[ 3 ], Float: angles[ 3 ], &weapon ) { if( IsClientVip( client ) && GetConVarBool( Bhop ) && CanBhop[ client ] ) { if( buttons & IN_JUMP && IsPlayerAlive( client ) && !( GetEntityFlags( client ) & FL_ONGROUND ) && !( GetEntityMoveType( client ) & MOVETYPE_LADDER ) ) { buttons &= ~IN_JUMP } } } public Action: DefuseBugFix( Handle: timer, any: client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) ) { new Bomb = FindEntityByClassname( MaxClients+1, "planted_c4" ) if( Bomb != -1 ) { if( GetEntProp( client, Prop_Send, "m_bHasDefuser" ) ) { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeKit ) ) } else { SetEntPropFloat( Bomb, Prop_Send, "m_flDefuseCountDown", GetGameTime( ) + GetConVarFloat( HalfDefuseTimeNoKit ) ) SetEntPropFloat( client, Prop_Send, "m_flProgressBarStartTime", GetGameTime( ) ) SetEntProp( client, Prop_Send, "m_iProgressBarDuration", GetConVarInt( HalfDefuseTimeNoKit ) ) } } } } public GiveSpawnItems( client ) { if( client > 0 && client < MaxClients && IsClientInGame( client ) && IsPlayerAlive( client ) && GetClientTeam( client ) > 1 ) { if( GetConVarBool( Armor ) ) { SetEntProp( client, Prop_Send, "m_ArmorValue", 100 ) } if( GetConVarBool( Helmet ) && GetEntProp( client, Prop_Send, "m_ArmorValue" ) >= 1 ) { SetEntProp( client, Prop_Send, "m_bHasHelmet", 1 ) } if( GetConVarBool( HE ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_hegrenade" ) } if( GetConVarBool( Flash ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_flashbang" ) } if( GetConVarBool( Smoke ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { GivePlayerItem( client, "weapon_smokegrenade" ) } if( GetConVarBool( Molotov ) && GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) < 1 && GetClientGrenades( client ) < GetConVarInt( FindConVar( "ammo_grenade_limit_total") ) ) { switch( GetClientTeam( client ) ) { case 2: { GivePlayerItem( client, "weapon_molotov" ) } case 3: { GivePlayerItem( client, "weapon_incgrenade" ) } } } if( GetConVarBool( ExtraMoneyOnSpawn ) && MoneyOffset != -1 ) { SetEntProp( client, Prop_Send, "m_iAccount", GetEntProp( client, Prop_Send, "m_iAccount" ) + GetConVarInt( ExtraMoneyOnSpawn ) ) } if( GetConVarBool( Defuser ) && GetClientTeam( client ) == 3 && GetEntProp( client, Prop_Send, "m_bHasDefuser" ) < 1 ) { SetEntProp( client, Prop_Send, "m_bHasDefuser", 1 ) } } } public Action: Command_ToggleBhop( client, args ) { if( GetConVarBool( PistolRoundRule ) && IsPistolRound ) { PrintToChat( client, " \x04[VIP]\x10 Auto-bhop cannot be used in pistol rounds!" ) return Plugin_Handled } if( GetConVarBool( Bhop ) && IsClientVip( client ) ) { if( CanBhop[ client ] ) { CanBhop[ client ] = false SetClientCookie( client, BhopCookie, "0" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x02 disabled\x10!" ) } else { CanBhop[ client ] = true SetClientCookie( client, BhopCookie, "1" ) PrintToChat( client, " \x04[VIP]\x10 Auto-bhop was\x06 enabled\x10!" ) } } else { PrintToChat( client, " \x04[VIP]\x10 You need to be\x06 VIP\x10 to use this command!" ) } return Plugin_Continue } public Action: Command_ShowVips( client, args ) { new Handle: OnlineVips = CreateMenu( OnlineVips_Handler ) SetMenuTitle( OnlineVips, "Online VIPS List" ) new OnlineVipsNum for( new i = 1; i < MaxClients; i++ ) { if( IsClientInGame( i ) && IsClientVip( i ) ) { decl String: uNameBuffer[ 32 ] Format( uNameBuffer, sizeof( uNameBuffer ), "%N", i ) AddMenuItem( OnlineVips, "OnSelect", uNameBuffer, ITEMDRAW_DISABLED ) OnlineVipsNum++ } } if( OnlineVipsNum < 1 ) { if( OnlineVips != INVALID_HANDLE ) { CloseHandle( OnlineVips ) } PrintToChat( client, " \x04[VIP]\x10 There are no vips online!" ) } else { SetMenuExitButton( OnlineVips, true ) DisplayMenu( OnlineVips, client, 30 ) } } public OnlineVips_Handler( Handle: OnlineVips, MenuAction: action, client, menu ) { switch( action ) { case MenuAction_End: { if( OnlineVips != INVALID_HANDLE ) { CancelMenu( OnlineVips ) } } } } public Action: WeaponSwitchPost( client, weapon ) { if( IsClientVip( client ) && IsPlayerAlive( client ) && GetConVarBool( VipSpeed ) ) { SetEntPropFloat( client, Prop_Send, "m_flVelocityModifier", GetConVarFloat( SpeedAmmount ) ) } } public Action: OnTakeDamage( victim, &attacker, &inflictor, &Float:damage, &damagetype ) { if( inflictor > 0 && inflictor < MaxClients && IsClientInGame( inflictor ) && GetClientTeam( inflictor ) != GetClientTeam( victim ) ) { if( IsClientVip( inflictor ) && GetConVarBool( Damage ) ) { damage = ( damage * GetConVarInt( DamageAmount ) ) return Plugin_Changed } } return Plugin_Continue } stock bool: IsClientVip( client ) { if( GetUserFlagBits( client ) & VIP_FLAG ) { return true } return false } stock GetClientGrenades( client ) { new Explosive = GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) new Flashbang = GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) new Smokegrenade = GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) new Incendiary = GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) new Decoy = GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) return Explosive + Flashbang + Smokegrenade + Incendiary + Decoy } stock RemoveClientGrenades( client ) { if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 14 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 14 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 15 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 15 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 16 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 16 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 17 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 17 ) } if( GetEntProp( client, Prop_Send, "m_iAmmo", _, 18 ) >= 1 ) { SetEntProp( client, Prop_Send, "m_iAmmo", 0, _, 18 ) } } Informatii Plugin (beneficii) Cam tot ce contine acest VIP este controlabil cu ajutorul convar-urilor, fara sa fie necesare editari ale sursei! Are suport pentru rundele de pistoale, se poate seta ca pluginul sa nu ruleze in rundele de pistoale, Jucatorii VIP au auto-bhop care si-l pot dezactiva sau activa cu ajutorul unei comenzi (doar daca auto-bhop este permis prin convar), Jucatorii VIP pot primi armura mica la spawn, Jucatorii VIP pot primit casca la spawn, doar daca au deja armura pe ei, Jucatorii VIP de la CT pot primi defuse kit la spawn, Jucatorii VIP pot primit bani la spawn, Jucatorii VIP pot primi un set cu grenazi la fiecare spawn (1x HE, 1x Flash, 1x Molotov/Incendiary si 1x Smoke) Daca rulati un server casual nemodificat, unde poti avea maxim 3 grenazi jucatorii vor primi maximul de grenazi permise de server, iar surplusul nu va fi dropat pe jos, Jucatorii VIP pot primii HP atunci cand fac frag, in functie de frag-ul facut (HeadShot, kill cu lama, kill simplu), Jucatorii VIP pot primii bani in plus atunci cand fac frag, in functie de frag-ul facut (HeadShot, kill cu lama, kill simplu), Jucatorii VIP de la tero pot planta bomba mai repede decat un jucator normal, Jucatorii VIP de la CT pot da defuse bombei mai repede decat un jucator normal, Jucatorii VIP pot avea damage mai mare decat restul jucatorilor (disponibil de la versiunea 1.2), Jucatorii VIP pot avea viteza de miscare mai mare decat restul jucatorilor (disponibil de la versiunea 1.1) Jucatorii normali, cat si vipii, pot vedea ce vipi sunt online cu ajutorul comenzii !vips (disponibil de la versiunea 1.1), Jucatorii VIP de la CT pot vedea in chat in ce bombsite s-a plantat bomba, dupa ce o planteaza teroristul. Convar-uri (se adauga in autoexec.cfg) vip_give_armor - Daca este setat pe 1, jucatorii VIP vor primi 100 armura la fiecare spawn. Default: 1 vip_give_helmet - Daca este setat pe 1, jucatorii VIP vor primi casca la fiecare spawn, daca au deja armura. Default: 1 vip_autobhop - Daca este setat pe 1, jucatorii VIP pot avea auto-bhop. Default: 1 vip_give_ct_defuser - Daca este setat pe 1, jucatorii VIP de la CT vor primi defuser la fiecare spawn, daca nu au deja unul. Default: 1 vip_give_he - Daca este setat pe 1, jucatorii VIP vor primi cate un HE grenade la fiecare spawn. Default: 1 vip_give_flash - Daca este setat pe 1, jucatorii VIP vor primi cate un flash la fiecare spawn. Default: 1 vip_give_molotov - Daca este setat pe 1, jucatorii VIP vor primi cate un molotov/incendiary la fiecare spawn. Default: 1 vip_give_smoke - Daca este setat pe 1, jucatorii VIP vor primi cate un smoke la fiecare spawn. Default: 1 vip_give_money_on_spawn <suma> - Jucatorii VIP vor primi suma de bani respectiva la fiecare spawn. Default: 500 vip_normal_kill_hp - HP-ul primit de VIP atunci cand face un frag simplu. Default: 10 vip_knife_kill_hp - HP-ul primit de VIP atunci cand face un frag cu cutitul. Default: 30 vip_headshot_hp - HP-ul primit de VIP atunci cand face un frag cu headshot. Default: 15 vip_max_hp - HP-ul maxim pe care il poate avea un VIP. Default: 100 vip_normal_kill_money <suma> - Suma de bani pe care o primeste VIP cand face un frag simplu. Default: 100 vip_knife_kill_money <suma> - Suma de bani pe care o primeste VIP atunci cand face frag cu cutitul. Default: 1000 vip_headshot_kill_money <suma> - Suma de bani pe care o primeste VIP atunci cand face frag cu headshot. Default: 150 vip_bomb_plant_time <timp> - Cat timp (in secunde) sa dureze plantarea bombei la un VIP. Default: 2 (timp-ul default al jocului este 3.9 secunde) vip_defuse_time_nokit <timp> - Cat timp (in secunde) sa dureze dezamorsarea bombei de catre un VIP care nu are kit. Default 5 (timp-ul default al jocului este de 10 secunde) vip_defuse_time_kit <timp> - Cat timp (in secunde) sa dureze dezamorsarea bombei de catre un VIP care are kit. Default: 2.5 (timp-ul default al jocului este de 5 secunde) vip_disabled_on_pistol_round - Daca este setat pe 1, pluginul nu va rula in rundele de pistoale. Default: 1 vip_show_bombsite - Daca este setat pe 1, VIP in viata, de la CT, pot vedea in chat in ce bombsite au plantat teroristii bomba. Default: 1 vip_notify_on_bonus - Daca este setat pe 1, VIP va fie informat printr-un mesaj in chat atunci cand primeste un bonus specific VIP-ului (cum ar fi bani, hp). Default: 1 vip_fast_speed - Daca este setat pe 1, VIP vor avea viteza de miscare mai mare. Default: 1 vip_speed_amount - Valoarea multiplicatorului de viteza (vezi pagina 2 pentru detalii). Default 1.2 vip_high_damage - Daca este setat pe 1, VIP vor avea damage mai mare decat restul jucatorilor vip_damage_amount - Valoarea multiplicatorului de damage (vezi pagina 3 pentru detalii). Default 2 (damage dublu) Oricare dintre convar-urile de mai sus pot fi dezactivate daca sunt setate pe o valoare mai mica decat 1 (cum ar fi 0). La convar-urile de plantare si dezamorsare a bombei, daca sunt setate pe 1 va rezulta in plantarea/dezamorsarea instanta a bombei! Comenzi !bhop - poate fi folosita de catre VIP atunci cand vor sa-si activeze sau sa-si dezactiveze auto-bhop-ul, !vips - poate fi folosita de oricine. Cu ajutorul acestei comenzi poti vedea vipii online intr-un meniu. Changelog Versiunea 1.1: A fost adaugata comanda !vips ce arata vipii online intru-un meniu A fost adaugata viteza ce poate fi controlata prin convar-uri A fost adaugat convar-ul vip_fast_speed ce activeaza sau dezactiveaza viteza la vipilor A fost adaugat convar-ul vip_speed_ammount ce controleaza multiplicatorul de viteza al vipilor Versiunea 1.2 A fost adaugat damage ce poate fi controlat prin convar-uri A fost adaugat convar-ul vip_high_damage ce activeaza sau dezactiveaza damage-ul marit al vipilor A fost adaugat convar-ul vip_damage_amount ce controleaza multiplicatorul de damage al vipilor Convarul vip_speed_ammount a fost modificat in vip_speed_amount. Face acelasi lucru, doar numele a fost schimbat. Cei care faceti update, nu uitati sa modificati si numele acestui convar in autoexec.cfg Rezolvare spam din consola In cazul in care sunteti spamati in consola cu mesaje de genul: DataTable warning: player: Out-of-range value (1.20000000) in SendPropFloat 'm_flVelocityModifier', clamping. Acele mesaje nu va afecteaza cu nimic, nu sunt erori, sunt warning-uri, ceea ce inseamna ca este un simplu text si nu iti afecteaza serverul cu nimic. Daca totusi te enerveaza acel spam, pentru a scapa de el trebuie sa instalezi extensia Cleaner pe care o puteti descarca de aici: https://forums.alliedmods.net/showthread.php?t=195008 Instalare 1. Fisierul csgo_vip.sp se adauga in addons/sourcemod/scripting 2. Fisierul csgo_vip.smx se adauga in addons/sourcemod/plugins Orice modificare se cere si se ofera in acest topic, nu in PM. Raportarile de buguri se fac tot in acest topic. De preferat sa fie insotite de erorile din log-uri sau o poza / video daca nu sunt erori. Edited March 2, 2019 by CoSmiN 1 Share this post Link to post Share on other sites More sharing options...