Enviar respuesta 
[RE][TUT]Campo de Fuerza(bubble)
Autor Mensaje
alangomez2 Sin conexión
Miembro


Mensajes: 179
Registro en: Feb 2014
Reputación: 0
Mensaje: #1
[RE][TUT]Campo de Fuerza(bubble)
Hola, bueno vengo a ponerles el TUT de Fail de alliedmodders. y a corregirle unos errores que se notan a plena vista. a peticion del usuario "EvilSpiret"

Ok les dejo el tut de Fail de la forze.

https://forums.alliedmods.net/showthread.php?t=126352

igual se los pongo aki y les explico los que le voy a explicar..

Nos vamos a nuestro sma del zombie plague.

y agregamos los includes
Código PHP:
#include <engine>
#include <fun> 

luego abajo de los includes.

Código PHP:
#define ONE_COLOR // color de la burbuja.
#define CAMPO_TASK // task = cuanto dura el campo de fuerza y lo elimina.

//#define RANDOM_COLOR // color por default.

#if defined ONE_COLOR
new Float:colour_force_shield[3] = { 255.0 255.0 255.0 // color de la burbuja ( red, gree, blue ).
#endif

new g_bubble_bomb[33// variable del campo
new const model_grenade[] = "models/zombie_plague/v_auragren.mdl" // model "v_".
new const model[] = "models/zombie_plague/aura8.mdl" // model de la burbuja.
new const w_model[] = "models/zombie_plague/w_aura.mdl" // model "w_".
new const entclas[] = "campo_grenade_forze" // nombre de la clase de entidad. 

Nos vamos a donde precacheamos los modelos.

y agregamos

Código PHP:
engfunc(EngFunc_PrecacheModelmodel_grenade// precacheamos el model "v_".
    
engfunc(EngFunc_PrecacheModelmodel// precacheamos el model de la burbuja.
    
engfunc(EngFunc_PrecacheModelw_model// precacheamos el model "w_". 

por si no saven es en
Código PHP:
public plugin_precache 

ya tengamos eso listo y precacheado nos dirigimos a
Código PHP:
public plugin_init() 

Registramos esto

Código PHP:
register_clcmd("BUBBLEBOMB""give_item_bubble"// podemos llamar a la bomba. console_cmd(id, "BUBBLEBOMB")
    
register_event("CurWeapon""hook_curwpn""be""1=1""2!29");
    
cvar_bubblepush register_cvar("zp_bubble_push""100.0"// es la cvar, que al tocar al campo nos retira de el.
    
register_touch(entclas"player""entity_touch"// nose bien que es, por lo que entiendo llamamos a la entidad que rechaza los zm. 

luego nos vamos a
Código PHP:
// pev_ field used to store custom nade types and their values 

luego abajo de la ultima bomba que tengamos registrada, que por default si no has agregado ninguna granada deve de ser esta

Código PHP:
const NADE_TYPE_FLARE 4444 

agregamos abajo entonces

Código PHP:
const NADE_TYPE_CAMPO 5555 

RECORDATORIO: si tenes otra granada agregada recuerda que deven ir en orden los numeros. si la ultima que tenes es 6666. la otra deve de ser 7777, y haci sucesivamente.

---------------------------------------------------------------------------------------------------

como ya tengamos eso listo nos dirigimos a

Código PHP:
public fw_SetModel(entity, const model[]) 

buscas esta linea
Código PHP:
else if (equal(model[7], "w_sm"4) && get_pcvar_num(cvar_flaregrenades)) 

y remplazas todo ese "IF" por este

Código PHP:
else if (equal(model[7], "w_sm"4) && get_pcvar_num(cvar_flaregrenades)) // aca especifica en que granada entraran, por ejemplo: Hegren, Flash, Smokegren / con una cvar de activacion o desactivacion
    
{
        if(!
g_zombie[pev(entitypev_owner)] && g_bubble_bomb[pev(entitypev_owner)]) // aca determinamos que la bomba es solo para humanos.
        
{
            
fm_set_rendering(entitykRenderFxGlowShell255255255kRenderNormal16// aca determinamos el color de glow de la granada.
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY// ni idea.
            
write_byte(TE_BEAMFOLLOW// aca determinamos que es un trail la entidad
            
write_short(entity// declaramos que es una entidad
            
write_short(g_trailSpr// el sprite correspondiente al trail.
            
write_byte(10// life. ( nose que es )
            
write_byte(10// width: esto quiere decir el ancho del trail
            
write_byte(255// red: color rojo
            
write_byte(255// green: color verde
            
write_byte(255// blue: color azul
            
write_byte(500// brightness: brillo
            
message_end()
            
            
set_pev(entitypev_flTimeStepSoundNADE_TYPE_CAMPO// tipo de bomba ( NADE_TYPE_CAMPO )
            
            
entity_set_model(entityw_model// llamamos al model de la granada en el piso "w_".
        
}
        else
        {
            
// Make the flare color
            
static rgb[3]
            switch (
get_pcvar_num(cvar_flarecolor))
            {
                case 
0// white
                
{
                    
rgb[0] = 255 // red: rojo
                    
rgb[1] = 255 // green: verde
                    
rgb[2] = 255 // blue: azul
                
}
                case 
1// red
                
{
                    
rgb[0] = random_num(50,255// rer: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[1] = // green: verde
                    
rgb[2] = // blue: azul
                
}
                case 
2// green
                
{
                    
rgb[0] = // red: rojo
                    
rgb[1] = random_num(50,255// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[2] = // blue: azul
                
}
                case 
3// blue
                
{
                    
rgb[0] = // red: rojo
                    
rgb[1] = // green: verde
                    
rgb[2] = random_num(50,255// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                
}
                case 
4// random (all colors): quiere decir que pueden salir varios colores por que los combina
                
{
                    
rgb[0] = random_num(50,200// red: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[1] = random_num(50,200// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[2] = random_num(50,200// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                
}
                case 
5// random (r,g,b): al azar entre rojo, verde, azul
                
{
                    switch (
random_num(13))
                    {
                        case 
1// red
                        
{
                            
rgb[0] = random_num(50,255// red: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                            
rgb[1] = // green: verde
                            
rgb[2] = // blue: azul
                        
}
                        case 
2// green
                        
{
                            
rgb[0] = // red: rojo
                            
rgb[1] = random_num(50,255// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                            
rgb[2] = // blue: azul
                        
}
                        case 
3// blue
                        
{
                            
rgb[0] = // red: rojo
                            
rgb[1] = // green: verde
                            
rgb[2] = random_num(50,255// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                        
}
                    }
                }
            }
            
            
// Give it a glow / toma el glow color, si la bomba fuese de color rojo, el glow de la grana sera rojo...
            
fm_set_rendering(entitykRenderFxGlowShellrgb[0], rgb[1], rgb[2], kRenderNormal16);
            
            
// And a colored trail / le damos un trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// entidad del trail
            
write_short(entity// decimos que es una entidad
            
write_short(g_trailSpr// sprite correspondiente al trail
            
write_byte(10// life ( nose que es )
            
write_byte(10// width: ancho del trail
            
write_byte(rgb[0]) // red: rojo -- depende de que color sea la bomba (rgb[0] = 1)
            
write_byte(rgb[1]) // green: verde -- depende de que color sea la bomba (rgb[1] = 2)
            
write_byte(rgb[2]) // blue: azul -- depende de que color sea la bomba (rgb[2] = 3)
            
write_byte(200// brightness: brillo del trail
            
message_end() // terminamos la entidad
            
            // Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_FLARE// tipo de granada ( flare bomb )
            
            // Set flare color on the thrown grenade entity
            
set_pev(entityPEV_FLARE_COLORrgb// Establecer color bengala en la entidad granada lanzada
        
}
    } 

terminado eso nos dirigimos a
Código PHP:
public fw_ThinkGrenade(entity

debajo de
Código PHP:
case NADE_TYPE_FROST// Frost Grenade / tipo de granada frost ( hielo )
    
{
        
frost_explode(entity// entidad dela frost ( hielo )
    


colocamos la nuestra
Código PHP:
case NADE_TYPE_CAMPO// Bubble Grenade / tipo de bomba bubble ( campo )
    
{
        
bubble_explode(entity// llamamos a la entidad del campo
    


y esto lo ponen al final del zp

Código PHP:
// Bubble Grenade Explosion
public bubble_explode(id)
{
    
// Get origin
    
static Float:originF[3// originF para llamar la entidad de create_blast4
    
pev(idpev_originoriginF// ...
    
    // Create Blast
    
create_blast4(originF// entidad de los anillos de explocion
    
    
new attacker // variable attacker ( ataque )
    
attacker pev(idpev_owner)
    
    
g_bubble_bomb[attacker] = false // variable de la bomba, seteamos en falso
    
    
set_pcvar_num(cvar_flaregrenades,1// tomamos las cvar de la flare, para usarla como activador y desactivador de esta bomba.
    
    // Create entitity
    
new iEntity create_entity("info_target"// creamo la entidad con su determinado objetivo
    
    
if(!is_valid_ent(iEntity)) // determinamos que la entidad esta en false
        
return PLUGIN_HANDLED // tramitamos nuevamente
    
    
new FloatOrigin[3// origen
    
entity_get_vector(idEV_VEC_originOrigin)
    
    
entity_set_string(iEntityEV_SZ_classnameentclas// llamamos ala clase de entidad
    
    
entity_set_vector(iEntity,EV_VEC_originOrigin// no se que es
    
entity_set_model(iEntity,model// modelo dela burbuja
    
entity_set_int(iEntityEV_INT_solidSOLID_TRIGGER// no se que es
    
entity_set_size(iEntityFloat: {-110.0, -110.0, -110.0}, Float: {110.0110.0110.0}) // size de la entidad ( campo ) osea el tamaño
    
entity_set_int(iEntityEV_INT_renderfxkRenderFxGlowShell// le damos el glow
    
entity_set_int(iEntityEV_INT_rendermodekRenderTransAlpha// hacemos que sea transparente
    
entity_set_float(iEntityEV_FL_renderamt50.0// le damos la intensidad
    
    // Colored Aura / aura cuando explota la granada
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_DLIGHT// aura
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x position
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y position
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z position
    
write_byte(15// radius / radio
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(2// life
    
write_byte(0// decay rate / desintegración de la tasa
    
message_end() // cerramos la entidad
    
    #if defined RANDOM_COLOR // color por default
    
if(is_valid_ent(iEntity)) // entidad valida
    
{
        new 
Float:vColor[3// variable vColor defaul / por defecto
        
        
for(new i3i++) // nose que es
            
vColor[i] = random_float(0.0255.0// color r, g, b
        
        
entity_set_vector(iEntityEV_VEC_rendercolorvColor// el glow de la burbuja
    
}
    
#endif

    #if defined ONE_COLOR
    
entity_set_vector(iEntityEV_VEC_rendercolorcolour_force_shield// declaramos el color cuztomizable al principio
    #endif
    
    #if defined CAMPO_TASK
    
set_task(60.0"DeleteEntity"iEntity// tiempo que demora en removerse el campo
    #endif
    
    
return PLUGIN_CONTINUE;
}

// Bubble Grenade: Yellow Blast
create_blast4(const Float:originF[3])
{
    
// Smallest ring / anillo de explcion 1
    
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_exploSpr// sprite de los anillos
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
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_exploSpr// sprite
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
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_exploSpr// sprite
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
message_end()
}

// Touch bomb bubble
public entity_touch(touchedtoucher// entidad cuando un zombie o nemesis la toca
{
    
    if(
g_zombie[toucher] || g_nemesis[toucher]) // los nemesis y zombies no pueden pasar
    
{
        new 
Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power get_pcvar_float(cvar_bubblepush// intensidad de rechazo
        
        
pev(touchedpev_originpos_ptr// nose que es
        
pev(toucherpev_originpos_ptd// nose que es
        
        
for(new 03i++)
        {
            
pos_ptd[i] -= pos_ptr[i// nose que es
            
pos_ptd[i] *= push_power // poder cuando lo tocamos y nos rechaza
        
}
        
set_pev(toucherpev_velocitypos_ptd// velocidad del rechazo
        
set_pev(toucherpev_impulsepos_ptd// impulso del rechazo
    
}
}

// Hook bubble bomb
public hook_curwpn(id)
{
    if(!
is_user_alive(id)) // cliente muerto no recibe =D
        
return PLUGIN_CONTINUE;
    
    if(
g_bubble_bomb[id] && !g_zombie[id]) // la bomba solo la puede adquirir un humano
    
{
        new 
wID read_data(2)
        if(
wID == CSW_SMOKEGRENADE// toma el lugar de la smoke grenade
            
set_pev(idpev_viewmodel2model_grenade// modelo de la grana
    
}
    
    return 
PLUGIN_CONTINUE;
}

// Give bubble item / hacemos que nos de el campo
public give_item_bubble(id)
{
    
g_bubble_bomb[id] = true // seteamos la variable a true
    
give_item(id,"weapon_smokegrenade"// le pedimos una smoke ya que el campo la remplaza
}

// Remove Entity / removemos la entidad con el task
public DeleteEntity(entity)
{
    if(
is_valid_ent(entity )) // hacemos valida la entidad
        
remove_entity(entity// la removemos...



AHORA AQUI PASO A PONER LO QUE VOY A CAMBIAR Y CORREGIR UNOS DETALLES Y EXPLICAR ALGUNAS COSAS

PRIMERO: al tutorial le falto agregar la cvar que empuja a los zombies de el campo de fuerza..

para eso nos vamos ah

Código PHP:
// CVAR pointers 

y en cualquien parte agregamos

Código PHP:
cvar_bubblepush

OJO: si la van a poner recuerden ponerle la "," "COMA" al final si no la ponen de ultima, si la ponen de ultima bueno entonces ya no le pongan la coma.

SEGUNDO: en la parte de
Código PHP:
else if (equal(model[7], "w_sm"4) && get_pcvar_num(cvar_flaregrenades)) 
al tuto le falto cerrar una "}" "LLAVE"

TENEMOS:

Código PHP:
// Set flare color on the thrown grenade entity
            
set_pev(entityPEV_FLARE_COLORrgb// Establecer color bengala en la entidad granada lanzada
        
}
    } 

y tiene que ser
Código PHP:
// Set flare color on the thrown grenade entity
            
set_pev(entityPEV_FLARE_COLORrgb// Establecer color bengala en la entidad granada lanzada
        
}
    }  


OJO: Esto que puse solo es la ultima linea de ese if. obviamente no lo van a poner solo es, solo es referencial para que sepan que hay va la otra llave!

TERCERO: en la parte de
Código PHP:
case NADE_TYPE_CAMPO// Bubble Grenade / tipo de bomba bubble ( campo )
    
{
        
bubble_explode(entity// llamamos a la entidad del campo
    


yo hice este cambio aki porq al tirar la granada rebotaba mas de una vez y salian mas de 1 forze. entonces ponemos

Código PHP:
case NADE_TYPE_CAMPO// Bubble Grenade / tipo de bomba bubble ( campo )
    
{
        
bubble_explode(entity// llamamos a la entidad del campo
        
return HAM_SUPERCEDE;
    } 

ACLARACIONES.

PRIMERO:

Para cambiar la fuerza con la que la FORZE, BURBUJA, CAMPO como le quieran llamar rechaza a los zombies. tienen que buscar esta linea.

Código PHP:
cvar_bubblepush register_cvar("zp_bubble_push""100.0"

cambian el 100.0 por el numero que se le valla a asignar, no recomentaria menos de "1".

SEGUNDO: Para que la granada funcione tienen que tener activada la bomba de luz. yo tenia el problema que tenia todo bien. pero como tenia la granada de luz desactivada no me servia.

TERCERO: Si quieren tener mas de 1 burbuja en sus manos y que sirvan las 2 como burbujas como deveria ser tienen que ir ah

Código PHP:
g_bubble_bomb[attacker] = false 

y eliminar esto

Código PHP:
new attacker // variable attacker ( ataque )
    
attacker pev(idpev_owner)
    
    
g_bubble_bomb[attacker] = false // variable de la bomba, seteamos en falso 

lo que hace eso es que cada vez que el "ATACANTE" usa la burbuja se setea a ella misma en falso. por lo tanto si nos queda otra granada ya no serviria como burbuja porque al usar la otra nos pondria la restante en falso.

si quieres cambiar el tiempo de duracion de la granada dirigete a

Código PHP:
set_task(60.0"DeleteEntity"iEntity

y cambia el "60.0" por el tiempo que tu quieres que dure la granada.


ACALARACION


NO ME PREGUNTEN COMO LA PONEN EN EXTRA ITEMS PORQUE NO SE COMO HACERLO. RECIEN INTENTE HACERLO Y ME TIRO UN ERROR 050: INVALID RANGE. QUE NO SE QUE ES.

Espero les sirva. si tienen alguna duda en cuando a algo solo haganlo saver. si se me paso algo por alto porfavor comunicarse conmigo.

Adios. Nothingdohere

Tenes una pentium 4.. ami no me engañas
(Este mensaje fue modificado por última vez en: 15/04/2014 11:30 PM por alangomez2.)
15/04/2014 12:32 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
player wii solider Sin conexión
Miembro


Mensajes: 63
Registro en: Nov 2013
Reputación: 0
Mensaje: #2
RE: [RE][TUT]Campo de Fuerza(bubble)
buen tuto :3 ya lo tenia igual jijiji

Código PHP:
------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------- [ 
TUTORIAL CAMPO DE FUERZA] [ CODE BY LUCAS_7_94 ] [ ALLIED MODDERS ] ------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------

#define ONE_COLOR // color de la burbuja.
#define CAMPO_TASK // task = cuanto dura el campo de fuerza y lo elimina.

//#define RANDOM_COLOR // color por default.

#if defined ONE_COLOR
new Float:colour_force_shield[3] = { 255.0 255.0 255.0 // color de la burbuja ( red, gree, blue ).
#endif

new bool:g_bubble_bomb[33// variable con un bool del campo
new const model_grenade[] = "models/zombie_plague/v_auragren.mdl" // model "v_".
new const model[] = "models/zombie_plague/aura8.mdl" // model de la burbuja.
new const w_model[] = "models/zombie_plague/w_aura.mdl" // model "w_".
new const entclas[] = "campo_grenade_forze" // nombre de la clase de entidad.  

---------------------------

public 
plugin_precache() // es en donde registramos los skins, sounds, sprites, etc

---------------------------

    
engfunc(EngFunc_PrecacheModelmodel_grenade// precacheamos el model "v_".
    
engfunc(EngFunc_PrecacheModelmodel// precacheamos el model de la burbuja.
    
engfunc(EngFunc_PrecacheModelw_model// precacheamos el model "w_". 
    
---------------------------

public 
plugin_init() // inicio del plugin

---------------------------

    
register_clcmd("BUBBLEBOMB""give_item_bubble"// podemos llamar a la bomba. console_cmd(id, "BUBBLEBOMB")
    
register_event("CurWeapon""hook_curwpn""be""1=1""2!29");
    
cvar_bubblepush register_cvar("zp_bubble_push""100.0"// es la cvar, que al tocar al campo nos retira de el.
    
register_touch(entclas"player""entity_touch"// nose bien que es, por lo que entiendo llamamos a la entidad que rechaza los zm.

---------------------------

// pev_ field used to store custom nade types and their values 
   // donde tenemos los timpos de granadas
   
---------------------------

const 
NADE_TYPE_FLARE 4444 // es la flare grenade, es decir su tipo

---------------------------

const 
NADE_TYPE_CAMPO 5555 // es el nuevo tipo de grenade que vamos a crear, es decir el campo

---------------------------

public 
fw_SetModel(entity, const model[]) // un forward, donde contiene algunas caracteristicas de las bombas

---------------------------

else if (
equal(model[7], "w_sm"4) && get_pcvar_num(cvar_flaregrenades)) // aca especifica en que granada entraran, por ejemplo: Hegren, Flash, Smokegren

---------------------------

   else if (
equal(model[7], "w_sm"4) && get_pcvar_num(cvar_flaregrenades)) // aca especifica en que granada entraran, por ejemplo: Hegren, Flash, Smokegren / con una cvar de activacion o desactivacion
    
{
        if(!
g_zombie[pev(entitypev_owner)] && g_bubble_bomb[pev(entitypev_owner)]) // aca determinamos que la bomba es solo para humanos.
        
{
            
fm_set_rendering(entitykRenderFxGlowShell255255255kRenderNormal16// aca determinamos el color de glow de la granada.
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY// ni idea.
            
write_byte(TE_BEAMFOLLOW// aca determinamos que es un trail la entidad
            
write_short(entity// declaramos que es una entidad
            
write_short(g_trailSpr// el sprite correspondiente al trail.
            
write_byte(10// life. ( nose que es )
            
write_byte(10// width: esto quiere decir el ancho del trail
            
write_byte(255// red: color rojo
            
write_byte(255// green: color verde
            
write_byte(255// blue: color azul
            
write_byte(500// brightness: brillo
            
message_end()
            
            
set_pev(entitypev_flTimeStepSoundNADE_TYPE_CAMPO// tipo de bomba ( NADE_TYPE_CAMPO )
            
            
entity_set_model(entityw_model// llamamos al model de la granada en el piso "w_".
        
}
        else
        {
            
// Make the flare color
            
static rgb[3]
            switch (
get_pcvar_num(cvar_flarecolor))
            {
                case 
0// white
                
{
                    
rgb[0] = 255 // red: rojo
                    
rgb[1] = 255 // green: verde
                    
rgb[2] = 255 // blue: azul
                
}
                case 
1// red
                
{
                    
rgb[0] = random_num(50,255// rer: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[1] = // green: verde
                    
rgb[2] = // blue: azul
                
}
                case 
2// green
                
{
                    
rgb[0] = // red: rojo
                    
rgb[1] = random_num(50,255// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[2] = // blue: azul
                
}
                case 
3// blue
                
{
                    
rgb[0] = // red: rojo
                    
rgb[1] = // green: verde
                    
rgb[2] = random_num(50,255// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                
}
                case 
4// random (all colors): quiere decir que pueden salir varios colores por que los combina
                
{
                    
rgb[0] = random_num(50,200// red: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[1] = random_num(50,200// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                    
rgb[2] = random_num(50,200// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                
}
                case 
5// random (r,g,b): al azar entre rojo, verde, azul
                
{
                    switch (
random_num(13))
                    {
                        case 
1// red
                        
{
                            
rgb[0] = random_num(50,255// red: rojo con un random_num, eso quiere decir que saldra desde el 50 al 255
                            
rgb[1] = // green: verde
                            
rgb[2] = // blue: azul
                        
}
                        case 
2// green
                        
{
                            
rgb[0] = // red: rojo
                            
rgb[1] = random_num(50,255// green: verde con un random_num, eso quiere decir que saldra desde el 50 al 255
                            
rgb[2] = // blue: azul
                        
}
                        case 
3// blue
                        
{
                            
rgb[0] = // red: rojo
                            
rgb[1] = // green: verde
                            
rgb[2] = random_num(50,255// blue: azul con un random_num, eso quiere decir que saldra desde el 50 al 255
                        
}
                    }
                }
            }
            
            
// Give it a glow / toma el glow color, si la bomba fuese de color rojo, el glow de la grana sera rojo...
            
fm_set_rendering(entitykRenderFxGlowShellrgb[0], rgb[1], rgb[2], kRenderNormal16);
            
            
// And a colored trail / le damos un trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// entidad del trail
            
write_short(entity// decimos que es una entidad
            
write_short(g_trailSpr// sprite correspondiente al trail
            
write_byte(10// life ( nose que es )
            
write_byte(10// width: ancho del trail
            
write_byte(rgb[0]) // red: rojo -- depende de que color sea la bomba (rgb[0] = 1)
            
write_byte(rgb[1]) // green: verde -- depende de que color sea la bomba (rgb[1] = 2)
            
write_byte(rgb[2]) // blue: azul -- depende de que color sea la bomba (rgb[2] = 3)
            
write_byte(200// brightness: brillo del trail
            
message_end() // terminamos la entidad
            
            // Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_FLARE// tipo de granada ( flare bomb )
            
            // Set flare color on the thrown grenade entity
            
set_pev(entityPEV_FLARE_COLORrgb// Establecer color bengala en la entidad granada lanzada
        
}
    }
    
---------------------------

public 
fw_ThinkGrenade(entity// otro forward que nos llama a la entidad de cada tipo de granada

---------------------------

    case 
NADE_TYPE_FROST// Frost Grenade / tipo de granada frost ( hielo )
    
{
        
frost_explode(entity// entidad dela frost ( hielo )
    
}

---------------------------

    case 
NADE_TYPE_CAMPO// Bubble Grenade / tipo de bomba bubble ( campo )
    
{
        
bubble_explode(entity// llamamos a la entidad del campo
    
}
    
---------------------------

// Bubble Grenade Explosion
public bubble_explode(id)
{
    
// Get origin
    
static Float:originF[3// originF para llamar la entidad de create_blast4
    
pev(idpev_originoriginF// ...
    
    // Create Blast
    
create_blast4(originF// entidad de los anillos de explocion
    
    
new attacker // variable attacker ( ataque )
    
attacker pev(idpev_owner)
    
    
g_bubble_bomb[attacker] = false // variable de la bomba, seteamos en falso
    
    
set_pcvar_num(cvar_flaregrenades,1// tomamos las cvar de la flare, para usarla como activador y desactivador de esta bomba.
    
    // Create entitity
    
new iEntity create_entity("info_target"// creamo la entidad con su determinado objetivo
    
    
if(!is_valid_ent(iEntity)) // determinamos que la entidad esta en false
        
return PLUGIN_HANDLED // tramitamos nuevamente
    
    
new FloatOrigin[3// origen
    
entity_get_vector(idEV_VEC_originOrigin)
    
    
entity_set_string(iEntityEV_SZ_classnameentclas// llamamos ala clase de entidad
    
    
entity_set_vector(iEntity,EV_VEC_originOrigin// no se que es
    
entity_set_model(iEntity,model// modelo dela burbuja
    
entity_set_int(iEntityEV_INT_solidSOLID_TRIGGER// no se que es
    
entity_set_size(iEntityFloat: {-110.0, -110.0, -110.0}, Float: {110.0110.0110.0}) // size de la entidad ( campo ) osea el tamaño
    
entity_set_int(iEntityEV_INT_renderfxkRenderFxGlowShell// le damos el glow
    
entity_set_int(iEntityEV_INT_rendermodekRenderTransAlpha// hacemos que sea transparente
    
entity_set_float(iEntityEV_FL_renderamt50.0// le damos la intensidad
    
    // Colored Aura / aura cuando explota la granada
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_DLIGHT// aura
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x position
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y position
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z position
    
write_byte(15// radius / radio
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(2// life
    
write_byte(0// decay rate / desintegración de la tasa
    
message_end() // cerramos la entidad
    
    #if defined RANDOM_COLOR // color por default
    
if(is_valid_ent(iEntity)) // entidad valida
    
{
        new 
Float:vColor[3// variable vColor defaul / por defecto
        
        
for(new i3i++) // nose que es
            
vColor[i] = random_float(0.0255.0// color r, g, b
        
        
entity_set_vector(iEntityEV_VEC_rendercolorvColor// el glow de la burbuja
    
}
    
#endif

    #if defined ONE_COLOR
    
entity_set_vector(iEntityEV_VEC_rendercolorcolour_force_shield// declaramos el color cuztomizable al principio
    #endif
    
    #if defined CAMPO_TASK
    
set_task(60.0"DeleteEntity"iEntity// tiempo que demora en removerse el campo
    #endif
    
    
return PLUGIN_CONTINUE;
}

// Bubble Grenade: Yellow Blast
create_blast4(const Float:originF[3])
{
    
// Smallest ring / anillo de explcion 1
    
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_exploSpr// sprite de los anillos
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
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_exploSpr// sprite
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
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_exploSpr// sprite
    
write_byte(0// startframe / fotograma inicial
    
write_byte(0// framerate / imágenes por segundo
    
write_byte(4// life
    
write_byte(60// width / ancho
    
write_byte(0// noise / ruido
    
write_byte(255// red: rojo
    
write_byte(255// green: verde
    
write_byte(255// blue: azul
    
write_byte(200// brightness / brillo
    
write_byte(0// speed / rapidez
    
message_end()
}

// Touch bomb bubble
public entity_touch(touchedtoucher// entidad cuando un zombie o nemesis la toca
{
    
    if(
g_zombie[toucher] || g_nemesis[toucher]) // los nemesis y zombies no pueden pasar
    
{
        new 
Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power get_pcvar_float(cvar_bubblepush// intensidad de rechazo
        
        
pev(touchedpev_originpos_ptr// nose que es
        
pev(toucherpev_originpos_ptd// nose que es
        
        
for(new 03i++)
        {
            
pos_ptd[i] -= pos_ptr[i// nose que es
            
pos_ptd[i] *= push_power // poder cuando lo tocamos y nos rechaza
        
}
        
set_pev(toucherpev_velocitypos_ptd// velocidad del rechazo
        
set_pev(toucherpev_impulsepos_ptd// impulso del rechazo
    
}
}

// Hook bubble bomb
public hook_curwpn(id)
{
    if(!
is_user_alive(id)) // cliente muerto no recibe =D
        
return PLUGIN_CONTINUE;
    
    if(
g_bubble_bomb[id] && !g_zombie[id]) // la bomba solo la puede adquirir un humano
    
{
        new 
wID read_data(2)
        if(
wID == CSW_SMOKEGRENADE// toma el lugar de la smoke grenade
            
set_pev(idpev_viewmodel2model_grenade// modelo de la grana
    
}
    
    return 
PLUGIN_CONTINUE;
}

// Give bubble item / hacemos que nos de el campo
public give_item_bubble(id)
{
    
g_bubble_bomb[id] = true // seteamos la variable a true
    
give_item(id,"weapon_smokegrenade"// le pedimos una smoke ya que el campo la remplaza
}

// Remove Entity / removemos la entidad con el task
public DeleteEntity(entity)
{
    if(
is_valid_ent(entity )) // hacemos valida la entidad
        
remove_entity(entity// la removemos...
}

------------------------------------------------------------------------------------------------------------------------------------------------------------------
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/ 

Cargando...
15/04/2014 06:06 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Nike Sin conexión
Miembro


Mensajes: 208
Registro en: Nov 2013
Reputación: 4
Mensaje: #3
RE: [RE][TUT]Campo de Fuerza(bubble)
y si te digo que lo mismo tira error al compilar por que hay zp que no vienen con las incluides engine y fun, por que vienen con fakemeta...

[Guia] Granada de Droga [actulizado 01/04/14]
[Guia] Cambio de leap zp 4.2 a 4.3

Zp 4.2 Extincion [Beta+Lvl] Edicion 0.1 (%95) terminado
15/04/2014 09:44 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
kirito Sin conexión
Miembro Sr.


Mensajes: 474
Registro en: Oct 2013
Reputación: 4
Mensaje: #4
RE: [RE][TUT]Campo de Fuerza(bubble)
Como dice nike agrega esto para los recién llegados al foro.
Código PHP:
#include <engine>
#include <fun> 

Mientras creces maduras y luego vez que dejas de ser un bebe y quieres aprender,ayudar y no ser egoísta.
15/04/2014 11:00 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
RauliTop Sin conexión
Miembro Héroe


El protector 1k
Mensajes: 1,961
Registro en: Oct 2013
Reputación: 36
Mensaje: #5
RE: [RE][TUT]Campo de Fuerza(bubble)
Código PHP:
set_task(60.0"DeleteEntity"iEntity

grandes problemas te va a traer eso.

(17/04/2015 03:36 PM)Neeeeeeeeeel.- escribió:  No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
15/04/2014 04:33 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
alangomez2 Sin conexión
Miembro


Mensajes: 179
Registro en: Feb 2014
Reputación: 0
Mensaje: #6
RE: [RE][TUT]Campo de Fuerza(bubble)
(15/04/2014 04:33 PM)RauliTop escribió:  
Código PHP:
set_task(60.0"DeleteEntity"iEntity

grandes problemas te va a traer eso.

como seria tu eres el, Experto....

Tenes una pentium 4.. ami no me engañas
15/04/2014 05:49 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
roccoxx Sin conexión
Miembro Destacado


Plugin developer Trebol purpura 1k
Mensajes: 1,159
Registro en: Oct 2013
Reputación: 18
Mensaje: #7
RE: [RE][TUT]Campo de Fuerza(bubble)
(15/04/2014 04:33 PM)RauliTop escribió:  
Código PHP:
set_task(60.0"DeleteEntity"iEntity

grandes problemas te va a traer eso.

callate raul no pases mi code.

futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
15/04/2014 08:01 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
alangomez2 Sin conexión
Miembro


Mensajes: 179
Registro en: Feb 2014
Reputación: 0
Mensaje: #8
RE: [RE][TUT]Campo de Fuerza(bubble)
(15/04/2014 08:01 PM)roccoxx escribió:  
(15/04/2014 04:33 PM)RauliTop escribió:  
Código PHP:
set_task(60.0"DeleteEntity"iEntity

grandes problemas te va a traer eso.

callate raul no pases mi code.

Olle pero que GENEROSO estas Roccoxx xd!

Tenes una pentium 4.. ami no me engañas
15/04/2014 08:52 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #9
RE: [RE][TUT]Campo de Fuerza(bubble)
Me gusto tu guia che , muchas gracias por traerlo
ya que el de fail no funcionaba (creo) ya ni me cuerdo


(15/04/2014 08:01 PM)roccoxx escribió:  
(15/04/2014 04:33 PM)RauliTop escribió:  
Código PHP:
set_task(60.0"DeleteEntity"iEntity

grandes problemas te va a traer eso.

callate raul no pases mi code.

El que come y no convida tiene un sapo en la barriga
Jeje

saludos

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
15/04/2014 08:55 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Blackletter Sin conexión
Miembro


Mensajes: 146
Registro en: Nov 2013
Reputación: 1
Mensaje: #10
RE: [RE][TUT]Campo de Fuerza(bubble)
Código PHP:
const NAME_TYPE_CAMPO 5555 

---------------------------------->

Código PHP:
const NADE_TYPE_CAMPO 5555 

Image
15/04/2014 08:59 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS