Digamos que en una aplicacion en C (o lo que sea), tengo un "enorme" array de (digamos) 5000 enteros de 32 bits.
Y desde un script de lua quiero leer simplemente uno (o unos pocos) de esos valores (digamos el 3241, por ejemplo).
La única forma que conozco de pasar valores de C (o lo que sea) a LUA es mediante tablas... pero meter una tabla con los 5000 enteros me parece muy cutre. Y no quiero crear una tabla y llenar "a cañon" los 3 o 4 valores que me interesan, puesto que es el script y no el programa, el que debe de decir que valor se debe de leer.
No se si me explico... :rolleyes:
Pues bien,... ¿alguien sabe como se hace?
Soy novatillo en LUA y no acabo de ver la forma de hacerlo... (nooo)
Para pasar un numero de C a LUA:
lua_pushnumber(L, m_iNumber);
Para leer un número que ha pasado LUA a C:
int iL = lua_tonumber(L, 1);
Para leer un string que ha pasado LUA a C:
char* name;
name = (char*) lua_tostring(L, 1);
Espero que te sirva esto! (pq mucho más no sé... :P )
Cita de: "vincent"Para pasar un numero de C a LUA:
lua_pushnumber(L, m_iNumber);
Efectivamente,... esto es lo que andaba buscando... muchas gracias (uoh)
De ná!
Podrias explicar tu como va el tema de las tablas? Es que me gustaria pasarle a LUA una estructura y me gustaria hacerlo de golpe, no con n pushnumbers...
Merci!
Cita de: "vincent"De ná!
Podrias explicar tu como va el tema de las tablas? Es que me gustaria pasarle a LUA una estructura y me gustaria hacerlo de golpe, no con n pushnumbers...
Merci!
Lo de las tablas aprendi ha hacerlo gracias al tutorial (donde pone
C API al final de la página):
http://lua-users.org/wiki/TutorialDirectory
Gracias, esta bastante majo el .pdf
Me esta gustando esto.... ya tengo medio juego listo para tirar de scripts LUA (ole)
Holaps!
Yo sinceramente te recomiendo que utilices luabind. Es lento de compilar pero va de puta madre.
Quizás sea matar moscas a cañonazos, o quizás no...
talogo!
EDIT: Ahm! Hay un link muy interesante de Lua:
PIL
Gracias. Interesantes ambos links.
Del luabind, creo que por ahora paso, ya tengo gran parte del juego funcionando a base de scripts y me da perro cambiarlo. Ademas, uso delphi y no se si hay cabeceras de luabind para delphi.
Yo utilizo LuaBind en el PFC y como dice MChiz va de puta madre. Eso si, los templates son un peligro porque a la que empiezas a exportar muchas cosas puedes llegar al limite maximo del Visual Studio.
Si alguien se anima, la idea es tener claro que exportar y colocar el codigo de bind, que es el que genera los templates, en un lugar separado para que al recompilar no se tenga que recompilar mucho, que como tambien dice MChiz es algo lento.
Sobre tu pregunta, quizas una forma mas practica de pasar numerillos, seria que exportases a lua una funcion get_from_array que le pasas el indice y te devuelve el numero.
Mas o menos se haria asi (igual estoy redundando en algo que ya sabes, pero asi es como lo haria yo):
int get_from_array( lua_State * pLuaState )
{
int index=(int) lua_tonumber( pLuaState, 1); // leemos el primer parametro (se podria comprobar que fuera un numero con lua_isnumber
int numero;
/* codigo para acceder a tu super array */
// los parametros se envian por la pila de Lua
lua_pushNumber(pLuaState, numero);
return 1; // devolvemos 1 resultado
}
Luego para poder acceder desde Lua harias ...
lua_register ( pLuaState, "get_x", get_from_array);
El problema de esto es que a) es un poco C hack para mi gusto y B) si usas objetos tienes que pasar parametros para identificar la instancia, el metodo que quieres ejecutar, etc. por eso mejor usar LuaBind para esos casos, ya que te automatiza bastante el proceso.
Sobre LuaBind, creo que no hay la cabecera para Delphi, ademas al ser una libreria basada en templates seria dificil de utilizar en Delphi, no es una cosa que se pueda enchufar como la DLL de Lua.
ese tutorial de lua lo escribio un amigo mio, (participa aqui tambien). actualmente estamos usando lua para controlar datos de los escenarios, como posiciones de objetos y un gran etc. es bastante bueno ;)
para que lo estan usando ustedes?
vicho, dile a tu amigo que el tuto mola (ole)
Yo estoy usando lua actualmente para definir los ataques, las conversaciones con NPCs, y el sistema de inventario/tienda del RPG que estoy haciendo. Funciona a las mil perlas y me estoy limitando a mejorarlo y ampliarlo. Actualmente sin tocar el ejecutable puedo hacer medio juego solo a base de tocar/crear scripts.
Para los mapas todavia uso un cutre-sistema ""script"" hecho por mi que me resulta mas comodo que usar lua por diversos motivos.
:wub: