AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   help with force field.zp (https://forums.alliedmods.net/showthread.php?t=305441)

Firuz 02-19-2018 21:43

help with force field.zp
 
Help with
PLUGIN: [ZP] Extra Item : Force Field Grenade for Humans. by Lucas

How to make What would an infectious bomb not work
In the force field?

Thanks in advance.

Firuz 02-19-2018 23:01

Re: help with force field.zp
 
UP :D

Firuz 02-20-2018 15:06

Re: help with force field.zp
 
help omg

WAR3DM 02-20-2018 22:23

Re: help with force field.zp
 
Add a true statement to any players within the forcefield, and a false statement to players outside of it.

Then add an if (player = true) statement to the infection bomb to block damage.

Firuz 02-21-2018 05:27

Re: help with force field.zp
 
Maybe an example?

Firuz 02-21-2018 05:28

Re: help with force field.zp
 
Force Field Grenade

Code:

#include <amxmodx>
#include <engine>
#include <zombieplague>
#include <hamsandwich>
#include <fun>
#include <fakemeta_util>

#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) && ( zp_get_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_itemID

new gBomb
const Float:Push = 15.0

const item_cost = 15
/*=============================[End Customization]=============================*/

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("zp_flare_grenades")
       
        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)
       
        #if defined CAMPO_ROUND
        g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
        #else
        g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
        #endif               
}

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, itemid) {
       
        if(itemid == g_itemID)
        {
                if( gBomb & ( 1 << ( player % 32 ) ) )
                        Color(player, "!g[Shield]!y You already have a force field")
                else
                {
                        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
                }
               
               
        }
       
}
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) && !zp_get_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(15.0, "DeleteEntity", iEntity)
        #endif
       
       
        return PLUGIN_CONTINUE;
}

public zp_user_infected_post(infected, infector)
        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 ) ) ) && !zp_get_user_zombie( id ) )
                set_pev( id, pev_viewmodel2, model_grenade );
       
        return HAM_IGNORED;
}



All times are GMT -4. The time now is 23:32.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.