Ver tema anterior :: Ver siguiente tema |
Autor |
Mensaje |
Phobos Anomaly Moderador

Registrado: 01 Feb 2007 Mensajes: 315 Ubicación: Phobos, UAC instalations
|
Publicado: Mar May 29, 2012 1:53 am Título del mensaje: Consulta con Decorate. |
|
|
Hola, hace mucho que no hago un tema para preguntar algo sobre la edición de Doom, dulce amargamente puedo decir que creo que haré muchos a partir de ahora, jeje.
Bueno al caso, resulta que hice un enemigo de poca originalidad y muy simple y se me ocurrió darle un nuevo ataque, lejos de crear un nuevo State decidí usar el state missile para poner mi ataque personalizado, ya que me sirve lo random del state para el ataque que hago.
Bueno el ataque en si es un simple salto, practicamente es el ataque que hace el Imp en Doom3, que te salta a a la cara y te golpea.
Bueno, no logro hacerlo funcionar!, pensé en usar el ThrustThing y ThrustThingZ para impulsar los frames que animé hacia adelante y un poco hacia arriba pero no logro encontrar algún Action Funtion que genere un daño al contacto con el jugador.
Luego pensé: "claro! usare el A_SkullAttack!", creí que tenia el mundo en mis manos, pero al probarlo me di cuenta del inconveniente, cuando mi monstruo salto hacia mi lo esquive y siguió volando hasta que choco con una pared, no se como hacer que se detenga cuando yo quiero.
Aquí esta hasta ahora lo que he intentado hacer:
Código: |
Missile:
IMPJ ABCD 4 A_facetarget
IMPJ E 0 A_SkullAttack
IMPJ E 0 ThrustThingZ (0, 15, 0, 1)
IMPJ F 8
IMPJ EDCBA 4 A_Stop
goto see
|
Tiene 6 frames en total la acción, pero recién en el frame E es cuando debe ejecutarse la barrida que pretende dañar al jugador al contacto.
Agradecería que me asesoren sobre el tema, e visto algunos decorates que lo hacen pero yo necesito entenderlo para usarlo, no quiero copiarme un código que no entiendo, necesito aprender no solo hacer los monstruos.
Desde ya muchas gracias. _________________
Play DooM or die.
|
|
Volver arriba |
|
 |
Aluqah Gurú del Mapeo

Registrado: 01 Dic 2006 Mensajes: 156
|
Publicado: Mar May 29, 2012 2:50 am Título del mensaje: |
|
|
Phobos Anomaly escribió: | Código: | Missile:
IMPJ ABCD 4 A_facetarget
IMPJ E 0 A_SkullAttack
IMPJ E 0 ThrustThingZ (0, 15, 0, 1)
IMPJ F 8
IMPJ EDCBA 4 A_Stop
goto see
|
|
¿No te funciona? Estuve modificando un monstruo de un mapa mío que hacía lo mismo (pero sin detenerse, hasta que encontraba una pared) y con tu método ahora da saltos cortitos. Copio y pego, es prácticamente lo mismo (copié la duración de los frames del final del tuyo, incluso):
Código: | BRIP I 5 A_FaceTarget
BRIP J 0 A_SkullAttack
BRIP J 0 ThrustThingZ(0,20,0,1)
BRIP J 8
BRIP JJJJJ 4 A_stop |
_________________ - Aluqah's Web -
|
|
Volver arriba |
|
 |
Phobos Anomaly Moderador

