Jump to content

AJUDA EM UM TRABALHO


Recommended Posts

Posted

Estou fazendo um trabalho que é por etapas ( EXEMPLO: Vai até a DP, depois até o hospital, praia, e assim por diante ) e nessas etapas esta tendo uma espécie de bug e eu não estou conseguindo resolver, quando o player passa por uma marker para entregar em uma das etapas, entrega,fica invisível e aparece a próxima etapa, mas quando eu passo novamente na que eu acabei de passar mostra a mensagem no chat, como se eu ainda não houvesse passado por ali, tem como resolver isso? Grato, por quem ajudar me ajudar :)

Ai está as funções:

function parte2 (source)
if veh[source] and isElement(veh[source]) then
setElementVisibleTo ( entregartrab3, source, false )
setElementVisibleTo ( bliptrab3, source, false )
 outputChatBox ("#6495ED┌#FFFFFF=========================================================",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF Você abasteceu (#6495ED01/03#FFFFFF) bancos da cidade",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF vá para o próximo banco da cidade",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF para que ele possa ser reabastecido.",source,0,0,0,true )
 outputChatBox ("#6495ED└#FFFFFF=========================================================",source,0,0,0,true )
setElementVisibleTo ( blipparte3, source, true )
setElementVisibleTo ( entregarparte3, source, true )
else
end
end
addEventHandler( "onMarkerHit", entregartrab3, parte2 )

function finalizar (source)
if veh[source] and isElement(veh[source]) then
setElementVisibleTo ( blipparte3, source, false )
setElementVisibleTo ( entregarparte3, source, false )
setElementVisibleTo ( entregafinalizar, source, true )
setElementVisibleTo ( blipfim, source, true )
 outputChatBox ("#6495ED┌#FFFFFF=========================================================",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF Você abasteceu (#6495ED02/03#FFFFFF) bancos da cidade",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF vá para o próximo banco da cidade",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF para que ele possa ser reabastecido.",source,0,0,0,true )
 outputChatBox ("#6495ED└#FFFFFF=========================================================",source,0,0,0,true )
end
end
addEventHandler( "onMarkerHit", entregarparte3, finalizar )

function finalizartrab (source)
if veh[source] and isElement(veh[source]) then
setElementVisibleTo ( entregafinalizar, source, false )
setElementVisibleTo ( blipfim, source, false )
givePlayerMoney (source, 3500)
setPedSkin (source,0)
destroyElement (veh[source])
 outputChatBox ("#6495ED┌#FFFFFF=========================================================",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF Você abasteceu todos os bancos da cidade",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#FFFFFF em segurança, aqui está sua recompensa,",source,0,0,0,true )
 outputChatBox ("#6495ED├#FFFFFF[ #6495EDBRINKSᴮᵛᴿ #FFFFFF]#00FF00 R$ 3500",source,0,0,0,true )
 outputChatBox ("#6495ED└#FFFFFF=========================================================",source,0,0,0,true )
else
end
end
addEventHandler( "onMarkerHit", entregafinalizar, finalizartrab )

 

  • Moderators
Posted

Você pode usar setElementData para setar dados no jogador quando ele passar pelos markers. Dai crie uma condição com getElementData, se o jogador já possuir tal data, significa que ele já passou por aquele marker e dai não deve ativar novamente.

  • Like 1

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted (edited)

O ideal é você usar esse código no lado cliente, então cada jogador terá a marker visível apenas para si. Já sobre as marcas anteriores, acho que o certo seria destruí-las quando tiver na próxima.

Você pode criar uma tabelas da localizações e definir uma variável do índice da tabela e usar essa variável pra definir a próxima localização na tabela.

Edited by DNL291
  • Like 1

Please do not PM me with scripting related question nor support, use the forums instead.

Posted (edited)

por algum motivo eu já havia dito isto porém não foi enviado em fim !!

 

bom amigo vamos lá primeiramente da próxima vez utilize 

--> code para colar seu codigo isto ajuda ficar mais organizado e ajuda para leitura

em segundo lugar você não me parece ser experiente parece mais que você pegou isto de um outro código e fez como achou melhor.

bom deixe-me lhe explicar não é porque você tornou uma marker invisível ou visível para um determinado player que ele deixar de existir n ela esta ali porém invisível !

como resolver bom cria uma tabela para o player que esta realizando o trabalho e crie as markers dentro desta tabela do seu player assim ele terá sua própria marker e você apenas destro ira ela quando ele passar por cima !

Ex: suponhamos que seu player pegue o trabalho passando em um markador que é o mais comum !

Table = {}

Marker_startJob = createMarker.......

function StartJob(elementhit, dim)
  if dim then --> isto verifica se esta na mesma dimensão que a marker
      if not Table[elementhit] then --> este verifica se o player não tem uma tabela em seu nome
          Table[elementhit] = {} --> caso não haja tabela este cria uma para seu player
      end
      Table[elementhit]["Marker1"] = createMarker..... --> esta seria primeira marker
      ---> eu aconselho você criar a segunda marker dps de passar pela primeira mais vou seguir a maneira que você fez !
      Table[elementhit]["Marker2"] = createMarker..... --> esta seria segunda
      Table[elementhit]["Marker3"] = createMarker..... --> esta a terceira e assim por diante como já falei é mais ordenado você fazer uma apos a outra ser destroida !
end
addEventHandler("onMarkerHit", Marker_startJob, StartJob)

--> esta maneira acompanha a maneira do seu codigo que não seria digamos que correto ! não vou me prolongar muito escrevendo uma maneira correta pois estou ocupado no momento mais espero que você entenda e tente melhorar seu codigo ..
function HitInMarker(elementhit, dim)
    if dim and elementhit and isElement(elementhit) and getElementType(elementhit) == "player" and Table[elementhit] then
   		if source == Table[elementhit]["Marker1"] or source == Table[elementhit]["Marker2"] or source == Table[elementhit]["Marker3"] then
        	--> continue seu codigo por aqui ..
        	--> no final você deverá destroir os markadores
        	destroyElement(Table[elementhit]["Marker1"])
        	destroyElement(Table[elementhit]["Marker2"])
       		destroyElement(Table[elementhit]["Marker3"])
        	Table[elementhit] = nil --> por fim excluimos a tabela do player!
        end
    end
end
addEventHandler("onMarkerHit", resourceRoot, StartJob)

 

Edited by raynner
corrections
  • Like 1

don´t is necessari

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