Jump to content

[TRABALHO TAXI] Preciso de um auxilio


Recommended Posts

Estou precisando de alguem que tenha a bondade de me ensinar um pouco sobre uma função que quero realizar, tenho um script aqui no qual ele cria uma tag chamada TAXISTAS e quando o player é adicionado nesse grupo, ao entrar no taxi ele vira taxista, onde o player que precisar do serviço vai digitar /taxi pra pedir um. porem o script ta muito manual, eu queria APRENDER a como fazer um sistema parecido com um que tenho rodando no meu servidor ( entregador de rosquinha ) nesse trabalho de entregador o palyer ao entrar no circulo vermlhho é teleportado pra dentro de um caminhao pra fazer a entrega em determinado ponto, caso o player saia do caminhão, o veiculo some automaticamente e ele perde o trabalho tendo que voltar la novamente.

Resumindo: Oque eu queria era aprender como faz esse teleporte pra dentro de um veiculo (no caso o taxi) e ao teleportar ele já entrar automaticamente na "TEAM" Taxista na qual o script gera. e ao sair do taxi o veiculo some e caso queria trabalhar de taxista tera que voltar la no local pra pegar um novo taxi

 

 

-- by manawydan taxi_system lado = server

local PrecoTaxi = "1000"

local BlipsTaxi = {}

addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),
function()
 if not TimeTaxi then
  TimeTaxi = createTeam("Taxistas",20,100,20)
   end
    end)
	
 function PedirTaxi(thePlayer)
  if (getElementData(thePlayer,"TaxiClient")) then return end
   --else
   if (getPlayerMoney(thePlayer) >= tonumber(PrecoTaxi)) then
     setElementData(thePlayer,"TaxiClient",true)
	  BlipsTaxi[thePlayer] = createBlipAttachedTo(thePlayer,0,2,0,0,250,210)
	  JogadoresTaxistaTabela(thePlayer)
	   outputChatBox("[Taxi]: Taxi logo chegara, por favor aguarde",thePlayer)
	  end
	   end
	addCommandHandler("taxi",PedirTaxi)
	  
	  
	  
	  
 function JogadoresTaxistaTabela(Player)
 local Jogadores = getElementsByType("player")
  for _,Jogad in ipairs(Jogadores) do
  if (getElementData(Jogad,"Taxista")) and (getElementData(Jogad,"TaxistaStat") == vazio) and getPlayerTeam(Jogad) == getTeamFromName("Taxistas") then
  local NomeTaxiClient = getPlayerName(Player)
  outputChatBox("Taxi solicitado por: "..NomeTaxiClient,Jogad)
   end
   end
    end
	 
function TaxiSystemEntrarNoTaxi(Carro,assento,jacked)
 if not (getElementModel(Carro) == 420) then return end
  if not (getElementData(source,"TaxiClient")) then return end
   if not (assento == 0) then
  local Taxista = getVehicleController(Carro)
   if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
   destroyElement(BlipsTaxi[source])
    setElementData(Taxista,"TaxistaStat",ocupado)
end
end
end
addEventHandler ("onPlayerVehicleEnter",getRootElement(),TaxiSystemEntrarNoTaxi)


--

function TaxiSystemSairTaxi(Carro,assento,jacked)
 if not (getElementModel(Carro) == 420) then return end
  if not (getElementData(source,"TaxiClient")) then return end
   if not (assento == 0) then
  local Taxista = getVehicleController(Carro)
   if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
   removeElementData(source,"TaxiClient")
    setElementData(Taxista,"TaxistaStat",vazio)
	takePlayerMoney(source,tonumber(PrecoTaxi))
	 givePlayerMoney(Taxista,tonumber(PrecoTaxi))
end
end
end
addEventHandler ("onPlayerVehicleExit",getRootElement(),TaxiSystemSairTaxi)
	 
	 
 function TaxistaSer(Carro,assento,jacked)
 if not (getElementModel(Carro) == 420) then return end
 if  (getElementData(source,"Taxista")) then return end --not
  if (getPlayerTeam(source) == getTeamFromName("Taxistas")) then
   if (assento == 0) then
   setElementData(source,"Taxista",true)
     setElementData(source,"TaxistaStat",vazio)
    outputChatBox("[Taxi]: Você agora é um taxista, fique atento para não perder cliente",source)
 
 end
  end
  end
  addEventHandler ("onPlayerVehicleEnter",getRootElement(),TaxistaSer)

 

esse codigo aqui é o do entregador dee rosquinha que ja tenho no servidor rodando 100%

 

 

Minicio4 = createMarker (1038.02332, -1337.93970, 13.72656 -1, "cylinder", 2, 255 ,0 ,0, 255)
blip1 = createBlip(1032.4301757813,-1337.6319580078,13.7265625,42,4,0,0,0,0,0,200)
Mfim4 = createMarker ( 2818.73046875, -1088.7072753906, 30.735580444336 -1, "cylinder", 2, 0 ,255 ,0, 255)

Bfim4 = createBlipAttachedTo ( Mfim4, 19 )
setElementVisibleTo ( Bfim4, root, false )

veh = {}
function incio4 (source)
if isElementWithinMarker(source, Minicio4) then
if veh[source] and isElement( veh[source] ) then destroyElement ( veh[source] )
veh[source] = nil
end
x,y,z = getElementPosition(source)
Trabalho = true
veh[source] = createVehicle(498,1009.50598, -1355.16431, 13.34428)
setElementVisibleTo ( Bfim4, source, true )
warpPedIntoVehicle ( source, veh[source] )
 outputChatBox ("#D3D3D3[Trabalho] #00FF7FVocê agora é um entregador de rosquinhas",source,0,0,0,true )
 outputChatBox ("#D3D3D3[Trabalho] #00FF7FLeve o carregamento de rosquinhas até a bandeira vermelha no mapa",source,0,0,0,true )
 outputChatBox ("#D3D3D3[Trabalho] #00FF7FVa até la com o veiculo caso saia dele perdera o trabalho",source,0,0,0,true )
end
end
addEventHandler( "onMarkerHit", Minicio4, incio4 )

function fim4 (source)
if veh[source] and isElement(veh[source]) then
destroyElement (veh[source])
givePlayerMoney(source,10000) -------------- Caso queira mudar o dinheiro que o player vai ganhar ao finalizar o trabalho
setElementVisibleTo ( Bfim4, source, false )
outputChatBox("#D3D3D3[Trabalho] #00BFFFBom trabalho você entregou as rosquinhas e ganhou: #00FF0010000 $$",source,0,0,0,true)
outputChatBox("#D3D3D3Trabalho de entregador By : #F0FFFF[L]ost",source,0,0,0,true)
else
end
end
addEventHandler("onMarkerHit",Mfim4 ,fim4)

function sair4 (source)
if (veh[source]) and isElement(veh[source]) then
setElementVisibleTo ( Bfim4, source, false )
destroyElement (veh[source])
outputChatBox("#FF4040[Desistiu] Você saiu do veiculo e perdeu o trabalho ", source ,0,0,0,true)
else
end
end
addEventHandler ( "onVehicleExit", getRootElement(), sair4 )

 

Link to comment

ATUALIZANDO

Com a minha curiosidade eu fui mechendo e consegui fazer  o mesmo esquema do trabalho "entregador de rosquinha" agora só vou ver como faço pra quando o player entrar no veiculo ele ficar na "team" taxista, quando sair ele perde

 

Link to comment
function unassignTeam ( source, commandName )
  local theTeam = getPlayerTeam ( source )  -- Check if the player is on a team
  if theTeam then                          -- this player is on a team, so we can remove them from it
    setPlayerTeam ( source, nil )    -- remove the player from the current team
  end
end

encontrei essa função no wiki, porem lá ele é feito por um comando, posso incluir essa função aqui no meu script ? porem ao inves do comando, ao sair do carro ele saia do grupo tambem

42 minutes ago, Shinigami said:

No caso da team/grupo de taxistas você já tem essa team criada no servidor?

Opa meu amigo @Shinigami o script já cria automaticamente a team quando ele é carregado no servidor, oque preciso agora é só saber como por o jogador nessa team automaticamente quando ele entrar na markerhit (que ja teleporta ele pro veiculo) e ao sair do veiculo ele saisse da team

Link to comment

@DNL291 pelo que eu vi na linha 55 lá é a função "sair" do cliente, quando ele sai do carro é descontado automaticamente um valor entendeu ? essa não é a função do motorista não.

 

Meu progresso

- Consegui criar a Marker para teleportar pra dentro do taxi

- ao sair do carro ele some e fala que abandonei o trabalho

 

Oque Preciso

- Ao entrar no taxi (ou na marker) ele ser movido pra team "Taxistas" (que ja esta criada, pois o trabalho sóo funciona se voce tiver nessa team)

- Ao sair do taxi ele ser removido da team "Taxistas"

Link to comment

