PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <engine>
#define PLUGIN "Invisible Spectator"
#define VERSION "1.0"
#define AUTHOR "author"
#define cm(%0) ( sizeof(%0) - 1 )
const m_afButtonPressed = 246;
new HamHook:g_iHhCBasePlayerObjectCaps;
new gTeams[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
// Add your code here...
register_clcmd("say /gospec", "SpecVictim");
RegisterHam(Ham_Spawn, "player", "FwdPlayerSpawn", 1);
register_logevent("logevent_round_end", 2, "1=Round_End")
register_event("DeathMsg", "EventDeathMsg", "a" );
DisableHamForward(g_iHhCBasePlayerObjectCaps = RegisterHam(Ham_ObjectCaps, "player", "OnCBasePlayer_ObjectCaps", false));
RegisterHam(Ham_Touch, "armoury_entity", "blockOperationArmor");
RegisterHam(Ham_Touch, "weaponbox", "blockOperationWeapon");
RegisterHam(Ham_Touch, "weapon_shield", "blockOperationShield")
}
public FwdPlayerSpawn(id)
{
give_item(id, "weapon_knife")
set_user_godmode(id, 0)
DisableHamForward(g_iHhCBasePlayerObjectCaps);
}
public logevent_round_end()
{
for(new i = 0 ; i < 32 ; i ++)
{
if(is_user_connected(i) && (cs_get_user_team(i) == CS_TEAM_SPECTATOR))
{
if(gTeams[i] != 0)
{
cs_set_user_team(i, gTeams[i]);
gTeams[i] = 0;
}
}
}
}
public EventDeathMsg(id)
{
new killer = read_data( 1 );
new victim = read_data( 2 );
if( killer == victim || ! is_user_connected( killer ) || ! is_user_connected( victim ) )
{
return PLUGIN_HANDLED;
//return;
}
if(cs_get_user_team(victim) != CS_TEAM_SPECTATOR)
{
set_task(0.5, "SpecVictim", victim)
}
return PLUGIN_HANDLED;
}
public SpecVictim(id)
{
if (!is_user_alive(id))
{
new menu = menu_create("\y[ \rInvisivle Spector \y] \wDo you want to go to Spector Team until this round end?", "SpecVictim_Handler" );
menu_additem(menu, "Yes", "", 0);
menu_additem(menu, "No", "", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
return PLUGIN_HANDLED;
}
public SpecVictim_Handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:
{
if (!is_user_alive(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
{
ExecuteHam(Ham_CS_RoundRespawn,id);
gTeams[id] = get_user_team(id)
cs_set_user_team(id, CS_TEAM_SPECTATOR)
REMOVESPECA(id)
}
}
}
return PLUGIN_HANDLED;
}
public REMOVESPECA(id)
{
if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
set_user_godmode(id, 1)
strip_user_weapons(id)
EnableHamForward(g_iHhCBasePlayerObjectCaps);
set_task(0.1, "REMOVESPECA", id)
}
}
// BLOCK OPERATION
///////////////////////////////////////////
public blockOperationArmor(id)
{
return (cs_get_user_team(id) == CS_TEAM_SPECTATOR) ? HAM_SUPERCEDE : HAM_IGNORED
}
public blockOperationShield(id)
{
return (cs_get_user_team(id) == CS_TEAM_SPECTATOR) ? HAM_SUPERCEDE : HAM_IGNORED
}
public blockOperationWeapon(weaponbox, id)
{
return (cs_get_user_team(id) == CS_TEAM_SPECTATOR) ? HAM_SUPERCEDE : HAM_IGNORED
}
// BLOCK E KEY
///////////////////////////////////////////
public OnCBasePlayer_ObjectCaps(id)
{
new buttons = pev(id, pev_button);
if( buttons & IN_USE )
{
set_pev(id, pev_button, buttons & ~IN_USE);
}
buttons = get_pdata_int(id, m_afButtonPressed);
if( buttons & IN_USE )
{
set_pdata_int(id, m_afButtonPressed, buttons & ~IN_USE);
}
return HAM_HANDLED;
}