joao2235

[AJUDA] setElementVisibleTo, sumir Marker.

Recommended Posts

SkinPickup = createPickup(1481.1931152344,-1758.419921875,17.53125, 3, 1275, 000)
MarkerTeste = createMarker(1481.1931152344,-1758.419921875,16.53125, "cylinder", 1.5, 255,255,255,50)
setElementVisibleTo ( MarkerTeste, root, false )

function MarkerVisible (source)
  local account = getPlayerAccount(source)
  if getAccountData(account, "FirstTime") then -- aconta true
    if not isElementVisibleTo ( MarkerTeste, source ) then -- ñ está visível
      setElementVisibleTo ( MarkerTeste, source, true )
  else
    setElementVisibleTo(MarkerTeste, source, false)
    end
  end
end
addEventHandler("onResourceStart", root, MarkerVisible)

Gostaria que apenas aqueles players que estão com a variável, "getAccountData(account, "FirstTime") then" (line7) possam ver o marker e o pickup. Não sei o que fiz de errado, alguém pode me ajudar, por favor ? Desde já agradeço!

Share this post


Link to post

onde você especifica que o elemento é true ou false?

SkinPickup = createPickup(1481.1931152344,-1758.419921875,17.53125, 3, 1275, 000)
MarkerTeste = createMarker(1481.1931152344,-1758.419921875,16.53125, "cylinder", 1.5, 255,255,255,50)
setElementVisibleTo ( MarkerTeste, root, false )

function MarkerVisible (source)
  local account = getPlayerAccount(source)
  if getAccountData(account, "FirstTime", true) then -- aconta true
    if not isElementVisibleTo ( MarkerTeste, source ) then -- ñ está visível
      setElementVisibleTo ( MarkerTeste, source, true )
  else
    setElementVisibleTo(MarkerTeste, source, false)
    end
  end
end
addEventHandler("onResourceStart", root, MarkerVisible)

tente assim, não testei..

Share this post


Link to post
SkinPickup = createPickup(1481.1931152344,-1758.419921875,17.53125, 3, 1275, 000)
MarkerTeste = createMarker(1481.1931152344,-1758.419921875,16.53125, "cylinder", 1.5, 255,255,255,50)


function MarkerVisible (plr)
  local account = getPlayerAccount(plr)
  if getAccountData(account, "FirstTime") then 
      setElementVisibleTo ( MarkerTeste, plr, true )
  else
    setElementVisibleTo(MarkerTeste, plr, false)
    end
end
addEventHandler("onResourceStart", root, MarkerVisible)


o if getAccountData(account,"FirstTime") then ja retorna verdadeiro, 
  mas voce pode usar  if getAccountData(account,"FirstTime") == true then e para falso if getAccountData(account,"FirstTime") == false then

O source desse evento é root.

Edited by Furzy

Share this post


Link to post
47 minutes ago, Furzy said:

SkinPickup = createPickup(1481.1931152344,-1758.419921875,17.53125, 3, 1275, 000)
MarkerTeste = createMarker(1481.1931152344,-1758.419921875,16.53125, "cylinder", 1.5, 255,255,255,50)


function MarkerVisible (plr)
  local account = getPlayerAccount(plr)
  if getAccountData(account, "FirstTime") then 
      setElementVisibleTo ( MarkerTeste, plr, true )
  else
    setElementVisibleTo(MarkerTeste, plr, false)
    end
end
addEventHandler("onResourceStart", root, MarkerVisible)


o if getAccountData(account,"FirstTime") then ja retorna verdadeiro, 
  mas voce pode usar  if getAccountData(account,"FirstTime") == true then e para falso if getAccountData(account,"FirstTime") == false then

O source desse evento é root.

Testei e não funcionou... Porque estou fazendo o seguinte script, quando o player nasce pela primeira vez ele pode escolher uma skin de graça. O que será que deve estar errado ? 

Share this post


Link to post

Linhas 17 e 18 são comentários. Coloque dois traços na frente dessas linhas.
Ou nem coloque elas no script.

Edited by Lord Henry

Share this post


Link to post
5 minutes ago, Lord Henry said:

Linhas 17 e 18 são comentários. Coloque dois traços na frente dessas linhas.
Ou nem coloque elas no script.

Sim, não coloquei elas no script.

