Hola aguien me puede dar un codigo simple para lanzar un fireball con la tipica secuencia abajo-izquierda o derecha + boton
yo uso un sistema de combos que funciona mas o menos asi
combos[0]= "ASZXSAZX"
trabaja bien pero solo puedo usar letras
Hola, hace tiempo empecé a diseñar un sistema de combos altamente configurable, pero nunca lo terminé. Lo adjunto, espero que te sirva.
El ejemplo funciona con teclado, joystick y virtualkeys. Los combos se definen en un arreglo 2D, llamado
ataque[], cada fila es un combo o ataque donde se guardan una secuencia de números enteros del 0 al 9. Cada número representa un botón:
- 0: puño
- 1: patada
- 2: derecha
- 3: derecha+arriba
- 4: arriba
- 5: arriba+izquierda
- ...
- 9: abajo+derecha
Hay otro arreglo llamado
secuencia[] que, como indica su nombre, guarda la secuencia de botones presionados por el usuario. Esta secuencia se compara con las filas del arreglo
ataque[]. Si en algún momento la secuencia no coincide con alguno de los combos, se van borrando elementos hasta obtener una secuencia válida o vacía.
Hay muchas cosas que se pueden optimizar, por ejemplo, en lugar de usar arreglos simples se podrían usar ds_queues, o cadenas de texto como has propuesto, y podría ser más entendible si se usan constantes (macros) en lugar de números. También es necesario agregar un mecanismo que haga cambiar los combos cuando se ve a la izquierda o a la derecha, creo que hay varias soluciones para eso.
Por último, los combos se definen en el evento Create del objeto ob0, y todos tienen una estructura similar a esta:
[gml]
///Explosión
ataque[n,0] = 4;
ataque[n,1] = 8;
ataque[n,2] = 6;
ataque[n,3] = 2;
ataque[n,4] = 0;
nombre[n] = "Explosión";
n++;
[/gml]
observa que el segundo indice de
ataque[] comienza en cero y va incrementando. El arreglo
nombre[] guarda todos los nombres de los combos.
PD: Las teclas + y - del pad numérico cambian el tiempo necesario para cancelar una secuencia, y la tecla Esc reinicia los valores.
De repente me acordé de otro detalle, la definición de combos en el evento Create se hace en un orden específico, primero se definen los combos (filas) que empiezan con números más pequeños y después siguen los que inician con números más grandes. Es algo parecido a poner palabras en orden alfabético. Lo puse de esa manera para optimizar el proceso de búsqueda, así no se tiene que buscar siempre en todos los combos; sólo se busca en un conjunto reducido. Como cuando se busca en un diccionario. Espero que en el futuro sea más fácil de utilizar.