×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • Guías y Tutoriales
  • /
  • [Tutorial] Cosas básicas de LUA.
[Tutorial] Cosas básicas de LUA.
Thetroz
« Citoyen »
1393260780000
    • Thetroz#0000
    • Profil
    • Derniers messages
    • Tribu
#1
  1
¡Hola!
En éste tema haré un tutorial con las cosas básicas de LUA en TFM.
El tema está basado en la documentación 5.1 de LUA oficial.


http://i.imgur.com/59rr3Cm.png
Tablas y funciones.

- Tablas.

Todo script necesita al menos una tabla (a menos que sea muy sensillo). Antes de empezar la guía no podemos dejar de atrás las tablas ni las funciones.

Si no sabes que es una tabla o table, acá te lo diré.

Una tabla es, en sí, un conjunto de datos.

Existen ambos códigos para usar tablas. En éste caso pondré los más comunes.

http://i.imgur.com/59rr3Cm.png
a dit :
table.insert(NombreDeLaTabla, texto o cosa a agregar en la tabla)

Éste código sirve para agregar "algo" a una tabla.

Ejemplo a dit :
tabla = {}

table.insert(tabla, "kpazza")

print(tabla[1])

http://i.imgur.com/59rr3Cm.png
a dit :
table.remove(NombreDeLaTabla, texto o cosa a quitar de la tabla)

Éste código se utiliza para remover/quitar algo de una tabla.

Ejemplo a dit :
tabla = {}

table.insert(tabla, "kpazza")

table.remove(tabla, "kpazza")

http://i.imgur.com/59rr3Cm.png
Además de eso, puedes poner el tipo de cosa en una tabla, por ejemplo.

Ejemplo a dit :
tabla = {gato="meow", perro="guau"}

print(tabla.gato)

A la hora de imprimir, debemos poner, la tabla + el tipo. Esto lo debemos separar por puntos.

Digamos; tabla.gato

tabla = La tabla
gato = El tipo "gato" en "tabla"

También, pues poner ambas cosas sin tener que poner número. Por lo tanto sería

Ejemplo a dit :
tabla = {"a", "b", "3", "r"}

print(tabla[2])

Éste imprimirá "b" por que es el tipo 2.

Puedes hacer más tablas del mismo nombre, pero debes agregarle un corchete y un número.

Ejemplo a dit :
tabla = {}
tabla[1] = {}

Y así sucesivamente.

Puedes hacer tablas de texto. Solamente, agregamos dos comillas ("")

Ejemplo a dit :
tabla = {""}
tabla[1] = ""

Éstos son los tipos que normalmente se utilizan para hacer chats con lua.

En las comillas si deseas se puede poner el texto que desees.


http://i.imgur.com/59rr3Cm.png
a dit :
table.concat(NombreDeLaTabla, separación)

El concat, en sí, sirve para imprimir (print) una tabla completa.

En éste ejemplo verás.

Ejemplo a dit :
tabla = {"asd", "k", "ola"}

print(table.concat(tabla, "."))

En el segundo valor deberemos poner el signo de separación del contenido...

Es decir, solamente cambia en el print el punto (.) por el signo en el que se separará. Si quieres todo seguido, solamente no pongas nada.


http://i.imgur.com/59rr3Cm.png
- Funciones.

Las funciones son sectores de códigos que se pueden llamar en cualquier momento y lugar.

Éstas se hacen escribiendo function y luego el nombre de la función. Transformice tiene ya algunas funciones incoporadas (véalas en Topic-451587) pero igualmente, tu puedes inventar funciones.

Una función es así:

Ejemplo a dit :
function NombreDeLaFuncion()
*Pon aquí las cosas que hace ésta función
end

El "end" sirve para cerrar la función y que no se 'revuelva' con las demás.

Ahora, tenemos la función, pero nada pasará por que no la hemos llamado. Para llamarla debes escribir el nombre de la función.

Ejemplo a dit :
NombreDeLaFuncion()

Y listo. Aquí he armado yo un ejemplo claro:

