Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- (c) 2014 converted for Biohazard
- by CryWolf
- www.extreamcs.com
- */
- #include <amxmodx>
- #include <engine>
- #include <biohazard>
- #include <hamsandwich>
- #include <fun>
- #include <fakemeta_util>
- #include < cstrike >
- #define PLUGIN "[ZP] Extra Item: Force Field Grenade"
- #define VERSION "v2.3"
- #define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
- #define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
- #define CAMPO_TIME_NAME "Force Shield (Short-Time)"
- #define ValidTouch(%1) ( is_user_alive(%1) && ( is_user_zombie(%1) ) ) // || zp_get_user_nemesis(%1) ) )
- /*=============================[Plugin Customization]=============================*/
- #define CAMPO_TASK
- // #define CAMPO_ROUND
- #define RANDOM_COLOR
- // #define ONE_COLOR
- new const NADE_TYPE_CAMPO = 6545
- #if defined ONE_COLOR
- new Float:CampoColors[ 3 ] = { 255.0 , 0.0 , 0.0 }
- #endif
- new TrailColor[ 3 ] = { 000, 255, 255 }
- new Float:Maxs[ 3 ] = { 100.0 , 100.0 , 100.0 }
- new Float:Mins[ 3 ] = { -100.0, -100.0, -100.0 }
- new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
- new const model[] = "models/zombie_plague/aura8.mdl"
- new const w_model[] = "models/zombie_plague/w_aura.mdl"
- new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
- new const entclas[] = "campo_grenade_forze"
- new cvar_flaregrenades, g_trailSpr, g_SayText, g_cost; // , g_itemID
- new gBomb
- const Float:Push = 15.0
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
- RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
- cvar_flaregrenades = get_cvar_pointer("bh_flare_enable")
- register_forward(FM_SetModel, "fw_SetModel")
- RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
- register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
- register_forward(FM_Touch, "fw_touch")
- g_SayText = get_user_msgid("SayText")
- register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
- g_cost = register_cvar ( "bh_shield_cost", "10000" );
- register_clcmd ( "say /shield", "zp_extra_item_selected" );
- }
- public event_round_start() {
- #if defined CAMPO_ROUND
- remove_entity_name(entclas)
- #endif
- gBomb = 0
- }
- public plugin_precache() {
- g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
- engfunc(EngFunc_PrecacheModel, model_grenade)
- engfunc(EngFunc_PrecacheModel, model)
- engfunc(EngFunc_PrecacheModel, w_model)
- }
- public client_disconnect(id)
- gBomb &= ~( 1 << ( id % 32 ) )
- public zp_extra_item_selected ( player )
- {
- if( gBomb & ( 1 << ( player % 32 ) ) )
- Color(player, "!g[Shield]!y You already have a force field")
- else
- {
- new iMoney, iCost;
- iMoney = cs_get_user_money ( player );
- iCost = get_pcvar_num ( g_cost );
- if ( iMoney < g_cost ) {
- Color ( player, "!g[Shield]!y You don't have enough money %d needed.", iCost );
- return 1;
- }
- else
- cs_set_user_money ( player, iMoney - iCost );
- gBomb |= ( 1 << ( player % 32 ) )
- if( !user_has_weapon( player, CSW_SMOKEGRENADE ) )
- give_item ( player, "weapon_smokegrenade" )
- #if defined CAMPO_ROUND
- Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
- #else
- Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
- #endif
- }
- return 1;
- }
- public fw_PlayerKilled(victim, attacker, shouldgib)
- {
- if( ( 1 <= attacker <= 32 ) && ( gBomb & ( 1 << ( victim % 32 ) ) ) )
- gBomb &= ~( 1 << ( victim % 32 ) )
- }
- public fw_ThinkGrenade(entity) {
- if(!pev_valid(entity)) return HAM_IGNORED
- static Float:dmgtime
- pev(entity, pev_dmgtime, dmgtime)
- if (dmgtime > get_gametime())
- return HAM_IGNORED
- if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
- crear_ent(entity)
- return HAM_SUPERCEDE
- }
- public fw_SetModel(entity, const model[]) {
- static Float:dmgtime
- pev(entity, pev_dmgtime, dmgtime)
- if (dmgtime == 0.0)
- return FMRES_IGNORED;
- if (equal(model[7], "w_sm", 4))
- {
- new owner = pev(entity, pev_owner)
- if( is_user_alive(owner) && !is_user_zombie(owner) && ( gBomb & ( 1 << ( owner % 32 ) ) ) )
- {
- set_pcvar_num ( cvar_flaregrenades, 0 );
- fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW) // TE id
- write_short(entity) // entity
- write_short(g_trailSpr) // sprite
- write_byte(10) // life
- write_byte(10) // width
- write_byte(TrailColor[ 0 ]) // r
- write_byte(TrailColor[ 1 ]) // g
- write_byte(TrailColor[ 2 ]) // b
- write_byte(500) // brightness
- message_end()
- set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
- set_task(6.0, "DeleteEntityGrenade" ,entity)
- gBomb &= ~( 1 << ( owner % 32 ) )
- entity_set_model(entity, w_model)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- public DeleteEntityGrenade(entity)
- if( is_valid_ent( entity ) )
- remove_entity(entity)
- public crear_ent(id) {
- set_pcvar_num ( cvar_flaregrenades, 1 )
- // Create entitity
- new iEntity = create_entity("info_target")
- if(!is_valid_ent(iEntity))
- return PLUGIN_HANDLED
- new Float: Origin[3]
- entity_get_vector(id, EV_VEC_origin, Origin)
- entity_set_string(iEntity, EV_SZ_classname, entclas)
- entity_set_vector(iEntity,EV_VEC_origin, Origin)
- entity_set_model(iEntity,model)
- entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
- entity_set_size(iEntity, Mins, Maxs )
- entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
- entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
- entity_set_float(iEntity, EV_FL_renderamt, 50.0)
- #if defined RANDOM_COLOR
- if(is_valid_ent(iEntity))
- {
- new Float:vColor[3]
- for(new i; i < 3; i++)
- vColor[i] = random_float(0.0, 255.0)
- entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
- }
- #endif
- #if defined ONE_COLOR
- entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
- #endif
- #if defined CAMPO_TASK
- set_task(10.0, "DeleteEntity", iEntity)
- #endif
- return PLUGIN_CONTINUE;
- }
- public event_infect2 ( infected )
- if ( gBomb & ( 1 << ( infected % 32 ) ) )
- gBomb &= ~( 1 << ( infected % 32 ) )
- public fw_touch(ent, touched)
- {
- if ( !pev_valid(ent) ) return FMRES_IGNORED;
- static entclass[32];
- pev(ent, pev_model, entclass, 31);
- if ( strcmp( entclass , model ) == 0 )
- {
- if( ValidTouch(touched) )
- {
- static Float:pos_ptr[3], Float:pos_ptd[3]
- pev(ent, pev_origin, pos_ptr)
- pev(touched, pev_origin, pos_ptd)
- for(new i = 0; i < 3; i++)
- {
- pos_ptd[i] -= pos_ptr[i]
- pos_ptd[i] *= Push
- }
- set_pev(touched, pev_velocity, pos_ptd)
- set_pev(touched, pev_impulse, pos_ptd)
- }
- }
- return FMRES_HANDLED
- }
- public DeleteEntity( entity ) // Thanks xPaw For The Code =D
- if( is_valid_ent( entity ) )
- remove_entity( entity );
- stock Color(const id, const input[], any:...)
- {
- static msg[191]
- vformat(msg, 190, input, 3)
- replace_all(msg, 190, "!g", "^4")
- replace_all(msg, 190, "!y", "^1")
- replace_all(msg, 190, "!t", "^3")
- message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
- write_byte(id)
- write_string(msg)
- message_end()
- }
- public shield_deploy( shield_ent )
- {
- if( pev_valid( shield_ent ) != 2 )
- return HAM_IGNORED;
- static const mPlayer = 41
- new id = get_pdata_cbase( shield_ent, mPlayer, 4 );
- if( ( gBomb & ( 1 << ( id % 32 ) ) ) && !is_user_zombie( id ) )
- set_pev( id, pev_viewmodel2, model_grenade );
- return HAM_IGNORED;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement