[L]ost Posted July 16, 2017 Share Posted July 16, 2017 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
[L]ost Posted July 16, 2017 Author Share Posted July 16, 2017 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
OrbTanT Posted July 16, 2017 Share Posted July 16, 2017 No caso da team/grupo de taxistas você já tem essa team criada no servidor? Link to comment
[L]ost Posted July 16, 2017 Author Share Posted July 16, 2017 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 Posted July 16, 2017 Share Posted July 16, 2017 Linha 55 na função 'TaxiSystemSairTaxi', só colocar dentro dessa função. Link to comment
[L]ost Posted July 16, 2017 Author Share Posted July 16, 2017 @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
OrbTanT Posted July 16, 2017 Share Posted July 16, 2017 (edited) 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 July 16, 2017 by Shinigami Link to comment
[L]ost Posted July 16, 2017 Author Share Posted July 16, 2017 -- 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 Link to comment
OrbTanT Posted July 16, 2017 Share Posted July 16, 2017 (edited) algum erro no debugscript? Edited July 16, 2017 by Shinigami Link to comment
[L]ost Posted July 17, 2017 Author Share Posted July 17, 2017 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
OrbTanT Posted July 17, 2017 Share Posted July 17, 2017 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. Link to comment
[L]ost Posted July 17, 2017 Author Share Posted July 17, 2017 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
OrbTanT Posted July 17, 2017 Share Posted July 17, 2017 (edited) 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 July 17, 2017 by Shinigami Link to comment
[L]ost Posted July 17, 2017 Author Share Posted July 17, 2017 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
OrbTanT Posted July 17, 2017 Share Posted July 17, 2017 que estranho, e mesmo assim, não está entrando na team e saindo. Vou dar uma olhada com mais calma no script. Link to comment
DNL291 Posted July 17, 2017 Share Posted July 17, 2017 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
[L]ost Posted July 17, 2017 Author Share Posted July 17, 2017 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
Other Languages Moderators Lord Henry Posted July 18, 2017 Other Languages Moderators Share Posted July 18, 2017 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? Link to comment
DNL291 Posted July 19, 2017 Share Posted July 19, 2017 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 Lord Henry Posted July 20, 2017 Other Languages Moderators Share Posted July 20, 2017 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
DNL291 Posted July 20, 2017 Share Posted July 20, 2017 (edited) 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 July 20, 2017 by DNL291 Link to comment
Other Languages Moderators Lord Henry Posted July 21, 2017 Other Languages Moderators Share Posted July 21, 2017 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
DNL291 Posted July 21, 2017 Share Posted July 21, 2017 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 Lord Henry Posted July 21, 2017 Other Languages Moderators Share Posted July 21, 2017 (edited) 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 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 July 21, 2017 by Lord Henry 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now