Edited by Lord Henry

Share this post


Link to post
14 minutes ago, joao2235 said:

Sim, não coloquei elas no script.

tenta trocar o evento para onPlayerLogin ai vc troca o plr por source novamente

Edited by Furzy

Share this post


Link to post
Just now, Furzy said:

tenta trocar o evento para onPlayerLogin ai vc troca o plr por source novamente

Vou fazer isso e já posto o resultado.

function MarkerVisible (source)
  local account = getPlayerAccount(source)
  if not getAccountData(account,"FirstTime") == true then 
    setElementVisibleTo ( MarkerTeste, source, true )
  else
    setElementVisibleTo(MarkerTeste, source, false)
    end
end
addEventHandler("onPlayerLogin", root, MarkerVisible)

Fiz dessa forma acima. Console output:
WARNING: [VZR]SkinNascer\clothes_s.Lua:40: Bad argument @ 'getPlayerAccount' [Expected element at argument 1, got account]
[11:47:27] WARNING: [VZR]SkinNascer\clothes_s.Lua:41: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean]
[11:47:27] WARNING: [VZR]SkinNascer\clothes_s.Lua:42: Bad argument @ 'setElementVisibleTo' [Expected element at argument 2, got account]

Share this post


Link to post

Não use source como parâmetro de função.

function MarkerVisible (prevAcc, currAcc) -- Parâmetros do evento onPlayerLogin, vc descobre isso lendo a Wiki dele.
	if not getAccountData (currAcc, "FirstTime") then 
		setElementVisibleTo (MarkerTeste, source, true) -- Source também muda dependendo do evento. Neste caso source = jogador que logou.
	else
		setElementVisibleTo (MarkerTeste, source, false)
	end
end
addEventHandler ("onPlayerLogin", root, MarkerVisible)

 

Edited by Lord Henry

Share this post


Link to post
13 hours ago, Lord Henry said:

Não use source como parâmetro de função.


function MarkerVisible (prevAcc, currAcc) -- Parâmetros do evento onPlayerLogin, vc descobre isso lendo a Wiki dele.
	if not getAccountData (currAcc, "FirstTime") then 
		setElementVisibleTo (MarkerTeste, source, true) -- Source também muda dependendo do evento. Neste caso source = jogador que logou.
	else
		setElementVisibleTo (MarkerTeste, source, false)
	end
end
addEventHandler ("onPlayerLogin", root, MarkerVisible)

 

Ainda não funcionou, fiz tudo do jeito que informou.

Share this post


Link to post

Tente o seguinte, server:

function MarkerVisible (_, acc)
	if not getAccountData(acc, "FirstTime") then
		triggerClientEvent( source, "onRequestCreateMarker", source )
		setAccountData( acc, "FirstTime", true )
	end
end
addEventHandler("onPlayerLogin", root, MarkerVisible)

Client:

addEvent( "onRequestCreateMarker", true )
addEventHandler( "onRequestCreateMarker", root, function()
	
	local SkinPickup = createPickup(1481.1931152344,-1758.419921875,17.53125, 3, 1275, 000)
	local MarkerTeste = createMarker(1481.1931152344,-1758.419921875,16.53125, "cylinder", 1.5, 255,255,255,50)
	
	addEventHandler( "onClientMarkerHit", MarkerTeste, function( player )
		if player == localPlayer then
			-- código
		end
	end )
end )

A account data "FirstTime" precisa ser nil/false, se não tiver abra a internal.db e muda o valor.

Deixei a marker e pickup no cliente, só você dar continuidade no código.

Share this post


Link to post

Não funcionou mestre, criei até uma outra conta para fazer o teste, porém sem sucesso. Tenho uma função dentro do código para testes:
 

function skintrue (source)
  local account = getPlayerAccount(source)
  setAccountData(account, "FirstTime", true)
  outputChatBox("Setado para true", source)
end
addCommandHandler("skintrue", skintrue) 

function skinfalse (source)
  local account = getPlayerAccount(source)
  setAccountData(account, "FirstTime", false)
  outputChatBox("Setado para falso", source)
end
addCommandHandler("skinfalse", skinfalse) 

Usando os 2 comandos mesmo assim não fica visível nem o marker nem o pickup.

Share this post


Link to post

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.