#Horus Posted December 22, 2018 Share Posted December 22, 2018 queria que assim q ele pegasse o trabalho, ele ter de ir buscar os passageiros no marker 1 da table, e depois ter de leva-los ao marker 2 da table. coloquei umas anims neles para eles irem andando em direçao ao avião, se algo estiver errado, se poderem corrigir e me falar oque errei eu agradeço, boa noite e feliz natal ae pra vcs. destinos = { [1] = {1612.7482910156, -2480.7473144531, 13.5546875}, -- table com todos os destinos em ordem. [2] = {-1487.8798828125, -108.69385528564, 14.1484375} } local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando. local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente. local Mfim7 = {} -- Marker final específico do player. local Bfim7 = {} -- Blip do marker final específico do player. function inicio7 (source) if source and getElementType (source) == "player" and not getPedOccupiedVehicle (source) then -- Quando o jogador colide no marker e está sem veículo, então: outputChatBox ("#1066E7──────────────── Trabalho BvP™ ────────────────",source,255,255,255,true) -- Avisa pra ele usar o comando /trampo4 para começar o emprego. outputChatBox ("#FF0000Trabalho de Piloto de Avião #FFFFFF→ Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.",source,255,255,255,true) outputChatBox (" ",source,255,255,255,true) outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.",source,255,255,255,true) outputChatBox ("#1066E7───────────────────────────────────────────",source,255,255,255,true) end end addEventHandler ("onMarkerHit", Minicio7, inicio7) function startJob7 (thePlayer, cmd) if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo. if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele. destroyElement (veh[thePlayer]) veh[thePlayer] = nil end veh[thePlayer] = createVehicle (577, 1443.5461425781, 1459.3911132813, 10.8203125) -- Cria o veículo do trampo. local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1]. Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 2, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1. setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele. setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence. Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker. warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo. setPedSkin ( thePlayer, 72 ) dxMsg(thePlayer, "Vá buscar os passageiros.", "info") ped1 = createPed ( 1, 1591.1002197266,-2462.6525878906,13.5546875 ) setPedRotation(ped1, 181) ped2 = createPed ( 7, 1591.2203369141,-2459.6557617188,13.5546875 ) setPedRotation(ped2, 181) ped3 = createPed ( 15, 1591.1318359375,-2456.8723144531,13.5546875 ) setPedRotation(ped3, 181) dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info") setPedAnimation( ped1, "ped", "WOMAN_walknorm") setPedAnimation( ped2, "ped", "WOMAN_walknorm") setPedAnimation( ped3, "ped", "WOMAN_walknorm") setTimer(function(thePlayer) destroyElement (ped1) destroyElement (ped2) destroyElement (ped3) dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora. addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo. end, 7000, 1,thePlayer) end end addCommandHandler ("emprego7", startJob7) function fim7 (hitElement) if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então: if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então: if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem) local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos. setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada. setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker. dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça. else -- Se o marker de objetivo colidido não tem data menor que a quantidade de viagens, então: (indicando que esse é o último objetivo) dxMsg(hitElement, "Recebendo Pagamento...", "info") setTimer(function(hitElement) removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado. destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador. givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo. if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo. Bfim7[hitElement] = nil if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo. Mfim7[hitElement] = nil dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo. end, 5000, 1,hitElement) end end end end function sair7 (thePlayer) if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então: removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo. destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo. destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo. Bfim7[thePlayer] = nil destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo. Mfim7[thePlayer] = nil dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo. end end addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer. function quit7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil destroyElement (ped1) destroyElement (ped2) destroyElement (ped3) end addEventHandler("onPlayerQuit", getRootElement(), quit7) function kill7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error") end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil destroyElement (ped1) destroyElement (ped2) destroyElement (ped3) end addEventHandler("onPlayerWasted", getRootElement(), kill7) function logout7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil destroyElement (ped1) destroyElement (ped2) destroyElement (ped3) end addEventHandler("onPlayerLogout", getRootElement(), logout7) function dxMsg(source, text, type) exports.dxmessages:outputDx(source, text, type) end Voces são uma segunda familia pra mim Link to comment
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators Share Posted December 22, 2018 A regra é clara: Se está tudo funcionando sem erros e nem bugs. Então está certo. Sempre pode existir um jeito "melhor" de fazer, mas não significa que seja necessariamente o mais certo. Na programação existem diversas formas de se conseguir um objetivo. 1 Link to comment
[M]ister Posted December 22, 2018 Share Posted December 22, 2018 Olhando rapidamente, tirei essas conclusões: destroyElement nos peds sem qualquer verificação; Se alguém quitar, der logout, sair do veículo, irá deletar os peds de outro que esteja pegando os passageiros; Os set nil da tabela seria adequado após uma verificação de sua existência; setTimer seria adequado verificar a existência do player, caso contrário, deletaria os elementos, desocuparia espaço de tabelas/memória, etc. Link to comment
#Horus Posted December 22, 2018 Author Share Posted December 22, 2018 47 minutes ago, Lord Henry said: A regra é clara: Se está tudo funcionando sem erros e nem bugs. Então está certo. Sempre pode existir um jeito "melhor" de fazer, mas não significa que seja necessariamente o mais certo. Na programação existem diversas formas de se conseguir um objetivo. verdade, se possivel tento 1 por 1 40 minutes ago, MaligNos said: Olhando rapidamente, tirei essas conclusões: destroyElement nos peds sem qualquer verificação; Se alguém quitar, der logout, sair do veículo, irá deletar os peds de outro que esteja pegando os passageiros; Os set nil da tabela seria adequado após uma verificação de sua existência; setTimer seria adequado verificar a existência do player, caso contrário, deletaria os elementos, desocuparia espaço de tabelas/memória, etc. Eu setei algumas coisas aqui agora de acordo com as suas conclusões, realmente fui burrice minha rsrs destinos = { [1] = {1612.7482910156, -2480.7473144531, 13.5546875}, -- table com todos os destinos em ordem. [2] = {-1487.8798828125, -108.69385528564, 14.1484375}, [3] = {1714.3579101563, 1615.6630859375, 9.2} } local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando. local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente. local Mfim7 = {} -- Marker final específico do player. local Bfim7 = {} -- Blip do marker final específico do player. function inicio7 (source) if source and getElementType (source) == "player" and not getPedOccupiedVehicle (source) then -- Quando o jogador colide no marker e está sem veículo, então: outputChatBox ("#1066E7──────────────── Trabalho BvP™ ────────────────",source,255,255,255,true) -- Avisa pra ele usar o comando /trampo4 para começar o emprego. outputChatBox ("#FF0000Trabalho de Piloto de Avião #FFFFFF→ Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.",source,255,255,255,true) outputChatBox (" ",source,255,255,255,true) outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.",source,255,255,255,true) outputChatBox ("#1066E7───────────────────────────────────────────",source,255,255,255,true) end end addEventHandler ("onMarkerHit", Minicio7, inicio7) function startJob7 (thePlayer, cmd) if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo. if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele. destroyElement (veh[thePlayer]) veh[thePlayer] = nil end veh[thePlayer] = createVehicle (577, 1443.5461425781, 1459.3911132813, 10.8203125) -- Cria o veículo do trampo. local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1]. Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 2, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1. setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele. setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence. Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker. warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo. setPedSkin ( thePlayer, 72 ) dxMsg(thePlayer, "Comandante, Vá buscar os passageiros.", "info") ped1 = createPed ( 1, 1591.1002197266,-2462.6525878906,13.5546875 ) setPedRotation(ped1, 181) ped2 = createPed ( 7, 1591.2203369141,-2459.6557617188,13.5546875 ) setPedRotation(ped2, 181) ped3 = createPed ( 15, 1591.1318359375,-2456.8723144531,13.5546875 ) setPedRotation(ped3, 181) dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info") setPedAnimation( ped1, "ped", "WOMAN_walknorm") setPedAnimation( ped2, "ped", "WOMAN_walknorm") setPedAnimation( ped3, "ped", "WOMAN_walknorm") setTimer(function(thePlayer) if isElement(ped1[thePlayer]) then destroyElement (ped1[thePlayer]) end ped1[thePlayer] = nil if isElement(ped2[thePlayer]) then destroyElement (ped2[thePlayer]) end ped2[thePlayer] = nil if isElement(ped3[thePlayer]) then destroyElement (ped3[thePlayer]) end ped3[thePlayer] = nil dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora. addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo. end, 7000, 1,thePlayer) end end addCommandHandler ("emprego7", startJob7) function fim7 (hitElement) if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então: if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então: if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem) local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos. setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada. setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker. dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça. else -- Se o marker de objetivo colidido não tem data menor que a quantidade de viagens, então: (indicando que esse é o último objetivo) dxMsg(hitElement, "Recebendo Pagamento...", "info") setTimer(function(hitElement) removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado. destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador. givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo. if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo. Bfim7[hitElement] = nil if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo. Mfim7[hitElement] = nil dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo. end, 5000, 1,hitElement) end end end end function sair7 (thePlayer) if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então: removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo. destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo. destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo. Bfim7[thePlayer] = nil destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo. Mfim7[thePlayer] = nil dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo. end end addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer. function quit7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler("onPlayerQuit", getRootElement(), quit7) function kill7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error") end if isElement(veh[source]) then destroyElement(veh[source]) end if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler("onPlayerWasted", getRootElement(), kill7) function logout7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler("onPlayerLogout", getRootElement(), logout7) function dxMsg(source, text, type) exports.dxmessages:outputDx(source, text, type) end Adicionei outra table porque seria assim, na primeira ele iria buscar os passageiros, na segunda, ele iria leva-los ao aeroporto, e na terceira, ele iria levar o aviao de volta ao aeroporto do inicio. Link to comment
[M]ister Posted December 22, 2018 Share Posted December 22, 2018 Você tá manipulando os peds como se estivessem em tabelas, sendo que quando criou os peds armazenou em variáveis comuns. Verificar o player no setTimer seria um simples: if not isElement(thePlayer) then return end pois assim evita o código continuar caso o player saia do servidor, e nesse caso thePlayer seria igual a nil. Instruções do tipo: if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end Bfim7[source] = nil Seriam adequadas assim: if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) Bfim7[source] = nil end 1 Link to comment
#Horus Posted December 22, 2018 Author Share Posted December 22, 2018 4 minutes ago, MaligNos said: Você tá manipulando os peds como se estivessem em tabelas, sendo que quando criou os peds armazenou em variáveis comuns. Verificar o player no setTimer seria um simples: if not isElement(thePlayer) then return end pois assim evita o código continuar caso o player saia do servidor, e nesse caso thePlayer seria igual a nil. Instruções do tipo: if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) endBfim7[source] = nil Seriam adequadas assim: if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) Bfim7[source] = nilend Me mostra um exemplo sobre os peds ? eu teria de fazer um createMarker própio para os peds, e na table eu deixaria apenas os 2 locais? Link to comment
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators Share Posted December 22, 2018 (edited) Corrigi várias coisas, entre elas o seguinte: Corrigi os outputChatBox que estavam com código hexadecimal no início, mudei pro código RGB nos parâmetros. Aumentei o tamanho dos markers de objetivo, que estavam pequenos demais, sendo necessário passar com o avião no lugar exato pra conseguir. Criei a 3 posição em LV, assim o jogador começa e finaliza no mesmo aeroporto. Mudei as posições de objetivo, colocando-os no meio da pista pra facilitar. Mudei a posição onde cria o avião e os Peds. Removi as linhas que setavam rotação nos Peds, em vez disso declaro a rotação deles no createPed. Deixei os Peds em tables também. Corrigi algumas indentações. Adicionei verificador do jogador nos timers, caso ele quite antes do tempo. Spoiler destinos = { [1] = {1613, -2495, 13.5}, -- table com todos os destinos em ordem. [2] = {-1489.4, -107, 14.2}, [3] = {1388.96, 1559.37, 11} } local Minicio7 = createMarker (1714.3579101563, 1615.6630859375, 9.2, "cylinder", 1, 16, 102, 231, 50) -- Cria o marker onde o player deve usar o comando. local veh = {} -- Cada elemento específico de cada jogador deve estar em uma table para ser criado e acessado corretamente. local Mfim7 = {} -- Marker final específico do player. local Bfim7 = {} -- Blip do marker final específico do player. local ped1 = {} -- Passageiros1 específicos do player. local ped2 = {} -- Passageiros2 específicos do player. local ped3 = {} -- Passageiros3 específicos do player. function inicio7 (hitElement) if hitElement and getElementType (hitElement) == "player" and not getPedOccupiedVehicle (hitElement) then -- Quando o jogador colide no marker e está sem veículo, então: outputChatBox ("──────────────── Trabalho BvP™ ────────────────", hitElement, 16, 102, 231) -- Avisa pra ele usar o comando /emprego7 para começar o emprego. outputChatBox ("Trabalho de Piloto de Avião #FFFFFF→ Neste trabalho você terá de levar os passageiros até a marcação no radar. Sua recompensa é de R$8000.", hitElement, 255, 0, 0, true) outputChatBox (" ", hitElement) outputChatBox ("* Digite #FF0000/emprego7 #FFFFFFpara aceitar o trabalho.", hitElement, 255, 255, 255, true) outputChatBox ("───────────────────────────────────────────", hitElement, 16, 102, 231) end end addEventHandler ("onMarkerHit", Minicio7, inicio7) function startJob7 (thePlayer, cmd) if isElementWithinMarker (thePlayer, Minicio7) and not getPedOccupiedVehicle (thePlayer) then -- Ao usar o comando, só funciona se o jogador estiver no marker e estiver sem veículo. if veh[thePlayer] and isElement (veh[thePlayer]) then -- Se por acaso existir o veículo do trampo do jogador, destroi ele. destroyElement (veh[thePlayer]) veh[thePlayer] = nil end veh[thePlayer] = createVehicle (577, 1478.73, 1808.07, 10.8203125, 0, 0, 180) -- Cria o veículo do trampo. local x, y, z = unpack (destinos[1]) -- x, y, z recebem as coordenadas do destinos[1]. Mfim7[thePlayer] = createMarker (x, y, z, "cylinder", 10, 0, 255, 0, 255, thePlayer) -- Cria o marker do objetivo do jogador na coordenada 1. setElementData (Mfim7[thePlayer], "owner", thePlayer) -- Seta esse jogador como dono do marker, para que só funcione com ele. setElementData (Mfim7[thePlayer], "trip", 1) -- Seta uma data no marker pra saber a qual coordenada ele pertence. Bfim7[thePlayer] = createBlipAttachedTo (Mfim7[thePlayer], 19) -- Cria o blip e anexa ao marker. warpPedIntoVehicle (thePlayer, veh[thePlayer]) -- Teleporta o player para o veículo do trampo. setPedSkin (thePlayer, 72) ped1[thePlayer] = createPed (1, 1467, 1790, 10.81, 270) ped2[thePlayer] = createPed (7, 1468, 1790, 10.81, 270) ped3[thePlayer] = createPed (15, 1469, 1790, 10.81, 270) dxMsg(thePlayer, "Os Passageiros estão entrando no avião aguarde...", "info") setPedAnimation (ped1[thePlayer], "ped", "WOMAN_walknorm") setPedAnimation (ped2[thePlayer], "ped", "WOMAN_walknorm") setPedAnimation (ped3[thePlayer], "ped", "WOMAN_walknorm") setTimer(function(thePlayer) if not isElement (thePlayer) then return end destroyElement (ped1[thePlayer]) destroyElement (ped2[thePlayer]) destroyElement (ped3[thePlayer]) ped1[thePlayer] = nil ped2[thePlayer] = nil ped3[thePlayer] = nil dxMsg(thePlayer, "Os Passageiros entraram no avião, Leve-os até o aeropoto marcado no radar.", "info") -- Avisa o player o que ele tem que fazer agora. addEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Adiciona o evento que faz funcionar o marker do objetivo. end, 7000, 1,thePlayer) end end addCommandHandler ("emprego7", startJob7) function fim7 (hitElement) if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então: if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então: if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem) local x, y, z = unpack (destinos[getElementData (source, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos. setElementPosition (source, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada. setElementData (source, "trip", getElementData (source, "trip") + 1) -- Seta a nova viagem nesse marker. dxMsg(hitElement, "Você entregou os passageiros no local, Agora Volte com o avião para o aeroporto raiz marcado no radar!", "info") -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça. else -- Se o marker de objetivo colidido não tem data menor que a quantidade de viagens, então: (indicando que esse é o último objetivo) dxMsg(hitElement, "Recebendo Pagamento...", "info") setTimer(function(hitElement) if not isElement (hitElement) then return end removeEventHandler ("onMarkerHit", Mfim7[hitElement], fim7) -- Remove o evento que ativa este marker, pois ele não será mais usado. destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador. veh[hitElement] = nil givePlayerMoney (hitElement, 8000) -- Dá o dinheiro do trampo. if isElement(Bfim7[hitElement]) then destroyElement (Bfim7[hitElement]) end -- Destroi o blip anexado ao marker de objetivo. Bfim7[hitElement] = nil if isElement(Mfim7[hitElement]) then destroyElement (Mfim7[hitElement]) end -- Destroi o marker de objetivo. Mfim7[hitElement] = nil dxMsg(hitElement, "Pagamento recebido (R$ 8000)!", "sucess") -- Avisa o jogador que ele completou o trampo. end, 5000, 1, hitElement) end end end end function sair7 (thePlayer) if (veh[thePlayer]) and isElement(veh[thePlayer]) then -- Se o veículo do trampo existe, então: removeEventHandler ("onMarkerHit", Mfim7[thePlayer], fim7) -- Remove o evento que ativa o marker de objetivo. destroyElement (veh[thePlayer]) -- Destroi o veículo do trampo. destroyElement (Bfim7[thePlayer]) -- Destroi o blip de objetivo do trampo. Bfim7[thePlayer] = nil destroyElement (Mfim7[thePlayer]) -- Destroi o marker de objetivo do trampo. Mfim7[thePlayer] = nil dxMsg(thePlayer, "Você abandonou os passageiros e perdeu o trabalho idiota!", "error") -- Avisa o jogador que ele falhou no trampo. end end addEventHandler ("onVehicleExit", getRootElement(), sair7) -- Executa essa função quando o player sair de um veículo qualquer. function quit7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler ("onPlayerQuit", getRootElement(), quit7) function kill7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) dxMsg(source, "Você se matou e perdeu o trabalho seu imbecil!", "error") end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler ("onPlayerWasted", getRootElement(), kill7) function logout7 () if isElement(Bfim7[source]) then destroyElement (Bfim7[source]) end if isElement(Mfim7[source]) then destroyElement (Mfim7[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim7[source] = nil Mfim7[source] = nil veh[source] = nil if isElement(ped1[source]) then destroyElement (ped1[source]) end if isElement(ped2[source]) then destroyElement (ped2[source]) end if isElement(ped3[source]) then destroyElement (ped3[source]) end ped1[source] = nil ped2[source] = nil ped3[source] = nil end addEventHandler ("onPlayerLogout", getRootElement(), logout7) function dxMsg (source, text, type) exports.dxmessages:outputDx(source, text, type) end Edited December 22, 2018 by Lord Henry 1 1 Link to comment
DNL291 Posted December 22, 2018 Share Posted December 22, 2018 2 hours ago, #Horus said: Voces são uma segunda familia pra mim Que bom saber disso rsrs, na verdade pessoas novas por aqui também me deixa muito feliz, pois significa que a comunidade está crescendo e na ativa. Agora, percebi que você já tem mais de 100 posts, muito bom, mas já deveria ter aprendido que o local destinado a esses posts é a seção Programação em Lua. 2 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