JuliDiablo Posted May 11, 2012 Share Posted May 11, 2012 Hola, Hace tiempo me quería meter a ver un poco el mundo del Lua en MTA y ayer hablando con un amigo salió el tema, así que acá estoy. Estuve analizando algunos resources (así aprendí Pawn y demás lenguajes que se), y me surgieron algunas dudas. Agradecería si me las pudiesen resolver: - He visto en todos los resources que las variables ya sean para usar dentro de una función o no se declaraban a través de "local"(de hecho en la Wiki la página "Scripting Introduction" lo hace así. Quería saber si es correcto esto. ¿Siempre se declaran por "local" o hay otra forma?. - Noté que todas las variables no son definidas para cada jugador si no que se hace en general, no se como explicarme ésto. Es decir, yo en Pawn para almacenar para el Jugador1 un dato y para Jugador2 otro dato en la misma variable tenía que crear un array, acá (hablo siempre en los scritps que vi) que es la misma variable para todos y se puede establecer un dato para cada uno, ¿es correcto ésto? - Ésto no he encontrado ningún resource o titorial sobre esto pero quería saber si alguno me podría facilitar algo sobre el guardado/cargado de datos(ya sea por file o por base de datos, ambas opciones las se manejar). También me comento un conocido que algo sobre datos temporales, ¿cómo es esto? Tenía otras cosas para comentar, pero ahora no recuerdo luego comentaré más abajo si recuerdo. Bueno, gracias por leer y espero poder meterme en Lua como lo logre hacer en Pawn y otros lenguajes. Por lo pronto ya he podido hacer mi primer GameMode con cosas básicas, voy a ir de a poco y ver si en un futuro puedo llegar a realizar un RolePlay(tengo uno en sa-mp con media de 100 usuarios) como no he visto muchos si está bien hecho puede que sea bastante exitoso. Pero como no tengo apuro si lo voy haciendo de a poco a fin de cuentas quedará aceptable . . Disculpen si ésto no iba acá, es mi primer mensaje y aún no se bien para que es cada sección. . Cualquier tutorial básico para empezar desde 0 me será útil, si no es mucho pedir. Un saludo, Julián. Link to comment
Castillo Posted May 11, 2012 Share Posted May 11, 2012 Hola Julián y bienvenido al foro. 1: "local" se usa para que una variable pueda ser usada solo dentro de la funcion que donde la definiste, si pones algo asi: function hola ( ) local miVariable = "Hola Mundo!" end No vas a poder acceder a la variable "miVariable". Pero si le quitas el "local", entonces si. Tambien existen tablas y arrays en Lua, eso es mas conmeniente para cuando necesitas guardar mucha informacion. 2: Podes usar Account data/SQLite/MySQL/XML, para mucha informacion recomiendo MySQL o SQLite. Funciones SQLite: executeSQLCreateTable executeSQLDelete executeSQLDropTable executeSQLInsert executeSQLQuery executeSQLSelect executeSQLUpdate Funciones para MySQL y tambien SQLite: dbConnect dbExec dbQuery dbPoll dbFree Sobre los datos temporales se referia a: getElementData setElementData Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Muchas gracias por la rápida respuesta. Sobre local: Fijate acá Scripting_Introduction que estando fuera de la función también la ponen como local, ¿tiene sentido eso? Es decir, yo ahí interpreto que está diciéndole que la variable se podrá utilizar en todo el script, pero... ¿al estar fuera de toda función no es así por defecto aunque no tenga el local?. Otra duda que recorde ahora: ¿El orden de los eventos y funciones importa? Es decir, function Llevar() -- código end addCommandHandler ( "traer", Llevar) Es lo mismo que addCommandHandler ( "traer", Llevar) function Llevar() -- código end ¿O no es posible esto? (Lo pregunto ya que en Pawn si es posible, y quiero esclarecerme todas las dudas) Una duda más sobre variables: Supongamos que tengo 2 jugadores, y al entrar yo pongo en la variable "JoinTime" el tiempo de entrada de cada uno, ¿éste se sobrescribiría o se mantendría uno para cada jugador? No se si me explico. ¿U obligatoriamente tendría que utilizar setElementData? Nuevamente, gracias por la pronta respuesta. Link to comment
Castillo Posted May 11, 2012 Share Posted May 11, 2012 Cuando una variable esta fuera de la funcion y la haces local, entonces no podras usarla en otro script en el mismo recurso, lo mismo pasa con las tablas. El orden importa, no podes hacer lo que vos hiciste ahi, el evento va despues de la funcion, AMENOS que lo hagas asi: addCommandHandler ( "traer", function () -- código end ) Los scripts server side son globales, osea que si defines una variable y luego la cambias, se cambia para todo el servidor. Pero tambien estan los scripts client side, que ahi no pasa lo mismo, las variables son solo para el jugador local. Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Comprendo, gracias nuevamente. Seguiré mirando resources y si me surge alguna otra duda la plantearé en este mismo post. Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 (edited) Otra duda: ¿Hay manera de ver los errores en los resources? Dado que si tiene un fallo se me queda la pantalla negra pero no me dice donde está en el error. ¿Cómo se hace un bucle en Lua? ( ej: for(new i = 0; i < 30; i++), que se repeita 30 veces.) Edited May 11, 2012 by Guest Link to comment
Edikosh998 Posted May 11, 2012 Share Posted May 11, 2012 Pones /debugscript 3 y te aparece una consola. Luego para hacer un loop, usas for i = 1,30 do Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Muchas gracias. Ultima duda, por ahora: ¿Es posible meter una imagen dentro de un botón? (Es decir que en vez el texto se vea una imagen) PD: Al intentar usar /debugscript 3 me dice que no tengo acceso permitido para usarlo. Link to comment
Edikosh998 Posted May 11, 2012 Share Posted May 11, 2012 Muchas gracias.Ultima duda, por ahora: ¿Es posible meter una imagen dentro de un botón? (Es decir que en vez el texto se vea una imagen) PD: Al intentar usar /debugscript 3 me dice que no tengo acceso permitido para usarlo. Arriba de un boton ? Fijate las siguientes funciones : guiCreateButton -- Creas un boton guiCreateStaticImage -- Creas una imagen guiSetAlpha -- Con esta funcion, haces que el boton sea invisible guiSetProperty (boton,"AlwaysOnTop","true") -- Esto lo usas, para que el boton siga siempre adelante de la imagen aunque no se vea, para que se pueda realizar el evento de cuando alguien clickea el boton Osea con eso, vos pones una imagen que al clickearlo haga alguna accion, aunque en realidad el boton que esta invisible lo va a hacer. Por otro lado, necesitas ser admin para poder usar /debugscript 3 ... Necesitas ir a ACL.xml en el server / mods / deathmatch y en la parte que dice Group Name = "Admin" ahi le agregas "user.NombreDelAccountDelPJ"> Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Muchas Gracias de nuevo. Voy a intentar y si tengo algún otro problema les digo. Ah, ahora que me acuerdo: Al poner un botón no me aparece el mouse, ¿con que función hago que se pueda utilizar el mouse?. EDIT: Ya encontre la showCursor Link to comment
iFoReX Posted May 11, 2012 Share Posted May 11, 2012 Hey edikosh es mas facil Hacer una imagen y ponerle evento de onClientGUIClick no hay para que poner un boton Link to comment
Edikosh998 Posted May 11, 2012 Share Posted May 11, 2012 Si tienes razon, mala mia. Puedes usar guiCreateStaticImage -- Imagen onClientGUIClick -- Como evento , acordate que el source es el boton que se apreto --Ejemplo function enClickear() --sentencia end addEventHandler("onClientGUIClick",imagen,enClickear) Link to comment
Castillo Posted May 11, 2012 Share Posted May 11, 2012 Me parece que Julián piensa que solo los botones se pueden usar para ejecutar funciones, pero no, es cualquier elemento GUI. Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Muchas Gracias. Si, pensé que sólo era para eso . Tenganme paciencia, recién empiezo ya dentro de unos meses seré un Solidsnake15 Link to comment
iFoReX Posted May 11, 2012 Share Posted May 11, 2012 #OT: No te creas solid sabe re arto de .lua Link to comment
JuliDiablo Posted May 11, 2012 Author Share Posted May 11, 2012 Si, lo se. Era un chiste . Bien, ya casi termino mi primer resource(luego lo pondré acá en el foro). Ésta duda no es en cuanto a script, si no a editores. Yo utilizo notepad++ (lo uso para los demás lenguajes que se también) y quería saber si hay algún plugin de éste para Lua, ¿alguno sabe?. Link to comment
Castillo Posted May 11, 2012 Share Posted May 11, 2012 Yo tambien uso el notepad++, y tiene syntax highlight para Lua tambien, la cosa es que me olvide como lo puse Link to comment
Recommended Posts