[ Guía ] Pipe bomb
#1
Ahh tengo esta bomba hace ratos & como ya ni entro la daré por acá sirve la eh usado pero si no la puedo arreglar jaja.
tengo más granadas por ahí si necesitan.

-Primero
buscamos
Código PHP:
const NADE_TYPE_FLARE 4444 
& debajo agregamos
Código PHP:
const NADE_TYPE_PIPEBOMB 5555 
o en tal caso que tenga otra granada agregan el numero que va.

-Segundo
Creamos constantes & variables que registraran sonidos, models etc.
esto pueden ponerlo abajo de los includes si quieren WhateverWhatever

Código PHP:
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_firebool:sz_pipe[33

-Tercero
le asignamos valor a las variables que creamos antes.

nos vamos a
Código PHP:
public plugin_init() 
& dentro de las llaves donde sientan más como agregan esto.

Código PHP:
cvar_radius register_cvar "zp_pipe_radius""500"); 
    
cvar_damage register_cvar("zp_pipe_damage""1400.0"); 

& precacheamos dichos archivos que usaremos en esta bomba
para eso nos vamos a
Código PHP:
public plugin_precache() { 
siempre dentro de la misma donde sientan más como agregan

Código PHP:
precache_model(g_vmodel); 
    
precache_model(g_pmodel); 
    
precache_model(g_wmodel); 
    
precache_sound(g_sound); 
    
g_fire precache_model(g_firespr); 

-Cuarto

Al final de todo code agregamos esto:
Código PHP:
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) || !g_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) || !g_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_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(0); //decay rate 
    
message_end(); 

-quinto
Buscamos lo siguiente.
Código PHP:
public fw_SetModel(entity, const model[]) 

bueno dentro de eso verán algo como esto:
Código PHP:
else if(model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) 


yo la pondré en la bomba frost

& le agregamos esto:

