Depot Locker System
Escrevi esse sistema no ano passado a pedido de um amigo e finalmente deixei a preguiça de lado pra postar ele aqui. Aviso de antemão que o sistema é funcional apenas para OTX2 e TFS 0.4, para utilizar a função doShowTextDialog da maneira como está no sistema no TFS 0.4 e inferiores é necessário uma alteração na source, link abaixo.
O que faz?
Este sistema consiste em adicionar um layer extra de segurança para o jogador, permitido criar uma senha para acesso do depot. Isso possibilita o jogador passar sua senha a amigos em que não confia totalmente e a estar precavido até certo ponto no caso de hacking.
Vídeo
Instalação
Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor.
Depois de instalado a lib, basta baixar os arquivos anexados no tópico, adicionar em seus respectivos locais e registrar as tags XML contidas nos mesmos. Após isso é necessário adicionar o action id configurado no piso dos depots em que o sistema deve funcionar. Toda configuração do sistema se encontra dentro do arquivo lib_depotlocker.lua, segue explicação da seção de configuração.
config = {
useBoard = false,
passMinLength = 4,
passMaxLength = 12,
askPassOnlyOneTimePerLogin = true,
boardIDs = {1811, 1818}, -- West/East and North/South
depotIDs = {2589, 2590, 2591, 2592}, -- South, West, North and East
typeYourPassMsg = "Digite sua senha: ",
rightPassMsg = "Senha correta, depot liberado.",
wrongPassMsg = "Senha incorreta, tente novamente.",
wrongTries = {
limitTries = true,
triesBeforeBlock = 5,
blockTime = 15 * 60, -- 15 Minutos
triesLeftMsg = "Senha incorreta, você ainda tem %s tentativa.",
blockMsg = "Depot bloqueado, tente novamente em %s."
},
}
useBoard: pode ser definido como true ou false, se definido como verdadeiro irá criar um quadro ao lado do depot para o player poder digitar a senha, da mesma forma que é mostrada no vídeo, (eu recomendo deixar esta opção ativada somente se utilizar paredes como separador entre um depot e outro).
passMinLength/passMaxLength: definem o valor minimo e máximo de caracteres que uma senha pode ter.
askPassOnlyOneTimePerLogin: pode ser definido como true ou false, se definido como verdadeiro irá pedir a senha novamente apenas se o jogador sair e entrar novamente.
boardIDs: aqui é preenchido os IDs dos quadros em que o player deve digitar a senha, um ID para vertical e outro para a horizontal.
depotIDs: aqui é preenchido os IDs dos depots na respectiva ordem, sul, oeste, norte e leste.
typeYourPassMsg: esta é a mensagem que irá aparecer na caixa de texto orientando o jogador a digitar a senha.
rightPassMsg: esta é a mensagem que irá aparecer quando o jogador digitar a senha correta.
wrongPassMsg: esta é a mensagem que irá aparecer quando o jogador digitar a senha incorreta.
limitTries: pode ser definido como true ou false, se definido como verdadeiro irá bloquear as tentativas do jogador caso ele digite a senha incorreta um determinado numero de vezes.
triesBeforeBlock: quantidade de tentativas incorretas para realizar o bloqueio.
blockTime: Tempo de bloqueio (valor é definido em segundos).
triesLeftMsg: esta é a mensagem que será enviada para o jogador com a quantidade de tentativas que ele ainda possui.
blockMsg: esta é a mensagem que será enviada para o jogador caso todas suas tentativas falhem e ele seja bloqueado.
Lembrando que o action id configurado em depotTile deve ser o mesmo registrado no script de movement e deve ser adicionado no piso do depot.
Créditos
@Yan Liima pela idealização do sistema e vídeo de demonstração.
@Baiakeiro por testar a versão final do sistema.
locker_action.lua locker_creature.lua locker_movement.lua npc.lua npc.xml