[AYUDA] ADAPTAR GRANDA A ZP
#1
Hola amigos feliz año nuevo y que dios los bendiga Gran sonrisa hoy me he encontrado algo muy bueno para mi server es una granada llamada pipe bomb muchos los conocen otros no pero igual quisiera adaptarla a la granada de fuego en el zp 4.2 pero no se como por que el código es para 5.0 y algunas cosas no se donde irían si alguien hiciera un tutorial con esta granada para hacerla seria muy bueno por si alguno lo quiere agregar gracias.

granda pipe bomb
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <fun>
#include <cstrike>
#include <zp50_core>
#include <zp50_items>
#include <zp50_gamemodes>

#define NADE_TYPE_PIPEBOMB 5992

const m_pPlayer 41;
new const 
g_trailspr[] ="sprites/laserbeam.spr";
new const 
g_firespr[] = "sprites/zerogxplode.spr";
new const 
g_sound[] = "zombie_plague/pipe_beep.wav";
new const 
g_vmodel[] = "models/zombie_plague/v_pipe.mdl";
new const 
g_pmodel[] = "models/zombie_plague/p_pipe.mdl";
new const 
g_wmodel[] = "models/zombie_plague/w_pipe.mdl";
new 
cvar_radiuscvar_damage
new g_trailg_fireg_MaxPlayersg_pipeboolg_has_pipe[33]

new 
g_GameModeInfectionID
new g_GameModeMultiID

public plugin_init()
{
    
register_plugin("[ZP] Extra Item: Pipe Bomb""1.0""lambda");
    
register_forward(FM_SetModel,"fw_SetModel"1);
    
RegisterHam(Ham_Think"grenade""fw_ThinkGren");
    
RegisterHam(Ham_Item_Deploy"weapon_smokegrenade""fw_smDeploy"1);
    
    
// Cvars
    
cvar_radius register_cvar "zp_pipe_radius""500");
    
cvar_damage register_cvar("zp_pipe_damage""1400.0");
    
    
g_pipe zp_items_register("VIP Pipe Bomb"20)
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_cfg()
{
    
g_GameModeInfectionID zp_gamemodes_get_id("Infection Mode")
    
g_GameModeMultiID zp_gamemodes_get_id("Multiple Infection Mode")
}

public 
plugin_precache()
{
    
precache_model(g_vmodel);
    
precache_model(g_pmodel);
    
precache_model(g_wmodel);
    
precache_sound(g_sound);
    
g_fire precache_model(g_firespr);
    
g_trail precache_model(g_trailspr);
}

public 
replace_models(id)
{
    if(
get_user_weapon(id) == CSW_SMOKEGRENADE)
    {
        
set_pev(idpev_viewmodel2g_vmodel);
        
set_pev(idpev_weaponmodel2g_pmodel);
    }
}

public 
fw_smDeploy(const iEntity)
{
    if(
pev_valid(iEntity) != 2)
        return 
HAM_IGNORED;
    
    new 
id get_pdata_cbase(iEntitym_pPlayer4);
    
    if(
g_has_pipe[id] && !zp_core_is_zombie(id) && is_user_alive(id))
    {
        
set_pev(idpev_viewmodel2g_vmodel);
        
set_pev(idpev_weaponmodel2g_pmodel);
    }
    
    return 
HAM_IGNORED;
}

public 
zp_fw_items_select_pre(iditemid)
{
    if(
itemid != g_pipe)
        return 
ZP_ITEM_AVAILABLE

    
if (zp_core_is_zombie(id))
        return 
ZP_ITEM_DONT_SHOW
        
    
new current_mode zp_gamemodes_get_current()
    if (
current_mode != g_GameModeInfectionID && current_mode != g_GameModeMultiID)
        return 
ZP_ITEM_NOT_AVAILABLE
    
    
if (!(get_user_flags(id) & ADMIN_LEVEL_B))
        return 
ZP_ITEM_NOT_AVAILABLE
    
    
if (g_has_pipe[id])
        return 
ZP_ITEM_NOT_AVAILABLE
    
    
return ZP_ITEM_AVAILABLE
}

