Jump to content

Criar um um sistema de id que salva os id


Recommended Posts

Bom eu sou novo em .lua e eu estava aprendendo como colocar sistema de id so que o sistema de id que ele dava não salvava os id Exemplo
Fulano entrou primeiro no servidor e ficou com id 1

Pelicano Entrou no servidor e ficou com id 2

Amoeba Entrou no servidor e ficou com id 3

C0DE Entrou no servidor e ficou com id 4

Ai Fulano sai e o Pelicano fica com id 1 e o resto modifica os id

E eu não queria isso eu queria salva os id dos usuarios tipo Fulano Saiu e entrou um novo membro e o membro fica com id 5 em vez de fica com id 1
Ai quando o Fulano entrar ele continuar com ID 1

Link to comment
14 minutes ago, C0DE said:

Bom eu sou novo em .lua e eu estava aprendendo como colocar sistema de id so que o sistema de id que ele dava não salvava os id Exemplo
Fulano entrou primeiro no servidor e ficou com id 1

Pelicano Entrou no servidor e ficou com id 2

Amoeba Entrou no servidor e ficou com id 3

C0DE Entrou no servidor e ficou com id 4

Ai Fulano sai e o Pelicano fica com id 1 e o resto modifica os id

E eu não queria isso eu queria salva os id dos usuarios tipo Fulano Saiu e entrou um novo membro e o membro fica com id 5 em vez de fica com id 1
Ai quando o Fulano entrar ele continuar com ID 1


Explique seu problema para resolvê-lo
 

 

Link to comment
  • Other Languages Moderators

Todas as contas criadas no servidor já possuem um ID, que não muda mesmo se algumas contas forem deletadas. Basta você usar getAccountID, que dai você obtém esses IDs.

Os dados das contas ficam salvos no banco de dados internal.db

boOH3E6ySjez_IuuLis97Q.png

Edited by Lord Henry
  • Thanks 1
Link to comment
On 27/12/2018 at 22:18, Lord Henry said:

Todas as contas criadas no servidor já possuem um ID, que não muda mesmo se algumas contas forem deletadas. Basta você usar getAccountID, que dai você obtém esses IDs.

Os dados das contas ficam salvos no banco de dados internal.db

boOH3E6ySjez_IuuLis97Q.png


Tentei Utilizar lord porém acabou dando errado eu já tinha tentado usar essa função há um tempo. Porém não consegui Veja"


function id (source)  
ID = getAccountID (source)
exports.Scripts_Dxmessages:outputDx(source,""..ID.."", "warning")
end
addCommandHandler("id", id )

 

Link to comment
  • Other Languages Moderators
49 minutes ago, DNL291 said:

Obs: essa função só vai funcionar a partir da versão 1.5.5, release 12217

Em relação a isso tenho uma pergunta:

É necessário declarar a versão mínima no meta.xml para usar essa função? Pois a versão está declarada na Wiki mas não está dizendo que é necessário declará-la no meta, então fiquei confuso.

Link to comment
  • Moderators

Olha eu nem sei ao certo pra falar a verdade. Mas eu sempre uso essas funções sem declarar nada no meta.xml, o mais importante acho que é definir a versão miníma que o servidor permite (para os jogadores).

Deve funcionar sem problemas se usar a função sem declarar a versão miníma, não é obrigatório.

Link to comment

Agora entendi DNL. 
 

function id (thePlayer)  
account = getPlayerAccount ( thePlayer )
ID = getAccountID (account)
exports.Scripts_Dxmessages:outputDx(thePlayer,""..ID.."", "warning")
end
addCommandHandler("id", id )

okay?

Pro id funcionar pelo Client-side no caso minha ideia e por em tagname eu teria que usar a funcão call certo?

Link to comment
  • Moderators

Pode usar triggerClientEvent ou também setElementData pra armazenar no jogador e o valor estará no lado server e client.

Verifique antes se o jogador tá logado na conta com isGuestAccount:

function id (thePlayer)  
	local account = getPlayerAccount ( thePlayer )
	if not isGuestAccount(account) then
		local ID = getAccountID (account)
		exports.Scripts_Dxmessages:outputDx(thePlayer,""..ID.."", "warning")
	end
end
addCommandHandler("id", id )

 

Edited by DNL291
Link to comment

Sabe me dizer se dessa forma possa ocorrer muito peso dentro do servidor?