Código PHP:
if(sz_pipe[pev(entitypev_owner)])
        {
            
set_rendering(entitykRenderFxGlowShell2000100kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_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(200// r
            
write_byte(0// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_PIPEBOMB)
        }  
        else
        { 

& gusto en esa misma condición de la bomba frost al final agregan una llave más

quedaria así

Código PHP:
else if(model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
    
{
        if(
sz_pipe[pev(entitypev_owner)])
        {
            
set_rendering(entitykRenderFxGlowShell2000100kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// TE id
            
write_short(entity// entity
            
write_short(SprTrail// sprite
            
write_byte(10// life
            
write_byte(10// width
            
write_byte(200// r
            
write_byte(0// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_PIPEBOMB)
        }  
        else
        {
        
            
// Give it a glow
            
set_rendering(entitykRenderFxGlowShell0100200kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_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(0// r
            
write_byte(100// g
            
write_byte(200// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_FROST)
        }
// acá agregamos una llave para que no nos de 32222 errores & compile
    



luego vamos a
public fw_ThinkGrenade(entity)

& agregamos esto dentro del switch
Código PHP:
case NADE_TYPE_PIPEBOMB:
        {
            static 
owner
            
owner pev(entitypev_owner); 
            
sz_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;
        } 

-Sexto

vamos a replace_weapon_models(id, weaponid)

buscan el case de la bomba frost que es la flash

& lo dejan así

Código PHP:
case CSW_FLASHBANG// Frost grenade
        
{
            if(
sz_pipe[id]){
                
set_pev(idpev_viewmodel2g_vmodel)
                
set_pev(idpev_weaponmodel2g_pmodel)
            } else
            
set_pev(idpev_viewmodel2model_grenade_frost)
        } 



[Imagen: 975609.jpg] pacman


EDIT; a la vergaaa tenia muchas cosas que no usaba & las quite cualquier error me dicen o duda así la reparo o lo que sea xd


pd; tengo otras bombas como la aniquiladora, pumpkit, rayo, jump, fire, toxica etc. por si quieren xd
- RETIRADO -
www.svlmexico.com - Mi Discord (Se buscan editores)
www.GameHost.com.ar <- renta tu host (ARG)
Responder
#2
[Imagen: 57848d08c69b3122c52682887558c0f1.jpg]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#3
(12/06/2016, 09:49 PM)NkkI escribió: Ahh tengo esta bomba hace ratos & como ya ni entro la daré por acá sirve la eh usado pero si no la puedo arreglar jaja.
tengo más granadas por ahí si necesitan.

-Primero
buscamos
Código PHP:
const NADE_TYPE_FLARE 4444 
& debajo agregamos
Código PHP:
const NADE_TYPE_PIPEBOMB 5555 
o en tal caso que tenga otra granada agregan el numero que va.

-Segundo
Creamos constantes & variables que registraran sonidos, models etc.
esto pueden ponerlo abajo de los includes si quieren WhateverWhatever

Código PHP:
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_firebool:sz_pipe[33

-Tercero
le asignamos valor a las variables que creamos antes.

nos vamos a
Código PHP:
public plugin_init() 
& dentro de las llaves donde sientan más como agregan esto.

Código PHP:
cvar_radius register_cvar "zp_pipe_radius""500"); 
    
cvar_damage register_cvar("zp_pipe_damage""1400.0"); 

& precacheamos dichos archivos que usaremos en esta bomba
para eso nos vamos a
Código PHP:
public plugin_precache() { 
siempre dentro de la misma donde sientan más como agregan

Código PHP:
precache_model(g_vmodel); 
    
precache_model(g_pmodel); 
    
precache_model(g_wmodel); 
    
precache_sound(g_sound); 
    
g_fire precache_model(g_firespr); 

-Cuarto

Al final de todo code agregamos esto:
Código PHP:
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) || !g_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) || !g_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_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(0); //decay rate 
    
message_end(); 

-quinto
Buscamos lo siguiente.
Código PHP:
public fw_SetModel(entity, const model[]) 

bueno dentro de eso verán algo como esto:
Código PHP:
else if(model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) 


yo la pondré en la bomba frost

& le agregamos esto:

Código PHP:
if(sz_pipe[pev(entitypev_owner)])
        {
            
set_rendering(entitykRenderFxGlowShell2000100kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_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(200// r
            
write_byte(0// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_PIPEBOMB)
        }  
        else
        { 

& gusto en esa misma condición de la bomba frost al final agregan una llave más

quedaria así

Código PHP:
else if(model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
    
{
        if(
sz_pipe[pev(entitypev_owner)])
        {
            
set_rendering(entitykRenderFxGlowShell2000100kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// TE id
            
write_short(entity// entity
            
write_short(SprTrail// sprite
            
write_byte(10// life
            
write_byte(10// width
            
write_byte(200// r
            
write_byte(0// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_PIPEBOMB)
        }  
        else
        {
        
            
// Give it a glow
            
set_rendering(entitykRenderFxGlowShell0100200kRenderNormal16);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_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(0// r
            
write_byte(100// g
            
write_byte(200// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_FROST)
        }
// acá agregamos una llave para que no nos de 32222 errores & compile
    



luego vamos a
public fw_ThinkGrenade(entity)

& agregamos esto dentro del switch
Código PHP:
case NADE_TYPE_PIPEBOMB:
        {
            static 
owner
            
owner pev(entitypev_owner); 
            
sz_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;
        } 

-Sexto

vamos a replace_weapon_models(id, weaponid)

buscan el case de la bomba frost que es la flash

& lo dejan así

Código PHP:
case CSW_FLASHBANG// Frost grenade
        
{
            if(
g_has_pipe[id]){
                
set_pev(idpev_viewmodel2g_vmodel)
                
set_pev(idpev_weaponmodel2g_pmodel)
            } else
            
set_pev(idpev_viewmodel2model_grenade_frost)
        } 



[Imagen: 975609.jpg] pacman


EDIT; a la vergaaa tenia muchas cosas que no usaba & las quite cualquier error me dicen o duda así la reparo o lo que sea xd


pd; tengo otras bombas como la aniquiladora, pumpkit, rayo, jump, fire, toxica etc. por si quieren xd

g_has_pipe nunca creaste esa variable..
Responder
#4
mala mía le puse mal el nombre ya esta reparado gracias.

pd; no era necesario citar toda esa mierda jaja.
- RETIRADO -
www.svlmexico.com - Mi Discord (Se buscan editores)
www.GameHost.com.ar <- renta tu host (ARG)
Responder
#5
Buen guia papu Rainbow
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#6
Buena guía gracias!!! Approved
[Imagen: 76561198161464617.png][Imagen: AddFriend.png]
"En nuestros locos intentos, renunciamos a lo que somos por lo que esperamos ser..."
William ShakespeareCutecryCutecry
[ Zombie Escape | 60% ]
Responder
#7
Una duda.

esto esta bien ?
Código PHP:
originP[0] = (originF[0] - flOrigin[0]) * 10.0 

o seria ?
Código PHP:
originP[0] = (originP[0] - flOrigin[0]) * 10.0 


Y esto no estaria de mas ?
Código PHP:
if(is_user_alive(i))  { 

si registras en deletegren
Código PHP:
if(!is_user_alive(i) || !g_zombie[i]) 
                continue 
Responder
#8
Salio perfecta, buena guia Guiño
Responder
#9
Buena guia
Pregunta como hago para agregar al menu de granadas?
Responder
#10
(15/06/2016, 07:58 PM)leandroo112 escribió: Buena guia
Pregunta como hago para agregar al menu de granadas?
give_item(id, "weapon_flashbang")
sz_pipe[id] = true
Whatever
Responder
#11
Oye nkki, y si yo le quiero dar mas de una bomba al usuario?
Porque cuando la tira pones el sz_pipe en false.
(03/08/2018, 03:13 PM)Skylar escribió: Está bien que pidas ayudas, pero no para que crees 20 post todos los días mogolico de mierda, me tenes re podrido ya, contraté 10000 sicarios para que te busquen y te maten toda la familia, y a vos que te revienten con una bazooka.
Responder
#12
sz_pipe[id]-- ?

al darsela sz_pipe[id]++
Responder
#13
Cambias

Código PHP:
new g_firebool:sz_pipe[33]

// -----

new g_firesz_pipe[33]

//----------------//
sz_pipe[owner] = false

// -----

sz_pipe[owner]--; 

Ahora, si queres darle 2 pipe, haces

Código PHP:
sz_pipe[id] = 2
TFD ------ 10% (proyecto parado)

[Imagen: 76561198053053139.png]
Responder
#14
Buen tutorial papu, denunciado.

Responder
#15
Falto poner el engine, si no tira error e.e
(03/08/2018, 03:13 PM)Skylar escribió: Está bien que pidas ayudas, pero no para que crees 20 post todos los días mogolico de mierda, me tenes re podrido ya, contraté 10000 sicarios para que te busquen y te maten toda la familia, y a vos que te revienten con una bazooka.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)