Hola! Bueno, mi problema *hoy* (xD) es con los savedatas... bueno, más bien con el manejo de tablas. Aún no soy muy diestro en Lua, no lo soy en ningún lenguaje, y es por eso por lo que *muy* probablemente haya hecho un noobada de las gordas (otra más), pero... dejaré que el code se explique por sí solo...
function game.engine.savedata.save() saveplace = {gameid="LDEV", savenames="MHEH"}; savelangig_readed = { title="Monster Hunter Epic Hunt™", subtitle="Game Data", details="Game Data for Monster Hunter Epic Hunt™.", icon0="eboot/ICON0.PNG", pic1="eboot/PIC1.PNG" }; data = { player = player, options = { cpu = menu.options.cpu, brightness = menu.options.brightness, dualload = menu.options.dualload } }; done, where = savedata.autosave(saveplace, savelangig_readed, string.implode(data, "|@%")); -- 'done' almacena un valor booleano, si se guardó con éxito o no, y 'where' es un string que contiene el nombre del savedata guardado if done == true then return where; else return nil; end end function game.engine.savedata.load() saveplace = {gameid="LDEV", savenames="MHEH"}; done, where, what = savedata.autoload(saveplace); if done == true then data = { player = nil, options = { cpu = nil, brightness = nil, dualload = nil } }; data = string.explode(what, "|@%"); player = data.player; menu.options.cpu = data.options.cpu; menu.options.brightness = data.options.brightness; menu.options.dualload = data.options.dualload; return done; else return nil; end end
Tan sólo hay que quedarse con que menu es una tabla, contiene otra tabla en su interior, options, que a su vez aloja los elementos cpu (de tipo numérico), brightness (tmb de tipo numérico) y dualload (de tipo booleano).
Al cargar el savedata, carga el string en la variable what y después parte el string según el separador |@%. Por último, reasigna y... error...
espero que alguien pueda ayudarme,
muchas gracias y saludos!
http://www.mhypnok.blogspot.com/
Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...
Muchas gracias a todos,
ya está resuelto.
Slau2!!!
Con un for: function
Con un for:
ehm....
Y qué error sale? xD
PD. Cuidado, si usas string.implode en una tabla estilo...
Te devolverá una cadena en blanco.
Correctamente correcto (de
Correctamente correcto (de momento).
Ya veo que me vais a hacer mejorar mucho el implode... xD
El implode y explode solo funciona para arrays numericas, no con key=value.
Es decir, sólo con tablas tipo:
{ abc, abd, dca, bac } y no del tipo { aaa = bdc, aep = bd }, y mucho menos con tablas dentro de tablas.
Procesad manualmente la tabla y convertirla en string como os sea conveniente, no es necesario ni obligatorio el implode ni el explode, para guardar tiene k ser string, que cada coder se busque su propia convención.
Probad por ejemplo:
datos = { vida = 12, nivel = 23 }
function guardar()
string = datos.vida..","..datos.nivel;
-- y guardais esta string.
end
function cargar()
string = load...
datillos = string.explode(",");
datos.vida = datillos[1];
datos.nivel = datillos[2]; -- los hemos juntado por este orden, 1 vida, 2, nivel.
-- etc...
end
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es