Jump to content

Unas dudas.


Recommended Posts

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 xD.

. 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

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

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

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

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 by Guest
Link to comment
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

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

Si, lo se. Era un chiste xD.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...