Jump to content

Criar um um sistema de id que salva os id


Recommended Posts

Posted

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

Posted
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
 

 

Posted

O id dos usuarios não salva tipo eu entrei e fiquei com id 1 ai eu sai e o mlk entrou ai quando eu voltei eu fiquei com id 2 eu queria que salvasse para cada 1 fica com seu id e pronto

  • Other Languages Moderators
Posted (edited)

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
Posted
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 )

 

Posted
getAccountID ( account theAccount )

Claro que não vai funcionar passando o jogador em vez da conta.

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

  • Other Languages Moderators
Posted
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.

Posted

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.

  • Other Languages Moderators
Posted

É pq algumas funções geram erro no server console quando vc não declara a versão mínima. Mesmo que o servidor esteja na versão mais recente.

Posted

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?

Posted (edited)

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
Posted

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

  • Other Languages Moderators
Posted
8 hours ago, danilin said:

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

Obs: Coloquei o TriggerEvent no onClientRender

Sim. Vai pesar bastante.

Posted

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.

Posted
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
Posted (edited)

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
Posted

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

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