Ejemplo a dit :
function hola()
print("asdasdasd")
end

hola()

http://i.imgur.com/59rr3Cm.png
Crear comandos.

En éste bloque se desarrollará un minitutorial de crear comandos para hacer chats, referirse a una persona, etc.


http://i.imgur.com/59rr3Cm.png
- Crear comandos refiriendose a una persona en la sala.

Para empezar agregaremos la función eventChatCommand.

Ejemplo a dit :
function eventChatCommand (player, command)

Seguidamente agregaremos un tabla 'args'

Ejemplo a dit :
args = {}
for arg in command:gmatch ("[^%s]+") do
table.insert (args, arg)
end

^Ésta es la tabla que nos ayudará a poner más cosas en el comando.

Ahora empezaremos el comando.

Ejemplo a dit :
if args[1] == "comando" then

En éste caso se debe poner: "args[1]" que se refiere a la persona que ejecuta el comando.

Ahora hacemos lo que pasará al ejecutar el comando. En éste caso haré un sistema de "advertencias".

Ejemplo a dit :

function eventChatCommand (player, command)
args = {}
for arg in command:gmatch ("[^%s]+") do
table.insert (args, arg)
end
if args[1]== "advertir" then
ui.addTextArea(0, "<n>Has recibido una advertencia.<br><p align='center'>"..args[2].."<br><br><a href='event:cerrar'>Cerrar</a>", args[3], 241, 53, 200, 200, 16074642, 13110107, 1.1)
print("Advertiste a "..args[3].." con "..args[2].."")
end
end

Ahora me gustaría explicar ésto. En el script aparece:

a dit :
<a href='event:cerrar'>

Éste se refiere a un botón de cerrar. Pero no pasará nada cuando lo clickees por que no has puesto ninguna función con eso.

Entonces, lo que debes hacer es agregar ésta función:

a dit :
eventTextAreaCallback(id, player, c)

Seguidamente, pondremos un if más "cerrar".

a dit :
if c == "cerrar" then

RDE .- -. ..- -. -.-. .. --- ... .-.-.

Ahora, pondremos lo que pasará al clickear eso. En éste caso pondré "remover el textArea"

a dit :
ui.removeTextArea(0, args[3])

Y cerramos con ends.

Al terminar éste pequeño script nos quedará así:

http://trospaste.hol.es/htdocs/view/16ba3407

Éste se utiliza escribiendo "!advertir LaRazón PersonaALaQueSeLoEnvias".

Si quieres dirigirte exactamente a una persona en la sala, deberás poner

a dit :
tfm.get.room.playerList[args[2]]

Éste trozo se refiere a las personas en la sala.

Te preguntarás donde ponerlo.

Lo deberás poner luego del comando.

Sería así:

Ejemplo a dit :
if args[1] == "comando" and tfm.get.room.playerList[args[2]] then

http://i.imgur.com/59rr3Cm.png
- Creación de chats con comandos.

¿Te gustaría crear un chat con LUA? En este minitutorial se te explicá paso a paso que deberás hacer!

Éste script es sensillo, por lo que no hay mucho que explicar.

1. Empezaremos creando la tabla donde estarán los mensajes. Como se mencionó antes, esta tabla será una tabla de texto.

Ejemplo a dit :
mensajes = {""}

^Eso es una tabla de texto, que tiene dos comillas.

2. Haremos un textArea que estará en constante actualización para que todos los mensajes vayan apareciendo.
Para lograr que el TextArea esté en constante actualización agregaremos un eventLoop.

Ejemplo a dit :
function eventLoop()

3. Y agregamos el TextArea. /!\El textArea lo modificas a tu gusto.

Ejemplo a dit :
function eventLoop()
ui.addTextArea(777, "<p align='center'><font face='soopafresh' size='30'>Chat</p></font><br><br>"..mensajes[1].."", nil, 136, 31, 500, 300, 16777215, 16777215, 0.8);
end

En el textArea deberemos agregar "..ComoLePongasATuTabla[1].."
En ComoLePongasATuTabla pones el nombre de tu tabla, en mi caso es "mensajes" entonces colocaré "..mensajes[1].."

