Raised This Month: $51 Target: $400
 12% 

[ZP][TUT] Temp Entity (crear efectos)


  
 
 
Thread Tools Display Modes
Author Message
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 09-20-2010 , 16:35   [ZP][TUT] Temp Entity (crear efectos)
#1

hola,este es mi primer tutorial y lo hare sobre Temp Entity.

¿ Que Es Temp Entity ?

R: Los temp entity, se usan para poder crear efectos, ya sea el "aura",fuego, hielo,entre otras que hay en zombie plague.

¿ Para que se puede usar Temp Entity ?

R: como dije anteriormente,sirve para crear efectos,ya sea una explosion, color de las balas, aura del survivor o nemesis, etc.

Temp Entity, en gran variedad de plugin se usa.

EJEMPLO :

Mi Katana = particulas que se unen.

granadas [ZP] efecto de fuego,el color azul que rodea al zombie CONGELADO, o el sector que ilumina al granada de luz.

Boomer = su bomito, o la explosion cuando muere

Gauss = efecto de particulas de sangre al matar al zombie, laser que sale de la gauss,etc

Tau Cannon = particulas que se estrellan con la pared,laser que sale del Tau Cannon, etc

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

¿ Como puedo aprender a usar estos Efectos?

R: esto no es facil, pero tampoco dificil,empesemos :

veremos algo muy importante,los origin.

los origins son para saber,en que parte se hara el efecto,ejemplo :

PHP Code:
  new nuevo_origin[3]  // creamos el nuevo origin
  
