#Horus Posted December 22, 2018 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
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators 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
[M]ister Posted December 22, 2018 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.
#Horus Posted December 22, 2018 Author 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.
[M]ister Posted December 22, 2018 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
#Horus Posted December 22, 2018 Author 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?
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators 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
DNL291 Posted December 22, 2018 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
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