4. Ahora agregaremos el comando que permitirá agregar el mensaje al chat.

Empezaremos agregando la función de comando.

Ejemplo a dit :
function eventChatCommand(name, cmd)

Agregaremos el if + cómo será el comando para los mensajes

Ejemplo a dit :
if cmd:sub(0,1) == "m" then

En mi caso pondré "m"
Ahora, pondremos lo que se agregará a la tabla.

Ejemplo a dit :
table.insert(mensajes, 1, mensajes[1].."LO QUE SE AGREGARÁ")

Esta parte es donde debes editar, pon cuidado!

Edita:
mensajes = por la tabla de tus mensajes
LO QUE SE AGREGARÁ = apariencia del mensaje. En mi caso pondre: "<v>["..player.."]<n> "..cmd:sub(3).."<br>"

Al final, siempre deberás poner el <br> para que los mensajes no se vean mal.

Ya terminado será así:

Ejemplo a dit :
table.insert(mensajes, 1, mensajes[1].."<v>["..player.."]<n> "..cmd:sub(3).."<br>")

Al terminar todo este minitutorial tendremos como resultado esto: http://trospaste.hol.es/htdocs/view/940b6733


http://i.imgur.com/59rr3Cm.png
TextAreas.

- Diseño y contenido.

Los TextAreas son cosas importantes en los juegos que se hacen en la casa de la tribu, puesto a que como no se puede usar el script de poner un mensaje en el chat de la sala, se usa esto como lugar para mensajes.

Un TextArea es así:


http://i.imgur.com/dU0ndbs.png
1 : Es la ID del TextArea. Esta ID permite el orden.
2 : Es el Texto, en esta colocas lo que quieres que el TextArea muestre.
3 : Acá va el nombre de la persona que verá el TextArea, si pones NIL se muestra a todos los jugadores.
4 : Es la coordenada X en la que el TextArea se ubicará.
5 : Es la coordenada Y en la que el TextArea se ubicará.
6 : Es el largo del TextArea.
7 : Es el ancho del TextArea.
8 : Es el color del fondo, coloca 0xColorHexadecimalAcá.
9 : Es el color del borde, coloca 0xColorHexadecimalAcá.
10 : Es la opacidad del TextArea, si colocas 0 se mostrará solo texto y no fondo.
11 : Es el boolean del TextArea, si pones true el textArea se quedará fijo en la pantalla en mapas largos, con false pasa todo lo contrario.


http://i.imgur.com/59rr3Cm.png
El tema va dedicado a @Hinakagiyama por que si no fuera por él yo no sabría todo lo que sé ahora de lua. ♥

Si quieres que agregue algo, me dices en un comentario. Como dice la imagen, el tema está en construcción por lo tanto no lo he terminado y faltan cosas por agregar.

Piensa antes de comentar. Lee bien todo y luego hazlo.
No postees cosas como "Buen hilo :O #Pole."

http://i.imgur.com/59rr3Cm.png

http://i.imgur.com/7sCHJOw.png

Dernière modification le 1447966440000
Zutto
« Citoyen »
1393261140000
    • Zutto#4451
    • Profil
    • Derniers messages
    • Tribu
#2
  0
omg

Perfecto tutorial, y eso que está en construcción.

Cuando esté terminado será más genial aún :O
mis dieces! <3
Thetroz
« Citoyen »
1393261440000
    • Thetroz#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  0
Ops, se me olvidó reservar el primer post.

Reservo acá~
Zutto
« Citoyen »
1393265520000
    • Zutto#4451
    • Profil
    • Derniers messages
    • Tribu
#4
  0
Ah una cosita para las tablas.

a dit :
tabla = {"a","b","3","r"}

Estaría bien que pusieras cómo poner todos los elementos de la tabla, con el concat.

a dit :
tabla = {"a","b","3","r"}

print(table.concat(tabla, ", "))

