InicioHazlo Tu MismoTutorial completo!: Como crear un char

Tutorial completo!: Como crear un char

Hazlo Tu Mismo8/16/2010


Usando El Temible Fighter Factory -FF-



Cuando uno abre el Fighter Factory por primera vez tiene la sensacion de estar perdido y de que nunca podra usar semejante programa. Sin embargo, al irse familiarizando con el,notaran que es muy sencillo y amigable (?) a la hora de ayudarnos.


Lo primero que nos pedira el FF es que elijamos en que Mugen queremos probar nuestro char. Para eso tenemos que ir a "opciones" que es el icono con una llave y un destornillador en la segunda barra de herramientas, al lado del que tiene el logo de windows y elegir cualquier mugen que usemos. No se preocupen que esto no afectara a ninguno de sus juegos. Ah, es importante que este Mugen todavia mantenga el "stage0".
Si no saben como buscar el Mugen le dan a "Buscar" en la ventana que se abre y rastrean el Mugen.

Una vez que hayamos cumplido con ese tramite, pasaremos a la creacion en si del char. Lo primero que tenemos que hacer es ir a "archivo--> plantillas- Elecbyte Player". Cuando hacemos eso pasaremos a "guardar todo" con el diskette grande que se ve en la segunda barra de herramientas.

Guardando el char

Esto es una de las partes más importantes de la creación, el guardado del Char. Para esto, una vez que apretamos en guardar todo y se nos abra el cuadro de texto, apretamos "subir un nivel" -el dibujo de la carpeta con una flechita para arriba- dos veces,hasta que veamos la carpeta "chars" clikeamos ahi.

ATENCION: Es importantisimo que para guardarlo crees una carpeta dentro de la carpeta "chars" con el nombre del personaje , por ej "Sora". abras esa carpeta y vuelvas a escribir el mismo nombre de la carpeta ,pero en el espacio de nombre.

Por ej,yo quiero crear a Sora, entonces dentro de la carpeta "chars" creo una que se llame "Sora" ,la abro y dentro de ella guardo el primer archivo con el mismo nombre osea "Sora" le doy guardar. En el cuadro que aparece elijo "Paleta compartida" y vuelvo a escribir Sora en la parte de nombre,le doy guardar, vuelvo a escribir Sora en la parte de nombre y le vuelvo a dar guardar, asi hasta que no me pida más archivos que guardar.

Si hicieron todo bien , tendrian que tener hasta ahora una carpeta dentro de la carpeta "chars" del fighter factory, que tenga el nombre del char y, dentro de ella, cinco archivos más con el nombre del personaje. Si es asi,sigan ,sino revisen que hicieron mal.



Construyendo el documento del char.




Asi como nosotros, un char debe tener una cedula o documento que de sus datos principales. Para que nuestro char obtenga esto debemos llenar un pequeño fornulario, al que accederemos pulsando un icono parecido al de los muñequitos del msn,que se encuentra en la segunda barra herramientas. Los datos que debemos completar son estos.

Nombre del luchador = Tiene que tener el mismo nombre que tiene la carpeta y los archivos del char, en mi caso "Sora"

Nombre del luchador en el juego= Aca ponemos el nombre que queremos que tenga nuestro char en el juego, no importa que no sea igual al de la carpeta y el de los archivos.

Fecha de creacion = Es obvio lo que hay que poner

Nombre del autor = Tu nombre

Orden de Paleta = Si hicieron como les dije y crearon una imagen llamada "paleta" que contenga todos los elementos distintos del char, no es necesario que pongan nada.

Paletas = Esto lo llenaremos más adelante

Extrastate; Intro, Ending = Esto no es necesario que lo completemos, servira para poner helpers, una intro o un ending,cosas que todavias son avanzadas.

El resto de los espacios tendrian que estar completados automaticamente, de no ser asi hicieron algo mal y deben volver atras.



Creacion de la Paleta





LLegamos a la parte más importante de la creacion del char, la creación de la paleta. Es importante que sigan paso a paso esta seccion,sino no lo entenderan.

- Vamos al icono que es una paleta de pintura y dice "editor de paletas" ,como siempre arriba, en la segunda barra de herramientas.
Se nos abrirá un nuevo cuadro divido en tres. Por un lado "insetar Paleta ", en el medio "Personaje" y a su derecha "Imagen o paleta.