Registrado: 01 Feb 2007 Mensajes: 315 Ubicación: Phobos, UAC instalations
|
Publicado: Mar May 29, 2012 3:11 am Título del mensaje: |
|
|
Aluqah escribió: | Phobos Anomaly escribió: | Código: | Missile:
IMPJ ABCD 4 A_facetarget
IMPJ E 0 A_SkullAttack
IMPJ E 0 ThrustThingZ (0, 15, 0, 1)
IMPJ F 8
IMPJ EDCBA 4 A_Stop
goto see
|
|
¿No te funciona? Estuve modificando un monstruo de un mapa mío que hacía lo mismo (pero sin detenerse, hasta que encontraba una pared) y con tu método ahora da saltos cortitos. Copio y pego, es prácticamente lo mismo (copié la duración de los frames del final del tuyo, incluso):
Código: | BRIP I 5 A_FaceTarget
BRIP J 0 A_SkullAttack
BRIP J 0 ThrustThingZ(0,20,0,1)
BRIP J 8
BRIP JJJJJ 4 A_stop |
|
Pues funciona a medias, me he puesto a corregir algunas cosas tratando de tener un mejor resultado y esto es lo que me salio:
Código: | Missile:
IMPJ ABCD 4 A_facetarget
IMPJ E 2 ThrustThingZ (0, 15, 0, 1)
IMPJ F 6 A_SkullAttack
IMPJ EDCB 4
IMPJ A 4 A_Stop
goto see |
El frame E y F son respectivamente los frames donde el bicho ya esta en el aire y hace su ataque, los demás frames es solo animacione antes y luego de saltar, una vez hecho el A_Skullatack la única forma de detenerlo fue usando A_Stop, pero con esa función se detiene completamente en un frame y no hace los demás, osea que salta y en un segundo ya esta en el state See.
Ahora en ese nuevo código e logrado que sí haga su animación cuando aterriza (la animación de despegue pero al revés), pero durante esa misma animación el bicho sigue moviendo se hacia adelante, por que sigue dentro del A_skullattack que lo empuja hacia adelante.
Además cuando me pongo en frente para recibir el ataque veo que el bicho me golpea cuando me toca pero con su ataque melee, la barrida en si no produce daño al contacto, y eso es lo que yo quería, que golpee con esa animación, por que sino lo único que hace es acercarse a uno. _________________
Play DooM or die.
|
|
Volver arriba |
|
 |
Aluqah Gurú del Mapeo

Registrado: 01 Dic 2006 Mensajes: 156
|
Publicado: Mar May 29, 2012 1:17 pm Título del mensaje: |
|
|
No sé que saldrá de este invento, pero puedes probar:
Volver a usar el ThrustThing para impulsarlo. Luego tu problema es que el monstruo te ataque cuando entre en contacto, se me ocurre usar el A_JumpIfCloser para verificar cuan cerca del jugador está.
Calculando cuanto tiempo dura el salto, le das la cantidad adecuada de frames:
Ejemplo para un salto que dure de 5 tics (sí, es muy poco, es para no poner un ejemplo larguísimo):
-Como funcionaría: si durante el salto (los 5 frames "F") el jugador no está cara a cara sigue al "goto see" y no pasa nada. Si en cualquier momento del salto está cara a cara, el script salta a la línea de meleeattack.
Código: | Missile:
IMPJ E 1 A_facetarget
IMPJ E 2 ThrustThingZ (0, 15, 0, 1)
IMPJ E 6 ThrustThing (0, 15, 0, 1) //¿?
IMPJ F 1 A_JumpIfCloser(32,5)
IMPJ F 1 A_JumpIfCloser(32,4)
IMPJ F 1 A_JumpIfCloser(32,3)
IMPJ F 1 A_JumpIfCloser(32,2)
IMPJ F 1 A_JumpIfCloser(32,1)
goto see
IMPJ GHIJ 2 A_MeleeAttack //o lo que sea que haga
goto see
|
Que el frame F dure 1 tic es algo exagerado, dos 2 o 3 debería andar bien. _________________ - Aluqah's Web -
|
|
Volver arriba |
|
 |
Zedeck Mapeador

Registrado: 08 Jun 2010 Mensajes: 117 Ubicación: Me perdi, no entiendo el mapa!!!! oh es el Valhalla
|
Publicado: Mar May 29, 2012 8:33 pm Título del mensaje: |
|
|
Phobos amigo, yo tengo un monstruos que hace eso ala perfeccion, es un imp modificado, pero como ahora estoy sin internet por faltas de pago, no puedo pasartelo, pero le envie una copia a cyberarch hace algun tiempo, si puedes pidele a el que te envie el wad, o esperar a que yo te lo pueda enviar. _________________ Alabada sea La Gran Ballena de La Luz que permita que exista DooM
|
|
Volver arriba |
|
 |
Phobos Anomaly Moderador

