[ Guía ] Bomba Aniquiladora
#1
si se que esta verga esta en el foro de AM-EN pero no sé si sirva esa nunca la probé xddx, esta si..

muyyyyy buena amigos de yutub hoy les traigo un tutorial de como hacer niveles a no va era una bomba aniquiladora para ct v: o zm WhateverWhatever

-Primero
buscamos esta verga con control + f si no saben aun de su existencia v:
Código PHP:
const NADE_TYPE_FLARE 4444 
& abajo agregamos
Código PHP:
const NADE_TYPE_KILLBOMB 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 MODEL_P[] =  "models/zombie_plague/p_zombibomb.mdl";
new const 
MODEL_V[] =  "models/zombie_plague/v_zombibomb.mdl";
new const 
MODEL_W[] =  "models/zombie_plague/w_zombibomb.mdl";
new const 
SOUND_BUY[] =  "zombie_plague/killbomb_buy.wav";
new const 
SOUND_EXPLODE[] = "zombie_plague/killbomb_exp.wav";

new 
szTrailszExplodeszBonusHp;
new 
szKillbomb33 ]; 


-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:
szBonusHp register_cvar("bb_killbomb_hp","100"
& 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:
szTrail precache_model("sprites/laserbeam.spr");
    
szExplode precache_model("sprites/skull.spr");
    
    
precache_model(MODEL_P);
    
precache_model(MODEL_V);
    
precache_model(MODEL_W);
    
    
precache_sound(SOUND_BUY);
    
precache_sound(SOUND_EXPLODE); 

-Cuarto
Al final de todo code agregamos esto:
Código PHP:
KillBombExplode(ent)
{    
    static 
Float:originF[3]
    
pev(entpev_originoriginF)
    
    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYoriginF0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordoriginF[0])
    
engfunc(EngFunc_WriteCoordoriginF[1])
    
engfunc(EngFunc_WriteCoordoriginF[2])
    
write_short(szExplode)
    
write_byte(40)
    
write_byte(30)
    
write_byte(14)
    
message_end()
    
    
emit_sound(entCHAN_WEAPONSOUND_EXPLODE1.0ATTN_NORM0PITCH_NORM)
    
    static 
attackerattacker pev(entpev_owner);
    if(!
is_user_connected(attacker))
    {
        
engfunc(EngFunc_RemoveEntityent)
        return;
    }
    
    static 
victimvictim = -1;
    while((
victim engfunc(EngFunc_FindEntityInSpherevictimoriginF240.0)) != 0)
    {
        if(!
is_user_alivevictim ) || !g_zombievictim ] ) continue;
        
        
ExecuteHam(Ham_TakeDamagevictimentattacker10000.0DMG_BULLET)
        
set_user_healthattackerget_user_healthattacker ) + get_pcvar_num(szBonusHp))
    }
    
    
engfunc(EngFunc_RemoveEntityent )

si quieren que la granada sea para zm quitenle el ! del if dentro del bucle while

-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(szKillbomb[pev(entitypev_owner)])
    {
        --
szKillbomb[pev(entitypev_owner)];
        
set_pev(entitypev_flTimeStepSoundNADE_TYPE_KILLBOMB)
        
set_rendering(entitykRenderFxGlowShell23760202kRenderNormal0)
            
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW)
        
write_short(entity)
        
write_short(szTrail)
        
write_byte(10)
        
write_byte(3)
        
write_byte(237)
        
write_byte(60)
        
write_byte(202)
        
write_byte(192)
        
message_end()
        
        
engfunc(EngFunc_SetModelentityMODEL_W)
    }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(
szKillbomb[pev(entitypev_owner)])
        {
            --
szKillbomb[pev(entitypev_owner)];
            
set_pev(entitypev_flTimeStepSoundNADE_TYPE_KILLBOMB)
            
set_rendering(entitykRenderFxGlowShell23760202kRenderNormal0)
            
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW)
            
write_short(entity)
            
write_short(szTrail)
            
write_byte(10)
            
write_byte(3)
            
write_byte(237)
            
write_byte(60)
            
write_byte(202)
            
write_byte(192)
            
message_end()
            
            
engfunc(EngFunc_SetModelentityMODEL_W)
            
        }
        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_KILLBOMB:{
            
KillBombExplode(entity)
            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(
szKillbombid ]){
            
            
set_pevid pev_viewmodel2 MODEL_V)
            
set_pevid pev_weaponmodel2 MODEL_P)
        } else
        
set_pev(idpev_viewmodel2model_grenade_frost)
    } 

[Imagen: 975609.jpg]

cualquier error me dicen o duda así la reparo o lo que sea xd
Cuando encuentré mis otras bombas las subiré si no me han baneado por postear mierda jaja. Oh god why


sirve para cualquier mod si no compila avisen quite unas cosas que el zp creo que ya trae!

edit, a la verga busquen los mdls & sounds son bien shidoris sacan soniditos & esas mierdas v:

edit2, mierda así se da una granada antes de que pregunten ..
Código PHP:
++szKillbombIndex ];
give_itemIndex"weapon_flashbang");
emit_soundIndexCHAN_VOICESOUND_BUY1.0ATTN_NORM0PITCH_NORM); 
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#2
Muy bueno el tuto. +10 Reco y favo.

Una cosa, si quieren darse 2 bombas no podran.

Código PHP:
// cambia esto

szKillbomb[pev(entitypev_owner)] = 0

// por esto

szKillbomb[pev(entitypev_owner)]--; 
TFD ------ 10% (proyecto parado)

[Imagen: 76561198053053139.png]
Responder
#3
Código PHP:
ExecuteHam(Ham_TakeDamagevictimentattacker10000.0DMG_BULLET)
set_user_healthattackerget_user_healthattacker ) + get_pcvar_num(szBonusHp)) 

-->

Código PHP:
static iExtra;
static 
iHealth;
static 
iDamage;

iExtra get_pcvar_num(szBonusHp);
iHealth get_user_health(iVictim);
iDamage 10000// SUPONETE QUE USAS UNA CVAR PARA EL DAñO QUE RECIBA EL USUARIO

if (iDamage iHealth) {
    
ExecuteHamB(Ham_TakeDamagevictimentattackerfloat(iDamage), DMG_BULLET);
} else {
    
ExecuteHamB(Ham_Killedvictimattacker2);
}

set_user_health(attackerget_user_health(attacker) + iExtra); 
Parece una boludes pero ahorrar muchas cosas que son medio largas de explicar
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)