- Apretamos "abrir iamgen " en la parte de "Imagen o Paleta" , seleccionamos la imagen que antes habiamos guardado bajo el nombre de "Paleta " y le damos abrir.

- Nos aparecera la imagen que abrimos. Abajo a la decha hay un icono con una pantallita, apretenlo para que aparescan todos los colores de la imagen.

- Ahora tendremos que pasar esos colores a la parte de "Personaje". Primero seleccionamos el color de fondo de la imagen que abrimos de la parte de "Imagen o Paleta" y el ultimo cuadradito, que por lo general es blanco, de la parte de "Personaje" y apretamos el dibujo de una flecha mirando a la izquierda y un cudradito llamado "transferir seleccion".

Para que sirve eso? Para decir cual es el color que tiene que desaparecer en el mugen, a fin de que el personaje quede limpio,sin ningun color de fondo .

- El proximo paso consiste en hacer lo mismo pero con el resto de los colores. Seleccionamos todos los colores- menos el fondo- de la parte de "Imagen o Paleta" y las primeras filas de arriba hacia abajo de la parte de "Personaje",nuevamente apretamos en "transferir seleccion" y wala,tenemos formada la paleta. Ahora pasamos a guardarla,obviamente con "guardar", cabe destacar que hay que guardarla en la carpeta que le creamos al char, osea, la que esta dentro de la carpeta "chars" y con el mismo nombre del char.

- Una vez que hicimos eso, pasamos a la parte de "Insertar Paleta" y tildamos la opcion "utilizar el mismo nombre de las imagenes. "Apretamos "añadir" y buscamos todos los sprites que habiamos guardado anteriormente en la carpeta "Sprites del personaje que estamos creando" , los seleccionamos a todos y ponemos "abrir", se nos cargaran en el cuadradito blanco de texto.

-Ahora le damos a "Aplicar la paleta a las imagenes" , creamos una nueva carpeta llamada "sprites" ,dentro de ella una nueva con las dos primeras letras del char - recomendable- y dentro de ella, ponemos cualquier nombre, guardamos y cerramos el editor de paletas.

- Volvemos a la parte del formulario - el que se parece a los muñequitos del msn- y donde dice "paleta [ACT]:1 por línea" ponemos nombre que le pusimos a la paleta.act", le damos a "Guardar todo" y desaparecerá. Apretamos donde el icono que parece una señal de transito , arriba en la segunda barra de herramientas- y luego volvemos a abrir el personaje - Archivo-> Abrir personaje--> Chars--> Carpeta del personaje --> Nombre del personaje.def" . Se nos abrira el personaje que veiamos creando, volvemos a hacer lo mismo - es decir poner "nombre que le pusimos a la paleta.act", guardar todo y apretar la señal de transito- Abrimos nuevamente y ahora , a la derecha nuestra deberiamos ver la paleta ya formada, con el color de fondo del char en el ultimo lugar y los demas colores en las primeras filas de arriba para abajo. Probamos el Mugen - dandole al icono que tiene un joystick y el logo de windows o MsDos ,dependiendo que Mugen tengamos- y si se abre normalmente con el nombre del personaje en la lifebar , sabremos que vamos por el buen camino, sino algo estaran haciendo mal.

Ahora viene la parte más sencilla de la creacion. Aunque paresca mentira ésta es la de subir los movimientos del char.

Al lado de los muñequitos del msn, en la parte de arriba de la segunda barra de herramientas como siempre, veremos un icono que parece una foto de un señor con barba, esa es la parte de sprites,al lado de ella, encontraremos algo parecido a la pizarra de cine,pero roja, esa es la parte de animaciones.

Subiendo los movimientos.

- Vamos a la parte del señor de barba, osea sprites y apretamos el primero de los iconos, que es una hoja que dice pcx y cuando nos posamos sobre ella nos dice "añadir".

- Se nos abrirá un cuadro como siempre. Buscamos entonces la carpeta donde habiamos guardado los sprites- la que tenia las dos primeras letras de nombre del personaje - y seleccionamos los sprites que correspondan a cuando está parado. Donde dice grupo marcamos 0- Atencion: 0 es para los sprites de parado, luego para los demas debemos utilizar otro numero-. Tildamos "centrado al final" y "paleta compartida" y le damos al "ok".

