Re: help - semiclip ladders
try this
PHP Code:
//cred. xpaw for his original semiclip code #include <amxmodx> #include <fun> #include <fakemeta>
#define PLUGIN "hns SEMICLIP" #define VERSION "0.0" #define AUTHOR "Tolsty"
#pragma semicolon 1; new g_iSemiClip[33]; new air[33];
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" ); register_forward( FM_StartFrame, "fwStartFrame"); register_forward( FM_AddToFullPack, "fwFullPack", 1 ); }
public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset ) { if(player && g_iSemiClip[ent] && g_iSemiClip[host]) { set_es(es_handle, ES_Solid, SOLID_NOT); set_es(es_handle, ES_RenderMode, kRenderTransAlpha); set_es(es_handle, ES_RenderAmt, 100); }
return FMRES_IGNORED; }
public fwdPlayerPreThink( iPlayer ) {
static flags; flags = pev( iPlayer, pev_flags ); if ( flags & FL_ONGROUND || (pev(iPlayer, pev_movetype) == MOVETYPE_FLY) ) { remove_task(iPlayer); air[iPlayer] = false; } } public fwStartFrame(plr) { static iPlayers[32], iNum, iPlayer, iPlayer2; get_players(iPlayers, iNum); arrayset(g_iSemiClip, 0, sizeof(g_iSemiClip)); 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); static team[33]; team[iPlayer] = get_user_team( iPlayer ); static flags; flags = pev( iPlayer, pev_flags ); if ( !( flags & FL_ONGROUND ) && (pev(iPlayer, pev_movetype) != MOVETYPE_FLY) ) { set_task(0.8, "inair", iPlayer); } if ( vector_distance( vOrigin1, vOrigin2 ) < 220 && (pev(iPlayer, pev_movetype) == MOVETYPE_FLY && (team[iPlayer] != team[iPlayer2]) || air[iPlayer] ) ) { g_iSemiClip[iPlayer] = true; g_iSemiClip[iPlayer2] = true; } else if( vector_distance( vOrigin1, vOrigin2 ) < 220 && (team[iPlayer] == team[iPlayer2]) ) { 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; }
public inair(plr) { new flags; flags = pev( plr, pev_flags ); if ( flags & FL_ONGROUND || (pev(plr, pev_movetype) == MOVETYPE_FLY) ) { air[plr] = false; } else { air[plr] = true; } }
|