It aint easy. Example if you think about some easy plugin like:
Code
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
new const VERSION[] = "0.7.0"
const MAX_PLAYERS = 32
new g_iPlayers[MAX_PLAYERS], g_iNum, g_iPlayer, i
new const g_szAliveFlags[] = "a"
#define RefreshPlayersList() get_players(g_iPlayers, g_iNum, g_szAliveFlags)
public plugin_init()
{
register_plugin("Semiclip", VERSION, "ConnorMcLeod")
register_forward(FM_AddToFullPack, "FM_client_AddToFullPack_Post", 1)
RegisterHam(Ham_Player_PreThink, "player", "Ham_CBasePlayer_PreThink_Post", 1)
}
public FM_client_AddToFullPack_Post(es, e, iEnt, id, hostflags, player, pSet)
{
if( player && id != iEnt && get_orig_retval() && is_user_alive(id) )
{
set_es(es, ES_Solid, SOLID_NOT)
static Float:flDistance
flDistance = entity_range(id, iEnt)
if( flDistance < 512.0 )
{
set_es(es, ES_RenderMode, kRenderTransAlpha)
set_es(es, ES_RenderAmt, floatround(flDistance)/2)
}
}
}
public Ham_CBasePlayer_PreThink_Post(id)
{
if( !is_user_alive(id) )
{
return
}
RefreshPlayersList()
for(i = 0; i<g_iNum; i++)
{
g_iPlayer = g_iPlayers[i]
if( id != g_iPlayer )
{
set_pev(g_iPlayer, pev_solid, SOLID_NOT)
}
}
}
public client_PostThink(id)
{
if( !is_user_alive(id) )
{
return
}
RefreshPlayersList()
for(i = 0; i<g_iNum; i++)
{
g_iPlayer = g_iPlayers[i]
if( g_iPlayer != id )
{
set_pev(g_iPlayer, pev_solid, SOLID_SLIDEBOX)
}
}
}