Jump to content

Recommended Posts

  • Other Languages Moderators

Sim, é possível.

Antes de qualquer coisa, seu painel de login precisa bloquear o comando de /register para evitar que registrem contas fora do painel de login. Senão não vai adiantar nada. Você pode bloquear um comando, cancelando o evento onPlayerCommand. Verifique o exemplo da Wiki.

Dai na hora de registrar uma conta nova, passa um loop por todas as contas, obtidas por um getAccounts, verificando se alguma já tem o serial deste jogador nela com getAccountData e getPlayerSerial. Se já tiver, cancela o registro com cancelEvent e manda um feedback pro jogador pedindo pra ele logar na conta existente. Se não tiver nenhuma conta com o serial desse jogador, então registra a conta normalmente com addAccount e atribui o serial deste jogador nessa conta com setAccountData.

  • Thanks 1
Link to comment

@zW1Z4RD Na hora do registro você também pode usar a função getAccountsBySerial para obter uma tabela de todas as contas que têm o serial do jogador, e então só criar uma condição antes do registro.

local contas = getAccountsBySerial(serial)
if (#contas < 1) then
  -- Aqui o restante do código para continuar com o registro
else
  outputChatBox('Você já tem uma conta registrada, use-a')
end

Se o jogador não tiver nenhuma conta registrada em seu serial, então ele prosseguirá com o algoritmo. Já se tiver uma ou mais contas já registrada no mesmo serial, o registro não é realizado e é enviado um aviso ao jogador sobre o que aconteceu.

Edited by KronoS Lettify
Indentação corrigida
Link to comment
  • Other Languages Moderators

@KronoS Lettify cuidado. Essa função não determina o real usuário da conta. Somente o serial de quem logou por último nela.

This function returns a table containing all accounts that were logged onto from specified serial. If the serial is empty string, it will return all accounts that were never logged onto.

Esta função retorna uma tabela contendo todas as contas que foram logadas pelo serial especificado. Se o serial for uma string vazia, essa função retornará todas as contas que nunca foram logadas.

Se eu criar uma conta mas não logar nela, ela vai permanecer com esse serial vazio. Então eu fico criando quantas contas eu quiser antes de logar em alguma e burlo o sistema. Ou então eu peço pra algum amigo logar na minha conta, dai o serial registrado na minha conta vai passar a ser o serial dele, permitindo que eu crie outra conta e burle o sistema também.

Se o painel usar um accountData definida exclusivamente no momento do registro, então mesmo que ninguém logue na conta ou que outras pessoas loguem na conta, ela vai continuar tendo aquele mesmo serial registrado no accountData, o serial vai sempre ser de quem registrou a conta, impedindo que ele registre outras.

Edited by Lord Henry
Link to comment
  • Other Languages Moderators

@KronoS Lettify ficou difícil ler sua mensagem, estou usando o Tema Escuro no fórum.

Mas sim, por isso que ele define o serial com um setAccountData no momento do registro e somente ali.

Edited by Lord Henry
  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...