Hola, miren, mi conocimiento GML es aun algo simple, pero estoy haciendo un juego, donde quisiera generar el nivel (con objetos, no con tiles) a partir de un simple código typeado en un get_string, es decir, que te pida un codigo y lo pones (ej:
eeeeeeeebleeeeeeebblepeeeebbbleeeeebbbbleeeebbbbbleeebbbbbbleebbbbbbblebbbbbbbblxxxxxxxxxf
)
y quiero que lea ese codigo, caracter a caracter, y según que caracter haya, haga una función, que son:
e = crear oEmpty
b = crear oBlock
p = crear oPlayer
l = cambiar la linea de creado de objetos (lo tengo como global.ypos) y poner el global.xpos a 0 (lo ue viene a ser, nueva linea...
x = crear oBlockLimit
f = terminar de leer el codigo.
y bueno... como aun estoy algo verde... lo he intentado, pero ya ando algo desesperado, seguro que uso los comandos que no son, porque es la primera vez que intento hacer algo así...
esto es lo que tengo:
-Todos los objetos creados, con sus nombres bien puestos.
-un script (scWorldLoad):
if global.creating = 1
{
global.xpos = 0;
global.ypos = 0;
global.line = 0;
global.str = 0;
if global.get = 1 {global.file = get_string("Map Creation",""); global.get = 0;}
global.xobject = string_char_at(global.file,global.str);
global.object = "";
switch global.xobject
{
case "e":
global.object = oEmpty;
global.str += 1;
break;
case "b":
global.object = oBlock;
global.str += 1;
break;
case "p":
global.object = oPlayer;
global.str += 1;
break;
case "x":
global.object = oBlockLimit;
global.str += 1;
break;
case "l":
global.ypos += 16;
global.xpos = 0;
global.str += 1;
break;
case "f":
global.creating = 0;
break;
}
instance_create(global.xpos,global.ypos,global.object);
global.xpos += 16;
}
-un objeto para ejecutar el script en step (mientras le diga que lo ejecute)
-y en una room donde me interesa probar todo, el objeto ultimo nombrado. (y otras cosas parte del juego ahora irrelevantes)...
dejo adjuntado el gmk y un .txt con un codigo de mapa de prueba que intento generar, pero no me sale :(
EDITO: las globales que ven, son previamente creadas en el gamestart de la pantalla de título
PD: Para el que descargue y vea el archivo, sí, es un fangame 2D del Ace of Spades xd
No lei mucho tu ejemplo, pero lo que yo haria es:
CitarObtener el string
Hacer un for que vaya "pasando" por cada una de las letras
Crear el objeto dependiendo de la letra y ubicarlo dependiendo de la posicion
Algo asi:
mapa = argument0
longitudString = string_length(mapa)
anchoNivel = argument1 // Cantidad de tiles del nivel horizontalmente
anchoTile = argument2 // Ancho y alto de cada tile
objeto = oEmpty // Un default por las dudas
for (i = 0; i < longitudString; i++) { // Lo siguiente se repititá tantas veces como largo sea el archivo
switch string_char_at(mapa, i) { // Devuelve la letra que esta en la posicion i
case "e":
objeto = oEmpty
break;
case "b":
objeto = oBlock
break;
case "p":
objeto = oPlayer
break;
// etc...
}
instance_create((i % anchoNivel) * anchotile, floor(i / anchoNivel) * anchoTile, objeto) // Crea el objeto
}
Creo que así estaría lo mas dificil es:
(i % anchoNivel) Se supone que devuelve la posicion horizontal de la casilla
floor(i / anchoNivel) Se supone que devuelve la posicion vertical de la casilla
Muchisimas gracias. No me valio eso, pero me ayudo mucho para lograr in codigo. Ya lo he co.seguido. Y no solo eso. He logrado tamnien crear un EDITOR DE MAPAS ke te crea el arxhivo .map le puse jeje. Ya lo subire para la gente. Ahora no ke ando en un movil jeje gracias. Tema solucionado pueden cerrar.