Jump to content

Gaimo

Members
  • Posts

    212
  • Joined

  • Last visited

Everything posted by Gaimo

  1. Bateu uma vontade de criar um painel de login, ̶E̶U̶ ̶T̶E̶N̶H̶O̶ ̶Q̶U̶E̶ ̶C̶O̶N̶S̶E̶G̶U̶I̶R̶ ̶C̶R̶I̶A̶R̶ ̶U̶M̶ ̶P̶A̶I̶N̶E̶L̶ ̶D̶E̶ ̶L̶O̶G̶I̶N̶ Estou louco para conseguir criar tudo o que eu penso, mas ainda me falta conhecimento e pratica, então aqui estou para pedir ajuda. Por eu estar começando seria melhor eu fazer em CEGUI ou posso continuar com o DX que é o que eu estou usando? Não sei exatamente como começar e nem quais funções usar. Por enquanto está assim: local screenW, screenH = guiGetScreenSize() local x, y = ( screenW/2 ), ( screenH/2 ) -- Janela principal do painel de login function mainLogin() showCursor(true) local background = dxDrawImage(0, 0, screenW, screenH, "files/background.jpg") local mainWindow = dxDrawImage(x - 166, y - 220, 332, 440, "files/main.png") local bLogin = dxDrawImage(x - 166, y + 60, 332, 45, "files/button.png", 0, 0, 0, tocolor(255,81,81,255)) local tLogin = dxDrawText("LOGIN",x - 40, y + 65, _, _, _, 2, "clear") local tText = dxDrawText("Não tem uma conta?",x - 45, y + 115, _, _, _, _, "clear") local tRegister = dxDrawText("Registre-se",x + 90, y + 115, _, _, tocolor(0,0,0,255), _, "deafault-bold") end addEventHandler("onClientRender", root, mainLogin) Imagino que eu tenho que usar no server onPlayerJoin ou "onPlayerConnect" e usar um triggerClientEvent, para chamar o Painel de login certo? Mas temporariamente até construir o painel vou deixar assim.... Funções que eu não achei: GuiCreateEdit só que em DX, se eu entendi certo o usuário digita ali e eu posso usar o que ele digitou né? Então eu crio duas variáveis, no caso login e senha. e uso no getAccount(login,senha) Vou ter que criar mais uma na parte do register, no caso senha e senha1 e verificar se as duas estão igual. Deixar a imagem de fundo embaçada. Como eu pensei em fazer: Criar duas function, login e register A login eu chamo no onPlayerJoin/Connect não sei qual das duas, e a register quando aperta no texto registre-se. Então vem a parte que pode ser difícil, é complicado fazer uma animação?? Tipo um flip do login para o register? Aceito sugestões!!
  2. Funcionou!! Agora está 100% o script. OBRIGADO a todos que enviaram suas respostas. ?
  3. Não funcionou, e não entendi nada do script, tipo por que tem veh e tableVeh? Se só tem a tableVeh? veh = createVehicle(tableVeh[1], tableVeh[2], tableVeh[3], tableVeh[4]) Não marquei todos os erros, mas o primeiro foi que tem umas bolinhas vermelhas no código, sim!!! Se tu copiar seu código e colocar de novo em uma caixa de código vai ver umas bolinhas vermelhas, da bug aquilo no mta, depois de um tempo fui entender o erro no mta, só aparecia que faltava um "=" mas era porque tinha uma bolinha vermelha. ESSAS BOLINHAS ↓ Clique para abrir o código. end   Depois deu uns outros erros, mas como eu não estava entendendo o código, resolvi aproveitar umas partes e tentar fazer o meu... table = {} -- armazena os jogadores que tem acesso as bikes marker = createMarker(1505.57727, -1750.79688, 12.6, "cylinder", 1, 255, 100, 0, 100) addEventHandler("onPlayerMarkerHit", root, function(m) if m == marker and not isPedInVehicle(source) then -- se o jogador entrar no marker exports.dxmsgs:outputDx(source, "Use o comando /alugarbike para ter acesso as uma bikes, custo R$50.", "info") end end) addCommandHandler ("alugarbike", function(thePlayer) if not table.thePlayer and isElementWithinMarker(thePlayer, marker) then --se o jogador não está na tabela então... if getPlayerMoney(thePlayer) >= 50 then takePlayerMoney(thePlayer, 50) table.thePlayer = setTimer(function() removeTempOwner() end, 10000, 1) exports.dxmsgs:outputDx(thePlayer, "Você pode usar as bikes por dez SEGUNDOS.", "success") else exports.dxmsgs:outputDx(thePlayer, "Você não tem dinheiro suficiente.", "error") end end end) function isTempOwner(thePlayer) if not table.thePlayer then -- se o jogador não está na tabela não pode usar as bikes exports.dxmsgs:outputDx(thePlayer, "Você precisa alugar uma bike para poder usá-la", "error") cancelEvent() end end veh = { createVehicle(481, 1505.42102, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +1, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +2, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +3, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +4, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +5, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +6, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +7, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +8, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +9, -1753.69446, 13.54688), } for i, v in ipairs(veh) do addEventHandler("onVehicleStartEnter", v, isTempOwner) local px, py, pz = getElementPosition(v) local rx, ry, rz = getElementRotation(v) setVehicleRespawnPosition(v, px, py, pz, rx, ry, rz) end function respawnVehicles() for i, v in ipairs(veh) do if not getVehicleOccupant(v, 0) then respawnVehicle(v) setElementHealth(v, 1000) end end end setTimer(respawnVehicles, 60000, 0) function removeTempOwner(thePlayer) if table.thePlayer then table.thePlayer = nil end end addEventHandler( "onPlayerQuit", root, removeTempOwner) Mas faltou enviar a mensagem para o jogador que o tempo dele acabou e retirar ele do veículo se é da tabela veh ={} Então pensei nisso: addCommandHandler ("alugarbike", function(thePlayer) if not table.thePlayer and isElementWithinMarker(thePlayer, marker) then --se o jogador não está na tabela então... if getPlayerMoney(thePlayer) >= 50 then takePlayerMoney(thePlayer, 50) ------------------------------------------------------------------------------------------------------------------------------ local tempPlayer = thePlayer table.thePlayer = setTimer( function(tempPlayer) removeTempOwner(tempPlayer) exports.dxmsgs:outputDx(tempPlayer, "Seu tempo para usar as bikes acabou.", "warning") end, 10000, 1) ------------------------------------------------------------------------------------------------------------------------------ exports.dxmsgs:outputDx(thePlayer, "Você pode usar as bikes por dez minutos.", "success") else exports.dxmsgs:outputDx(thePlayer, "Você não tem dinheiro suficiente.", "error") end end end) Não consigo mandar o player para dentro do timer. Mas eu perco acesso as bikes depois dos 10 segundos do timer. function removeTempOwner(thePlayer) if table.thePlayer then table.thePlayer = nil local tempVeh = getPedOccupiedVehicle(thePlayer) if tempVeh then --and tempVeh == Como eu detecto se o veículo pertence a tabela veh? removePedFromVehicle(thePlayer) end end end Como eu faço para detectar se o veículo é da tabela veh? if tempVeh and tempVeh == Como eu detecto se o veículo pertence a tabela veh? then Script completo table = {} -- armazena os jogadores que tem acesso as bikes marker = createMarker(1505.57727, -1750.79688, 12.6, "cylinder", 1, 255, 100, 0, 100) addEventHandler("onPlayerMarkerHit", root, function(m) if m == marker and not isPedInVehicle(source) then -- se o jogador entrar no marker exports.dxmsgs:outputDx(source, "Use o comando /alugarbike para ter acesso as uma bikes, custo R$50.", "info") end end) addCommandHandler ("alugarbike", function(thePlayer) if not table.thePlayer and isElementWithinMarker(thePlayer, marker) then --se o jogador não está na tabela então... if getPlayerMoney(thePlayer) >= 50 then takePlayerMoney(thePlayer, 50) local tempPlayer = thePlayer table.thePlayer = setTimer( function(tempPlayer) removeTempOwner(tempPlayer) exports.dxmsgs:outputDx(tempPlayer, "Seu tempo para usar as bikes acabou.", "warning") end, 10000, 1) exports.dxmsgs:outputDx(thePlayer, "Você pode usar as bikes por dez minutos.", "success") else exports.dxmsgs:outputDx(thePlayer, "Você não tem dinheiro suficiente.", "error") end end end) function isTempOwner(thePlayer) if not table.thePlayer then -- se o jogador não está na tabela não pode usar as bikes exports.dxmsgs:outputDx(thePlayer, "Você precisa alugar uma bike para poder usá-la", "error") cancelEvent() end end veh = { createVehicle(481, 1505.42102, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +1, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +2, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +3, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +4, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +5, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +6, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +7, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +8, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +9, -1753.69446, 13.54688), } for i, v in ipairs(veh) do addEventHandler("onVehicleStartEnter", v, isTempOwner) local px, py, pz = getElementPosition(v) local rx, ry, rz = getElementRotation(v) setVehicleRespawnPosition(v, px, py, pz, rx, ry, rz) end function respawnVehicles() for i, v in ipairs(veh) do if not getVehicleOccupant(v, 0) then respawnVehicle(v) setElementHealth(v, 1000) end end end setTimer(respawnVehicles, 60000, 0) function removeTempOwner(thePlayer) if table.thePlayer then table.thePlayer = nil local tempVeh = getPedOccupiedVehicle(thePlayer) if tempVeh then --and tempVeh == Como eu detecto se o veículo pertence a tabela veh? removePedFromVehicle(thePlayer) end end end addEventHandler( "onPlayerQuit", root, function(thePlayer) if table.thePlayer then table.thePlayer = nil end end)
  4. Bom dessa vez consegui fazer o script quase completo, só faltou a cereja do bolo. Como eu posso fazer para o jogador ficar com acesso as bikes somente por 10 minutos? Script SERVER-SIDE table = {} -- armazena os jogadores que tem acesso as bikes marker = createMarker(1505.57727, -1750.79688, 12.6, "cylinder", 1, 255, 100, 0, 100) addEventHandler( "onPlayerMarkerHit", root, function(m) if m == marker and not isPedInVehicle(source) then -- se o jogador entrar no marker exports.dxmsgs:outputDx(source, "Use o comando /alugarbike para ter acesso as uma bikes, custo R$50.", "info") end end) addCommandHandler ( "alugarbike", function(source) if not table.source and isElementWithinMarker(source, marker) then --se o jogador não está na tabela então... if getPlayerMoney(source) >= 50 then takePlayerMoney(source, 50) table.source = {} --adiciona o jogador na tabela exports.dxmsgs:outputDx(source, "Você pode usar as bikes até deslogar.", "success") else exports.dxmsgs:outputDx(source, "Você não tem dinheiro suficiente.", "error") end end end) function isTempOwner(source) if not table.source then -- se o jogador não está na tabela não pode usar as bikes exports.dxmsgs:outputDx(source, "Você precisa alugar uma bike para poder usá-la", "error") cancelEvent() end end veh = { createVehicle(481, 1505.42102, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +1, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +2, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +3, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +4, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +5, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +6, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +7, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +8, -1753.69446, 13.54688), createVehicle(481, 1505.42102 +9, -1753.69446, 13.54688), } for i, v in ipairs(veh) do addEventHandler("onVehicleStartEnter", v, isTempOwner) local px, py, pz = getElementPosition(v) local rx, ry, rz = getElementRotation(v) setVehicleRespawnPosition(v, px, py, pz, rx, ry, rz) end function respawnVehicles() for i, v in ipairs(veh) do if not getVehicleOccupant(v, 0) then respawnVehicle(v) setElementHealth(v, 1000) end end end setTimer(respawnVehicles, 60000, 0) addEventHandler( "onPlayerQuit", root, function() if table.source then table.source = nil end end ) Não arrumei nada no client.
  5. Obrigado Okay o script é mais complexo que eu imaginei que seria hahaha, pelo menos pra mim. Acho que vou aposentar o projeto temporariamente, caso contrário vou acabar vindo todo instante pedir um pedaço do código por não saber como fazer. Tipo agora não sei exatamente como criar um marker para a dupla pensei em algo assim: routes = { {2382.10278, -1940.17554, 13.54688} } function createMarker(thePlayer, cmd) for i, dupla in ipairs (tGarbageman) do if not dupla.marker then local rndR = routes[ math.random( #routes ) ] createMarker(rndR[1], rndR[2], rndR[3], "cylinder", 1.5, 255, 255, 255, 255, dupla) end Ficaria assim? tGarbageman{ {marker, jogador1, jogador2} } Ou seria melhor criar um marker para cada jogador? createMarker(rndR[1], rndR[2], rndR[3], "cylinder", 1.5, 255, 255, 255, 255, dupla[1]) createMarker(rndR[1], rndR[2], rndR[3], "cylinder", 1.5, 255, 255, 255, 255, dupla[2]) Então pra evitar ficar pedindo um pedaço do código a cada instante, vou começar bem pelo básico fazer scripts bem simples e ir aumentando sua complexidade aos poucos.
  6. AHHHHHH Agora eu entendi... Agora eu saquei.... Agora todas as peças se encaixaram..... Brincadeiras de lado... function qualquerCoisa (thePlayer, cmd) -- Função que manda um "Oi" para a dupla do jogador que usou o comando. if getDupla (thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer).."#FFFFFF: Oi!", getDupla (thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("eae", qualquerCoisa) Agora que eu entendi..... outputChatBox( getPlayerName(thePlayer) aqui o the player ainda é o jogador que digitou..... no getDupla(thePlayer) é para quem vai a mensagem..... Quando eu olhei o if getDupla(thePlayer) then -- Achei que a partir daqui o thePlayer passava a ser o duo... Mas nada a ver, é só uma verificação mesmo. Fui bem desatento. Fácil de resolver o msgDuo kkkkkk só o pessoal usar ( _ ) Ola_parceiro_como_tu_tá.... Zoas vou tirar, não acho que vai ser necessário e se eu mudar de ideia vou deixar mais pro final do script. Desde já agradeço sua ajuda Agora novamente é comigo. MÃOS A OBRA
  7. Fiz algumas modificações mas agora estou um pouco confuso haha Depois mais vou chamar alguém pra testar, ainda não testei com outro jogador... Essa função aqui que me bugo um pouco: function getDuo(theGarbageman) -- Função que retorna a dupla do jogador informado. for i, dupla in ipairs (tGarbageman) do -- Para cada dupla da table tGarbageman, faça: if dupla[1] == theGarbageman then -- Se o jogador informado está como primeiro elemento desta dupla, então: return dupla[2] -- Retorna o segundo elemento desta dupla. elseif dupla[2] == theGarbageman then -- Se o jogador informado está como segundo elemento desta dupla, então: return dupla[1] -- Retorna o primeiro elemento desta dupla. end end end Ele retorna o outro elemento da dupla, logo se eu usar o comando, ele vai retornar o nome do meu duo certo? Então aqui: function qualquerCoisa (thePlayer, cmd) -- Função que manda um "Oi" para a dupla do jogador que usou o comando. if getDupla (thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer).."#FFFFFF: Oi!", getDupla (thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("eae", qualquerCoisa) Se eu Gaimo estou em duo com o joaozinho33, e EU uso o comando "eae" vai sair isso? joaozinho33: Oi! -- Essa mensagem vai para o joaozinho33 e se o joaozinho33 usar o comando vai sair? Gaimo: Oi! -- Essa mensagem vai vir para mim?? KKKKKKK Eu aproveitei essa função para fazer essa: function msgDuo (thePlayer, cmd, msg) -- Função para a dupla conversar. if getDuo(thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer)..": "..msg, getDuo(thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("mdupla", msgDuo) Só não sei se funciona...... Pelo meu entendimento era pra funcionar kkkkkk E como eu sei que o pessoal vai ZOAR .... BR É FODA...... Vai precisar de uma função para sair da dupla. function exitDuo(thePlayer, cmd) if getDuo(thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: local theDuo = {thePlayer, } table.remove (tGarbageman, theDuo) outputChatBox(thePlayer, "Você saiu da dupla.") end end addCommandHandler("sdupla", exitDuo) Foi fazendo ela que eu comecei a pensar.... EIii pera se retorna o outro elemento da dupla, vai tirar o meu duo e não eu...... Não terminei ela por que fiquei um pouco bugado kkkkk.... No caso a variável local theDuo = {thePlayer, "Faltou o segundo elelemento"} Se o thePlayer vai ser meu duo, o que eu coloco no outro elemento?? KKKKKKKKKK O Script inteiro ficou assim.... local tGarbageman = {} -- Onde as duplas ficam, dentro de suas tables. function createDuo (thePlayer, cmd, theDuoName) -- Cria a table de cada dupla. if getElementData(thePlayer, "Profissão") == "Lixeiro" then -- Verifica se o jogador é um Lixeiro então: if getPlayerFromPartialName(theDuoName) and getPlayerFromPartialName(theDuoName) ~= thePlayer then -- Se existe um jogador com o nick informado e esse jogador informado não é o mesmo que o jogador que executou o comando (evita fazer dupla com si mesmo), então: if getDuo(getPlayerFromPartialName (theDuoName)) then -- Se o jogador que foi informado no comando já tem uma dupla, então: outputChatBox ("O jogador '"..theDuoName.."' já está em uma dupla de lixeiros.", thePlayer, 255, 150, 0) -- Manda este aviso ao jogador que executou o comando. else -- Se o jogador informado não está em uma dupla de lixeiros ainda, então: local theDuo = {thePlayer, getPlayerFromPartialName (theDuoName)} -- Cria a table da dupla, inserindo o jogador que executou o comando e o jogador que ele informou na mesma table dupla. table.insert (tGarbageman, theDuo) -- Insere a table theDuo na table tGarbageman. outputChatBox ("Você colocou '"..theDuoName.."' como sua dupla de lixeiro.", thePlayer) -- Manda este output ao cara que executou o comando. end end end end addCommandHandler ("dupla", createDuo) -- Uso do comando: /dupla NickDoSeuAmigo function exitDuo(thePlayer, cmd) if getDuo(thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: local theDuo = {thePlayer, } table.remove (tGarbageman, theDuo) outputChatBox(thePlayer, "Você saiu da dupla.") end end addCommandHandler("sdupla", exitDuo) function msgDuo (thePlayer, cmd, msg) -- Função para a dupla conversar. if getDuo(thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer)..": "..msg, getDuo(thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("mdupla", msgDuo) function getDuo(theGarbageman) -- Função que retorna a dupla do jogador informado. for i, dupla in ipairs (tGarbageman) do -- Para cada dupla da table tGarbageman, faça: if dupla[1] == theGarbageman then -- Se o jogador informado está como primeiro elemento desta dupla, então: return dupla[2] -- Retorna o segundo elemento desta dupla. elseif dupla[2] == theGarbageman then -- Se o jogador informado está como segundo elemento desta dupla, então: return dupla[1] -- Retorna o primeiro elemento desta dupla. end end end function getPlayerFromPartialName(name) -- Função útil que pelo nome já sabe pra que serve. local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end Aprendendo a remover o cara da dupla acho que já estou apto a fazer também a função onPlayerQuit
  8. Ideia inicial para o script Um trabalho em dupla de lixeiro, Os jogadores podem revezar em ser o motorista, e ambos podem coletar o lixo. Objetivo: Recolher o lixo da cidade e voltar para o local de trabalho. O que eu não faço ideia é como criar um grupo para os dois jogadores, deve ser algo onde um jogador convida o outro para formar um grupo para iniciar o trabalho e ambos receber um blip e marker aleatório no mapa e se um dos dois coletar o lixo, some para os dois. Se alguém tem algum script parecido de formar grupo, ou sabe quais funções eu posso usar para fazer isso, ou tem uma sugestão para melhorar essa ideia, fico muito grato em receber sua resposta. Script CLIENT -- Painel function showPanelGarbageman() local screenW, screenH = guiGetScreenSize() mainWindow = guiCreateWindow((screenW - 400) / 2, (screenH - 200) / 2, 400, 200, ". : LIXEIRO : .", false) guiWindowSetMovable(mainWindow, false) guiWindowSetSizable(mainWindow, false) guiSetProperty(mainWindow, "CaptionColour", "FFFFFF00") bAccept = guiCreateButton(10, 150, 110, 40, "ACEITAR", false, mainWindow) guiSetProperty(bAccept, "NormalTextColour", "FF02FF00") bCancel = guiCreateButton(280, 150, 110, 40, "CANCELAR", false, mainWindow) guiSetProperty(bCancel, "NormalTextColour", "FFFF0000") bDem = guiCreateButton(145, 150, 110, 40, "PEDIR DEMISSÃO", false, mainWindow) guiSetProperty(bDem, "NormalTextColour", "FF00FFFF") memo = guiCreateMemo(10, 27, 380, 113, " Descrição\n\nVocê deve coletar os lixos espalhados pela cidade e trazer aqui para fazer a separação.", false, mainWindow) showCursor(not isCursorShowing()) end addEvent( "showPanelGarbageman", true) addEventHandler("showPanelGarbageman", root, showPanelGarbageman) addEventHandler ("onClientGUIClick", guiRoot, function() if (source == bAccept) then guiSetVisible ( mainWindow, false ) showCursor ( false ) triggerServerEvent("startGarbageman", localPlayer) elseif (source == bCancel) then guiSetVisible ( mainWindow, false ) showCursor ( false ) elseif (source == bDem) then guiSetVisible ( mainWindow, false ) showCursor ( false ) triggerServerEvent("demGarbageman", localPlayer) end end) Script SERVER -- Verifica se o jogador é um "lixeiro" function isGarbageman(player) if getElementData(player, "Profissão") ~= "Lixeiro" then exports.dxmsgs:outputDx(player, "Veículo exclusivo para Lixeiros.", "error") cancelEvent() elseif getElementData(player, "Profissão") == "Lixeiro" then --Ainda não comecei essa parte.... end end veh = { createVehicle(408, 2175.705, -1977.922, 13.553, 0, 0, 273.078, "STORM RP"), createVehicle(408, 2175.705, -1977.922 - 4, 13.553, 0, 0, 273.078, "STORM RP"), createVehicle(408, 2175.705, -1977.922 - 8, 13.553, 0, 0, 273.078, "STORM RP"), } -- Define o spawn dos veículos e chama a função isGarbageman for i, v in ipairs(veh) do addEventHandler("onVehicleStartEnter", v, isGarbageman) local px, py, pz = getElementPosition(v) local rx, ry, rz = getElementRotation(v) setVehicleRespawnPosition(v, px, py, pz, rx, ry, rz) end function respawnVehicles() for i, v in ipairs(veh) do if not getVehicleOccupant(v, 0) then respawnVehicle(v) setVehicleEngineState(v, false) setVehicleOverrideLights(v, 1) end end end setTimer(respawnVehicles, 60000, 0) --Local onde pega o trabalho local jX, jY, jZ = 2200.718, -1970.048, 13.784 markerJob = createMarker(jX, jY, jZ - 0.8, "cylinder", 1, 0, 255, 0, 35) createBlipAttachedTo(markerJob, 42, 2, 255, 255, 255, 255, 0, 350) createObject (1210, jX, jY, jZ - 0.5, 1, 0, 90, true) --Mostra o painel para o cliente addEventHandler( "onPlayerMarkerHit", root, function (m) if m == markerJob and not isPedInVehicle(source) then triggerClientEvent(source, "showPanelGarbageman", source) end end ) -- Quando o cliente aceita o trabalho function startGarbageman() if client ~= source then return end if getElementData(source, "Profissão") ~= "Desempregado" then exports.dxmsgs:outputDx(source, "Você já está trabalhando! Sua profissão é: "..getElementData(source, "Profissão") , "error") elseif getElementData(source, "Profissão") == "Desempregado" then setElementData(source, "Profissão", "Lixeiro") exports.dxmsgs:outputDx(source, "Agora você é um Lixeiro!", "success") end end addEvent("startGarbageman", true) addEventHandler("startGarbageman", root, startGarbageman) -- Quando o cliente pede demissão function demGarbageman() if client ~= source then return end if getElementData(source, "Profissão") == "Lixeiro" then setElementData(source, "Profissão", "Desempregado") exports.dxmsgs:outputDx(source, "Você foi demitido.", "success") elseif getElementData(source, "Profissão") ~= "Leixeiro" then exports.dxmsgs:outputDx(source, "Você não trabalha aqui, sua profissão é: "..getElementData(source, "Profissão"), "error") end end addEvent("demGarbageman", true) addEventHandler("demGarbageman", root, demGarbageman) --Onde começa a brincadeira... NOTA: O GUI foi feito usando o guieditor, LORD HENRY Desculpa ainda não testei criar nada sem usar o guieditor kkkk Qualquer crítica ou sugestão é bem-vinda!
  9. Clique aqui para baixar o GUIEDITOR Não é um dos melhores tutoriais mas tu já pode ter uma noção básica de como começar
  10. Estou com um problema que envolve o HUD e o Script de Mecânico. Quero que quando o jogador pegue o emprego, apareça sua profissão na HUD. SCRIPT DO MEC -- Quando aceita o emprego. function startJob() if client ~= source then return end if aclGetGroup("Mecânico") then local accName = getAccountName ( getPlayerAccount ( source ) ) -------------------------------------------------- local account = getPlayerAccount (source) -------------------------------------------------- if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then exports.dxmsgs:outputDx(source, "Você já é um mecânico.", "error") else aclGroupAddObject(aclGetGroup("Mecânico"), "user."..accName) aclSave() aclReload() ---------------------------------------------------------- setAccountData(account, "Profissão", "Mecânico") ---------------------------------------------------------- -- setAccountData(source, "Profissão", "Mecânico") exports.dxmsgs:outputDx(source, "Agora você é um mecânico.", "success") end else aclCreateGroup("Mecânico") aclSave() aclReload() end end addEvent("startMec", true) addEventHandler("startMec", root, startJob) SCRIPT DO HUD function hudF () local Nivel = getElementData ( localPlayer, "Level" ) or 0 local Dinheiro_Mao = getPlayerMoney ( localPlayer ) local Dinheiro_Banco = getElementData ( localPlayer, "bankbalance" ) or 0 ---------------------------------------------------------------------------------- local Profissao = getElementData (localPlayer, "Profissão") or "Desempregado." ---------------------------------------------------------------------------------- local Vida = getElementHealth ( localPlayer ) local Colete = getPedArmor ( localPlayer ) local Vida_Barra = (screenW * 0.0919) * (Vida/100) local Colete_Barra = (screenW * 0.0919) * (Colete/100) dxDrawRectangle(x*1076, y*4, x*140, y*25, tocolor(0, 0, 0, 100), false) dxDrawRectangle(x*1220, y*4, x*140, y*25, tocolor(0, 0, 0, 100), false) dxDrawRectangle(x*1220, y*33, x*140, y*25, tocolor(0, 0, 0, 100), false) dxDrawRectangle(x*932, y*4, x*140, y*25, tocolor(0, 0, 0, 100), false) dxDrawText("Nivel: "..Nivel.."", x*932, y*4, x*1072, y*29, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "center", false, false, false, false, false) dxDrawText("$"..Dinheiro_Banco.."", x*1220, y*33, x*1360, y*58, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "center", false, false, false, false, false) ------------------------------------------------------------------------------------------------------------------------------------------------------- dxDrawText(Profissao, x*1076, y*4, x*1216, y*29, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "center", false, false, false, false, false) ------------------------------------------------------------------------------------------------------------------------------------------------------- dxDrawText("$"..Dinheiro_Mao.."", x*1220, y*4, x*1360, y*29, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "center", false, false, false, false, false) dxDrawLine(x*1220, y*58, x*1358, y*58, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*1220, y*29, x*1358, y*29, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*1076, y*29, x*1214, y*29, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*932, y*29, x*1070, y*29, tocolor(255, 255, 255, 255), 1, false) dxDrawImage(x*1232, y*7, x*19, y*19, "Arquivos/Cifrao.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*1230, y*37, x*23, y*17, "Arquivos/CartaoCredito.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) --BASE dxDrawRectangle(screenW * 0.0184, screenH * 0.9655, screenW * 0.2044, screenH * 0.0313, tocolor(0, 0, 0, 163), false) --VIDA dxDrawRectangle(screenW * 0.0257, screenH * 0.9734, Vida_Barra, screenH * 0.0156, tocolor(74, 201, 98, 255), false) dxDrawRectangle(screenW * 0.0257, screenH * 0.9734, screenW * 0.0919, screenH * 0.0156, tocolor(74, 201, 98, 100), false) --COLETE dxDrawRectangle(screenW * 0.1250, screenH * 0.9734, Colete_Barra, screenH * 0.0156, tocolor(255, 255, 255, 255), false) dxDrawRectangle(screenW * 0.1250, screenH * 0.9734, screenW * 0.0919, screenH * 0.0156, tocolor(255, 255, 255, 100), false) end addEventHandler ( "onClientRender", getRootElement(), hudF ) Não aparece nenhum erro no debugscript, e na HUD aparece "Desempregado." Porém está salvando sim no jogador a profissão dele, testei abrir e olhar o internal.db e está lá: id userid key value type "1" "1" "Profissão" "Mecânico" "4"
  11. -- Local para pegar KIT de reparação -- tableKit = {} markerKit = createMarker(2511.565, -1515.35, 23.1, "cylinder", 1, 0, 255, 0, 35) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == markerKit and not isPedInVehicle(source) and not tableKit[source] then setPedAnimation(source, "ped", "ATM", -1, false, false, false, false) tableKit[source] = 1 --ERRO setTimer(function(source) exports.dxmsgs:outputDx(source, "Você pegou o kit de ferramentas.", "success") end, 5000, 0) --ERRO end end ) Não envia a mensagem para o jogador, o timer funciona e o outputDx também, mas se eu colocar ele dentro do timer não funciona, preciso enviar a mensagem depois que a animação acabar.
  12. Tá o problema do carro eu arrumei, agora falta arrumar o sistema de spawn random. Alguma sugestão? Preciso que fique variando o spawn de veículo em 2 posições, mas que nunca se repitam.
  13. O script evoluiu bastante e agora estou travado aqui: -- local para pegar o veículo -- table = {} markerCar = createMarker(2531.64, -1515.505, 23.1, "cylinder", 1, 0, 0, 255, 35) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == markerCar and not isPedInVehicle(source) then if getPedSkin(source) == 50 then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then local spawnCar = { {2531.266, -1511.436, 23.996, 0, 0, 270}, {2541.474, -1510.76, 24.005, 0, 0, 270}, {2511.171, -1511.779, 24, 0, 0, 87}, {2500.477, -1511.813, 24, 0, 0, 87}, } rndC = spawnCar[ math.random( #spawnCar ) ] -- ERRO -- table[source]["car"] = createVehicle(525, rndC[1], rndC[2], rndC[3], rndC[4], rndC[5], rndC[6]) -- ERRO -- fadeCamera(source, false, 0.5) setTimer( fadeCamera, 500, 1, source, true, 0.5 ) warpPedIntoVehicle(source, table[source]["car"]) end else exports.dxmsgs:outputDx(source, "Você precisa ser um mecânico e estar com seu uniforme para receber seu veículo.", "info") end end end ) attempt to index field ? (a nil value) -- tentativa de indexar campo? (um valor nulo) Não entendi exatamente o que significa, mas imagino que o problema é table[source] Bom infelizmente não faço ideia do que fazer sobre esse erro. Outra coisa é o rndC é bem falho visto que tem chance de cair o carro no mesmo lugar de outro jogador, queria fazer um sistema pra variar entre 2 posições. Tem isso https://wiki.multitheftauto.com/wiki/Math.randomDiff mas não sei como aplicar. Fora isso aqui está o script, se alguém tem alguma sugestão para melhorar o mesmo. -- Carro não explode. addEventHandler("onVehicleDamage", root, function() if (getElementHealth (source) < 600 ) then if (getElementHealth (source) <= 250) then -- Verifica a vida setVehicleDamageProof( source, true ) setElementHealth( source, 10 ) setVehicleEngineState( source, false ) addEventHandler ("onPlayerCommand", root, function(cmd) if (cmd == "motor") then cancelEvent() end end ) end local rnd = {1, 2, 3} rndT = rnd[ math.random( #rnd ) ] if rndT == 1 then setVehicleEngineState( source, false ) end end end ) addEventHandler("onVehicleEnter", root, function() if (getElementHealth (source) <= 250) then -- Verifica a vida setVehicleDamageProof( source, true ) setElementHealth( source, 10 ) setVehicleEngineState (source, false) addEventHandler ("onPlayerCommand", root, function(cmd) if (cmd == "motor") then cancelEvent() end end ) end end ) -- Sistema do mecânico -- function targetF(thePlayer) local target target = getPedTarget ( thePlayer ) if ( target ) then if ( getElementType ( target ) == "vehicle" ) then setPedAnimation(thePlayer, "benchpress", "gym_bp_geton", -1, false, false, false, false) setTimer ( function() fixVehicle(target) setVehicleDamageProof( target, false ) end, 5500, 1 ) end end end addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) and not isPedInVehicle(source) and getPedSkin(source) == 50 then targetF(source) end end ) -- Local para pegar o emprego -- markerJob = createMarker(2507.855, -1522.458, 27, "cylinder", 1, 0, 255, 0, 35) createBlipAttachedTo(markerJob, 42, 2, 255, 255, 255, 255, 0, 350) createObject (1210, 2507.855, -1522.458, 27.552, 0, 0, 90, true) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == markerJob and not isPedInVehicle(source) then triggerClientEvent(source, "showPanelMec", source) end end ) -- Local para pegar a skin -- setObjectScale ( createObject(1275, 2507.535, -1527.053, 27.959, 0, 0, 90, true ), 2 ) markerSkin = createMarker(2507.476, -1527.093, 27, "cylinder", 1, 0, 0, 255, 35) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == markerSkin and not isPedInVehicle(source) then if not (isGuestAccount (getPlayerAccount (source))) then account = getPlayerAccount (source) if (account) then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then if getPedSkin(source) ~= 50 then setAccountData(account, "temp-skin", tostring(getPedSkin(source))) setPedSkin(source, 50) elseif getPedSkin(source) == 50 then setPedSkin(source, getAccountData(account, "temp-skin")) end else exports.dxmsgs:outputDx(source, "Você precisa ser um mecânico para pegar o uniforme.", "info") end end end end end ) -- local para pegar o veículo -- table = {} markerCar = createMarker(2531.64, -1515.505, 23.1, "cylinder", 1, 0, 0, 255, 35) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == markerCar and not isPedInVehicle(source) then if getPedSkin(source) == 50 then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then local spawnCar = { {2531.266, -1511.436, 23.996, 0, 0, 270}, {2541.474, -1510.76, 24.005, 0, 0, 270}, {2511.171, -1511.779, 24, 0, 0, 87}, {2500.477, -1511.813, 24, 0, 0, 87}, } rndC = spawnCar[ math.random( #spawnCar ) ] table[source]["car"] = createVehicle(525, rndC[1], rndC[2], rndC[3], rndC[4], rndC[5], rndC[6]) fadeCamera(source, false, 0.5) setTimer( fadeCamera, 500, 1, source, true, 0.5 ) warpPedIntoVehicle(source, table[source]["car"]) end else exports.dxmsgs:outputDx(source, "Você precisa ser um mecânico e estar com seu uniforme para receber seu veículo.", "info") end end end ) -- Quando aceita o emprego -- function startJob() if client ~= source then return end if aclGetGroup("Mecânico") then local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then exports.dxmsgs:outputDx(source, "Você já é um mecânico.", "error") else aclGroupAddObject(aclGetGroup("Mecânico"), "user."..accName) aclSave() aclReload() exports.dxmsgs:outputDx(source, "Agora você é um mecânico.", "success") end else aclCreateGroup("Mecânico") aclSave() aclReload() end end addEvent("startMec", true) addEventHandler("startMec", root, startJob) function startDemi() if client ~= source then return end if aclGetGroup("Mecânico") then local accName = getAccountName ( getPlayerAccount ( source ) ) local account = getPlayerAccount (source) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecânico" ) ) then aclGroupRemoveObject (aclGetGroup("Mecânico"), "user."..accName) exports.dxmsgs:outputDx(source, "Você foi demitido com sucesso.", "success") aclSave() aclReload() setPedSkin(source, getAccountData(account, "temp-skin")) else exports.dxmsgs:outputDx(source, "Você ainda não é um mecânico.", "error") end end end addEvent("startDem", true) addEventHandler("startDem", root, startDemi) Enquanto isso vou arrumar as outras partes do script.
  14. Dessa vez eu não queria ter que recorrer ao fórum mas não tive escolha, estou tentando fazer um script de mecânico, mas sou iniciante então preciso de ajuda e também já é de se esperar coisas erradas, bom eu tentei e não foi pouco. Testei com getPlayerTarget, getClientPlayerTarget e esses: -- Sistema do mecânico --- function targetF(thePlayer) local target target = getPedTarget ( thePlayer ) if ( target ) then if ( getElementType ( target ) == "vehicle" ) then fixVehicle(target) end end end addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) then targetF() end end ) --[[ addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) then function targetF(targetElem) if (isElement(targetElem)) and (getElementType(targetElem)=="vehicle") then fixVehicle(targetElem) removeEventHandler("onPlayerTarget", root, targetF) else removeEventHandler("onPlayerTarget", root, targetF) end end addEventHandler ("onPlayerTarget", root, targetF) end end ) ]] --[[ addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) then targetC = getPedTargetCollision(source) if getElementType(targetC) == "vehicle" then --Faça a animação fixVehicle(targetC) exports.dxmsgs:outputDx(source, "Veículo concertado com sucesso.", "success") end testF() end end ) function testF(source) targetC = getPedTargetCollision(source) if getElementType(targetC) == "vehicle" then --Faça a animação fixVehicle(targetC) exports.dxmsgs:outputDx(source, "Veículo concertado com sucesso.", "success") end end ]] --[[ addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) then pTarget = getPedTarget( source ) if getElementType(pTarget) == "vehicle" then fixVehicle(pTarget) end targetF() end end ) function targetF(thePlayer) local target target = getPedTarget ( thePlayer ) if ( target ) then if ( getElementType ( target ) == "vehicle" ) then fixVehicle(target) end end end ]] O que parece ter maior chance de funcionar é esse aqui: VVVV function targetF(thePlayer) local target target = getPedTarget ( thePlayer ) if ( target ) then if ( getElementType ( target ) == "vehicle" ) then fixVehicle(target) end end end addCommandHandler("reparar", function(source) accountname = getAccountName (getPlayerAccount(source)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Mecanico" ) ) then targetF() end end ) No debugscript o erro é: Bad argument @ 'getPedTarget' [Expected ped at argument 1, got nil] Traduzindo eu estou fazendo merda mas não sei o que eu to fazendo de errado. Eu até tinha conseguido com o getPlayerTarget mas no primeiro ele ficava sempre ligado, todos os carros que eu olhava ele já consertava, então testei colocar um removeEventHandler quase ficou bom mas dava um bug, só removia o evento se eu consertasse o veículo, mesmo eu colocando um else pra caso ele não detectasse um veículo. Bom o que eu preciso é que ele conserte o veículo que o jogador que deu /reparar esteja olhando, pensei em fazer no veículo que ele está dentro, mas fica estranho o mecânico arrumar o veículo pelo lado de dentro. Mas dependendo vai ter que ser assim até eu aprender a programar.
  15. Como eu posso visualizar no jogo as animações do https://wiki.multitheftauto.com/wiki/Animations Quero criar um script de mecânico e preciso de algumas animações. Preciso ver como é a animação para colocar no script Alguém sabe como posso fazer isso? Outra coisa relacionada a animação, https://forum.multitheftauto.com/topic/111160-multi-theft-auto-san-andreas-156-is-released/ Neste post tem um painel de animações customizadas, eu gostei D+ TIPO MUITO mesmo das animações do GTA IV, funcionou muito bem, como eu posso fazer algo similar, só que em vez de um painel, eu queria que todos do servidor usassem as animações do GTA IV, não todas só as que o painel aplica, que é andar, correr, pular e quando cai, foi as que eu notei que mudou. Mas a dúvida principal é como eu posso ver as animações, não encontrei nenhum painel que tenha todas as animações, então precisava descobrir como ver elas.
  16. https://forum.multitheftauto.com/topic/113709-ajuda-hp-de-veiculos/?tab=comments#comment-939886
  17. Muito MUITO obrigado mesmo cara, graças a você meu script está funcionando 100% agora!! FICOU SHOW d+
  18. function startJob() if client ~= source then return end if not table[source] then table[source] = {} elseif table[source] then return exports.dxmsgs:outputDx(source, "Você já está trabalhando!", "error") end local rndR = routes[ math.random( #routes ) ] fadeCamera ( source, false, 1.0) --[[ setTimer ( function(source) fadeCamera ( source, true, 1.0) end, 5000, 1 ) ]] -- Cria um veículo e um destino para o jogador. table[source]["car"] = createVehicle(482, 1364.5539550781,-1266.3664550781,13.55) table[source]["marker"] = createMarker(rndR[1], rndR[2], rndR[3]-0.5, "cylinder", 2.5, 255, 0, 0, 255, source) setElementParent( createBlip(rndR[1], rndR[2], rndR[3], 53, 2, 255, 255, 255, 255, 0, 350, source), table[source]["marker"] ) addEventHandler("onMarkerHit", table[source]["marker"], job) end addEvent("start", true) addEventHandler("start", root, startJob) Como eu posso fazer um fazer um fade in e fade out com a câmera? No debug script diz que está esperando o primeiro argumento do fadeCamera, o que eu fiz de errado pra ele não reconhecer o player? fadeCamera ( source, false, 1.0) --[[ setTimer ( function(source) fadeCamera ( source, true, 1.0) end, 5000, 1 ) ]]
  19. MUITOOOOO OBRIGADOOOOOOOOO MANOO ta funcionando perfeitamente, agora é só colocar umas frescura e ser feliz!!! Só não fecha o tópico ainda pq como vou arrumar umas frescura pode ser que eu consiga quebrar o script e ele parar de funfa kaksskks
  20. table = {} -- Rotas que o jogador pode receber. routes = { {1345.973, -1243.223, 13.488}, {1371.559, -1234.667, 13.547}, {1389.106, -1246.985, 13.547}, } -- Local onde pega o trabalho. marker = createMarker(1366.15, -1275.507, 12.6, "cylinder", 1, 255, 0, 0, 35) createBlip (1366.15, -1275.507, 13, 42, 2, 255, 255, 255, 255, 0, 350) createObject (1210, 1366.15, -1275.507, 13, 1, 0, 0, true) addEventHandler( "onPlayerMarkerHit", root, function ( m ) if m == marker then triggerClientEvent(source, "showPanel", source) end end ) -- Quando o jogador aceita o trabalho. function startJob() if client ~= source then return end if not table[source] then table[source] = {} elseif table[source] then return outputChatBox("Você já está trabalhando !", source, 255, 255, 255) end local rndR = routes[ math.random( #routes ) ] -- Cria um veículo e um destino para o jogador. table[source]["car"] = createVehicle(482, 1364.5539550781,-1266.3664550781,13.55) table[source]["marker"] = createMarker(rndR[1], rndR[2], rndR[3]-0.5, "cylinder", 1.5, 255, 0, 0, 255, source) setElementParent( createBlip(rndR[1], rndR[2], rndR[3], 53, 2, 255, 255, 255, 255, 0, 350, source), table[source]["marker"] ) addEventHandler("onMarkerHit", table[source]["marker"], job) end addEvent("start", true) addEventHandler("start", root, startJob) -- Segunda parte do trabalho. function job( hitElement, dim ) if getElementType(hitElement) == "vehicle" and dim then local player = getVehicleOccupant( hitElement, 0 ) if table[player] and table[player]["car"] and hitElement == table[player]["car"] then destroyElement(table[player]["marker"]) -- Como eu posso recriar a marker para o jogador voltar para o ammu-nation?? --[[ Isso não funcionou :/ table[hitElement]["marker"] = createMarker(1364.7564697266, -1285.5583496094, 13, "cylinder", 2, 255, 0, 0, 255, source) outputChatBox("Volte para o ammu-nation") addEventHandler("onMarkerHit", table[source]["marker"], endJob) ]] else outputChatBox("Este não é o veículo que você recebeu!!") end end end -- Final do trabalho. function endJob(hitElement, dim) if getElementType(hitElement) == "vehicle" and dim then local player = getVehicleOccupant( hitElement, 0 ) if table[player] and table[player]["car"] and hitElement == table[player]["car"] then destroyElement(hitElement) destroyElement(table[player]["marker"]) table[player]["car"] = nil table[player]["marker"] = nil table[player] = nil givePlayerMoney(player, 500) outputChatBox("Você concluiu a entrega com sucesso!") else outputChatBox("Este não é o veículo que você recebeu!!") end end end addEventHandler( "onPlayerQuit", root, function() if table[source] then for k,v in pairs(table[source]) do if isElement(v) then destroyElement(v) end end table[source] = nil end end ) Não consigo recriar o marker do player ou criar um novo marker para ele. a ideia do script, Jogador chega no local para pegar o trabalho, abre o painel e confirma ou cancela... até aqui tudo funcionando.... Ele recebe uma rota aleatória, aparece um marker e um blip só para ele... até aqui tudo funcionando..... Ele chega nessa marker, ela some e eu não sei como recriar essa marker e blip, no local que é pra ele voltar....
  21. setAccountData ( account theAccount, string key, string value ) Em algum lugar tu colocou o setAccountData ? Em job tu colocou "Emprego" or false, se tu não usou o setAccountData imagino que ele está usando o false. Caso tu tenha usado o setAccountData não faço ideia do que está acontecendo. Nota: Ainda estou aprendendo a programar.
  22. é um botão no client -- o que acontece quando aperta cada botão addEventHandler ("onClientGUIClick",root, function () if (source == bAccept) then triggerServerEvent ( "start", root) guiSetVisible ( mainWindow, false ) showCursor ( false ) elseif (source == bCancel) then guiSetVisible ( mainWindow, false ) showCursor ( false ) end end)
×
×
  • Create New...