GameMaker: Studio Guide

Guía de Códigos de HACKS (y otros de entrada secuencial) for GameMaker: Studio

Guía de Códigos de HACKS (y otros de entrada secuencial)

Overview

Esta guía le enseñará 3 métodos para incorporar códigos de trucos y otros tipos de entrada de teclado secuencial en su juego.Nota: Requiere conocimientos de GML.(Retrasados abstenerse)

Método del símbolo del diálogo [Dialog Prompt Method ]

Pros :

  • Puede utilizar cualquier carácter del teclado tipificable en sus códigos
  • El jugador tiene una interfaz agradable en el que se puede introducir los códigos

Contras:

  • No se puede usar teclas especiales (teclas por ejemplo flechas) como parte de los códigos
  • No es muy discreto

Esta es probablemente la forma más infalible para los códigos de HACKS de entrada. Este método se abrirá un diálogo de entrada usando get_string_async, comprobar la entrada en contra de una lista de códigos y luego hacer el efecto deseado si hay un match.

En primer lugar, usted necesita decidir qué evento se abrirá el símbolo. Para este ejemplo, digamos que aparezca el indicador al hacer clic en un objeto, por lo que en caso de prensado izquierda de ese objeto, puesto en:

/// Prompt for code { my_id = get_string_async(“What’s the code?”,””); }

Cada diálogo asíncrono generará un mapa de datos asignado al async_load variable que contiene los detalles de ese diálogo en particular (es decir, la cadena de entrada, si bien se ha hecho clic o no). En la variable “mi_id” almacenar el número de identificación del cuadro de diálogo que se usó en la siguiente etapa.

A continuación, en el evento del objeto de diálogo (se agrupan bajo asíncrono),
puesto en:

/// Check code { who = ds_map_find_value(async_load, “id”); // Who brought up the dialog? if (who == my_id) // Is it the code prompt? { if (ds_map_find_value(async_load, “status”)) // Did the user click “OK”? { // Check input against each code if (ds_map_find_value(async_load, “result”) == “cass”) { // Do stuff here // Yay $250! } else if (ds_map_find_value(async_load, “result”) == “iamacheat”) { // Do other stuff here // Yay $500,000! } } } }

Ponga como “ELSE” el bloque en caso necesario, o considerar el uso de declaraciones interruptor … en caso de que la lista de código sea muy larga.

Keyboard History Method [ASD]

Pros:

  • Puede utilizar cualquier carácter del teclado tipificable en sus códigos
  • El método de entrada está escondido lejos del jugador
  • Fácil de codificar

Contras:

  • No se puede usar teclas especiales (teclas por ejemplo flechas) como parte de los códigos
  • Todos los códigos deben tener la misma longitud.

Este método utiliza la variable de keyboard_string incorporado, que realiza un seguimiento de lo que se ha escrito mientras que el juego está enfocado, para detectar códigos.

En de un objeto <cualquier tecla> Evento, puesto en:

/// Check for code { // Truncate keyboard_string to last 5 characters if necessary if (string_length(keyboard_string) > 5) keyboard_string = string_copy(keyboard_string, 2, 6); // check for codes if (keyboard_string == “12345”) { //Do stuff // That’s the stupidest combination I’ve ever heard in my life! // That’s the kind of thing an idiot would have on his luggage! } else if (keyboard_string == “!@#$%”) { // Do other stuff // Hey, do you kiss your mother with that mouth? } }

Ponga más ELSE en los bloques (o en casos de usar interruptor … ) para más códigos.

El paso de truncamiento asegura que keyboard_string solamente guarda los últimos n caracteres escritos en la historia. Así que si sus códigos son 10 caracteres de largo, las líneas serían:

// Truncate keyboard_string to last 10 characters if necessary if (string_length(keyboard_string) > 10) keyboard_string = string_copy(keyboard_string, 2, 11);

O en general:

// Truncate keyboard_string to last n characters if necessary if (string_length(keyboard_string) > n) keyboard_string = string_copy(keyboard_string, 2, n+1);

Keycode Method

