Jump to content

[AJUDA]GetElementData


Recommended Posts

Posted

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?

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

 

Posted
Just now, brunob22 said:

fica postando resto de codigo. fica dificil pelo menos eu .. se quiser minha ajuda nao poste resto de codigo porque eu não sou advinha

Postei somente está parte porque no meu conceito, é o necessário 

Posted
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

Posted
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 

Posted
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

Posted (edited)

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

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