- Ahora nos dirá "añanidas x imagenes" . Buscamos las imagenes que nos añadio y las ponemos bien. Ven la cruz que hay? bueno,esa cruz personifica al piso,por lo tanto para que nuestro personaje este en el piso y no flotando debera tener ambos pies en la linea horizontal de la misma.

- Luego repetimos el proceso con los sprites de piña, patada, salto,caida, golpeado, agachado,etc. Siempre poniendo paleta compartida y centrado al final y siempre de a un grupo a la vez,poniendoles un numero dstinto de grupo. Por ej para los de piña ponemos grupo 200, para los de patada 230, para los de salto 100,etc.

Una vez que hayamos hecho esto pasaremos a realizar las animaciones.



Haciendo las animaciones.






- Apretamos el icono que parece una pizarra de director.

- Ahi se nos abrira una nueva pantalla con una barrita y varios elementos más.

- Muy bien, si se fijan en la primera barrita que tienen y la van corriendo, notaran que cada sector es un movimiento del personaje. Primero esta standing animation - osea parado- despues taunt - que creo que es girar-, más adelante Walking Forward , Walking Back - caminar hacia adelante,caminar hacia atras- los golpes,la animacion de victoria o win,etc.

- Primero montaremos la animación de parado. Para eso abajo,donde dice grupo, buscamos 0. Apretamos el boton derecho sobre las imagenes y elegimos "Añadir Grupo a Air" . Luego,buscamos abajo, al lado del cuadrito de grupo, unos cuadrados llamados CLSN, es decir colisiones.

Tildamos el azul, que es el que muestra donde nos pueden golpear , vamos a las imagenes donde se ve el personaje e intentamos enmarcarlo con dicho cuadradito azul. Luego apretamos donde dice CLSN estandar y se volvera verde, esto significa que ese patron se seguira en toda la animacion de Standing y no tendremos que poner un cuadrado por cada imagen que la conforme.

- repetimos lo mismo con las distintas animaciones y ya tendriamos hechos todos los movimientos del char. Cabe destacar que asi como el azul es para marcar el lugar donde nos pueden pegar ,el rojo marca donde pegamos nosotros, por lo tanto cuando hagamos las animaciones de pegar debemos ponerlo en el lugar donde producimos el golpe.

- Es recomendable que para que el char sea agil marquen, donde dice tiempo, un numero entre 2,5 y 7, esto deben hacerlo con cada animacion si quieren que sea rapida. Se posan en la primera imagen de la animacion, ponen el tiempo que quieran y luego apretan el iconito que esta al lado que parece dos 8 precedidos por una coma cada uno .

- Para hacer el movmiento de caminar hacia atras deben poner las imagenes del personaje caminando y luego ir a donde dice girar,desplegar el menu y marcar la segunda opcion, osea la H, y apretar el iconito que esta al lado, que parecen dos 8 precedidos por una coma cada uno.

- Es recomendable que prueben cada movimiento a medida que lo van haciendo.

Una vez que hacemos esto pasaremos a la ultima parte, es decir, la de programar.





Programando






Como este es un char super basico, solo debemos programar los golpes. Para eso vamos al icono que esta al lado de la pizarra en la parte superior , enla segunda barra de herramientas y que dice constantes.

Buscamos la parte que dice "; Standing Light Punch; CNS difficulty: easy" , que es el puño debil, este por lo general esta hecho ya. Seleccionamos todo y copiamos, bajamos a donde dice lo mismo pero con medium y pegamos, asi hasta llegar a "Standing strong kick; CNS difficulty: easy" , donde pegaremos lo que copiamos por ultima vez. Luego deben modificar todo eso que pegaron para que quede asi:
;---------------------------------------------------------------------------------------------------
; Standing Light Punch
; CNS difficulty: easy
[Statedef 200]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 200 ;Change animation (Def: no change)
poweradd = 20 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 23, 0 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;--------------------------------------------------------
; Standing Medium Punch
; CNS difficulty: easy
[Statedef 230]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 230 ;Change animation (Def: no change)
poweradd = 80 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 43, 20 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------

; Standing Strong Punch
; CNS difficulty: easy
[Statedef 220]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 220 ;Change animation (Def: no change)
poweradd = 200 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 70,40 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------

; Standing Light Kick
; CNS difficulty: easy
[Statedef 230]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 230 ;Change animation (Def: no change)
poweradd = 20 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 23, 0 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;----------------------------------------------------------------------------

