Jump to content

ElementData


Recommended Posts

local porte = createMarker (249.60247802734,68.466117858887,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50)
setElementDimension(porte, 1)
setElementInterior(porte, 6)

function comprarPorte (player, cmd)
	if isElementWithinMarker (player, porte) then
		if getElementData(player,"porte") then
			if getPlayerMoney (player) >= 30000 then
				takePlayerMoney (player,30000)
				giveElementData(player , "porte" , true)
				outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255)
			else
				outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255)
		else
			outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255)
	else
		outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255)
			end
		end
	end
end	
addCommandHandler ("comprarporte", comprarPorte)

fiz este script de porte de armas , no caso o giveElementData seria o melhor para se usar? no caso de ser para sempre? 

Link to comment
1 minute ago, Jonas^ said:

De onde você tirou giveElementData?

no caso seria setElementData* ,erro.

 

1 minute ago, Jonas^ said:

setAccountData.

ok

local porte = createMarker (249.60247802734,68.466117858887,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50)
setElementDimension(porte, 1)
setElementInterior(porte, 6)

function comprarPorte (player, cmd)
	if isElementWithinMarker (player, porte) then
		if getElementData(player,"porte") then
			if getPlayerMoney (player) >= 30000 then
				takePlayerMoney (player,30000)
				setAccountData ( player,"porte", true)
				outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255)
			else
				outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255)
		else
			outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255)
	else
		outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255)
			end
		end
	end
end	
addCommandHandler ("comprarporte", comprarPorte)

assim?

Link to comment
local porte = createMarker (249.60247802734,68.466117858887,1002.640625, "cylinder", 1 , 255 ,255 ,255 ,50)
setElementDimension(porte, 1)
setElementInterior(porte, 6)

local acc = getPlayerAccount ( player )

function comprarPorte (player, cmd)
	if isElementWithinMarker (player, porte) then
		if getAccountData(acc,"porte")
			if getPlayerMoney (player) >= 30000 then
				takePlayerMoney (player,30000)
				setAccountData ( acc ,"porte", true)
				outputChatBox("[AVISO] Você comprou o porte de armas!",player,255,255,255)
			else
				outputChatBox("[AVISO] Você não tem dinheiro para o porte!",player,255,255,255)
		else
			outputChatBox("[AVISO] Você já tem o porte de armas!",player,255,255,255)
	else
		outputChatBox("[AVISO] Você não está na delegacia!",player,255,255,255)
			end
		end
	end
end	
addCommandHandler ("comprarporte", comprarPorte)

desse jeito?

Edited by Renazz
Link to comment
addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255)
	end	
end)

@Renazz

Edited by Jonas^
Adicionando verificação se o jogador estiver deslogado/logado pois se trata de account-data é necessário o jogador estar logado.
  • Thanks 1
Link to comment
local porte = createMarker (250.04884338379,67.623962402344,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50)
setElementInterior(porte,6)
setElementDimension(porte,1)

addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255)
	end	
end)

agora o marker não está aparecendo de nenhum jeito, tentei colocar fora do interior e ele não apareceu.

Edited by Renazz
Link to comment
18 minutes ago, Renazz said:

local porte = createMarker (250.04884338379,67.623962402344,1003.640625, "cylinder", 1 , 255 ,255 ,255 ,50)
setElementInterior(porte,6)
setElementDimension(porte,1)

addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 255, 255, 255)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 255, 255)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 255, 255)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 255, 255)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 255, 255)
	end	
end)

agora o marker não está aparecendo de nenhum jeito, tentei colocar fora do interior e ele não apareceu.

/debugscript 3 me diga oque mostra ao restartar o resouce

  • Thanks 1
Link to comment

O código está certo posso te afirmar isso, seu problema é no meta, mas por via das dúvidas copie o código de novo:

local porte = createMarker (249.60, 68.46, 1002.64, "cylinder", 1, 255, 255, 255, 50)
setElementDimension (porte, 1)
setElementInterior (porte, 6)

addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					setAccountData (getPlayerAccount(player), "porte", true) -- Seta a account-data na conta do jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30)
	end	
end)

Meta:

<meta>
	<script src="server.lua" type="server"/>
</meta>

 

  • Thanks 1
Link to comment

opa , voltando ao assunto o meu script de revistar para pegar se o player tem o porte é neccessário usar o getElementData