Pros:

  • Lista
  • Puede utilizar las teclas especiales (por ejemplo, teclas de flecha) como parte de los códigos
  • El método de entrada está escondido lejos del jugador

Contras:

  • No puede utilizar caracteres que requieren teclas de modificación (por ejemplo, “!”, “%”, “&”)
  • Más difícil de código

Este método utiliza códigos de teclas para detectar qué teclas han sido golpeados. Utiliza pilas para no perder lo avanzado que la secuencia de códigos que el jugador que es y hace cosas cuando el código se haya completado.

Para este ejemplo, los dos códigos utilizados serán dos variaciones del código de Konami: Arriba, Arriba, Abajo, Abajo, Izquierda, Derecha, Izquierda, Derecha, B, A, que dará 30 vidas; y Arriba, Arriba, Abajo, Abajo, L, R, L, R, B, A, que le dará todo el poder. Cada código tendrá dos pilas: una pila copia de trabajo que se utilizará para realizar un seguimiento de la secuencia de código y una pila maestro que sólo se utiliza para restablecer la pila de trabajo si se introduce la secuencia errónea.

Crear el evento de un objeto, poner en el siguiente:

/// Prepare code stacks { // Init stacks livesStack = ds_stack_create(); livesCopy = ds_stack_create(); powerStack = ds_stack_create(); powerCopy = ds_stack_create(); // Push keycodes into master stacks in reverse order ds_stack_push(livesStack,ord(‘A’)); ds_stack_push(livesStack,ord(‘B’)); ds_stack_push(livesStack,vk_right); ds_stack_push(livesStack,vk_left); ds_stack_push(livesStack,vk_right); ds_stack_push(livesStack,vk_left); ds_stack_push(livesStack,vk_down); ds_stack_push(livesStack,vk_down); ds_stack_push(livesStack,vk_up); ds_stack_push(livesStack,vk_up); ds_stack_push(powerStack,ord(‘A’)); ds_stack_push(powerStack,ord(‘B’)); ds_stack_push(powerStack,ord(‘R’)); ds_stack_push(powerStack,ord(‘L’)); ds_stack_push(powerStack,ord(‘R’)); ds_stack_push(powerStack,ord(‘L’)); ds_stack_push(powerStack,vk_down); ds_stack_push(powerStack,vk_down); ds_stack_push(powerStack,vk_up); ds_stack_push(powerStack,vk_up); // Copy master stacks to working stacks ds_stack_copy(livesCopy,livesStack); ds_stack_copy(powerCopy,powerStack); }

Recuerden que tienen que empujar a los códigos de teclas en el orden inverso porque así es como se acumula el trabajo.

En object <cualquier tecla> Event, poner lo siguiente en:

/// Check for code { if (!ds_stack_empty(powerCopy)) // Is the working stack not empty? { if (keyboard_key == ds_stack_top(powerCopy)) // Is the last key pressed correct? { ds_stack_pop(powerCopy); // Pop the keycode off the working stack if (ds_stack_empty(powerCopy)) // Is the working stack empty? { // Code complete! // You get full power! // Optional: reset the working stack for multiple activations ds_stack_copy(powerCopy,powerStack); } } else // Oops, wrong key { // If not already done, reset the working stack by copying the master over it if (ds_stack_size(powerCopy) < ds_stack_size(powerStack)) ds_stack_copy(powerCopy,powerStack); } } // Now do the same thing for the other code if (!ds_stack_empty(livesCopy)) { if (keyboard_key == ds_stack_top(livesCopy)) { ds_stack_pop(livesCopy); if (ds_stack_empty(livesCopy)) { // Code complete! // You get 30 lives! ds_stack_copy(livesCopy,livesStack); } } else { if (ds_stack_size(livesCopy) < ds_stack_size(livesStack)) ds_stack_copy(livesCopy,livesStack); } } }

Si usted tiene una larga lista de códigos, usted debe poner las stacks en una matriz y luego usar un bucle “for” para iterar a través de ellos.

También puede utilizar las colas en lugar de pilas, usted entonces necesitará hacer cola los códigos de teclas en el orden normal.

xD Pilas , colas queues instead of stacks :3

SteamSolo.com