get_user_origin(idnuevo_origin4// aca lo definimos,es decir //donde ira,en este caso,ya que es "4" se hara al frente del player, y NO en //el player 
el "4" y "3" vendria siendo al frente del player,osea, a una distancia lejana.
el "2" y "1" se haria EN EL PLAYER que esta ejecutando el plugin, (esto tambien depende en que evento se haga,por que si se hace en un evento de TAKEDAMAGE, el efecto se haria en el que recive el daño,depende como lo configuren ustedes,pero si lo hacemos cuando compra el plugin,el efecto se hara en el player.

EL "[3]" significa cuantos origin se usaran.esto lo entenderan mas adelante.

aqui les dejo un link de lo explicado anteriormente :

http://www.amxmodx.org/funcwiki.php?...igin&go=search

aqui les dejo el ejemplo :

PHP Code:
  new nuevo_origin[3]  // creamos el nuevo origin
  
get_user_origin(idnuevo_origin4// aca lo definimos.
   
  // aca el efecto ya que es "4",o si es 3 se hara frente al player
  
-------------------------------------------------------------------------
  new 
nuevo_origin[3]  // creamos el nuevo origin
  
get_user_origin(idnuevo_origin1// aca lo definimos.
   
  // aca es 1,entonces el efecto se hara EN EL PLAYER. 
tambien,donde explicare mas adelante, el nuevo_origin se usa al comienzo de mensage.vean mas adelante.

bueno,ahora pasemos a los efectos, todos los efectos llevan antepuesto
"TE_" y que es TE_? TempEntity_ . abreviado.bueno

vamos a include, y abrir message_const.inc. hay apareceran efectos como :

PHP Code:
  #define    TE_EXPLOSION                3      
  // write_byte(TE_EXPLOSION)
  // write_coord(position.x)
  // write_coord(position.y)
  // write_coord(position.z)
  // write_short(sprite index)
  // write_byte(10)
  // write_byte(10)
  // write_byte(20) 
obiamente, al "TE_EXPLOSION" se le sacan todos los // y el define, y los nombres que aparecen,se cambian por numeros (adentro del parentisis dice que indica)

editando el TE_EXPLOSION visto antes, algo asi quedaria,

pero con esto no basta en para hacer el efecto,

PHP Code:
  write_byte(TE_EXPLOSION)   
  
write_coord(nuevo_origin[0]) // acuerdense de los origin definidos antes
  
write_coord(nuevo_origin[1]) // acuerdense de los origin definidos antes
  
write_coord(nuevo_origin[2]) // acuerdense de los origin definidos antes
  
write_short(sprite index)   
  
write_byte(90)       
  
write_byte(60)       
  
write_byte(10
ahora tendremos que EMPEZAR y TERMINAR el mensage. ( a estos efectos se les llama "mensages". para empesar y terminar el mensaje,se hara esto :

PHP Code:
  message_begin(MSG_BROADCASTSVC_TEMPENTITY)  // empezar
  
message_end() // terminar 
quedaria ==>

PHP Code:
  message_begin(MSG_BROADCASTSVC_TEMPENTITY)
  
write_byte(TE_EXPLOSION)   
  
write_coord(nuevo_origin[0]) // acuerdense de los origin definidos antes
  
write_coord(nuevo_origin[1]) // acuerdense de los origin definidos antes
  
write_coord(nuevo_origin[2]) // acuerdense de los origin definidos antes
  
write_short(sprite index)   
  
write_byte(90)       
  
write_byte(60)       
  
write_byte(10)   
  
message_end() 
bueno,explicando lo anterior,para empezar el mensage,se usa message_begin. y para terminarlo message_end.
donde dice nuevo_origin[0],[1] o [2], se definia el nuevo origin en un grupo de 3,osea

PHP Code:
  new nuevo_origin[3// el grupo de 3.
  
get_user_origin(idnuevo_origin4// definiendo el origen
   
  
message_begin(MSG_BROADCASTSVC_TEMPENTITYnuevo_origin//empieza
  
write_byte(TE_EXPLOSION)   // el TE_
  
write_coord(nuevo_origin[0]) // aca se pone el nuevo_origin,como 1 parte
  
write_coord(nuevo_origin[1]) // aca se pone el nuevo_origin,como 2 parte
  
write_coord(nuevo_origin[2]) // aca se pone el nuevo_origin,como 3 parte
  
write_short(sprite index)   //spite
  
write_byte(90)       // propiedad,podria ser velocidad,angulo,duracion,color,etc
  
write_byte(60)       // propiedad,podria ser velocidad,angulo,duracion,color,etc
  
write_byte(10)   // propiedad,podria ser velocidad,angulo,duracion,color,etc
  
message_end()  // Termina. 
al comienzo del mensaje, le agrege despues de SVC_TEMPENTITY, nuevo_origin) que tambien se define el origin hay. bueno, el codigo de denante estaria el origin,que seria donde se ORIGINA el efecto,y el efecto.
recuerden,hay distintos tipos de TE_
ejemplo :

TE_LANGERFUEL // nubes que se dispersan en el cielo
TE_EXPLOSION // explosion que se origina.
TE_IMPLOSION // particulas que se reunen un un punto
TE_SPRITETRAIL // distintos "circulos" que se dispersan por alrededor.

entre muchos otros,cada uno tiene sus propiedades ( ya sea velocidad,tamaño,colores,etc),con sus respectivos efectos.

RECUERDEN DE VER MESSAGE_CONST.INC. hay estan todos los efectos.

Ahora veremos,como enlazar un evento con un efecto.
osea,a lo que me refiero,como poder hacer que en el evento TAKEDAMAGE. se haga un efecto.

primero tenemos el codigo de damage

PHP Code:
  public plugin_init()
  {
  
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
  }

  public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
  {
              if(!
is_user_connected(attacker) || !is_user_connected(victim) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)
                          return 
HAM_IGNORED
              
              
if (g_variable[attacker] == CSW_ELARMA)
              {          
                          static 
Float:originF[3
                          
pev(victimpev_originoriginF)
  
// aca el code del damage,etc.
                          
                                     
efectos(originF)
              }
  } 
Explicando lo anterior, donde dice g_variable sera la variable,de nuestra arma,o personaje, donde dice CSW_ELARMA,sera el csw_ donde se pone por ejemplo CSW_AWP, CSW_DEAGLE,etc. Siempre,si queremos llamar al public de un efecto,se coloca :

PHP Code:
  static Float:originF[3
  
pev(victimpev_originoriginF)
                          
  
efectos(originF
Acuerdense que el originF puede ser por cualquier otro nombre,pero en el efectos(originF) se define mas abajo el origin.
Si queremos que el efecto se haga al matar a alguien,ponemos :

PHP Code:
  if (g_variable[attacker] == CSW_ELARMA)
              {          
                          static 
Float:originF[3
                          
pev(victimpev_originoriginF)
  
// aca el code del damage,etc.
                          
                                     
efectos(originF)
              } 
Le ponemos el g_variable como atacante,entonces,al matar a algun enemigo,el efecto se hara en el player,osea el que mato si queremos que el efecto se haga en el enemigo,ponemos el g_variable como victima,osea :

PHP Code:
  if (g_variable[victim] == CSW_ELARMA)
              {          
                          static 
Float:originF[3
                          
pev(victimpev_originoriginF)
  
efectos_muerte(originF)
              } 
Entonces hay estaria como atakante y como victima.
Ahora para hacer el efecto(originF) lo hacemos asi :

PHP Code:
  dead_efect(const Float:originF[3])
  {          
  new 
nuevo_origin[3]  // creando el nuevo origin
  
get_user_origin(idnuevo_origin4)  // puede ser 1,2,3,4.
   
  //aca el codigo de efecto,yo hare el anterior,te_explosion
   
          
message_begin(MSG_BROADCASTSVC_TEMPENTITYnuevo_origin)
          
write_byte(TE_EXPLOSION)    // TE_ Temp Entity
          
write_coord(nuevo_origin[0]) //el origin
          
write_coord(nuevo_origin[1]) //el origin
          
write_coord(nuevo_origin[2]) //el origin
          
write_short(sprite)    //sprite index
          
write_byte(60)     // no me acuerdo, message_const.inc
          
write_byte(20)     // no me acuerdo, message_const.inc   
          
write_byte(20)    // no me acuerdo, message_const.inc
          
message_end()   // Terminando el mensage,osea efecto
  

Y listo,el efecto se hara,simple,pero hay que saber usarlos.
Tambien podemos hacer los efectos en otros eventos,ya sea :

Ham_TakeDamage
Ham_Weapon_PrimaryAttack

Etc.

Ahora veremos como puede cambiar un efecto al cambiar de sprite.
Por ejemplo,en el TE_EXPLOSION. Si yo pongo un sprite de fuego,ejemplo :

fire.spr ( en la carpeta sprites)

se hara FUEGO en el lugar,o player,pero si pongo un sprite como

exoplode1.spr ( carpeta sprites)

se hara una explosion,si pongo un sprite de rayo como :

zbeam1 (carpeta sprites)

se hara un rayo ( como mi SLG)

y asi, dependiendo del sprite.para poder usar el sprite hacemos lo siguiente :

PHP Code:
  new sprite_nuevo  // la variable del sprite
   
  
plugin_precache()
  {
  
sprite_nuevo precache_model("sprites/explode1.spr")
  }
   
  public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
  {
              if(!
is_user_connected(attacker) || !is_user_connected(victim) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)  // los IF
                          
return HAM_IGNORED 
              
              
if (g_variable[attacker] == CSW_ARMA)
              {          
                          static 
Float nuevo_origin [3// el float
                          
pev(victimpev_originnuevo_origin// aca definimos el origin
  // code de damage
                          
dead_efect(nuevo_origin)  // el efecto.
              
}
  }
   
  
dead_efect(const Float:nuevo_origin[3])
  {          
  new 
nuevo_origin[3]  // creando el nuevo origin
  
get_user_origin(idnuevo_origin4)  // puede ser 1,2,3,4.
   
  //aca el codigo de efecto,yo hare el anterior,te_explosion
   
          
message_begin(MSG_BROADCASTSVC_TEMPENTITYnuevo_origin)
          
write_byte(TE_EXPLOSION)    // TE_ Temp Entity
          
write_coord(nuevo_origin[0]) //el origin
          
write_coord(nuevo_origin[1]) //el origin
          
write_coord(nuevo_origin[2]) //el origin
          
write_short(sprite_nuevo)    //sprite index aca seria la explosion
          
write_byte(60)     // no me acuerdo, message_const.inc
          
write_byte(20)     // no me acuerdo, message_const.inc   
          
write_byte(20)    // no me acuerdo, message_const.inc
          
message_end()   // Terminando el mensage,osea efecto
  

Y listo,hay estaria el efecto.recuerden que deben ser creativos para juntar efectos y sprites. Este metodo uso yo para crear los efectos.

Ahora para reforzar veamos otro evento que se pueden hacer efectos.
Veamos el evento :

RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_primer_atake", 1)

El weapon_ puede ser por cualquier,yo puse deagle,puede ser awp,scout,etc.

Ahora veamos esto :

PHP Code:
  Public plugin_init()
  {
  
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_deagle""fw_primer_atake"1)
  }
   
  
// Ya registramos el evento,ahora el public :
   
  
public fw_primer_atake(atack)
  {
              static 
id
              id 
get_pdata_cbase(atack//ejemplo
              
              
if(is_user_connected(id) && g_variable[id]) // la variable del arma o personaje
              
{          
                          new 
origin_nuevo[3]
                          
get_user_origin(idorigin_nuevo3)
                          
                          
message_begin(MSG_BROADCASTSVC_TEMPENTITYorigin_nuevo
                          
write_byte(TE_EXPLOSION)            
                          
write_coord(origin_nuevo [0]) 
                          
write_coord(origin_nuevo [1]) 
                          
write_coord(origin_nuevo [2]) 
                          
write_short(sprite index)          
                          
write_byte(90)             
                          
write_byte(60)             
                          
write_byte(30
                          
message_end()
  }
  } 
En este evento, indica donde IMPACTA la bala, entonces,aquí le agregamos un efecto,fijense en :

get_user_origin(id, origin_nuevo, 3)

el 3 y 4, vendria siendo que el efecto se hace en donde impacta la bala,ya que asi es el evento,pero si lo cambiamos por :

get_user_origin(id, origin_nuevo, 1)

1 o 2,el efecto aun que impacte la bala,se hara en el player.

Bueno,aquí termina mi tuto.adios

CREDITOS = Mister.Death,ya que el me enseño a crear efectos y usar Temp Entity.

PD : EN ESTE MOMENTO SIGUO EDITANDO EL TUTORIAL.
__________________

Last edited by xLeoNNN; 12-04-2011 at 13:42.
xLeoNNN is offline
Send a message via MSN to xLeoNNN
Raddish
BANNED
Join Date: Jul 2008
Location: Argentina
Old 09-20-2010 , 16:47   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#2

Parece bueno, deja alguna imagen o video.
Raddish is offline
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 09-20-2010 , 16:51   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#3

lo estoy editando,recien lo publique,ahora hare las imagenes. videos no puedo por que tengo que arreglar el pc :/
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
DJHD!
Veteran Member
Join Date: Dec 2009
Location: Santiago, Chile
Old 09-20-2010 , 23:50   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#4

Como dijo raddish se ve bueno, usar Temp Entity no es tan dificil solo saviendo lo basico ya uno save como se usan.
__________________
Quote:
Originally Posted by XINLEI View Post
Porque rocccos trata de ser el metalicross que nunca va a poder ser.
DJHD! is offline
Send a message via MSN to DJHD!
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 09-21-2010 , 00:04   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#5

exacto,yo no sabia nada,pero super lo basico umm,se crear efectos de todo tipo xD
pero como dije 1000 veces,gracias a mr.death xD
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
Old 09-21-2010, 00:22
Wazzon
This message has been deleted by Wazzon.
MisterDeath
BANNED
Join Date: Sep 2010
Location: pico pal q lee
Old 09-21-2010 , 10:06   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#6

Hey leon hagamos el tuto juntos, un megatuto de las temp entity...

Por cierto, buen tuto
MisterDeath is offline
Celeron
Senior Member
Join Date: Jul 2010
Location: Argentina - Mendoza
Old 09-21-2010 , 10:24   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#7

Realmente, esto es un tutorial.
De 10 maestro.
__________________
Celeron is offline
Send a message via MSN to Celeron
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 09-21-2010 , 14:25   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#8

wow,gracias xD no pense que seria tan bueno para ustedes,gracias mister.death por que si no mue ubieses enseñado no ubiera echo el tuto ni mis extra items xD,poco a poco lo ire editando,imagenes,etc.
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
Desktop
AlliedModders Donor
Join Date: Sep 2009
Location: C:\Users\Default\
Old 09-24-2010 , 17:03   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#9

Buen aporte (Y)
__________________
Massive Infection:: Piu-Games
Desktop is offline
MisterDeath
BANNED
Join Date: Sep 2010
Location: pico pal q lee
Old 09-24-2010 , 17:57   Re: [ES][ZP][TUT] Temp Entity (crear efectos)
#10

Quote:
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, nuevo_origin)
write_byte(TE_EXPLOSION) // TE_ Temp Entity
write_coord(nuevo_origin[0]) //el origin
write_coord(nuevo_origin[1]) //el origin
write_coord(nuevo_origin[2]) //el origin
write_short(sprite) //sprite index
write_byte(60) // no me acuerdo, message_const.inc
write_byte(20) // no me acuerdo, message_const.inc
write_byte(20) // no me acuerdo, message_const.inc
message_end() // Terminando el mensage,osea efecto
PHP Code:
 message_begin(MSG_BROADCASTSVC_TEMPENTITYnuevo_origin)
          
write_byte(TE_EXPLOSION)    // TE_ Temp Entity
          
write_coord(nuevo_origin[0]) //el origin
          
write_coord(nuevo_origin[1]) //el origin
          
write_coord(nuevo_origin[2]) //el origin
          
write_short(sprite)    //scprite a usar
          
write_byte(60)     // Tamaño
          
write_byte(20)     // FPS (imagenes por segundo)
          
write_byte(0)    // FLAGS
          
message_end()   // Terminando el mensage,osea efecto

//FLAGS

//#define TE_EXPLFLAG_NONE            0        // Creara la explosion con todos los detalles
//#define TE_EXPLFLAG_NOADDITIVE      1        //Dibujara el sprite opaco
//#define TE_EXPLFLAG_NODLIGHTS       2        // Elimina el efecto de luz
//#define TE_EXPLFLAG_NOSOUND         4        // No creara el sonido del cliente
//#define TE_EXPLFLAG_NOPARTICLES     8        // No creara particulas 
Ahy esta completo
MisterDeath is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 11:29.


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