Veteran Member
Join Date: Apr 2017
Location: Brazil
|
04-25-2018
, 23:42
A little help on a Team Semi clip
|
#1
|
Hello folks I need a help with the semiclip team plugin made by Master ConnorMcLeod, what changes should I make so as not to cross the enemy team, just the team itself?
PHP Code:
#define ENABLE_SHOTS_DAMAGE #define SEMICLIP_RENDERING_RADIUS 400.0
// DON'T EDIT BELOW
#include < amxmodx > #include < engine > #include < fakemeta > #include < hamsandwich >
#pragma semicolon 1
#define PLUGIN "SemiClip" #define VERSION "0.2.0"
const Float:SEMICLIP_RADIUS = SEMICLIP_RENDERING_RADIUS;
const groupNone = 0;
new const PLAYER_CLASS[] = "player";
new g_iMaxPlayers; #define IsPlayer(%0) ( 1 <= (%0) <= g_iMaxPlayers )
#define MaskEnt(%0) ( 1<<(%0 & 31) )
new g_bitIsPlayerInSphere; #define IsPlayerInSphere(%0) ( g_bitIsPlayerInSphere & MaskEnt(%0) )
new g_bitBots; #define MarkPlayerBot(%0) g_bitBots |= MaskEnt(%0) #define ClearPlayerBot(%0) g_bitBots &= ~MaskEnt(%0) #define IsUserBot(%0) ( g_bitBots & MaskEnt(%0) )
new g_iPlayers[32], g_iNum;
new g_iLastPlayerIndex;
new HamHook:g_iHhPreThink, HamHook:g_iHhPreThinkPost; new g_iFhAddToFullPackPost;
new bool:g_bPreThinkHooked;
#if defined ENABLE_SHOTS_DAMAGE new HamHook:g_iHhPostThink, HamHook:g_iHhPostThinkPost; new bool:g_bPostThinkHooked; #endif
new bool:g_bReadPackets = true;
public plugin_init() { register_plugin( PLUGIN, VERSION, "ConnorMcLeod" );
register_forward(FM_CmdStart, "OnCmdStart", false);
DisableHamForward( g_iHhPreThink = RegisterHam(Ham_Player_PreThink, PLAYER_CLASS, "OnCBasePlayer_PreThink", false) ); DisableHamForward( g_iHhPreThinkPost = RegisterHam(Ham_Player_PreThink, PLAYER_CLASS, "OnCBasePlayer_PreThink_P", true) );
#if defined ENABLE_SHOTS_DAMAGE DisableHamForward( g_iHhPostThink = RegisterHam(Ham_Player_PostThink, PLAYER_CLASS, "OnCBasePlayer_PostThink", false) ); DisableHamForward( g_iHhPostThinkPost = RegisterHam(Ham_Player_PostThink, PLAYER_CLASS, "OnCBasePlayer_PostThink_P", true) ); #endif
RegisterHam(Ham_Spawn, PLAYER_CLASS, "OnCBasePlayer_Spawn_P", true); RegisterHam(Ham_Killed, PLAYER_CLASS, "OnCBasePlayer_Killed_P", true);
register_forward(FM_UpdateClientData, "OnUpdateClientData_P", true);
g_iMaxPlayers = get_maxplayers(); }
public client_putinserver(id) { if( is_user_bot(id) ) { MarkPlayerBot(id); } else { ClearPlayerBot(id); } }
public OnCmdStart(id) { if( !g_bReadPackets ) { g_bReadPackets = true; SetPlayersGroups ;; }
if( g_iLastPlayerIndex && is_user_alive(g_iLastPlayerIndex) ) { entity_set_int id, EV_INT_groupinfo, MaskEnt(g_iLastPlayerIndex) ; }
if( is_user_alive(id) ) { entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; if( !IsUserBot(id) ) { if( !g_bPreThinkHooked ) { EnableHamForward g_iHhPreThink ; EnableHamForward g_iHhPreThinkPost ; g_bPreThinkHooked = true; } } else if( g_bPreThinkHooked ) { DisableHamForward g_iHhPreThink ; DisableHamForward g_iHhPreThinkPost ; g_bPreThinkHooked = false; } #if defined ENABLE_SHOTS_DAMAGE if( !g_bPostThinkHooked ) { EnableHamForward g_iHhPostThink ; EnableHamForward g_iHhPostThinkPost ; g_bPostThinkHooked = true; } #endif } else { entity_set_int id, EV_INT_groupinfo, groupNone ; g_iLastPlayerIndex = id; if( g_bPreThinkHooked ) { DisableHamForward g_iHhPreThink ; DisableHamForward g_iHhPreThinkPost ; g_bPreThinkHooked = false; } #if defined ENABLE_SHOTS_DAMAGE if( g_bPostThinkHooked ) { DisableHamForward g_iHhPostThink ; DisableHamForward g_iHhPostThinkPost ; g_bPostThinkHooked = false; } #endif } }
public OnCBasePlayer_PreThink(id) { entity_set_int id, EV_INT_groupinfo, groupNone ; }
public OnCBasePlayer_PreThink_P(id) { entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; }
#if defined ENABLE_SHOTS_DAMAGE public OnCBasePlayer_PostThink(id) { entity_set_int id, EV_INT_groupinfo, groupNone ; }
public OnCBasePlayer_PostThink_P(id) { entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; } #endif
public OnCBasePlayer_Spawn_P(id) { if( is_user_alive(id) ) { entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; } }
public OnCBasePlayer_Killed_P(id) { if( !is_user_alive(id) ) { entity_set_int id, EV_INT_groupinfo, groupNone ; } }
SetPlayersGroups() { static id; get_players g_iPlayers, g_iNum, "a" ; for(--g_iNum; g_iNum>=0; g_iNum--) { id = g_iPlayers[ g_iNum ]; entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; } }
public server_frame() { g_iLastPlayerIndex = 0; g_bReadPackets = false; SetPlayersGroups ;; }
public OnUpdateClientData_P(id, sendweapons, cd) { entity_set_int id, EV_INT_groupinfo, groupNone ;
if( !IsUserBot(id) && is_user_alive(id) ) { if( !g_iFhAddToFullPackPost ) { g_iFhAddToFullPackPost = register_forward(FM_AddToFullPack, "OnAddToFullPack_P", true); }
g_bitIsPlayerInSphere = 0; g_iNum = find_sphere_class(id, PLAYER_CLASS, SEMICLIP_RADIUS, g_iPlayers, g_iMaxPlayers); for(--g_iNum; g_iNum>=0; g_iNum--) { MarkPlayerInSphere( g_iPlayers[ g_iNum ] ); } } }
public OnAddToFullPack_P(es, e, ent, id, hostflags, player, pSet) { if( player ) { if( get_orig_retval() ) { set_es es, ES_Solid, SOLID_NOT ; // should be useless since SEMICLIP_RADIUS gonna never be set to 72 or less if( IsPlayerInSphere(ent) ) { set_es es, ES_RenderMode, kRenderTransAlpha ; set_es es, ES_RenderAmt, floatround(entity_range(id, ent) * 255.0 / SEMICLIP_RADIUS, floatround_floor) ; } } } else { entity_set_int id, EV_INT_groupinfo, MaskEnt(id) ; unregister_forward FM_AddToFullPack, g_iFhAddToFullPackPost, true ; g_iFhAddToFullPackPost = 0; } }
thanks in advance.
Last edited by iceeedr; 04-25-2018 at 23:43.
Reason: .
|
|