Aconselho a tabular e identar seus scripts, fazendo isto seus scripts vão ficar com uma aparência melhor e mais organizado, facilitando bastante na hora de arrumar possíveis erros.

DNL, não sei se estou correto sobre tabulação e identação. se é assim que chamam corretamente.

setPlayerTeam(player, nil) para tirar o jogador da team quando player sair do veiculo.

setPlayetTeam(player, team) para colocar o jogador na team quando entrar no veiculo.

function TaxiSystemEntrarNoTaxi(Carro,assento,jacked)
	if not (getElementModel(Carro) == 420) then return end
	if not (getElementData(source,"TaxiClient")) then return end
	if not (assento == 0) then
		local Taxista = getVehicleController(Carro)
		if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
			setPlayerTeam(source, getTeamFromName("Taxistas"))
			destroyElement(BlipsTaxi[source])
			setElementData(Taxista,"TaxistaStat",ocupado)
		end
	end
end
addEventHandler ("onPlayerVehicleEnter",getRootElement(),TaxiSystemEntrarNoTaxi)

function TaxiSystemSairTaxi(Carro,assento,jacked)
	if not (getElementModel(Carro) == 420) then return end
	if not (getElementData(source,"TaxiClient")) then return end
	if not (assento == 0) then
		local Taxista = getVehicleController(Carro)
		if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
			removeElementData(source,"TaxiClient")
			setElementData(Taxista,"TaxistaStat",vazio)
			takePlayerMoney(source,tonumber(PrecoTaxi))
			givePlayerMoney(Taxista,tonumber(PrecoTaxi))
			setPlayerTeam(source, nil)
		end
	end
end
addEventHandler ("onPlayerVehicleExit",getRootElement(),TaxiSystemSairTaxi)

bom espero ter ajudado, mais ao ler o script, notei possíveis erros no debug, posso estar enganado.

 

Obs: acabei colocando setPlayerTeam(source, getTeamFromName("Taxistas")), não função errada, por favor mudar e colocar na função da linha 71

Edited by Shinigami
Link to comment
-- by manawydan taxi_system lado = server

local PrecoTaxi = "50"

local BlipsTaxi = {}

addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),
function()
 if not TimeTaxi then
  TimeTaxi = createTeam("Taxistas",20,100,20)
   end
    end)
	
 function PedirTaxi(thePlayer)
  if (getElementData(thePlayer,"TaxiClient")) then return end
   --else
   if (getPlayerMoney(thePlayer) >= tonumber(PrecoTaxi)) then
     setElementData(thePlayer,"TaxiClient",true)
	  BlipsTaxi[thePlayer] = createBlipAttachedTo(thePlayer,0,2,0,0,250,210)
	  JogadoresTaxistaTabela(thePlayer)
	   outputChatBox("[Taxi]: Taxi logo chegara, por favor aguarde",thePlayer)
	  end
	   end
	addCommandHandler("taxi",PedirTaxi)
	  
	  
	  
	  
 function JogadoresTaxistaTabela(Player)
 local Jogadores = getElementsByType("player")
  for _,Jogad in ipairs(Jogadores) do
  if (getElementData(Jogad,"Taxista")) and (getElementData(Jogad,"TaxistaStat") == vazio) and getPlayerTeam(Jogad) == getTeamFromName("Taxistas") then
  local NomeTaxiClient = getPlayerName(Player)
  outputChatBox("Taxi solicitado por: "..NomeTaxiClient,Jogad)
   end
   end
    end
	 
function TaxiSystemEntrarNoTaxi(Carro,assento,jacked)
	if not (getElementModel(Carro) == 420) then return end
	if not (getElementData(source,"TaxiClient")) then return end
	if not (assento == 0) then
		local Taxista = getVehicleController(Carro)
		if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
			destroyElement(BlipsTaxi[source])
			setElementData(Taxista,"TaxistaStat",ocupado)
		end
	end
end
addEventHandler ("onPlayerVehicleEnter",getRootElement(),TaxiSystemEntrarNoTaxi)

function TaxiSystemSairTaxi(Carro,assento,jacked)
	if not (getElementModel(Carro) == 420) then return end
	if not (getElementData(source,"TaxiClient")) then return end
	if not (assento == 0) then
		local Taxista = getVehicleController(Carro)
		if Taxista and getElementData(Taxista,"Taxista") and (getPlayerTeam(Taxista) == getTeamFromName("Taxistas")) then
			removeElementData(source,"TaxiClient")
			setElementData(Taxista,"TaxistaStat",vazio)
			takePlayerMoney(source,tonumber(PrecoTaxi))
			givePlayerMoney(Taxista,tonumber(PrecoTaxi))
			setPlayerTeam(source, nil)
		end
	end