Añádelo si quieres ^-^
Thetroz
« Citoyen »
1393288800000
    • Thetroz#0000
    • Profil
    • Derniers messages
    • Tribu
#5
  0
Aritxy a dit :
Ah una cosita para las tablas.
Estaría bien que pusieras cómo poner todos los elementos de la tabla, con el concat.
Añádelo si quieres ^-^

Listo, gracias ♥
Tesuperarecl
1393307340000
    • Tesuperarecl#0000
    • Profil
    • Derniers messages
#6
[Modéré par Ana]
Haku
« Sénateur »
1393307520000
    • Haku#0807
    • Profil
    • Derniers messages
#7
  0
Algunas cosas que quiero señalar de las tablas:

Una tabla no es más que un conjunto de pares índice-valor (keys y values).
El índice es lo que se usa para hacer referencia a un espacio de la tabla y el valor es lo que contiene.

Code a dit :
edades["Haku"] = 21

21 es el valor contenido en el índice "Haku" de la tabla edades

Las tablas puede tener índices numerados o literales, o ambos:

Code a dit :
equipo[1] = "Hakureimouse"
equipo[2] = "Violetosa"
equipo[3] = "Shikieikii"
equipo["lider"] = "Shikieikii"

También se puede hacer referencia a los índices literales usando el punto:

Code a dit :
perro["nombre"] = "Firulais"

o

perro.nombre = "Firulais"

Una tabla se puede crear y luego llenarla o se puede definir y construir al mismo tiempo:

Code a dit :
tabla = {}
tabla["Thetroz"] = "Arroz"
tabla["Violeta"] = "Pashasa"

o

tabla = {["Thetroz"] = "Arroz", ["Violeta"] = "Pashasa"}

o

tabla = {Thetroz = "Arroz", Violeta = "Pashasa"}

Cuando no se especifican índices a la hora de construir una tabla, automáticamente se le asigna el siguiente índice numerado disponible a partir de 1 en adelante:

Code a dit :
nombres = {"Patito", "Pashasa", "Ternura"}

(los 3 valores se guardarán en nombres[1], nombres[2] y nombres[3])

La función table.insert funciona con tablas ordenadas, añade el valor al siguiente espacio disponible entre los índices numerados. En la tabla anterior:

Code a dit :
table.insert(nombres, "Coshita")

Agregará el valor "Coshita" en el índice 4, nombres[4]


table.remove funciona indicando el índice del valor a remover, no el valor en sí:

Code a dit :
table.remove(nombres, "Ternura") <--- MAL

table.remove(nombres, 3) <--- BIEN

Toma lo que sirve de aquí si quieres añadir o corregir algunas cosas.
Ballstarsexy
1393635660000
    • Ballstarsexy#0000
    • Profil
    • Derniers messages
    • Tribu
#8
[Modéré par Shyraa]
Scriptattack
1393684320000
    • Scriptattack#0000
    • Profil
    • Derniers messages
#9
[Modéré par Rowne, raison : ^ Respuesta / Fuera de tema]
Thetroz
« Citoyen »
1396207740000
    • Thetroz#0000
    • Profil
    • Derniers messages
    • Tribu
#10
  0
Se ha agregado un minitutorial de como hacer chats
Mipmippp
1396209780000
    • Mipmippp#0000
    • Profil
    • Derniers messages
#11
[Modéré par Ana, raison : Fuera de tema]
Eliaseeg
« Citoyen »
1396274400000
    • Eliaseeg#0000
    • Profil
    • Derniers messages
#12
  0
Thetroz a dit :
Se ha agregado un minitutorial de como hacer chats

Está roto el link
Thetroz
« Citoyen »
1396276860000
    • Thetroz#0000
    • Profil
    • Derniers messages
    • Tribu
#13
  0
Eliaseeg a dit :


Está roto el link

A mi me sirve perfectamente xD http://prntscr.com/35rsnp
Recarga la página

e// Por ahora el servidor está caido
e2// Ya entra
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • Guías y Tutoriales
  • /
  • [Tutorial] Cosas básicas de LUA.
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27