la mejor tienda del mundo

con ésto, y en resúmen, toda la funcionalidad básica de la tienda (relacionada con comprar objetos) está lista. falta trabajar bien el asunto de vender objetos. ¿es realmente necesario? yo no creo, pero bueh.

también hay algo que me complica, y es el hecho de comprar más objetos de los que puedes llevar. no lanza ningún error, pero así como el juego detecta cuando estás comprando más del dinero que tienes, debería hacer algo que detecte cuando estás comprando más objetos de los que puedes llevar. ésto puede ser un cacho porque cuando un objeto tiene más de 99 instancias en inventario, se crea una nueva instancia para agruparlos. ésta restricción es principalmente para que uno no pueda comprar 99999999999999999999 objetos del mismo tipo, sin embargo, supongamos que tenemos 52 instancias de un objeto, y compramos 99, pero no quedan más espacios. el juego te debiese dejar comprar hasta 47 veces el mismo objeto, sin embargo el límite es 99. ¿cómo checamos eso? se me ocurren dos soluciones:

podría hacerse con una función (que llamaremos inventory_cancarryitem() o algo así) que recibe un índice de objeto, y que s- no, espera, el trabajo lógico de ésto ya está hecho en el script para dar items. podría hacer que sencillamente ése mismo script devuelva un true o false si puede o no puede conservar la cantidad de items en inventario. me imagino que se podría usar la función sólo para devolver el true o false dentro de una expresión, sin que, efectivamente, añada el item, pero no se. tengo que cachar si funca o no funca.

la otra opción es cagarse en el jugador. mala cuea si compra más items de los que puede llevar.

(sin embargo ésta última opción no es tan recomendable, tomando en cuenta que cuando haga la parte de vender voy a tener que tener una comprobación similar para evitar transacciones de más items que los poseídos. mejor me ahorro pega y lo hago bien al tiro.)

lo siguiente que voy a abordar va a ser el sistema de cutscenes con texto e imagen, mientras pienso en el otro sistema de cutscenes, con actores. de hecho, voy a aprovechar de antor acá las ideas para eso.

lo más lógico es que el sistema de cutscenes en que se utilicen actores, cada actor tenga preprogramada un trigger y una secuencia de comandos, más o menos así:

if_trigger("trigger de la cutscene",true); // si el trigger está activado,
move("+64",false); //camina 64 pixeles a la izquierda, la siguiente acción no empieza hasta que avance esos 64 píxeles o se tope con un obstáculo.
jump("+32"); //Salta mientras avanza 32 píxeles. La siguiente acción no empieza hasta que el personaje caiga al piso.
dialog_hold("Dios mio, me estoy moviendo solo. Creo que estoy poseído por un script de cutscene.",false); //Muestra el diálogo en pantalla. El diálogo debe ser acabado por el usuario y la acción se pausa hasta que el diálogo acabe.
dialog_free("¡A correr!",true); //Muestra el díalogo en pantalla. El diálogo acaba solo y la acción en pantalla no se pausa.
move("-256",true); //Corre 128 píxeles a la derecha.
trigger("trigger de la cutscene",false); // desactiva el trigger
block_end(); //Termina el bloque

éstos comandos se ejecutarían de forma similar al actual sistema de diálogos, sólo que completamente diferente. no se cómo explicarlo, honestamente, pero tengo el código para hacerlo posible. debería darme las gracias por programar los actores en forma modular. lo normal es que los personajes en un juego estén programados con sus movimientos en "código duro", pero en catbox los actores tienen variables que les indican qué están haciendo, qué pueden hacer y el código determina qué sucede si éstas variables son verdaderas o falsas, entonces el código para mover al personaje no es "si la tecla está apreatada, mueve al personaje n pixeles en el eje x" si no "si la tecla está apretada, activa la variable caminar" y luego otro script dice "si la variable caminar está activada, mueve al personaje n pixeles en el eje x", entonces si quiero hacer un script para mover al personaje escribiendo comandos en pantalla, no hace falta que reescriba todo, si no que basta con reemplazar el primer script por algo que diga "si el comando dice caminar, activa la variable caminar", entonces el sistema para cutscenes no sería más que un agregado del script de todos los actores, para que, si el trigger de cutscenes está activo o la variable de cutscenes tiene otro valor que no sea 0 (todavía no decido eso), active el script que maneja a los personajes durante las cutscenes y desactive el que los maneja normalmente.

pero todo ésto es más fácil dicho que hecho.

blog comments powered by Disqus