end
addEventHandler ("onPlayerVehicleExit",getRootElement(),TaxiSystemSairTaxi)
	 
	 
 function TaxistaSer(Carro,assento,jacked)
 if not (getElementModel(Carro) == 420) then return end
 if  (getElementData(source,"Taxista")) then return end --not
 setPlayerTeam(source, getTeamFromName("Taxistas"))
  if (getPlayerTeam(source) == getTeamFromName("Taxistas")) then
   if (assento == 0) then
   setElementData(source,"Taxista",true)
     setElementData(source,"TaxistaStat",vazio)
    outputChatBox("[Taxi]: Vocꡡgora 页m taxista, fique atento para n䯠perder cliente",source)
 
 end
  end
  end
  addEventHandler ("onPlayerVehicleEnter",getRootElement(),TaxistaSer)

eu tentei desse jeito, mais não funcionou nem colocou e nem me tirou da team ( coloquei meu player la manualmente e ao entrar no taxi nao aparece mais a menssagem que aparecia antes: voce agora é um taxista) oque eu fiz de errado?

 

Imagem do Jogo

Quote

mta-screen_2017-07-16_20-50-15.png?15002

 

Link to comment
5 minutes ago, Shinigami said:

algum erro no debugscript?

perdoa a minha leiguice no assunto mais o debugscript é no painel do console ne ? se for la eu nao consegui realizar esse comando. caso for no console que vejo isso nenhum erro apareceu não, carregou normalmente

Link to comment
5 minutes ago, Shinigami said:

quando estiver no jogo e estiver com sua conta admin logada, digite /debugscript 3, vai aparecer os erros dos scripts, linha, qual erro e tal.

realizei o comando conforme citado apareceu alguns erros porem nada relacionado a esse mod, e sim a outros dois que tenho (gasolina e hud) mais em realaçao ao mod do taxi nadinha, quer dizer que esta tudo certo ?

Link to comment

geralmente os erros aparecendo na hora o evento, tentar entrar e sair do taxi pra ver se aparece erros relacionado aos eventos onPlayerVehicleEnter e onPlayerVehicleExit

ao ativar debug não esquece de da um restart no resource para ver se está iniciando sem erros.

Edited by Shinigami
Link to comment
3 minutes ago, Shinigami said:

geralmente os erros aparecendo na hora o evento, tentar entrar e sair do taxi pra ver se aparece erros relacionado aos eventos onPlayerVehicleEnter e onPlayerVehicleExit

ao ativar debug não esquece de da um restart no resource para ver se está iniciando sem erros.

dei start, stop, reiniciei o resource, entrei e sai do carro e não apareceu nenhum erro relacionado ao resource taxi

Link to comment
  • Moderators

Parece que você tá definindo na função set/GetElementData os valores 'vazio' e 'ocupado' sem defini-los em nenhum local do script. Pra corrigir isso, substitua para "vazio", deixando sempre entre aspas para ser interpretado como string.

2 hours ago, [L]ost said:

@DNL291 pelo que eu vi na linha 55 lá é a função "sair" do cliente, quando ele sai do carro é descontado automaticamente um valor entendeu ? essa não é a função do motorista não.

É  verdade, essa função é pro passageiro. Ainda assim, você pode modificar aquelas condições no começo e detectar se é o taxista e então remove dos taxistas.

Link to comment
46 minutes ago, DNL291 said:

Parece que você tá definindo na função set/GetElementData os valores 'vazio' e 'ocupado' sem defini-los em nenhum local do script. Pra corrigir isso, substitua para "vazio", deixando sempre entre aspas para ser interpretado como string.

É  verdade, essa função é pro passageiro. Ainda assim, você pode modificar aquelas condições no começo e detectar se é o taxista e então remove dos taxistas.

Obrigado mano,  @Shinigami me ajudou muito me dando uma forcinha e me deu algumas dicas que me levaram a entender um pouco de script e oque ele ta dizend. o sistema ficou perfeito 

Link to comment
  • Moderators
7 hours ago, Lord Henry said:

Uma pergunta:
Esse seu sistema funciona com NPCs  ou jogadores? Quer dizer, vc leva os jogadores de um lado pro outro e recebe por isso ou vc leva os NPCs?

Jogadores, pelo que entendi.