public 
zp_fw_items_select_post(iditem)
{
    if(
item == g_pipe)
    {
        
g_has_pipe[id] = true;
        new 
was cs_get_user_bpammo(idCSW_SMOKEGRENADE);

        if(
was >= 1)
            
cs_set_user_bpammo(idCSW_SMOKEGRENADEwas 1);
        else
            
give_item(id"weapon_smokegrenade");
        
        
replace_models(id);
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
client_connect(id)
{
    
g_has_pipe[id] = false
}

public 
client_disconnect(id)
{
    
g_has_pipe[id] = false
}

public 
zp_fw_core_infect_post(id)
{
    
g_has_pipe[id] = false;
}
        
public 
zp_fw_core_cure_post(id)
{
    
g_has_pipe[id] = false;
}

public 
fw_SetModel(entity, const model[])
{
    static 
owner;
    
owner pev(entitypev_owner);
    
    static 
Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    if(!
pev_valid(entity) || !dmgtime || !g_has_pipe[owner])
        return 
FMRES_IGNORED;
    
    if (
model[9] == 's' && model[10] == 'm')
    {
        
entity_set_model(entityg_wmodel);
        
        
set_rendering(entitykRenderFxGlowShell12800kRenderNormal16);
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trail// sprite
        
write_byte(10// life
        
write_byte(10// width
        
write_byte(128// r
        
write_byte(0// g
        
write_byte(0// b
        
write_byte(255// brightness
        
message_end()
        
        
set_pev(entitypev_flTimeStepSoundNADE_TYPE_PIPEBOMB)
        
        return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_ThinkGren(entity// Grenade think event
{
    if (!
pev_valid(entity))
        return 
HAM_IGNORED;
        
    static 
owner;
    
owner pev(entitypev_owner);
    
    static 
Float:dmgtime    
    pev
(entitypev_dmgtimedmgtime)
    
    if (!
g_has_pipe[owner] || dmgtime get_gametime())
        return 
HAM_IGNORED;
    
    if(
pev(entitypev_flTimeStepSound) == NADE_TYPE_PIPEBOMB)
    {
        
g_has_pipe[owner] = false
        set_task
(0.1"hook"entity__"a"15);
        
set_task(1.5"deleteGren"entity)
        
        new 
Float:originF[3]
        
pev(entitypev_originoriginF);
        
        
light(originF)
        return 
HAM_SUPERCEDE
    
}
    
    return 
HAM_IGNORED;
}

public 
hook(entity)
{
    if (!
pev_valid(entity))
    {
        
remove_task(entity)
        return
    }
    
    
emit_sound(entityCHAN_WEAPONg_sound1.0ATTN_NORM0PITCH_HIGH);
    
    static 
Float:entOrigin[3], flOrigin[3], PlayerPos[3], distance
    pev
(entitypev_originentOrigin);
    
    
flOrigin[0] = floatround(entOrigin[0])
    
flOrigin[1] = floatround(entOrigin[1])
    
flOrigin[2] = floatround(entOrigin[2])

    for (new 
1<= g_MaxPlayersi++)
    {
        if(!
is_user_alive(i) || !zp_core_is_zombie(i))
            continue
        
        
get_user_origin(iPlayerPos)
        
        
distance get_distance(PlayerPosflOrigin)
        
        if (
distance <= get_pcvar_num(cvar_radius)) 
        {
            new 
Float:fl_Velocity[3]
            
            if (
distance 25)
            {
                new 
Float:fl_Time distance 650.0
                
                fl_Velocity
[0] = (flOrigin[0] - PlayerPos[0]) / fl_Time
                fl_Velocity
[1] = (flOrigin[1] - PlayerPos[1]) / fl_Time
                fl_Velocity
[2] = (flOrigin[2] - PlayerPos[2]) / fl_Time
            
}
            else
            {
                
fl_Velocity[0] = 0.0
                fl_Velocity
[1] = 0.0
                fl_Velocity
[2] = 0.0
            
}
            
            
entity_set_vector(iEV_VEC_velocityfl_Velocity)
        }
    }
}

public 
deleteGren(entity)
{
    if (!
pev_valid(entity))
        return
    
    new 
Float:originF[3]
    
pev(entitypev_originoriginF);
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordoriginF[0])
    
engfunc(EngFunc_WriteCoordoriginF[1])
    
engfunc(EngFunc_WriteCoordoriginF[2])
    
write_short(g_fire//sprite index
    
write_byte(25// scale in 0.1's
    
write_byte(10// framerate
    
write_byte(0// flags
    
message_end()
    
    static 
flOrigin[3], PlayerPos[3], distance
    pev
(entitypev_originoriginF);
    new 
attacker pev(entitypev_owner)
    
    
flOrigin[0] = floatround(originF[0])
    
flOrigin[1] = floatround(originF[1])
    
flOrigin[2] = floatround(originF[2])
    
    for (new 
1<= g_MaxPlayersi++)
    {
        if(
is_user_alive(i)) 
        {
            if(!
is_user_alive(i) || !zp_core_is_zombie(i))
            continue
            
            
get_user_origin(iPlayerPos)
            
            
distance get_distance(PlayerPosflOrigin)
            
            if (
distance <= get_pcvar_num(cvar_radius)) 
            {
                if(
get_user_health(i) - get_pcvar_float(cvar_damage) > 0)
                    
fakedamage(i"Pipe Bomb"get_pcvar_float(cvar_damage), 256);
                else
                    
ExecuteHamB(Ham_Killediattacker2)
                    
                static 
FloatoriginP[3]
                
pev(ipev_originoriginP)
                
                
originP[0] = (originF[0] - flOrigin[0]) * 10.0 
                originP
[1] = (originP[1] - flOrigin[1]) * 10.0 
                originP
[2] = (originP[2] - flOrigin[2]) + 550.0 float(distance)
                
                
set_pev(ipev_velocityoriginP)
            }
        }
    }
    
    
remove_task(entity)
    
remove_entity(entity)
}

public 
light(const Float:originF[3])  // Blast ring and small red light around nade from zombie_plague40.sma. Great thx, MeRcyLeZZ!!! ;)
{
    
// Lighting
    
engfunc(EngFunc_MessageBeginMSG_PAS,     SVC_TEMPENTITYoriginF0);
    
write_byte(TE_DLIGHT); // TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]); // x
    
engfunc(EngFunc_WriteCoordoriginF[1]); // y
    
engfunc(EngFunc_WriteCoordoriginF[2]); // z
    
write_byte(5); // radius
    
write_byte(128); // r
    
write_byte(0); // g
    
write_byte(0); // b
    
write_byte(51); //life
    
write_byte(0); //decay rate
    
message_end();


Descripción de la granada:Esta granada arrastra a los zombies y luego explota y quita mucha vida
Responder
#2
ayuda lo que quiero es para adaptarala al zp 4.2! meterla como la bubble bomb!
Responder
#3
No bumpees.
Responder
#4
andale solo es adaptar eso se me hace complicado
Responder
#5
Aqui tengo esta que adapte para 4.2 hace mucho

Código PHP:
/*
    -*- [ZP] Extra Item: Pipe Bomb -*-
    
    -*- Author: 4eRT -*-
*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <zombieplague>
#include <fun>
#include <cstrike>

#define VERSION "4eRT"

const m_pPlayer 41;
new const 
NADE_TYPE_PIPE 4327;
new const 
NADE_DURATION_PIPE pev_flSwimTime;
new const 
g_trailspr[] ="sprites/laserbeam.spr";
new const 
g_ringspr[] = "sprites/shockwave.spr";
new const 
g_firespr[] = "sprites/zerogxplode.spr";
new const 
g_sound[] = "zombie_plague/pipe_beep.wav";
new const 
g_vmodel[] = "models/zombie_plague/v_pipe.mdl";
new const 
g_pmodel[] = "models/zombie_plague/p_pipe.mdl";
new const 
g_wmodel[] = "models/zombie_plague/w_pipe.mdl";
new const 
g_vflare[] = "models/zombie_plague/v_pipe.mdl"// type here your custom flare model to prevent bug. now uses default model
new const g_extra_pipe[] = { "Pipe Bomb" };
new 
cvar_durationcvar_radiuscvar_enabledcvar_soundcvar_costcvar_modecvar_hudcvar_damagecvar_speedcvar_shakecvar_extraap// some cvars
new g_msgsyncg_trailg_ringg_fireg_scoreg_deathg_shakeg_pipeboolg_has_pipe[33]; // some vars

public plugin_init() 
{
    
register_plugin("[ZP] Pipe Bomb"VERSION" 4eRT");
    
register_forward(FM_SetModel,"fw_SetModel");
    
RegisterHam(Ham_Think"grenade""fw_ThinkGren");
    
RegisterHam(Ham_Spawn"player""fw_Spawn");
    
RegisterHam(Ham_Item_Deploy"weapon_hegrenade""fw_smDeploy"1);
    
register_clcmd("give_pipe""pipe"
    
    
// Cvars
    
cvar_duration register_cvar("pipe_duracion""10");
    
cvar_radius register_cvar "pipe_radio""200");
    
cvar_enabled register_cvar("pipe_activada""1");
    
cvar_cost register_cvar("pipe_costo""15");
    
cvar_mode register_cvar("pipe_modo""1");
    
cvar_sound register_cvar("pipe_sounido""1");
    
cvar_hud register_cvar("pipe_hud""0");
    
cvar_damage register_cvar("pipe_damage""500");
    
cvar_speed register_cvar("pipe_speed""90.0");
    
cvar_shake register_cvar("pipe_shake""1");
    
cvar_extraap register_cvar("zp_pipe_ap""0");
    
    
// Registering extra items
    
if(get_pcvar_num(cvar_enabled))
        
g_pipe zp_register_extra_item(g_extra_pipeget_pcvar_num(cvar_cost), ZP_TEAM_HUMAN);
    
    
g_msgsync CreateHudSyncObj();
    
g_score get_user_msgid("ScoreInfo");
    
g_death get_user_msgid("DeathMsg");
    
g_shake get_user_msgid("ScreenShake");
}

public 
plugin_precache() 
{
    
precache_model(g_vmodel);
    
precache_model(g_pmodel);
    
precache_model(g_wmodel);
    
precache_model(g_vflare);
    
precache_sound(g_sound);
    
g_fire precache_model(g_firespr);
    
g_trail precache_model(g_trailspr);
    
g_ring precache_model(g_ringspr);
}

public 
replace_models(id)
{
    if(
get_user_weapon(id) == CSW_HEGRENADE)
    {
        if(
g_has_pipe[id])
        {
            
set_pev(idpev_viewmodel2g_vmodel);
            
set_pev(idpev_weaponmodel2g_pmodel);
        }
    }
}

public 
replace_models2(id)
    if(
get_user_weapon(id) == CSW_HEGRENADE)
        
set_pev(idpev_viewmodel2g_vmodel);

public 
fw_smDeploy(const iEntity)
{
    if(
pev_valid(iEntity) != 2)
        return 
HAM_IGNORED;
    
    new 
id get_pdata_cbase(iEntitym_pPlayer4);
    
    if(
g_has_pipe[id] && !zp_get_user_zombie(id) && is_user_alive(id))
    {
        
set_pev(idpev_weaponmodel2g_pmodel);
    }
    
    return 
HAM_IGNORED;
}

public 
zp_extra_item_selected(iditem)
{
    if(
item == g_pipe)
    {
        if(!
get_pcvar_num(cvar_enabled))
        {
            
client_print(idprint_chat"[ZP] Pipe Bomb Desactivada"id);
            return 
PLUGIN_HANDLED;
        }
        
        if(
g_has_pipe[id])
        {
            if(
get_pcvar_num(cvar_hud) == 1)
            {
                
set_hudmessage(25500, -1.00.5500.02.02.01.0, -1);
                
ShowSyncHudMsg(idg_msgsync"Usted ya tiene una."id);
            }
            else
                
client_print(idprint_chat"[ZP] Usted ya tiene una.");
    
            return 
PLUGIN_HANDLED;
        }
    
        
g_has_pipe[id] = true;
        new 
was cs_get_user_bpammo(idCSW_HEGRENADE);

        if(
was >= 1)
            
cs_set_user_bpammo(idCSW_HEGRENADEwas 1);
        else
            
give_item(id"weapon_hegrenade");
        
        if(
get_user_weapon(id) == CSW_HEGRENADE)
        {
            if(
g_has_pipe[id])
            {
            
set_pev(idpev_viewmodel2g_vmodel);
            
set_pev(idpev_weaponmodel2g_pmodel);
            }
        }
        
        if(
get_pcvar_num(cvar_hud) == 1)
        {
            new 
msg[32], hud random_num(01);
    
            if(
hud == 0)
                
formatex(msg31"Bueno, esto parece peligroso.");
            else
                
formatex(msg31"Explosivos caseros muy bien!");
    
            
set_hudmessage(25500, -1.00.5500.03.02.01.0, -1);
            
ShowSyncHudMsg(idg_msgsync"%s"msg);
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
pipe(id

    
g_has_pipe[id] = true;
    
    return 
1;
    

public 
zp_user_infected_post(id)
{
    
g_has_pipe[id] = false;
}
        
public 
fw_Spawn(id)
{
    
g_has_pipe[id] = false;
}

public 
fw_SetModel(entity, const model[]) // Set hegrenade pipes effects and type
{
    static 
Float:dmgtimeowner;
    
pev(entitypev_dmgtimedmgtime);
    
owner pev(entitypev_owner);
    
    if(!
pev_valid(entity) || dmgtime == 0.0)
        return 
FMRES_IGNORED;
    
    if (
model[9] == 'h' && model[10] == 'e' && g_has_pipe[owner])
    {
        
g_has_pipe[owner] = false;
        
entity_set_model(entityg_wmodel);
        
replace_models2(owner);
        
        
set_rendering(entitykRenderFxGlowShell12800kRenderNormal16);
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trail// sprite
        
write_byte(10// life
        
write_byte(10// width
        
write_byte(128// r
        
write_byte(0// g
        
write_byte(0// b
        
write_byte(255// brightness
        
message_end()
        
        
set_pev(entitypev_flTimeStepSoundNADE_TYPE_PIPE);
        
        return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_ThinkGren(entity// Grenade think event
{
    if (!
pev_valid(entity))
        return 
HAM_IGNORED;
    
    static 
Float:dmgtimeFloatcurrent_timeattacker;
    
pev(entitypev_dmgtimedmgtime);
    
current_time get_gametime();
    
attacker pev(entitypev_owner);
    
    if(
dmgtime current_time)
        return 
HAM_IGNORED;
    
    if(
pev(entitypev_flTimeStepSound) == NADE_TYPE_PIPE)
    {
        static 
duration;
        
duration pev(entityNADE_DURATION_PIPE);
        
        if (
duration 0)
        {
            new 
Float:originF[3]
            
pev(entitypev_originoriginF);
            
            if (
duration == 1)
            {
                
remove_task(entity);
                
effect(originF);
                
                if (
get_pcvar_num(cvar_mode) == 1)
                    
kill(originFattacker);
                
                
engfunc(EngFunc_RemoveEntityentity);
                return 
HAM_SUPERCEDE;
            }
            
            
light(originFduration);
            
set_task(0.1"hook"entity__"b");
            
            if(
get_pcvar_num(cvar_mode) == 2)
                
set_task(1.0"hurt"entity__"b");
                
            if(
get_pcvar_num(cvar_sound))
            {
                if(
duration == 2)
                    
set_task(0.1"beep"entity__"b");
                else
                    
emit_sound(entityCHAN_WEAPONg_sound1.0ATTN_NORM0PITCH_HIGH);
            }
            
            
set_pev(entityNADE_DURATION_PIPE, --duration);
            
set_pev(entitypev_dmgtimecurrent_time 3.0);
        } else if ((
pev(entitypev_flags) & FL_ONGROUND) && get_speed(entity) < 10)
        {
            
set_pev(entityNADE_DURATION_PIPEget_pcvar_num(cvar_duration)/3);
            
set_pev(entitypev_dmgtimecurrent_time 0.1);
        } else
            
set_pev(entitypev_dmgtimecurrent_time 0.5);
    }
    
    return 
HAM_IGNORED;
}

public 
beep(entity// Plays loop beep sound before explosion
{
    
//Bugfix
    
if (!pev_valid(entity))
    {
        
remove_task(entity);
        return;
    }
    
    
emit_sound(entityCHAN_WEAPONg_sound1.0ATTN_NORM0PITCH_HIGH);
}

public 
hook(entity// Magnet func. Hooks zombies to nade
{
    
//Bugfix
    
if (!pev_valid(entity))
    {
        
remove_task(entity);
        return;
    }
    
    static 
Float:originF[3], Float:radiusvictim = -1;
    
radius get_pcvar_float(cvar_radius);
    
pev(entitypev_originoriginF);
    
    while ((
victim engfunc(EngFunc_FindEntityInSpherevictimoriginFradius)) != 0)
    {
        if (!
is_user_alive(victim) || !zp_get_user_zombie(victim))
            continue;

        new 
Float:fl_Velocity[3];
        new 
vicOrigin[3], originN[3];

        
get_user_origin(victimvicOrigin);
        
originN[0] = floatround(originF[0]);
        
originN[1] = floatround(originF[1]);
        
originN[2] = floatround(originF[2]);
        
        new 
distance get_distance(originNvicOrigin);

        if (
distance 1)
        {
            new 
Float:fl_Time distance get_pcvar_float(cvar_speed);

            
fl_Velocity[0] = (originN[0] - vicOrigin[0]) / fl_Time;
            
fl_Velocity[1] = (originN[1] - vicOrigin[1]) / fl_Time;
            
fl_Velocity[2] = (originN[2] - vicOrigin[2]) / fl_Time;
        } else
        {
            
fl_Velocity[0] = 0.0
            fl_Velocity
[1] = 0.0
            fl_Velocity
[2] = 0.0
        
}

        
entity_set_vector(victimEV_VEC_velocityfl_Velocity);
        
        if(
get_pcvar_num(cvar_shake))
        {
            
message_begin(MSG_ONE_UNRELIABLEg_shake_victim)
            
write_short(1<<14// amplitude
            
write_short(1<<14// duration
            
write_short(1<<14// frequency
            
message_end()
        }
    }
}

public 
hurt(entity// Hurts zombies if mode = 2
{
    
//Bugfix
    
if (!pev_valid(entity))
    {
        
remove_task(entity);
        return;
    }
    
    static 
Float:originF[3], Float:radiusvictim = -1;
    
radius get_pcvar_float(cvar_radius)/2.0;
    
pev(entitypev_originoriginF);
    
    while ((
victim engfunc(EngFunc_FindEntityInSpherevictimoriginFradius)) != 0)
    {
        if (!
is_user_alive(victim) || !zp_get_user_zombie(victim))
            continue;
        
        new 
Float:dam get_pcvar_float(cvar_damage);
        
        if(
get_user_health(victim) - get_pcvar_float(cvar_damage) > 0)
            
fakedamage(victim"Pipe Bomb"dam256);
    }
}

public 
kill(const Float:originF[3], attacker// Kills zombies in radius / 2 if mode = 1
{
    static 
Float:radiusvictim = -1;
    
radius get_pcvar_float(cvar_radius) / 2.0;
    
    while ((
victim engfunc(EngFunc_FindEntityInSpherevictimoriginFradius)) != 0)
    {
        if (!
is_user_alive(victim) || !zp_get_user_zombie(victim))
            continue;
        
        new 
Float:dam get_pcvar_float(cvar_damage);
        
set_msg_block(g_deathBLOCK_SET);
        
fakedamage(victim"Pipe Bomb"dam256);
        
set_msg_block(g_deathBLOCK_NOT);
        
        if(
get_user_health(victim) <= 0)
        {
            
SendDeathMsg(attackervictim);
            
            if(
victim != attacker && !zp_get_user_zombie(attacker))
                
UpdateFrags(attacker11);
            else
                
UpdateFrags(attacker, -11);
        }
    }
}

public 
light(const Float:originF[3], duration)  // Blast ring and small red light around nade from zombie_plague40.sma. Great thx, MeRcyLeZZ!!! ;)
{
    
// Lighting
    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYoriginF0);
    
write_byte(TE_DLIGHT); // TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]); // x
    
engfunc(EngFunc_WriteCoordoriginF[1]); // y
    
engfunc(EngFunc_WriteCoordoriginF[2]); // z
    
write_byte(5); // radius
    
write_byte(128); // r
    
write_byte(0); // g
    
write_byte(0); // b
    
write_byte(51); //life
    
write_byte((duration 2) ? 0); //decay rate
    
message_end();
    
    
// Smallest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+385.0// z axis
    
write_short(g_ring// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(128// red
    
write_byte(0// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
// Medium ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+470.0// z axis
    
write_short(g_ring// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(128// red
    
write_byte(0// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
// Largest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis
    
write_short(g_ring// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(128// red
    
write_byte(0// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

public 
effect(const Float:originF[3]) // Explosion effect
{
    
// Largest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis
    
write_short(g_ring// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(128// red
    
write_byte(0// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
// Explosion sprite
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordoriginF[0])
    
engfunc(EngFunc_WriteCoordoriginF[1])
    
engfunc(EngFunc_WriteCoordoriginF[2])
    
write_short(g_fire//sprite index
    
write_byte(25// scale in 0.1's
    
write_byte(10// framerate
    
write_byte(0// flags
    
message_end()
}

UpdateFrags(attackerfragsscoreboard// Updates attacker frags
{
    
// Set attacker frags
    
set_pev(attackerpev_fragsfloat(pev(attackerpev_frags) + frags))
    
    if(
get_pcvar_num(cvar_extraap) > 0)
        
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_extraap));
        
    
// Update scoreboard with attacker and victim info
    
if (scoreboard)
    {
        
message_begin(MSG_BROADCASTg_score)
        
write_byte(attacker// id
        
write_short(pev(attackerpev_frags)) // frags
        
write_short(get_user_deaths(attacker)) // deaths
        
write_short(0// class?
        
write_short(get_user_team(attacker)) // team
        
message_end()
    }
}

SendDeathMsg(attackervictim// Sends death message
{
    
message_begin(MSG_BROADCASTg_death)
    
write_byte(attacker// killer
    
write_byte(victim// victim
    
write_byte(0// headshot flag
    
write_string("Pipe Bomb"// killer's weapon
    
message_end()

[Imagen: 76561198030240227.png]
Responder
#6
Gracias se la pondre a mi zp
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)