Jump to content

[AJUDA]GetElementData


Recommended Posts

Olá caros amigos, então, estou desenvolvendo um código cujo o player passará por Verificação de Data, mas ai que está o problema, estou com um erro e gostaria que me ajudassem...

No lado do (client-side), depois que é executado todo o codigo, o player é setado na data a seguir:

setElementData (localPlayer, "DeltaSCR_HaveRG", "Sim")

Até ai tudo bem, esse Data é Sub Dividido em 2 Partes: "Não" se ele não possui o documento e "Sim" se ele possui; Logo a frente no lado do (server-side) é necessário que eu verifique se o Player está não está com a data "Sim", pois se ele tiver, não deverá abrir um determinado painel quando ele passar no marker:

function openPainel (marker, md)
	if not getElementData (localPlayer, "DeltaSCR_HaveRG") == "Sim" then -- Verificação Citada
		if md then
			if marker == mkRG then
				triggerClientEvent (source, "DeltaSCR_OCRG", root)
			end
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", localPlayer, 255, 255, 255, true)
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel)

Mas ao fazer isto, o debugscript apresenta o seguinte erro: WARNING: [mods]\[SCR]Identidade\DeltaSCR_server.lua:39: Bad argument @ 'getElementData' [Expected element at argument 1, got nil]

Minha duvida é: O que eu devo fazer para resolver isto?

Link to comment
Just now, Lord Henry said:

localPlayer não existe no lado server. Troque por source.

OK, O erro do debug desapareceu, agora tenho outro problema, o painel é para aparecer somente para quem está na data "Não", aqui no caso ele está aparendo para ambas data ("Sim" e "Não"), e no caso está aparecendo quando o player sai do marker, quando era pra aparecer quando o mesmo entra.

 

Eis o codigo:

function openPainel (marker, md)
	if not getElementData (source, "DeltaSCR_HaveRG") == "Sim" then
		if md then
			if marker == mkRG then
				triggerClientEvent (source, "DeltaSCR_OCRG", root)
			end
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", localPlayer, 255, 255, 255, true)
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel)

function closePainel (marker, md)
	if md then
	    if marker == mkRG then
		    triggerClientEvent (source, "DeltaSCR_OCRG", root)
		end
    end
end
addEventHandler ("onPlayerMarkerLeave", getRootElement(), closePainel)

 

Link to comment
function openPainel (marker, md)
	if not getElementData (source, "DeltaSCR_HaveRG") == "Sim" then --- < <<< MUDE SIM E NAO . PARA TRUE E FALSE E ASSIM FICA if X then mais facil doque if x = "sim" then
		if md then
			if marker == mkRG then ---<<<< MKRG? ????????????
				triggerClientEvent (source, "DeltaSCR_OCRG", root)
			end
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", localPlayer, 255, 255, 255, true) ---<<< ja foi informado que localplayer e so client
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel) ---< "onPlayerMarkerHit" esse evento e chamado quando o player entra .. 

function closePainel (marker, md)
	if md then --- <<<< VOCE SABE QUE ISSO EA DIMENSAO? QUE O PLAYER TA?
	    if marker == mkRG then ---- << mkRG? que isso?
		    triggerClientEvent (source, "DeltaSCR_OCRG", root) ---<<< E ISSO VAI PARA ONDE? NARMIA?
		end
    end
end
addEventHandler ("onPlayerMarkerLeave", getRootElement(), closePainel)

ctz? mudei algumas coisas para ver q resto de codigo não funciona

 

tenho algum desconfiança que esse codigo tu pego pronto

Link to comment
4 minutes ago, brunob22 said:

function openPainel (marker, md)
	if not getElementData (source, "DeltaSCR_HaveRG") == "Sim" then --- < <<< MUDE SIM E NAO . PARA TRUE E FALSE E ASSIM FICA if X then mais facil doque if x = "sim" then
		if md then
			if marker == mkRG then ---<<<< MKRG? ????????????
				triggerClientEvent (source, "DeltaSCR_OCRG", root)
			end
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", localPlayer, 255, 255, 255, true) ---<<< ja foi informado que localplayer e so client
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel) ---< "onPlayerMarkerHit" esse evento e chamado quando o player entra .. 

function closePainel (marker, md)
	if md then --- <<<< VOCE SABE QUE ISSO EA DIMENSAO? QUE O PLAYER TA?
	    if marker == mkRG then ---- << mkRG? que isso?
		    triggerClientEvent (source, "DeltaSCR_OCRG", root) ---<<< E ISSO VAI PARA ONDE? NARMIA?
		end
    end
end
addEventHandler ("onPlayerMarkerLeave", getRootElement(), closePainel)

ctz? mudei algumas coisas para ver q resto de codigo não funciona

 

tenho algum desconfiança que esse codigo tu pego pronto

mkRG Signifca um Marker que está criado em uma parte mais acima;

function closePainel: o objetivo dessa função é: quando o Player sair do Marker "mkRG", o painel que está aberto ser a fechado 

Link to comment
Just now, brunob22 said:

porque a função de abriir e fechar ta levando para o msm lugar do client ? 


triggerClientEvent (source, "DeltaSCR_OCRG", root)

 

Por que a função a basicamente a mesma... (Estou pelo celular agora), é mais ou menos assim:

function openCreateRG()
  if RGPanel == false then 
    showCursor (true) -- O resto é desnecessário postar
  else
    showCursor (false)
  end
end

É mais ou menos isso ae

Link to comment

Tente o seguinte (não testado):

function openPainel (marker, md)
	if getElementData (source, "DeltaSCR_HaveRG") ~= "Sim" then
		if md and marker == mkRG then
			triggerClientEvent ( source, "DeltaSCR_OCRG", source, true )
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", source, 255, 255, 255, true)
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel)

function closePainel (marker, md)
	if md and marker == mkRG and getElementData (source, "DeltaSCR_HaveRG") ~= "Sim" then
		triggerClientEvent ( source, "DeltaSCR_OCRG", source )
	end
end
addEventHandler ("onPlayerMarkerLeave", getRootElement(), closePainel)

Client:

function openCreateRG( open )
	if open then -- abrir o painel
		showCursor (true) -- O resto é desnecessário postar
	else -- fechar
		showCursor (false)
	end
end
addEvent( "DeltaSCR_OCRG", true )
addEventHandler( "DeltaSCR_OCRG", root, openCreateRG )

 

Edited by DNL291
  • Like 1
Link to comment
2 minutes ago, DNL291 said:

Tente o seguinte (não testado):


function openPainel (marker, md)
	if getElementData (source, "DeltaSCR_HaveRG") ~= "Sim" then
		if md and marker == mkRG then
			triggerClientEvent ( source, "DeltaSCR_OCRG", source, true )
		end
	else
		outputChatBox ("#ffff00Atenção: Você já possui seu RG", source, 255, 255, 255, true)
	end
end
addEventHandler ("onPlayerMarkerHit", getRootElement(), openPainel)

function closePainel (marker, md)
	if md and marker == mkRG then
		triggerClientEvent ( source, "DeltaSCR_OCRG", source )
	end
end
addEventHandler ("onPlayerMarkerLeave", getRootElement(), closePainel)

Client:


function openCreateRG( open )
	if open then -- abrir o painel
		showCursor (true) -- O resto é desnecessário postar
	else -- fechar
		showCursor (false)
	end
end
addEvent( "DeltaSCR_OCRG", true )
addEventHandler( "DeltaSCR_OCRG", root, openCreateRG )

 

Vou testar aqui :)

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