Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Tarefa II - Sistema de privilégios para comandos
- 26/02/2018 - 02/03/2018
- Dificuldade:
- ★★★☆☆ (+15 / -10 pontos de glória)
- Descrição:
- Uma das formas de permitir que certos jogadores utilizem alguns comandos é criar um sistema de privilégios, onde cada jogador - de acordo com seu cargo -, pode utilizar um grupo de comandos do programa. Nesta tarefa semanal você deverá criar um sistema que jogadores sejam classificados em 2 cargos: administrador e avaliador.
- Jogadores com o cargo administrador possuem os seguintes poderes:
- Dar o cargo "avaliador" para um jogador utilizando o comando "!role Jogador";
- Remover o cargo "avaliador" de um jogador utilizando o comando "!derole Jogador";
- Poder carregar um mapa utilizando o comando "!np @codigo do mapa".
- Já os jogadores que possuirem o cargo "avaliador" só podem utilizar o comando "!np @codigo do mapa".
- Boa escrita!
- ]]
- -- Primeiramente, vamos definir uma tabela que armazene os nomes de jogadores e seus respectivos cargos
- local priv = {
- -- Estamos definindo aqui um jogador como administrador, assim ele pode utilizar os comandos descritos na tarefa
- Eshkation = 'admin'
- }
- -- Agora vamos utilizar uma função do transformice que é ativada quando o jogador digita algo no chat que comece com um ponto de exclamação (!).
- function eventChatCommand(jogador, comando)
- -- Antes disso, vamos checar seu o jogador possui privilegios para digitar os comandos.
- -- O jogador possui qualquer privilegio, seja admin ou avaliador
- if priv[jogador] then
- -- O jogador possui o privilegio de administrador
- if priv[jogador] == 'admin' then
- -- Utilizamos string.sub para remover uma parte da string, a fim de checar se a mesma começa com o comando digitado. O número primeiro número indica o começo da string, e o último em qual caractere ele deve parar (Nesse caso, o quinto).
- if string.sub(comando, 0, 5) == 'role ' then
- -- Caso o comando digitado comece com 'role ', o código abaixo é ativado, adicionar um espaço no final evita que !roleta, por exemplo, ative o comando.
- -- Agora vamos pegar o segundo argumento do comando digitado, nesse caso o nome de jogador, nesse caso, a string deve começar do caractere 6, depois do espaço do "role " e não possui um limite.
- local alvo = string.sub(comando, 6)
- -- Poderiamos utilizar funções para saber se o jogador alvo realmente existe na sala mas não é realmente necessário neste código, só vamos adicionar o nick na tabela que criamos.
- priv[alvo] = 'avaliador'
- print(alvo..' recebeu os privilegios de avaliador')
- elseif string.sub(comando, 0, 7) == 'derole ' then
- -- Vamos usar a mesma lógica do comando acima
- local alvo = string.sub(comando, 8)
- -- Ao atribuir o valor nil para um item de uma tabela, o item passa a ser nulo, desaparecendo.
- priv[alvo] = nil
- print(alvo..' perdeu os privilegios de avaliador')
- end
- end
- -- Como qualquer jogador com privilegio pode rodar um mapa utilizando o comando np, vamos mover o código do comando pra cá
- if string.sub(comando, 0, 3) == 'np ' then
- local mapa = string.sub(comando, 4)
- tfm.exec.newGame(mapa)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement