Cristalab

Como crear cheatcodes y combos en Flash

   Foros de discusión -> Tips, ¡Envía tus trucos aquí!
Mensaje Autor
Mensaje Publicado: Jue Dic 14, 2006 4:28 pm     Citar   msie 
Bien, a riesgo de volverme monotemático, voy a postear un tip más para ayudar en la creación de videoJuegos.

En este caso, es la hora de los trucos o cheatcodes (no puse trucos en el título para que no se malinterpretara).

Hay 2 maneras de hacerlos, la simple y la complicada. La primera sería similar a la consola del Half Life, donde con un if se puede verificar si el texto ingresado es o no un cheatcode. Veamos un ejemplo donde tenemos un cuadrito de texto llamado consola en el que el usuario ingresa un truco. Sabiendo que si no es un truco, es un mensaje para otros jugadores.

Código :

var truco:String = "noClip";
//
onEnterFrame = function () {
if (Key.isDown (Key.ENTER)) {
//
if (consola.text == truco) {
//
// Si el código es correcto se activa la opción de atravesar paredes
atravesarParedes = true;
} else {
//
// Si no lo es, se entiende que era un mensaje de chat
trace (consola.text);
consola.text = "";
}
}
};


Bien, eso era más o menos simple, pero no es el único tipo de truco posible. Existe otro, el del estilo GTA, donde se presionan durante el juego una serie de letras (como "aspirine") y si estas coinciden con un truco, éste se activa. La ventaja de esto es que el usuario no se ve obligado a escribir en un cuadrito de texto.

Algo similar ocurre con los juegos de pelea cuando se introducen series de movimientos ("abajo, abajo, abajo, arriba, patada, golpe, etc") que activan una acción especial. Algo así como las fatalities del MK.



ADVERTENCIA: a partir de ahora comienzo a trabajar con arrays, en la ayuda de Flash se halla toda la información concerniente a sus métodos y propiedades que voy a usar y que, no voy a explicar por encontrarse todas las explicaciones en la ayuda.



Continuando, hay que definir los trucos con los que se quiere trabajar (los defino como string y luego como arrays):

Código :

var string1:String = "hernan";
var string2:String = "rivas";
var string3:String = "acosta";
//
var cheatCode1:Array = string1.split ("");
var cheatCode2:Array = string2.split ("");
var cheatCode3:Array = string3.split ("");


En caso de que se pregunten porqué los hice strings, para transformarlos en arrays, les digo: Es mucho más simple hacerlo de este modo. Ya que se hace mucho más simple modificar los trucos y poner nuevos. Escribiendo uno a uno los elementos del Array, se pierde tiempo y se hace más difícil modificarlos en el futuro.

Bien, ahora creamos un nuevo Array que va a almacenar todas las letras presionadas a lo largo del juego y otro, llamado arrayConfirmacion, que demostrará su utilidad más tarde:

Código :

var teclasPresionadas:Array = new Array ();
var arrayConfirmacion:Array = new Array ()


Ahora, el código que almacena estas teclas:

Código :

var listenerTeclado:Object = new Object ();
//
listenerTeclado.onKeyDown = function () {
teclasPresionadas.push (String.fromCharCode (Key.getAscii ()));
//
};
//
Key.addListener (listenerTeclado);


Como verán, no es nada demasiado complicado, simplemente un listener. Pero hay una línea que puede confundir un poco.

"String.fromCharCode ()" Crea un string o cadena a partir del codigo ascii de una letra.

"Key.getAscii ()" Nos devuelve el código ascii de la tecla presionada.


Ahora que eso quedó aclarado, contiuemos. El array teclasPresioandas va a almacenar demasiados caracteres luego de un rato de juego. Eso no nos sirve, solo necesitamos las últimas teclas. La cantidad de las mismas va a ser igual al largo de nuestro truco más extenso. No usamos Math.max porque solo admite 2 valores.

Código :

var numeroTrucos:Number = 3;
var largoMaximo:Number = 0;
//
for (i = 1; i <= numeroTrucos; i++) {
//
if (this["cheatCode" + i].length > largoMaximo) {
largoMaximo = this["cheatCode" + i].length;
}
}