local Porte = tonumber(getElementData(Jogador , "porte")) or 0

	if Porte > 1 then
        dxDrawText("Porte de Armas: (#00ff00X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false)
    else 
        dxDrawText("Porte de Armas: (#ff0000X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false)
   end

se eu substituir por getAccountData ele não funciona o script inteiro.

Link to comment
10 minutes ago, Jonas^ said:

Sim, getPlayerAccount é somente serve

ok

 

11 minutes ago, Jonas^ said:

passe pra element-data novamente e salve na conta do jogador quando ele quitar com setAccountData.

não entendi

Link to comment

Coloque o comando novamente com element-data, ou seja, getElementData (..) e setElementData (..), dai quando o jogador quitar você usa o evento onPlayerQuit pra salvar na conta do jogador com getElementData e setAccountData dai quando ele logar getAccountData e setElementData com o valor.

  • Thanks 1
Link to comment
local Porte = tonumber(getElementData(Jogador, "porte")) or 0

	if Porte > 1 then
        dxDrawText("Porte de Armas: (#00ff00X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false)
    else 
        dxDrawText("Porte de Armas: (#ff0000X#ffffff)", x*748, y*269, x*832, y*284, tocolor(255, 255, 255, 255), x*1.00, Font_5, "left", "top", false, false, false, true, false)
   end		
local porte = createMarker (252.36033630371,69.68399810791,1002.640625, "cylinder", 1.3, 255, 255, 255, 50)
setElementDimension (porte, 1)
setElementInterior (porte, 6)

addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getAccountData (getPlayerAccount(player), "porte") then -- Se o jogador não estiver com a account-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					getElementData (player, "porte", true) -- Seta a account-data na conta do jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30)
	end	
end)

addEventHandler("onPlayerQuit" , player , setAccountData(player,"porte"))

 

desse jeito??

Link to comment

tá , eu teria que fazer com o getElementData e depois o setElementData, ai quando o player desloga-se eu usaria o setAccountData para setar "porte" , dai quando ele entra-se eu usaria o OnPlayerJoin para verificar se getAccountData "porte" caso ele tivesse usaria o setElementData"porte" é isso?

Link to comment

Não, não se usa onPlayerJoin pra verificar uma data existente pois esse evento é antes do jogador fazer login na sua conta, vai retornar false.

Faça assim mano:

server-side

local porte = createMarker (249.60, 68.46, 1002.64, "cylinder", 1, 255, 255, 255, 50)
setElementDimension (porte, 1)
setElementInterior (porte, 6)

addCommandHandler ("comprarporte", function (player, cmd)
	if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então:
		if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então:
			if not getElementData (player, "porte") then -- Se o jogador não estiver com a element-data "porte", então:
				if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então:
					takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador.
					setElementData (player, "porte", true) -- Seta a data no jogador.
					outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0)
				else --Se o jogador não tiver 30k, então:
					outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30)
				end 
			else -- Se o jogador tiver a account-data, então:
				outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30)
			end 
		else -- Se o jogador não estiver no marker, então:
			outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30)
		end
	else -- Se o jogador estiver deslogado, então:
		outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30)
	end	
end)

function savePlayerPorte (p)
	if isElement(p) then
		local savePorte = getElementData (p, "porte") or false
		setAccountData (getPlayerAccount(p), "porte", savePorte)
	end
end

function loadPlayerPorte (p)
	if isElement(p) and not (isGuestAccount(getPlayerAccount(p))) then
		local loadPorte = getAccountData (getPlayerAccount(p), "porte") or false
		setElementData (p, "porte", loadPorte)
	end
end

addEventHandler ("onResourceStart", resourceRoot, function ()
	for i, p in ipairs(getElementsByType("player")) do
		loadPlayerPorte (p)
	end
end)

addEventHandler ("onPlayerLogin", root, function ()
	loadPlayerPorte (source)
end)

addEventHandler ("onResourceStop", resourceRoot, function ()
	for i, p in ipairs(getElementsByType("player")) do
		savePlayerPorte (p)
	end
end)

addEventHandler ("onPlayerQuit", root, function ()
	savePlayerPorte (source)
end)

addEventHandler ("onPlayerLogout", root, function (acc)
	savePlayerPorte (source, acc)
end)

client-side

addEventHandler ("onClientRender", root, function ()
	local checkPorte = getElementData (localPlayer, "porte") or false
	if (checkPorte) then
		 dxDrawText ("Porte: Sim", -19, 459, 346, 493, tocolor(0, 255, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false)
	else
		 dxDrawText ("Porte: Não", -19, 459, 346, 493, tocolor(255, 0, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false)
	end	
end)

Leia este tópico:

Isso pode te ajudar de alguma forma.

Boa sorte!

@Renazz

Edited by Jonas^
Adição tópico do DNL
  • Like 1
  • 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...