function Element_ID ()
 local account = getPlayerAccount ( source )
 local ID_Account = getAccountID (account)
 local Guest = isGuestAccount(account)
 
  if account then
    setElementData ( source, "ID", ID_Account ) 	
	
  elseif Guest then
    setElementData ( source, "ID", "N/A" ) 	
 end
  
end 
addEvent ( "DNL:Element_ID", true )
addEventHandler ( "DNL:Element_ID", root, Element_ID)

Obs: Coloquei o TriggerEvent no onClientRender

Link to comment

Acabou funcionado é porque na host tinha outro sistema de id ai acho que acabou dando conflito mas agora está normal.
E ao Invés de utilizar o onClientRender pra verificar se o jogador está logado ou não acabei utilizando 

onPlayerLogin
onResourceStart
onPlayerLogout
onPlayerJoin

Ai acho que não iria pesar.

Link to comment
  • Moderators
17 hours ago, danilin said:

Sabe me dizer se dessa forma possa ocorrer muito peso dentro do servidor?


function Element_ID ()
 local account = getPlayerAccount ( source )
 local ID_Account = getAccountID (account)
 local Guest = isGuestAccount(account)
 
  if account then
    setElementData ( source, "ID", ID_Account ) 	
	
  elseif Guest then
    setElementData ( source, "ID", "N/A" ) 	
 end
  
end 
addEvent ( "DNL:Element_ID", true )
addEventHandler ( "DNL:Element_ID", root, Element_ID)

Obs: Coloquei o TriggerEvent no onClientRender

O código não faz muito sentido na verdade. E o setElementData por si só já vai sincronizar, não tem necessidade de verificar continuamente e mandar o ID pro client já que ele não muda.

Você pode fazer isso quando o jogador entrar na conta (onPlayerLogin), obtém o ID da conta (getAccountID) e usa setElementData pra salvar o ID da conta. No client então, você só vai utilizar getElementData.

O mesmo pode ser feito pra saber se o jogador tá logado ou não. onPlayerLogin > setElementData, onPlayerLogout > setElementData

  • Thanks 1
Link to comment

Eu acabei fazendo assim. Pois como tu disse não precisa ficar verificando há todo segundo

function Start_Id ()
 local account = getPlayerAccount ( source )
 local ID_Account = getAccountID (account)
 local Guest = isGuestAccount(account)
 
  if account then
    setElementData ( source, "ID", ID_Account ) 	
	
  elseif Guest then
    setElementData ( source, "ID", "N/A" ) 	
 end
end
addEventHandler("onResourceStart", root, Start_Id)
addEventHandler("onPlayerJoin", root, Start_Id)

function LoginAccount ()
    local account = getPlayerAccount ( source )
    local ID_Account = getAccountID (account)
    setElementData ( source, "ID", ID_Account ) 	
    outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffID: #00ff00( "..getAccountID(account) .." )", source, 255,255,255,true)
end
addEventHandler("onPlayerLogin", root, LoginAccount)

function LogoutAccount()
 local account = getPlayerAccount ( source )
 local ID_Account = getAccountID (account)
    setElementData ( source, "ID", "N/A" ) 	
    outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffDeslogou.", root, 255,255,255,true)
end
addEventHandler("onPlayerLogout", root, LogoutAccount)

 

Edited by danilin
Link to comment
  • Moderators

Tem alguns erros aí.

Código:


function Start_Id ( _, acc )
	if eventName == "onPlayerLogin" then
		setElementData ( source, "ID", getAccountID(acc) or "N/A" )
		outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffID: #00ff00( "..(getAccountID(acc) or "N/A") .." )", root, 255,255,255,true)
	elseif eventName == "onPlayerLogout" then
		removeElementData( source, "ID" )
		outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffDeslogou.", root, 255,255,255,true)
	elseif eventName == "onResourceStart" then
		for _, player in pairs(getElementsByType("player")) do
			local acc = getPlayerAccount(player)
			if not isGuestAccount(acc) then
				setElementData( source, "ID", getAccountID(acc) or "N/A" )
			end
		end
	end
end
addEventHandler("onResourceStart", resourceRoot, Start_Id)
addEventHandler("onPlayerLogout", root, Start_Id)
addEventHandler("onPlayerLogin", root, Start_Id)

Exemplo no lado client:


addCommandHandler("contaid",
	function()
		local id = getElementData( localPlayer, "ID" ) or false
		if id then
			outputChatBox( "O ID da sua conta é: "..(tostring(id) or "Erro desconhecido"), 0,230,0 )
		else
			outputChatBox( "Você está deslogado!" )
		end
	end
)

 

  • Thanks 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...