PHP Code:
#include < amxmodx >
#include < cstrike >
#include < xs >
#include < fun >
#include < engine >
#include < fakemeta >
#include < hamsandwich >
#include < zp50_items >
#include < zombieplague >
new const PLUGIN_VERSION[ ] = "0.0.1";
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 5
const OFFSET_LINUX_WEAPONS = 4
const WEAP_KEY = 545464464
const MAX_PLAYERS = 32
const m_iClip = 51
const m_fInReload = 54
const m_flNextAttack = 83
const m_flNextPrimaryAttack = 46
enum ( <<=1 )
{
DROP_PRIMARY = 1,
DROP_SECONDARY
};
const IDLE = 0
const RELOAD = 1
const DRAW = 2
const SHOOT_1 = 3
const SHOOT_2 = 5
new const g_iMuzzleFlash[ ] = "sprites/ex.spr" ;
new const g_iTrace[ ] = "sprites/laserbeam.spr"
#define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
#define HoldCBaseWeapon(%0) ( get_user_weapon( %0 ) == g_iWeaponID && g_pWeaponA[ %0 ] )
#define IsValidPrivateData(%0) ( pev_valid( %0 ) == 2 )
#define WEAPON_BITSUM ((1<<CSW_UMP45))
new const WEAPON_SOUND_FIRE[ ] = "weapons/ethereal_shoot1.wav";
new WEAPON_BASE_NAME[ ] = "weapon_ump45";
const Float:RELOAD_TIME = 3.0
const AMMO_WEAPON = 180
new V_MODEL_ETHEREAL[ ] = "models/Lp/v_ethereal.mdl";
new P_MODEL_ETHEREAL[ ] = "models/Lp/p_ethereal.mdl";
new W_MODEL_ETHEREAL[ ] = "models/Lp/w_ethereal.mdl";
new const OTHER_SOUNDS[ ] [ ] =
{
"weapons/ethereal_reload.wav" ,
"weapons/ethereal_draw.wav"
};
new const TRACE_ATTACK[ ] [ ] =
{
"func_breakable" ,
"func_wall" ,
"func_door" ,
"func_plat" ,
"func_rotating" ,
"worldspawn"
};
new g_iItem , g_iOriginEvent , g_iMaxPlayers , g_iForwardIndex, gmsgWeaponList;
new Float:cl_pushangle[ MAX_PLAYERS + 1 ][ 3 ], g_IndexBlood[ 2 ]
new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
new g_pWeaponA[ MAX_PLAYERS + 1 ] ,
bool:g_iPrimaryAttack;
new g_iClipAmmo[ MAX_PLAYERS + 1 ],
g_TmpClip[ MAX_PLAYERS + 1 ] ,
g_iWeaponID = 0;
new g_BeamSprite
new const Sound_Zoom[] = { "weapons/zoom.wav" }
new g_hasZoom[33], g_has_ethereal[33], Float: g_Reload[33]
new cvar_speed , cvar_damage , cvar_recoil , cvar_ammo , cvar_clip , cvar_scale_muzzle , cvar_one_round
const WEAPONS_PRIMARY_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
public plugin_precache()
{
precache_model(V_MODEL_ETHEREAL);
precache_model(P_MODEL_ETHEREAL);
precache_model(W_MODEL_ETHEREAL);
precache_sound(Sound_Zoom);
precache_sound(WEAPON_SOUND_FIRE);
new pFile;
for( pFile = 0 ; pFile < sizeof OTHER_SOUNDS; pFile++ )
{
precache_sound ( OTHER_SOUNDS[ pFile ] );
}
precache_model( g_iMuzzleFlash )
g_BeamSprite = precache_model( g_iTrace )
precache_generic( "sprites/weapon_ethereal.txt" );
precache_generic( "sprites/wpn/640hud74.spr" );
precache_generic( "sprites/wpn/640hud7x.spr" );
precache_generic("sprites/wpn/weapon_ethereal.txt");
precache_generic("sprites/wpn/640hud2.spr");
precache_generic("sprites/wpn/640hud74.spr");
precache_generic("sprites/wpn/640hud7.spr");
g_IndexBlood[0] = precache_model("sprites/blood.spr");
g_IndexBlood[1] = precache_model("sprites/bloodspray.spr");
g_iForwardIndex = register_forward( FM_PrecacheEvent, "Forward_PrecacheEventPost", true );
}
public plugin_init()
{
register_plugin( "[CSO] Ethereal" , PLUGIN_VERSION , "Shurik07" );
register_clcmd( "weapon_ethereal", "weapon_hook_an" );
unregister_forward( FM_PrecacheEvent, g_iForwardIndex, true );
register_forward(FM_SetModel, "Forward_SetModel" , false );
register_forward(FM_PlaybackEvent, "Forward_PlayBackEvent" , false )
register_forward(FM_UpdateClientData, "Forward_UpdateClientData" , true );
register_forward(FM_CmdStart, "fw_CmdStart");
RegisterHam(Ham_Item_AddToPlayer, WEAPON_BASE_NAME, "CBaseWeapon__AddToPlayer__Pre" , .Post = false );
RegisterHam(Ham_Item_Deploy, WEAPON_BASE_NAME , "CBaseWeapon__Deploy__Post", .Post = true );
RegisterHam(Ham_Weapon_PrimaryAttack, WEAPON_BASE_NAME, "CBaseWeapon__PrimaryAttack__Pre" , .Post = false );
RegisterHam(Ham_Weapon_PrimaryAttack, WEAPON_BASE_NAME, "CBaseWeapon_PrimaryAttack_Post", .Post = true );
RegisterHam(Ham_Item_PostFrame, WEAPON_BASE_NAME, "CBaseWeapon__PostFrame__Pre" , .Post = false );
RegisterHam(Ham_Weapon_Reload, WEAPON_BASE_NAME, "CBaseWeapon__Reload_Pre" , .Post = false );
RegisterHam(Ham_Weapon_Reload, WEAPON_BASE_NAME, "CBaseWeapon__Reload_Post", .Post = true );
RegisterHam(Ham_TakeDamage, "player", "CBasePlayer__TakeDamage__Pre" , .Post = false );
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("CurWeapon", "event_CurWeapon", "b", "1=1");
register_event("DeathMsg", "event_DeathMsg", "a", "1>0");
for ( new i = 0 ; i < sizeof TRACE_ATTACK ; i++ )
{
RegisterHam( Ham_TraceAttack, TRACE_ATTACK[ i ], "CbaseEntity__TraceAttack__Post",.Post = true );
}
cvar_speed = register_cvar( "ethereal_speed" , "0.1" )
cvar_damage = register_cvar( "ethereal_damage" , "2.5" )
cvar_recoil = register_cvar( "ethereal_recoil" , "0.2" )
cvar_ammo = register_cvar( "ethereal_ammo" , "35" )
cvar_clip = register_cvar( "ethereal_clip" , "25" )
cvar_scale_muzzle = register_cvar( "ethereal_muzzle_scale" , "0.1" )
cvar_one_round = register_cvar( "ethereal_one_round" , "0" )
g_iItem = zp_register_extra_item( "Ethereal", 35, ZP_TEAM_HUMAN );
g_iMaxPlayers = get_maxplayers();
g_iWeaponID = get_weaponid( WEAPON_BASE_NAME );
}
public client_disconnect(id)
{
g_has_ethereal[id] = false;
}
public client_connect(id)
{
g_has_ethereal[id] = false;
}
public zp_fw_core_infect_post(id)
{
g_has_ethereal[id] = false;
}
public zp_fw_items_select_pre(id, pItem)
{
if(pItem != g_iItem) return ZP_ITEM_AVAILABLE;
if(zp_core_is_zombie(id)) return ZP_ITEM_DONT_SHOW;
if(g_has_ethereal[id])
{
zp_items_menu_text_add("\r[Buyed]")
return ZP_ITEM_NOT_AVAILABLE;
}
return ZP_ITEM_AVAILABLE;
}
public zp_extra_item_selected( pPlayer , pItem )
{
if( pItem == g_iItem )
{
UTIL__DropWeapons( pPlayer )
{
drop_primary(pPlayer);
}
g_has_ethereal[pPlayer] = true;
g_pWeaponA[ pPlayer ] = true;
new pEntity;
pEntity = give_item( pPlayer , WEAPON_BASE_NAME );
if( pEntity > 0 )
{
cs_set_weapon_ammo( pEntity, get_pcvar_num( cvar_clip ) );
}
cs_set_user_bpammo( pPlayer , g_iWeaponID , get_pcvar_num( cvar_ammo ) );
UTIL__WeaponList( pPlayer, "weapon_ethereal" , 6, AMMO_WEAPON, -1, -1, 0 , 15, g_iWeaponID , 0 );
new sName[32]
get_user_name(pPlayer, sName, 31)
set_hudmessage((255), (0), (255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s comprou a Ethereal!", sName)
}
}
public weapon_hook_an( pPlayer )
{
engclient_cmd( pPlayer, WEAPON_BASE_NAME);
return PLUGIN_HANDLED;
}
public zp_user_humanized_post( pPlayer )
{
g_pWeaponA[ pPlayer ] = false;
}
public event_CurWeapon(id)
{
if (!is_user_alive(id) || zp_core_is_zombie(id)) return PLUGIN_HANDLED;
if (read_data(2) == CSW_UMP45 && g_has_ethereal[id])
{
set_pev(id, pev_viewmodel2, V_MODEL_ETHEREAL);
set_pev(id, pev_weaponmodel2, P_MODEL_ETHEREAL);
}
return PLUGIN_CONTINUE;
}
public event_round_start()
{
if(get_pcvar_num(cvar_one_round))
{
for (new id; id <= 32; id++)
{
g_pWeaponA[ id ] = false;
}
}
}
public event_DeathMsg()
{
g_has_ethereal[read_data(2)] = false;
}
public Forward_PrecacheEventPost(type, const pName[ ] )
{
if ( equal ("events/ump45.sc", pName ) )
{
g_iOriginEvent = get_orig_retval( );
return FMRES_HANDLED;
}
return FMRES_IGNORED;
}
public Forward_SetModel( pEntity, pModel[])
{
if( !is_valid_ent( pEntity ) )
{
return FMRES_IGNORED;
}
static szClassName [ 33 ]
entity_get_string( pEntity, EV_SZ_classname, szClassName, charsmax ( szClassName ) )
if( !equal ( szClassName, "weaponbox" ) )
{
return FMRES_IGNORED;
}
static pOwner , pModel
pModel = find_ent_by_owner ( -1, WEAPON_BASE_NAME, pEntity );
pOwner = entity_get_edict(pEntity, EV_ENT_owner)
if ( g_pWeaponA [ pOwner ] && is_valid_ent ( pModel ) )
{
entity_set_int( pModel, EV_INT_impulse, WEAP_KEY);
entity_set_model( pEntity, W_MODEL_ETHEREAL);
g_pWeaponA [ pOwner ] = false;
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public Forward_UpdateClientData( pPlayer , SendWeapons, CD_Handle )
{
if ( !HoldCBaseWeapon( pPlayer ) )
{
return HAM_IGNORED;
}
static Float:fGametime;
fGametime = get_gametime();
set_cd ( CD_Handle, CD_flNextAttack, fGametime + 0.001 );
return FMRES_HANDLED;
}
public Forward_PlayBackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
if ( ( eventid != g_iOriginEvent) || !g_iPrimaryAttack )
{
return FMRES_IGNORED;
}
if (!( 1 <= invoker <= g_iMaxPlayers ) )
{
return FMRES_IGNORED;
}
if( flags & FEV_GLOBAL )
{
flags &= ~FEV_GLOBAL;
}
playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
return FMRES_SUPERCEDE
}
public fw_CmdStart(id, uc_handle, seed)
{
if(g_Reload[id])
return PLUGIN_HANDLED
if(!is_user_alive(id))
return PLUGIN_HANDLED
if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
{
new szClip, szAmmo
new szWeapID = get_user_weapon(id, szClip, szAmmo)
if(szWeapID == CSW_UMP45 && g_pWeaponA[id] && !g_hasZoom[id] == true)
{
g_hasZoom[id] = true
cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 0)
emit_sound(id, CHAN_ITEM, Sound_Zoom, 0.20, 2.40, 0, 100)
}
else if(szWeapID == CSW_UMP45 && g_pWeaponA[id] && g_hasZoom[id])
{
g_hasZoom[id] = false
cs_set_user_zoom(id, CS_RESET_ZOOM, 0)
}
}
return PLUGIN_HANDLED
}
public CbaseEntity__TraceAttack__Post(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
{
if ( !is_user_connected( iAttacker ) || !HoldCBaseWeapon( iAttacker ) )
{
return HAM_HANDLED;
}
new Float:vecEnd[3];
get_tr2(ptr, TR_vecEndPos, vecEnd);
new iDecal = GUNSHOT_DECALS[ random_num( 0 , sizeof( GUNSHOT_DECALS ) - 1 ) ]
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_GUNSHOTDECAL);
write_coord_f( vecEnd[0]);
write_coord_f(vecEnd[1]);
write_coord_f(vecEnd[2]);
write_short(iEnt);
write_byte(iDecal);
message_end();
return HAM_IGNORED;
}
public CBaseWeapon__AddToPlayer__Pre( pEnity , pPlayer )
{
if( !pev_valid( pEnity ) && !is_user_connected( pPlayer ) )
{
return HAM_IGNORED;
}
if( pev( pEnity, pev_impulse ) == WEAP_KEY || g_pWeaponA[ pPlayer ] )
{
g_pWeaponA[ pPlayer ] = true;
UTIL__WeaponList( pPlayer, "weapon_ethereal" , 6, AMMO_WEAPON, -1, -1, 0 , 15, g_iWeaponID , 0 );
return HAM_HANDLED;
}
else
{
UTIL__WeaponList( pPlayer, WEAPON_BASE_NAME , 6, AMMO_WEAPON, -1, -1, 0 , 15, g_iWeaponID , 0 );
}
return HAM_IGNORED;
}
public CBaseWeapon__Deploy__Post( pEntity )
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_HANDLED;
}
new pId
pId = get_pdata_cbase( pEntity , OFFSET_WEAPONOWNER , OFFSET_LINUX_WEAPONS );
if (!g_pWeaponA[pId] )
{
return HAM_IGNORED;
}
set_pev(pId, pev_viewmodel2, V_MODEL_ETHEREAL);
set_pdata_float( pId, m_flNextAttack, 1.0, OFFSET_LINUX);
UTIL_SenwWeaponAnim( pId, DRAW );
set_pev(pId, pev_weaponmodel2, P_MODEL_ETHEREAL);
return HAM_IGNORED;
}
public CBaseWeapon__PrimaryAttack__Pre(pEntity)
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_IGNORED;
}
new pId;
pId = get_pdata_cbase( pEntity , OFFSET_WEAPONOWNER , OFFSET_LINUX_WEAPONS );
if ( !HoldCBaseWeapon( pId ) )
{
return HAM_IGNORED;
}
g_iClipAmmo[pId] = cs_get_weapon_ammo(pEntity);
pev( pId , pev_punchangle , cl_pushangle[ pId ] );
g_iPrimaryAttack = true;
return HAM_IGNORED;
}
public CBaseWeapon_PrimaryAttack_Post( pEntity )
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_IGNORED;
}
g_iPrimaryAttack = false;
new pId = get_pdata_cbase( pEntity, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS );
if ( !HoldCBaseWeapon( pId ) )
{
return HAM_IGNORED;
}
if (!g_iClipAmmo[pId])
{
return HAM_IGNORED;
}
emit_sound( pId, CHAN_WEAPON, WEAPON_SOUND_FIRE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
UTIL_SenwWeaponAnim( pId, random_num( SHOOT_1 , SHOOT_2 ) );
LaserBeam(pId , 7 , 100 , 50 , 253 )
#if defined SET__MUZZLE
UTIL_MakeMuzzle( pId )
#endif
new Float:Push[ 3 ];
pev( pId, pev_punchangle, Push );
xs_vec_sub( Push , cl_pushangle[ pId ] , Push );
xs_vec_mul_scalar( Push, get_pcvar_float( cvar_recoil ) , Push );
xs_vec_add( Push, cl_pushangle[ pId ] , Push );
set_pev( pId, pev_punchangle, Push );
set_pdata_float( pEntity, m_flNextPrimaryAttack , get_pcvar_float( cvar_speed ) , OFFSET_LINUX_WEAPONS );
return HAM_IGNORED;
}
public CBasePlayer__TakeDamage__Pre( pevVictim, pevInflictor, pevAttacker, Float:damage)
{
if ( pevVictim == pevAttacker || !pevAttacker )
{
return HAM_HANDLED;
}
if ( !is_user_connected( pevAttacker ) || !HoldCBaseWeapon( pevAttacker ) )
{
return HAM_HANDLED;
}
SetHamParamFloat(4, damage * get_pcvar_float( cvar_damage ) )
return HAM_IGNORED;
}
public CBaseWeapon__PostFrame__Pre( pEntity )
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_HANDLED;
}
new pId;
pId = get_pdata_cbase( pEntity , OFFSET_WEAPONOWNER , OFFSET_LINUX_WEAPONS );
if ( !is_user_connected( pId ) && !HoldCBaseWeapon( pId ) && !g_iMaxPlayers )
{
return HAM_HANDLED;
}
new fInReload = get_pdata_int( pEntity, 54, OFFSET_LINUX_WEAPONS );
new Float:flNextAttack = get_pdata_float( pId, m_flNextAttack, OFFSET_LINUX_WEAPONS );
new iClip = get_pdata_int( pEntity, m_iClip, OFFSET_LINUX_WEAPONS );
new iAmmoType = 376 + get_pdata_int( pEntity, 49, OFFSET_LINUX_WEAPONS );
new iBpAmmo = get_pdata_int( pId, iAmmoType, OFFSET_LINUX );
if ( fInReload && flNextAttack <= 1.4 )
{
new j = min( get_pcvar_num( cvar_clip ) - iClip, iBpAmmo);
set_pdata_int( pEntity, m_iClip, iClip + j, OFFSET_LINUX_WEAPONS );
set_pdata_int( pId, iAmmoType, iBpAmmo-j, OFFSET_LINUX );
set_pdata_int( pEntity, 54, 0, OFFSET_LINUX_WEAPONS );
fInReload = 0;
}
return HAM_IGNORED;
}
public CBaseWeapon__Reload_Pre(pEntity)
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_HANDLED;
}
new pId;
pId = get_pdata_cbase( pEntity , OFFSET_WEAPONOWNER , OFFSET_LINUX_WEAPONS );
if ( !is_user_connected( pId ) || !HoldCBaseWeapon( pId ) )
{
return HAM_IGNORED;
}
static iClipExtra;
iClipExtra = get_pcvar_num( cvar_clip );
g_TmpClip[pId] = -1;
new iAmmoType = 376 + get_pdata_int( pEntity, 49, OFFSET_LINUX_WEAPONS );
new iBpAmmo = get_pdata_int( pId, iAmmoType, OFFSET_LINUX );
new iClip = get_pdata_int( pEntity, m_iClip, OFFSET_LINUX );
if ( iBpAmmo <= 0 || iClip >= iClipExtra )
{
return HAM_SUPERCEDE;
}
g_TmpClip[pId] = iClip;
return HAM_HANDLED;
}
public CBaseWeapon__Reload_Post( pEntity )
{
if( !IsValidPrivateData( pEntity ) )
{
return HAM_HANDLED;
}
new pId = get_pdata_cbase( pEntity , OFFSET_WEAPONOWNER , OFFSET_LINUX_WEAPONS );
if ( !HoldCBaseWeapon( pId ) )
{
return HAM_IGNORED;
}
if (g_TmpClip[ pId ] == -1)
{
return HAM_IGNORED;
}
set_pdata_float( pId, m_flNextAttack, RELOAD_TIME , OFFSET_LINUX);
UTIL_SenwWeaponAnim(pId, RELOAD);
return HAM_HANDLED;
}
public Sprite(id)
{
message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
write_string("weapon_ethereal")
write_byte(6)
write_byte(100)
write_byte(-1)
write_byte(-1)
write_byte(0)
write_byte(15)
write_byte(12)
write_byte(0)
message_end()
}
stock UTIL__DropWeapons( pPlayer )
{
for( new pWeapon = CSW_P228; pWeapon <= CSW_P90; pWeapon++ )
{
if( ( ( 1 << pWeapon ) & WEAPONS_PRIMARY_BITSUM ) )
{
new strWeaponName[ 32 ];
get_weaponname( pWeapon, strWeaponName, charsmax( strWeaponName ) );
if(equal(strWeaponName, WEAPON_BASE_NAME) )
{
engclient_cmd( pPlayer, "drop", strWeaponName );
}
}
}
}
stock UTIL_SenwWeaponAnim(const pPlayer, const Sequence)
{
set_pev(pPlayer, pev_weaponanim, Sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = pPlayer)
write_byte(Sequence)
write_byte(pev(pPlayer, pev_body))
message_end()
}
UTIL__WeaponList( pPlayer, const szWeapon[ ], int, int2, int3, int4, int5, int6, int7, int8 )
{
message_begin( MSG_ONE, get_user_msgid( "WeaponList" ) , _, pPlayer );
write_string( szWeapon );
write_byte( int );
write_byte( int2);
write_byte( int3 );
write_byte( int4 );
write_byte( int5 );
write_byte( int6 );
write_byte( int7 );
write_byte( int8 );
message_end( );
}
stock UTIL_MakeMuzzle( pId )
{
new pEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
new Float:vecOrigin[ 3 ]
pev( pId, pev_origin, vecOrigin )
entity_set_origin( pEntity, vecOrigin )
entity_set_model( pEntity, g_iMuzzleFlash )
entity_set_int( pEntity, EV_INT_solid, SOLID_NOT )
entity_set_int( pEntity, EV_INT_movetype, MOVETYPE_NOCLIP )
entity_set_string( pEntity, EV_SZ_classname, "muzzle_et" )
entity_set_float( pEntity, EV_FL_animtime, get_gametime() )
entity_set_float( pEntity, EV_FL_framerate, 50.0 )
set_pev( pEntity, pev_scale, get_pcvar_float( cvar_scale_muzzle ) )
set_pev( pEntity, pev_spawnflags, SF_SPRITE_ONCE)
set_pev(pEntity, pev_rendermode, kRenderTransAdd)
set_pev(pEntity, pev_renderamt, 255.0)
set_pev(pEntity, pev_skin, pId )
set_pev(pEntity, pev_body, 1)
set_pev(pEntity, pev_aiment, pId)
entity_set_float(pEntity, EV_FL_nextthink, get_gametime() + 5.0 );
DispatchSpawn( pEntity );
set_task( 1.0 , "rem_ent" , pEntity )
}
public rem_ent( iEnt )
{
remove_entity( iEnt )
}
stock LaserBeam(id , Size , Red , Grenn , Blue )
{
static End[3]
get_user_origin(id, End, 3)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte (TE_BEAMENTPOINT)
write_short( id |0x1000 )
write_coord(End[0])
write_coord(End[1])
write_coord(End[2])
write_short(g_BeamSprite)
write_byte(0)
write_byte(1)
write_byte(1)
write_byte(Size)
write_byte(4)
write_byte(Red)
write_byte(Grenn)
write_byte(Blue)
write_byte(255)
write_byte(0)
message_end()
}
stock drop_primary(id)
{
new weapons[32], num;
get_user_weapons(id, weapons, num);
for (new i = 0; i < num; i++)
{
if (WEAPON_BITSUM & (1<<weapons[i]))
{
static wname[32];
get_weaponname(weapons[i], wname, sizeof wname - 1);
engclient_cmd(id, "drop", wname);
}
}
}