Registrado: 01 Feb 2007 Mensajes: 315 Ubicación: Phobos, UAC instalations
|
Publicado: Jue May 31, 2012 12:40 am Título del mensaje: |
|
|
Aluqah escribió: | No sé que saldrá de este invento, pero puedes probar:
Volver a usar el ThrustThing para impulsarlo. Luego tu problema es que el monstruo te ataque cuando entre en contacto, se me ocurre usar el A_JumpIfCloser para verificar cuan cerca del jugador está.
Calculando cuanto tiempo dura el salto, le das la cantidad adecuada de frames:
Ejemplo para un salto que dure de 5 tics (sí, es muy poco, es para no poner un ejemplo larguísimo):
-Como funcionaría: si durante el salto (los 5 frames "F") el jugador no está cara a cara sigue al "goto see" y no pasa nada. Si en cualquier momento del salto está cara a cara, el script salta a la línea de meleeattack.
Código: | Missile:
IMPJ E 1 A_facetarget
IMPJ E 2 ThrustThingZ (0, 15, 0, 1)
IMPJ E 6 ThrustThing (0, 15, 0, 1) //¿?
IMPJ F 1 A_JumpIfCloser(32,5)
IMPJ F 1 A_JumpIfCloser(32,4)
IMPJ F 1 A_JumpIfCloser(32,3)
IMPJ F 1 A_JumpIfCloser(32,2)
IMPJ F 1 A_JumpIfCloser(32,1)
goto see
IMPJ GHIJ 2 A_MeleeAttack //o lo que sea que haga
goto see
|
Que el frame F dure 1 tic es algo exagerado, dos 2 o 3 debería andar bien. |
Ah, ya entiendo, tu lo que propones que mientras dure el salto se este checando la proximidad al player. Si al frame de melee attack le dejo el frame de salto creo que quedaría como yo quiero.
Voy a intentarlo ahora mismo, solo una duda, exactamente a que equivale el valor del primer argumento de A_Jumpifcloser? quiero saber cual es la referencia que usa, por ejemplo, a que equivale el valor 35 que tu usas. _________________
Play DooM or die.
|
|
Volver arriba |
|
 |
Phobos Anomaly Moderador

Registrado: 01 Feb 2007 Mensajes: 315 Ubicación: Phobos, UAC instalations
|
Publicado: Jue May 31, 2012 6:16 am Título del mensaje: |
|
|
Dobre post, lo he solucionado!
Lo que me propusiste Aluqah no me ha funcionado, por alguna razón que todavía no entiendo el A_jumpifcloser no me respondía, sera que como no entiendo las unidades con las que trata pues no le asigne un valor correcto.
Pero lo que si aprendí con tu "invento" Aluqah es que los script no son una formula con una gama de opciones, sino un amplio repertorio de funciones que hay que combinarlas con ingenio e imaginacion.
Código: |
Missile:
IMPJ ABCD 3 A_facetarget
IMPJ E 2 ThrustThing (angle*256/360, 14, 0, 0)
IMPJ F 0 ThrustThingZ (0, 14, 0, 1)
IMPJ FFFFFFFFFF 1 A_CustomMeleeAttack (5, "imp/melee")
IMPJ EE 1 A_CustomMeleeAttack (5, "imp/melee")
IMPJ DCBA 3
goto see
|
Ahí esta, como quería, durante todo el tiempo que dure el salto el bicho sera dañino al contacto. Agregue la cantidad de frames equivalentes al tiempo en que ThrustThing/Z cumplen su función, entonces en cada frame se esta ejecutando el golpe y da como resultado que en ese tiempo sea dañino al contacto.
Ahora bien, A_Sargeattack era demasiado potente como para ponerlo como golpe, era asesinado de una sola arremetida dada la cantidad de golpes y el gran daño, así que especifique mi propio ataque melee con A_CustomMeleeAttack, un daño de 5 y el 2do argumento ejecuta el sonido especificado.
Ha quedado como quería, y he aprendido una serie de cosas que estoy ansioso por aplicar, gracias por la ayuda!
Si alguien tiene alguna sugerencia o formas de optimizar el código siéntase libre de dar su opinión, lo digo para cualquier post que haga de esta clase.
PD: Zedeck, me interesa que postees el decorate que dices, así puedo comparar y ver de que formas te las ingeniaste, cuando puedas no dudes en mostrarlo! _________________
Play DooM or die.
|
|
Volver arriba |
|
 |
|
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|