[Tutorial] Comandos con complementos |
Eliaseeg « Citoyen » 1383471960000
| 0 | ||
Holoo \o/ Antes que nada, querría hacer 1 minuto de silencio por mi primer tutorial que hice en esta sección. Me da un poco de nostalgia ya que en el momento en el que empecé a hacer el tutorial, a penas tenía una idea de lo que era LUA; ahora miro este tema y comparo mi progreso, en fin, todo muy chachi. Primero que nada, el método que utilizabamos antes podría decir que está muy anticuado. Si queremos hacer un código con una semántica que nosotros y los demás puedan entender debemos hacer el siguiente método, en caso de que quieras utilizar el método antiguo, complicarte un poco la vida y como los machos ibericos poder testearlo, eres bienvenido. Cabe decir que voy a explicar las dos formas y hacerlo mucho más sencillo que el tutorial pasado. Forma 1: Utilizando string.gmatch y patterns. ¿A qué me refiero con "Utilizando string.gmatch y patterns"? Utilizaremos string.gmatch y los patrones para detectar cuántos complementos tiene el comando. Dejaré el código fuente ahorita mismo y explicaré todo a continuación. a dit : Primero que nada, el eventChatCommand siempre deberá estar, pues esta es la función a la que nos referimos cuando queremos interactuar con los comandos. Después, hacemos una tabla nueva cada vez que alguien escribaalgo con ! para almacenar todo el comando que esa persona ejecute. Ahora comprobamos y añadimos valores, es decir, por cada pattern %s que se encuentre en el comando, insertarlo en la tabla como un complemento del comando. Como vemos en el ejemplo, pedimos que nos imprima la tabla args después de accionar el comando. (Quiero recordar que no hay ningún hilo de patrones, por lo cual se me haría difícil explicar todo eso aquí, por lo cual voy a decir que %s son todos aquellos caracteres de texto). En todo caso si escribo !egg es el mejor; va a imprimir: egg es el mejor. Ahora lo que resta es sencillo, podemos hacer una sentencia de que si el argumento 1 es 'x' y si argumento 2 es 'y' entonces hacemos esto y esto... Bueno, eso sería todo, aquí está un ejemplo mucho más claro en el que sólo tienes que escribir !queso nombre y le darás queso al usuario que quieras. a dit : Forma 2: Utilizando string.sub. Llegamos a la zona donde los machos ibericos quieren llegar, esas personas que se quieren complicar la vida simplemente porque sí, porque la vida en sí ya es complicada. En esto, no hay mucha ciencia, aunque es algo difícil de explicar, así que intentaré ser lo más breve y lo más didáctico posible. String.sub es el método en el que podemos agarrar cierta cantidad de un string u otra cosa, sirve para casos como este en el que queremos agarrar una parte y después agarrar la otra parte. Primero tenemos que empezar con la base, el eventChatCommand. Después tenemos que agregar una condición: "Si agarramos X parte del comando y es igual a Y y si agarramos otra parte del comando, hacer algo con esa otra parte". Quiero recordar que string.sub funciona así: string.sub(principio, fin) donde principio es el valor que queremos que empiece a contar y fin es el final. Así que vamos a contar cuántas letras tiene nuestro comando, de ahí a eso, para agarrar la otra parte agarramos el número de letras que tenga nuestro comando y le agregamos 2. Te tiene que quedar algo como esto. a dit : Como vemos, iniciamos desde 0 y terminamos hasta el 5, que es el número de letras que tiene queso. A queso le sumamos otras 2 y jugamos con el resultado que nos sale. Eso sería prácticamente todo explicado de una manera muuuuuuuuuuuuuuuuuuuuucho más fácil de lo que estaba antes. Conclusión Existen varios sistemas para jugar con los comandos, ahora que el server-side se actualizó, podemos usar metatablas para jugar con el chatCommand, al igual que las co-rutinas, las cuales ejecutan un pedazo de función cuando se llama a la función especial. Se puede hacer un sistema de comandos con complementos con string.split (función incluida en la "function library" de shamousey), pero llegaría a confundir, y no quiero eso. Mucha suerte, espero que este tema ahora sea un poco más comprensible. Dernière modification le 1429331760000 |
0 | ||
Es bastante útil para las personas que no saben hacer !comando nombre #pole |
Thetroz « Citoyen » 1383497460000
| 0 | ||
Buen tutorial :D |
Hfaundez « Citoyen » 1383499380000
| 0 | ||
!Genial :3 #Hfa ;3 |
Agustinsupre « Citoyen » 1383533400000
| 0 | ||
aaaaaaaaaaaaaa NO ENTIENDO puse en el comando respawn puse tfm.exec.respawnPlayer y no sirve y el comando de queso no funciona |
Mipmippp « Citoyen » 1395504120000
| 0 | ||
Está bueno reviso un montón de veces este hilo para crear comandos ¬3¬ |
Jdkdffedogifk « Citoyen » 1417481400000
| 0 | ||
Y yo como tonto preguntandole todo a ustedes ñ~ñ sorry |
Eliaseeg « Citoyen » 1429331820000
| 0 | ||
Tema actualizado, un poco más de información y cosas más sencillas de lo que eran. |
Toyfreddyman « Citoyen » 1429829820000
| 0 | ||
¿Puedo traducir su tema para el Server , Brasil? |
Eliaseeg « Citoyen » 1430007180000
| 0 | ||
Como quieras, sólo espero que sea una traducción coherente |
Niopigaa « Censeur » 1433970060000
| 0 | ||
Esto seria lo mismo que elseif command == X then FUNCION. ? |
Eliaseeg « Citoyen » 1433976360000
| 0 | ||
No te entendí nada, pero te haré un resumen. a dit : |