TFW: Partir un cartucho
Como poner un código único en un cartucho.
Supongamos el siguiente caso: tenemos un cartucho de Wherigo que es muy largo y que queremos dividir en varios cartuchos con objeto de que no carguen demasiado el player y se cuelgue. Bien hasta aquí sencillo, dividimos nuestro recorrido en varios tramos y con cada uno de ellos generamos un cartucho. Bien, pero... algún avispado jugador puede pensar que con hacer el último cartucho tiene suficiente. Para evitar esto, podemos hacer que al final del cartucho anterior, se le entregue al jugador un código que deberá introducir en el siguiente cartucho antes de empezar a jugar. Esto lo podríamos hacer de la siguiente manera:
Primer cartucho | Segundo Cartucho |
Al final del primer cartucho, ponemos un mensaje en el cual le entregamos al jugador el código y en el segundo cartucho, ponemos un Input y en el evento On get input tenemos que poner las sentencias que vemos en la imagen para comprobar que el código introducido es el correcto.
Hasta aquí todo muy sencillo, pero tiene un inconveniente, y es que te pueden dar el código para completar el cartucho y en ese caso no necesitas jugar los cartuchos anteriores, con jugar el último es suficiente. Vamos a poner remedio. Para ello lo que vamos ha hacer es generar un código único para cada cartucho y jugador de manera que no se pueda utilizar el código generado para otro jugador.
Primer cartucho | Segundo Cartucho |
Para generar un código único, vamos a utilizar una función hash. Las funciones hash o funciones resumen tomar como valor de entrada una cadena de longitud variable (puede ser un texto completo) y nos generan un código de longitud fija que es único para esa cadena. Podriamos decir que es una especie de encriptación, pero con una diferencia, con que cambie un solo carácter de la cadena, el código que se genera es completamente distinto y que aunque es muy sencillo de obtener el código a partir de la cadena lo contrario es bastante complicado.
Como Urwigo no trae una instrucción directa que haga esto, tendremos que escribir el código necesario utilizando Lua. En este caso es muy sencillo puesto que solamente necesitamos una linea de código.
Para insertar una linea de código Lua en nuestro programa utilizamos el bloque Lua user expression, que lo podemos arrastrar desde la última linea de la seccion Expressions. Una vez colocado el bloque lo que tenemos que hacer es escribir el código que genera el Hash. Vamos a utilizar para hacerlo una función que viene con Urwigo que se llama _Urwigo.Hash(). Esta función admite como parámetro de entrada una cadena y devuelve como salida un número que es función de la cadena introducida.
Como parámetro de entrada ponemos el nombre del cartucho y lo concatenamos con el nombre del jugador. Aunque el nombre del cartucho se encuentra en la variable Cartidge.Name, no podemos utilizarlo porque en el segundo cartucho el nombre es otro . Por eso ponemos directamente la cadena con el nombre. Para el nombre del jugador utilizamos la variable Player.Name. Esta variable contiene el nombre del jugador que se ha utilizado en la página de Wherigo al descargar el cartucho. La intrucción queda: _Urwigo.Hash("Micartucho"..Player.Name). Recuerda que tienes que substituir "Micartucho" por el nombre correspondiente. Entre "MiCartucho" y Player.Name nos encontramos dos puntos .. este es el operador que utiliza Lua para concatenar dos cadena, es similar al comando Concatenate de Urwigo.
Con este sencillo truco tenemos el mecanismo que necesitamos para poder dividir un Wherigo en varios cartucho sin que el jugador se pueda saltar ninguno de los pasos.