[Tutorial] Sistema de Admins, Bans y comandos exclusivos |
Hakureimouse « Citoyen » 1381173600000
| 2 | ||
Una de las cosas que más desea un líder en su tribu es tener control sobre lo que pasa en la misma, para mantener cierto orden o simplemente para ejercer sus poderes de dictador. Es por esa y varias razones que a veces se quiere tener privilegios especiales; ser admin de la sala, de la tribu, del minijuego. En este tutorial pretendo mostrar y explicar, desde cero, la creación de un sistema de admins. Y además complementarlo con sus comandos exclusivos para admins y un sistema de ban para mandar a los malulos a recibir su castigo. #1. Lista de admins Para tener una lista de admins, es necesario tener una tabla donde almacenar los nombres de cada uno de los jugadores con privilegios de admin. Existen diferentes formas de hacer esto pero la más sencilla es con una lista inicial, que se modifique directamente en el código. a dit : #2. Comandos Perfecto, tenemos una lista de admins, pero no hace nada. Ahora necesitamos un comando que agregue personas a esa lista. Para ello tendremos que hacer que nuestro script pueda leer varias palabras en un mismo comando, puesto que usaremos "!admin usuario" para agregar a alguien a la lista. a dit : El código anterior lo encontrarás con frecuencia y te permite separar la cadena de texto "command" en cada palabra escrita. Cada palabra se guarda en la tabla args y para acceder a ellas simplemente usaremos args[número de la palabra] En el caso de "!admin usuario", la primera palabra es admin y la otra el nombre del jugador. Estas serían args[1] y args[2], respectivamente. Ahora creamos nuestro primer comando, dentro del código anterior: a dit : Si la primera palabra en el comando es "adminlist", se muestra la lista de los administradores actuales. #3. Agregar admins Si ahora quisiéramos agregar más personas a la lista de admins para entregarles privilegios, podemos crear el comando del que hablamos antes: "!admin nombreDeUsuario", de la siguiente forma, dentro del mismo código anterior: a dit : En el bloque elseif que agregamos, primero se comprueba si el comando comienza con "admin" y luego se comprueba si la segunda palabra corresponde a un jugador existente en la sala. Luego se agrega al usuario a la tabla/lista de admins, y se muestra por pantalla un mensaje tanto al usuario que lo agregó como al nuevo admin. #4. Comprobar si un usuario es admin Ahora necesitamos crear una función simple para comprobar si un jugador está o no en la lista de admins. Esto lo usaremos para todos los comandos exclusivos de admins. Esto va al final de todo el código: a dit : En primer lugar incorporaremos esta función en nuestro código anterior para evitar que se pueda agregar a la lista alguien que ya es admin: a dit : Y en segundo lugar haremos que el comando !admin solo pueda ser usando por alguien que ya es admin, de esta forma solo un administrador podrá agregar a otros a la lista: if isAdmin(playerName) then if isAdmin(args[2]) then ui.addPopup (0, 0, "Error: "..args[2].." ya es admin.", playerName, 350, 200, 100) else table.insert (admins, args[2]) ui.addPopup (0, 0, "¡Ahora eres admin!", args[2], 350, 200, 100) ui.addPopup (1, 0, "¡"..args[2].." ahora es admin!", playerName, 350, 200, 100) end else ui.addPopup (0, 0, "Error: solo los admins pueden usar este comando", playerName, 350, 200, 100) end De esta forma tenemos listo y completo nuestro primer comando exclusivo "!admin nombreDeUsuario". Y el código completo de eventChatCommand quedaría: a dit : #5. Añadir comandos exclusivos Si quisiéramos añadir más comandos exclusivos de admin, solo tenemos que usar la función isAdmin. Tomemos de ejemplo un script para [url=https://paste.moepl.eu/view/44ec387f]congelar ratones[/quote] con un comando: a dit : Para hacerlo exclusivo de admin y que solo ellos puedan congelar: a dit : Así de simple. #6. Banear ratones Ahora vamos a incluír en nuestro script un comando para banear. Los ratones baneados morirán automáticamente en cada ronda, si se trata de un minijuego no podrán jugar. Primero creamos una nueva tabla que almacene la lista de baneados, al igual que la lista de admins. Y añadimos la siguiente línea arriba de todo nuevamente. Sin embargo esta lista estará vacía en un comienzo: a dit : Nuevamente haremos una función para comprobar si un jugador está baneado o no. La llamaremos isBanned: a dit : Ahora necesitamos un comando que agregue gente a la lista. Nótese que: el comando solo lo usarán los admins, solo se podrá banear a alguien si no está actualmente en la lista de baneados, y el comando contiene dos palabras. Según todo lo anterior el comando será bastante similar al comando !admin que hicimos anteriormente: a dit : Bastante similar al otro comando, ¿no? Ahora tenemos un comando ban completamente funcional, solo que... aún no les ocurre nada a los baneados. Ahora haremos que al inicio de cada ronda los jugadores en la lista de baneados se mueran. También haremos que se mueran al respawnear y al entrar a la sala; esto será útil especialmente en la casa de la tribu. Simplemente agregamos estas 3 funciones al final de todo, puesto que aún no hemos creado estos eventos: a dit : #6. Detalles Ahora hay varios detalles que mejorar. En primer lugar hay que impedirle a los baneados utilizar cualquier comando. Esto se puede lograr fácilmente haciendo que se detenga la función eventChatCommand al inicio si el jugador está baneado: a dit : Nota: return inmediatamente termina una función, devolviendo o no un valor. En este caso no devuelve nada y simplemente pone fin a eventChatCommand. Otro detalle a corregir es que al momento de banear a un usuario, este muera inmediatamente. Simplemente agregamos una línea para matar al jugador, dentro del comando ban: a dit : Un detalle importante además es que no se pueda ser admin y baneado al mismo tiempo, aunque al igual que todo; esto es opcional, dependiendo de las necesidades de tu script o minijuego. Lo que haremos es modificar ambos comandos, admin y ban, para comprobar que el jugador no esté en la otra lista antes de agregarlo: a dit : #7. Desbanear Y probablemente hayas pensado en este detalle: el comando !unban El comando !unban nuevamente será similar a los otros dos comandos: a dit : Si el jugador no está baneado no se puede desbanear, entregando un error. Luego se busca en la lista de baneados al elemento que encaje con el nombre, y se remueve de la lista. #Fin Eso concluye este tutorial para un sistema de administración para usar comandos exclusivos. Y un sistema de ban que funciona integramente con el de los admins. El trabajo no acaba acá pues puedes seguir editando detalles y arreglándolo a tu antojo. Además ahora puedes agregar los comandos que quieras y hacerlos exclusivos para administradores. A continuación dejo el código completo tras seguir todos los pasos de esta guía: https://paste.moepl.eu/view/eb3dfac0 Espero que les sirva y que puedan incorporarlo en sus proyectos, minijuegos o scripts varios de la tribu, para controlar mejor a los jugadores. ~ Haku |
Gaston « Censeur » 1381173720000
| 0 | ||
Excelente hilo Haku, ¡será de mucha ayuda! |
Hakureimouse « Citoyen » 1381173960000
| 0 | ||
Gastuu a dit : o/ Intenté buscar un punto medio entre explicar las cosas y no explicar demasiado. Aún así quedó mucho sin explicar completamente así que si alguien tiene una duda y quiere saber cómo se hizo tal cosa o cómo funciona, siéntase libre de preguntar. |
0 | ||
Hakku seria mejor como te dije un hilo para tus scripts :c igualmente HAKU PRO! |
Foorero « Citoyen » 1381193700000
| 0 | ||
Hakureimouse a dit : º-º Buen Tutorial Haku! Sigue así:3 |
Xdmanuxd « Citoyen » 1381267020000
| 0 | ||
Me gustan tu tutoriales :$ sigue asi Haku |
Isaacmanda « Citoyen » 1381651920000
| 0 | ||
como hago este codigo solo para admins, a dit : |
Hakureimouse « Citoyen » 1381714260000
| 0 | ||
Isaacmanda a dit : a dit : Para cualquier otra cosa basta con usar isAdmin para ver si el nombre está en la lista de admins. |
Isaacmanda « Citoyen » 1382385240000
| 0 | ||
Hakureimouse a dit : gracias ya le entendi :O |
Hfaundez « Citoyen » 1383318000000
| 0 | ||
Como pongo los comandos solo para admins? |
Alejandroalf « Citoyen » 1383410400000
| 0 | ||
oye y si un raton esta baneado uno mismo lo desbanea o que¿ |
Rodrielgenio 1383412440000
| | ||
[Modéré par Modogrande] |
Deusvult « Citoyen » 1383794160000
| 0 | ||
Me has ayudado a manetener el orden en mi tribu! Eres la ley! |
Rodrielgenio 1388270160000
| | ||
[Modéré par Rowne, raison : Spam] |
Migayhp 1388284380000
| | ||
[Modéré par Rowne, raison : Spam] |
Alejocapocr « Citoyen » 1389288060000
| 0 | ||
Los scripts estan mal, ninguno me andubo |
0 | ||
Alejocapocr a dit : En este hilo solo hay 1 script. |
Jootttaa « Citoyen » 1389326700000
| 0 | ||
Si lo creaste tú, te felicito porque esta perfecto! |
Eljonas 1389442680000
| | ||
[Modéré par Modogrande] |
Alejocapocr « Citoyen » 1390512000000
| 0 | ||
Hinakagiyama a dit : Hay mas de 1, Admins, Bans, +bonus ._. |