; Standing Medium Kick
; CNS difficulty: easy
[Statedef 240]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 240 ;Change animation (Def: no change)
poweradd = 80 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 43, 20 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------

; Standing Strong Kick
; CNS difficulty: easy
[Statedef 250]
type = S ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A ;Move-type: A-attack, I-idle, H-gethit
physics = S ;Physics: S-stand, C-crouch, A-air
juggle = 1 ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0 ;Set velocity (x,y) (Def: no change)
ctrl = 0 ;Set ctrl (Def: no change)
anim = 250 ;Change animation (Def: no change)
poweradd = 200 ;Power to add (Def: 0)
sprpriority = 2

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA ;Attribute: Standing, Normal Attack
damage = 23, 0 ;Damage that move inflicts, guard damage
animtype = Light ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA ;Flags on how move is to be guarded against
hitflag = MAF ;Flags of conditions that move can hit
priority = 3, Hit ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8 ;Time attacker pauses, time opponent shakes
sparkno = 0 ;Spark anim no (Def: set above)
sparkxy = -10, -76 ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = 5, 0 ;Sound to play on hit
guardsound = 6, 0 ;Sound to play on guard
ground.type = High ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 0 ;Time that the opponent slides back
ground.hittime = -25 ;Time opponent is in hit state
ground.velocity = -4 ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8 ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3 ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12

;Time before opponent regains control in air