On 16/07/2017 at 17:35, [L]ost said:

ao entrar no taxi ele vira taxista, onde o player que precisar do serviço vai digitar /taxi pra pedir um.

Pelo código também dá pra entender que é jogador.

Link to comment
  • Other Languages Moderators
On 18/07/2017 at 23:51, DNL291 said:

Jogadores, pelo que entendi.

Pelo código também dá pra entender que é jogador.

Ah...eu tenho um sistema de Taxi que funciona com Players e NPCs.
Os NPCs pagam por distância (depois que são entregues ao destino), os players pagam pelo tempo dentro do taxi. (debitado do bolso do player a cada 5 segundos dentro do taxi)
Também fiz sistema de level e promoção, que faz aumentar o valor cobrado pela viagem dependendo do level do jogador. (exemplo: Se o jogador for taxista level 4, então os NPCs pagam o valor da distância * 4, e os jogadores pagam a cada 5 segundos o valor fixo do taxímetro ($50) * 4).
As posições para os NPCs aparecerem e irem são programadas todas em LS pra não ficar distante demais e evitar que o jogador fique rico moleza demais.

MAS

Apesar de tudo isso...acabei esquecendo de fazer a função para os players chamarem o taxista...felizmente não é difícil fazer isso.

Link to comment
  • Moderators
5 hours ago, Lord Henry said:

Ah...eu tenho um sistema de Taxi que funciona com Players e NPCs.
Os NPCs pagam por distância (depois que são entregues ao destino), os players pagam pelo tempo dentro do taxi. (debitado do bolso do player a cada 5 segundos dentro do taxi)
Também fiz sistema de level e promoção, que faz aumentar o valor cobrado pela viagem dependendo do level do jogador. (exemplo: Se o jogador for taxista level 4, então os NPCs pagam o valor da distância * 4, e os jogadores pagam a cada 5 segundos o valor fixo do taxímetro ($50) * 4).
As posições para os NPCs aparecerem e irem são programadas todas em LS pra não ficar distante demais e evitar que o jogador fique rico moleza demais.

MAS

Apesar de tudo isso...acabei esquecendo de fazer a função para os players chamarem o taxista...felizmente não é difícil fazer isso.

Uma ótima ideia integrar o taxista pra funcionar com jogadores. Eu tenho um trabalho de taxista que também funciona com peds por toda LS, com informações em DX que mostram ao jogador a cidade e distância do 'passageiro'.

Pensei em adicionar o sistema pra jogadores também, mas só quando o celular do jogador tiver finalizado pra chamar o táxi por ele. Acho que usar muitos comandos no servidor já é ultrapassado e também muito simples.

Se pensarmos bem sobre esses empregos, na verdade é melhor funcionando com jogadores por ter uma interação com outros jogadores e não individualmente, quero dizer, pode ter um sistema na qual o passageiro pode qualificar o taxista e portanto uma forma mais apurada de classificar bons taxistas de ruins, além de seguir mais a linha de 'vida real'.

Edited by DNL291
Link to comment
  • Other Languages Moderators
16 hours ago, DNL291 said:

[...]pode ter um sistema na qual o passageiro pode qualificar o taxista e portanto uma forma mais apurada de classificar bons taxistas de ruins, além de seguir mais a linha de 'vida real'.

Isso seria mais um UBER.

Link to comment
  • Moderators
4 hours ago, Lord Henry said:

Isso seria mais um UBER.

Sim, se encaixa mais nessa categoria. Ainda assim, é um sistema mais interessante e fica à escolha do desenvolvedor substituir pelo taxista comum, ou manter esses 2 tipos de taxista pra funcionar em conjunto.

Enfim, vou evitar continuar com mensagens fora do assunto aqui, já que pelo visto o @[L]ost já resolveu o problema dele.

Link to comment
  • Other Languages Moderators

Enfim, caso alguém tenha interesse, meu sistema de taxista é esse: Job-Taxista
Ainda não fiz upload da atualização com o comando de chamar o taxista, mas nada que pedir no chat não resolva xD

3 hours ago, DNL291 said:

Enfim, vou evitar continuar com mensagens fora do assunto aqui, já que pelo visto o @[L]ost já resolveu o problema dele.

Concordo, parei por aqui também.
Caso o @[L]ost ainda tenha alguma pergunta sobre o sistema de taxista, fique a vontade para perguntar neste tópico.
Se a pergunta for relacionada ao meu sistema, favor perguntar lá na área de comentários do resource.

Edited by Lord Henry
  • 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...