Bien, eso fue simple, ahora lo importante, mantengamos el tamaño de teclasPresionadas bajo control. Este código se ubica debajo del teclasPresionadas.push:

Código :

if (teclasPresionadas.length > largoMaximo) {
teclasPresionadas = teclasPresionadas.slice (-largoMaximo);
}


Como verán, es un uso creativo del slice.

Ahora, lo último, corroborar si se escribió un código válido. Esto se hace con este código, ubicado debajo del anterior (dentro del listener). Este es el momento de usar el arrayConfirmación:

Código :

for (i = 1; i <= numeroTrucos; i++) {
arrayConfirmacion = teclasPresionadas.slice (-_root["cheatCode" + i].length);
if (arrayConfirmacion.toString () == _root["cheatCode" + i].toString ()) {
trace ("Activado código numero " + i);
}
}


Nótese el cambio de this["cheatCode" + i] en el primer for a _root["cheatCode" + i]

Esto se debe a que this se refiere a la tecla presionada y no al root.

También, veáse que usé un toString () Esto es porque 2 arrays no son iguales a menos que uno sea una copia del otro (algo bastante estúpido, por cierto), la ayuda de Flash tiene más información sobre el tema. Vayan a ayuda y busquen el operador ==.




Bien, supongo que alguien le encontrará alguna utilidad a esto aparte de la aplicación en videojuegos y en programas donde queramos esconder huevos de pascua. Como es lógico, podemos poner cuantos códigos queramos mientras se modifique la variable numeroTrucos en consecuencia.
 _________________
Hernán Rivas Acosta -hernanrivasacosta@gmail.com-

Gracias a Duke Uthyr Ian Hölder por el avatar los avatares.

HernanRivas


clabLevel: 2528 Genero:Masculino

1 Tutoriales
22 Tips

MP Email         
Volver arriba
Mensaje Publicado: Dom Dic 24, 2006 2:59 pm     Citar   firefox 
Muchas gracias, me viene muy bien para un juego que intento desarrollar, así puedo eliminar el cuadro de texto donde se escribían los trucos.

JACB


clabLevel: 38 Genero:Masculino
Málaga


MP       MSN Messenger  
Volver arriba
Mensaje Publicado: Mie Ene 03, 2007 6:13 pm     Citar   msie 
Muy buen tip, me has despejado de una tenebrosa idea que tenia en mente Muy Feliz
 _________________
::Nothing is Impossible::

flashreloco


clabLevel: 722 Genero:Masculino
En un mundo, donde dormir es para los débiles


MP Email Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Vie Feb 09, 2007 5:28 am     Citar   msie 
no entendi

Invitado






        
Volver arriba
Mensaje Publicado: Vie Feb 15, 2008 5:19 pm     Citar   msie 
NO PASA NADA

VAHHH
Invitado






        
Volver arriba
Mensaje Publicado: Mar Mar 25, 2008 2:31 am     Citar   firefox 
em.. yo kiero saver como puedo acer pàra en mi juego de pelea, pulsar las teclas por ejemplo A y q se mueva, porqe no puedo usar letras , me andan si o si con por ejemplo CONTROL, space shift insert home... pero si yo kiero poner letras , no me anda.. ayuda plis..

y tambien kisiera saver como hacer para al presionar por ejemplo flecha arriba + felcha derecha haga un truco q yo kiero...
gracias

habisenme a fabry_frigerio@hotmail.com

cualkier cosa que necesiten. voy a tratarde ayyudarloss

fabryy! FLASHHH
Invitado






        
Volver arriba
Responder al tema    Foros de discusión -> Tips, ¡Envía tus trucos aquí! Todas las horas son GMT
Página 1 de 1

Respuesta Rapida
Nick: 

  Citar el ultimo mensaje
Adjuntar tu firma

Mostrar mensajes de anteriores:
  

 


Cristalab BloodBerry Style © 2006 Cristalab
Powered by phpBB © 2001, 2002 phpBB Group