[State 200, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;--------------------------------------------------------------------------------------------------

Bueno, ya con eso tendrian hecho un char super basico,pero char al fin.



un tuto en video pal que no entendio bien





y otro sin sonido pero diferente por si no entendiste el primero










Creando Un Proyectil



Un proyectil se utiliza para la simulacion de que un personaje lanza un objeto, al tener contacto con el rival, hace el mismo efecto de cuando lo golpeas normalmente (Depende la fuerza), acontinuacion les muestro el formato de Proyectil:

[State ID]
type = Projectile <<----- Aqui le cambian, ya no es HitDef
trigger1 = AnimElem = 4 <<----- Colocan la animacion en el que sale disparado
trigger1 = var(39) = 0 <<----- Dejenlo asi, hace que funcione lo de arriba
attr = S, SP <<----- Posicion para lanzar proyectil (Stand/Crouch/Air)
damage = 30 <<----- Daño echo por el proyectil
animtype = Medium <<----- Tipo de ataque (Hard/Medium/Light)
getpower = 80,20 <<----- En caso de acertar, cuanta energia te otorga
givepower = 20 <<----- Cuando disparas te otorga energia
guardflag = M <<----- Dejenlo asi
hitflag = MA <<----- igual xD
pausetime = 0,0 <<----- Este seguro no lo muevan, que no parecera proyectil xD
sparkno = S(9002+random%6) <<----- Efecto a utilizar para ataque, deben usar S y el id de la anim en AIR
guard.sparkno = S(9010+random%1) <<----- Efecto para cuando esta en guardia y lo recive
sparkxy = 20,0 <<----- Posicion del efecto
hitsound = s1,3 <<----- Sonido del golpe
guardsound = s4,0 <<----- Sonido en Guardia
ground.type = Low <<----- Fuerza de ataque (Low/Medium/Heavy)
ground.slidetime = 12 <<----- Deslizamiento del golpe
ground.hittime = 16 <<----- Dejenlo asi, no lo muevan xD
ground.velocity = -4 <<----- Esto complementa al deslizamiento
air.velocity = -4,-5 <<----- En caso de alcanzarlo en el aire, lo desplaza cierta distancia
projpriority = 1 <<----- La prioridad del proyectil suele ser 1
projcancelanim = 9002+random%6 <<----- Al recivir el ataque, los efectos
projid = 250 <<----- ID del proyectil en CNS
projanim = 255 <<----- Animacion del proyectil
velocity = 10,0 <<----- Velocidad del proyectil
offset = 69,-85 <<----- Posicion que sale el proyectil

Tambien se pueden crear usando Helpers


Helper


Ahora Primero que nada, vamos a crear el helper en el State que desen...
____________________________________________________________________________________

[State 4040, helper]
type = helper <<----- Este es la base oviamente, no lo toquen
trigger1 = Time = 2 <<----- Momentos en segundos que sale el helper
helpertype = normal <<----- Para uso de un proyectil, es recomendable que sea "Normal"
stateno = 4045 <<----- Numero del State en los CNS
ID = 4045 <<----- ID del Helper
name = "Hadouken" <<----- Nombre del Helper
postype = p1 <<----- Posicion de estado, el proyectil sale de ustedes, asi que "p1"
pos = 43,-52 <<----- Posicion considerando desde el punto X-Y del personaje
ownpal = 1 <<----- Dejenlo asi

____________________________________________________________________________________
Ya que tenemos el State listo para que aparesca el Helper, nos vamos a crear el helper tipo proyectil, asi que preparense para que les duela la cabeza xD...
____________________________________________________________________________________

[Statedef 4045]
type=A
physics=N
movetype=A
ctrl=0
velset=4,0 <<----- Velocidad del Proyectil
anim = 4045 <<----- Coloquen la animacion del proyectil
sprpriority=4

[State 4045,hitby] <<----- Dejenlo asi, es el estado del golpe
type=hitby
trigger1=1
time=-1
value=SCA,NP,SP,HP
ignorehitpause=1

[State 4045, hitoverride] <<----- Igual
type=hitoverride
trigger1=1
time=-1
attr=SCA,NP,SP,HP
stateno=ifelse(var(2)<8,3005,3006)
ignorehitpause=1

[State 4045, strengthvar] <<----- Tambien
type=varset
trigger1=!time&&!prevstateno
var(10)=5

[State 4045, hitvar] <<----- Ya saben xD
type=varadd
trigger1=!time
var(2)=1

[State 4045, distvar] <<----- Ni pa que decirles xD
type=varset
trigger1=!time&&!prevstateno
var(1)=floor(root, p2dist x)

[State 4045, movehitvar] <<----- ............. xD
type=varset
trigger1=movehit&&numtarget
trigger1=target,movetype=H
var(3)=1
ignorehitpause=1

[State 4045, hitsnd] <<----- Sonido del golpe
type=playsnd
trigger1=movehit&&numtarget
trigger1=target,time=0&&target,movetype=H
value=2,7 <<----- Esto es lo que se modifica
persistent=0
ignorehitpause=1

[State 4045, hit] <<----- Aqui esta el HitDef
type=hitdef
trigger1=1
priority=6,Hit
attr=S,HP
damage=ceil(32*(1-root,fvar(10)+root,fvar(11)+root,fvar(12))),5
animtype=Back
hitflag=MAF
guardflag=MA
pausetime=4,6
sparkno=-1
sparkxy=-10,0
guard.sparkno=s7001
guardsound=s2,0
ground.type=Low
ground.slidetime=24
ground.hittime=24
ground.velocity=ifelse(var(1)<160,-6,-4),-4
ground.cornerpush.veloff=0
air.velocity=ifelse(var(1)<160,-6,-4),-4
p2facing=1
fall=1
fall.recover=0
getpower=0
envshake.time=16
envshake.freq=100
envshake.ampl=6
palfx.color=32
palfx.sinadd=40,20,60,8
palfx.mul=384,128,512
palfx.time=32
sprpriority=4

[State 4045, sparks] <<----- Efecto de cuando recive el golpe
type=explod
trigger1=movehit&&numtarget
trigger1=(target,movetype=H)&&!(target,time)
anim=9002+(random%6)
ID=7000
sprpriority=5
postype=p2
pos=(target,const(size.ground.front)-10),-floor(p2dist y)
removetime=-2
ownpal=1
facing=-1
ignorehitpause=1
persistent=0
pausemovetime=100
supermovetime=100

[State 4045, end] <<----- Efecto de que se destruye el Haduken
type=changestate
trigger1=movecontact
value=4016 <<----- State del cambio

[State 4045, end] <<----- Para no dejar rastro del state en caso de no darle al enemigo
type=destroyself
trigger1=frontedgedist<-145||backedgedist<-120

____________________________________________________________________________________
Bueno que es algo tan complicado para ustedes sin un final bueno?, pues aqui les muestro como terminar con un cierre de la animacion que quieran.
____________________________________________________________________________________________
[Statedef 4046] <<----- State final
type=A
physics=N
movetype=A
anim=4046 <<----- Animacion final
ctrl=0
velset=0,0
sprpriority=4

[State 4046, assert] <<----- Soporte anti-especial (Seguridad)
type=assertspecial
trigger1=1
flag=noshadow
ignorehitpause=1

[State 4046, snd] <<----- Sonido
type=playsnd
trigger1=animelem=1
value=5,1
ignorehitpause=1
persistent=0

[State 4046, end] <<----- Al acabarze la animacion, se borra el helper
type=destroyself
trigger1=!animtime


Efecto Terremoto


Bueno algo muy basico en la edicion de un CNS, es saber como simiular un terremoto con el Envshake. El Envshake es un tipo de State que como ya dije, sirve para simular un terremoto, pero como algunos no lo conocen o bien no sabe para que sirve cada cosa, les muestro como queda cada cosa:
____________________________________________________________________________________

[State ID] <<----- Modifiquen por el id del State base
type = El tipo de state tiene que ser "Envshake"
trigger1 = En que momento ocurre (Segun el State de base que usen)
Time = Cuanto tiempo dura el Envshake (En segundos)
ampl = Longitud de movimiento/Tamaño del Envshake

____________________________________________________________________________________
Bueno pues siguien estas secuencias, al hacer uno les quedara asi:
____________________________________________________________________________________

[State 200, Envshake] <<----- El id colocado correctamente
type = Envshake <<----- Tipo colocado correctamente
trigger1 = Movehit <<----- Momento colocado correctamente (Movehit = Al momento del golpe)
Time = 10 <<----- Algo moderado, no demasiado y no muy poco
ampl = 17 <<----- Un terremoto tipo Nivel 2 xD



Randoms


Los "+random%" mas utilizados en los HitDef, sirven para hacer una variante de muchos Efectos, por decirlo asi. Puedes untilizarlo como un "Efecto Al azar", osea que de entre varios efectos, acomodas unos cuantos para que aparescan diferentes cada vez que lo golpeas y no aparescan los mismos de siempre, aqui les muestro un ejemplo de como usarlo:

"A partir de que animacion inicia"+random%"Numero de Animaciones"

Si yo por ejemplo usara "9002+random%6", quiere decir que de la animacion 9002 a la 9007 tienen la posibilidad de reproducirse en el ataque.


Apoyo para ayudarlos a entender mejor

Y si usamos "9000+random%2", pues es ovio que solo la animacion 9000 y la 9001 tienen posibilidad de aparecer como efecto en el ataque.

NOTA: Las animaciones tienen que ser seguidas en el AIR, no tiene que ser una en el lugar 186 y otra en el 206, tienen que ser a fuerzas seguidas.



Un Efecto



Para agregar un efecto debes colocar un State "Explod", ¿No lo conoces? bien, acontinuacion te muestro uno echo para que de des una idea:

____________________________________________________________________________________

[State ID] <<------- Ya saben que hacer, colocar la id del State base.
type = Explod <<------- El tipo de state es Explod
triggerall = Anim = 3002 <<------- Animacion excluciva en el que se va usar.
trigger1 = (Time%2) = 0 <<------- Tiempo en segundos de cuando aparece.
pos = 15,15 <<------- Posicion exacta de donde aparece (Basado en lo de abajo).
postype = p1 <<------- El basado de posicion, puede ser en el P1 o P2.
anim = 3004 <<------- Animacion del efecto.
id = 3002 <<------- ID del efecto.
vel = 0,0 <<------- Velocidad, en caso de utilizarse (NO sera proyectil).
removetime = 10 <<------- Tiempo en segundos que desaparece.
bindtime = 10 <<------- Complemento de lo de arriba.
sprpriority = 5 <<------- Layout del efecto (Recomendable que sea alto).
supermovetime = 99999 <<------- Dejenlo asi.
scale = .3,.3 <<------- Es la escala del efecto (El original es "1,1" ).
ontop = 1 <<------- Dejenlo asi.
removeongethit = 1 <<------- Se remueve al recivir un golpe.
trans = add <<------- En caso de ser un efecto luminoso, le da un detalle transparente.


A final de esto, tendran un lindo efecto adornando su char xD (Depende de cual le pongan xD)

_________________________________________________________________________________________

Así cerramos el tutorial talves le agregue mas cosas por el comento lo dejo asi grasis por tan solo leer todo eso jaja


Datos archivados del Taringa! original
367puntos
17,682visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
6visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

X
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.