/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#define PLUGIN "semiclip"
#define VERSION "1.0"
#define AUTHOR "danielkza"
new g_iSemiClip[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward( FM_StartFrame, "fwStartFrame", 0);
register_forward( FM_AddToFullPack, "fwFullPack", 1 );
}
public fwFullPack( es, e, ent, host, flags, player, pSet ) {
if( player && g_iSemiClip[ent] && g_iSemiClip[host] ) {
static Float:flDistance;
flDistance = entity_range( host, ent );
set_es( es, ES_Solid, SOLID_NOT );
set_es( es, ES_RenderMode, kRenderTransAlpha );
set_es( es, ES_RenderAmt, floatround( flDistance * 1.5 ) );
}
return FMRES_IGNORED;
}
public fwStartFrame(id) {
static iPlayers[32], iNum, iPlayer, iPlayer2;
get_players(iPlayers, iNum);
arrayset(g_iSemiClip, 0, sizeof(g_iSemiClip));
new iTeams[33] = {-1, ...};
for( new i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[i];
if( !is_user_alive(iPlayer) )
continue;
for( new j = 0; j < iNum; j++ ) {
iPlayer2 = iPlayers[j];
if(iPlayer == iPlayer2 || !is_user_alive(iPlayer2))
continue;
static Float:vOrigin1[3], Float:vOrigin2[3];
pev(iPlayer, pev_origin, vOrigin1);
pev(iPlayer2, pev_origin, vOrigin2);
if( vector_distance( vOrigin1, vOrigin2 ) < 96 ) {
if( iTeams[iPlayer] == -1 )
iTeams[iPlayer] = get_user_team(iPlayer);
if( iTeams[iPlayer2] == -1 )
iTeams[iPlayer2] = get_user_team(iPlayer2);
if( iTeams[iPlayer] == 2 && iTeams[iPlayer2] == 2 ) {
g_iSemiClip[iPlayer] = true;
g_iSemiClip[iPlayer2] = true;
}
}
}
}
for( new i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[i];
if( is_user_alive( iPlayer ) )
set_pev(iPlayer, pev_solid, g_iSemiClip[iPlayer] ? SOLID_NOT : SOLID_SLIDEBOX);
}
return FMRES_IGNORED;
}
Użytkownik Krejzol edytował ten post 13.02.2011 18:01