Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,005
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Só com isso já resolve seu problema: local myMarker = createMarker (2278.89, -1306.32, 24, "cylinder", 2, 255, 0, 0, 150) -- Cria o marker. function removerArmas (hitElement) if (hitElement and getElementType (hitElement) == "Player") then -- Se o elemento que colidiu no marker for um jogador, então: takeAllWeapons (hitElement) -- Remove todas as armas deste jogador. outputChatBox ("Armas removidas", hitElement, 255, 255, 255) -- Envia isso no chat dele. end end addEventHandler ("onMarkerHit", myMarker, removerArmas) -- Ativa essa função quando qualquer elemento colidir no marker myMarker.
  2. Sim, ele funciona como um setElementData. Só que é permanente. Você salva um valor qualquer em uma chave (string) qualquer. setAccountData (conta, "nomeDoDado", valor) Obs: Você não pode salvar vários valores no mesmo nome. Se fizer isso, ele vai substituir o valor que já está guardado com esse nome. Obs2: conta não é uma string e nem o login do jogador, você pode obtê-la do jogador com getPlayerAccount. Obs3: valor pode ser quase qualquer coisa: um número inteiro, número real, string, elemento.
  3. @Matheus Nascimento utilize o botão <> do fórum para postar códigos. Não cole direto no texto utilizando formatações.
  4. Que bom que arrumou. Deixe um Thanks nos comentários que lhe ajudaram como agradecimento.
  5. Está certa essa parte. Qual erro aparece no debugscript?
  6. Salve os dados na conta do jogador quando ele sair do server. setAccountData onPlayerQuit Carregue os dados novamente para o servidor quando ele logar no server getAccountData onPlayerLogin
  7. Tudo que eu deixei como comentário, não faz sentido. (exceto o dxDrawImage que eu tirei pois eu não tinha a imagem)
  8. Faça assim: detran = { -- x, y, z, ocupado [1] = {746.4, -1334.81, 13.54, false}, -- Esta coordenada está no seu script. [2] = {245.45, -1002.78, 12.5, false}, -- Esta coordenada eu inventei. } addEvent("WarpMyVehicle", true) addEventHandler("WarpMyVehicle", root, function(id) if not isPedInVehicle (source) then if getElementInterior(source) == 0 then if getPlayerMoney(source) >= tonumber(1000) then local vehicle = getVehicleByID(id) if isElement(vehicle) then for i, vaga in ipairs (detran) do -- Para cada vaga, faça: local x, y, z, status = unpack (vaga) -- x, y, z são as coordenadas pra onde teleportar o veículo. if not status then -- Se a vaga está desocupada, então: vaga[4] = vehicle takePlayerMoney (source, 1000) setElementPosition (vehicle, x, y, z) outputMessage ("#c1c1c1O seu veiculo #00FF66"..(customCarNames[getElementModel(vehicle)] or getVehicleNameFromModel(getElementModel(vehicle))).." #c1c1c1foi entregue ao Detran.", source, 38, 122, 216, true) return end end else outputMessage ("#c1c1c1O seu veiculo não está spawnado.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Você não tem os meios de se teletransportar para o veiculo.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Você só poderá mudar de veiculo se sair do atual.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Nós não podemos dirigir seu veiculo. Por favor, sair do outro veiculo.", source, 38, 122, 216, true) end end) addEvent("RecoverMyVehicle", true) addEventHandler("RecoverMyVehicle", root, function(id) if not isPedInVehicle (source) then if getElementInterior(source) == 0 then if getPlayerMoney(source) >= tonumber(1000) then local vehicle = getVehicleByID(id) if isElement(vehicle) then for i, vaga in ipairs (detran) do -- Para cada vaga, faça: local x, y, z, status = unpack (vaga) -- x, y, z são as coordenadas pra onde teleportar o veículo. if status then -- Se a vaga está ocupada, então: if (status == vehicle) then -- Se a vaga está ocupada pelo veículo correto, então: vaga[4] = false takePlayerMoney (source, 1000) warpPedIntoVehicle (source, vehicle) outputMessage ("#c1c1c1O você recuperou seu veiculo #00FF66"..(customCarNames[getElementModel(vehicle)] or getVehicleNameFromModel(getElementModel(vehicle))), source, 38, 122, 216, true) return end end end else outputMessage ("#c1c1c1O seu veiculo não está spawnado.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Você não tem os meios de se teletransportar para o veiculo.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Você só poderá mudar de veiculo se sair do atual.", source, 38, 122, 216, true) end else outputMessage ("#c1c1c1Nós não podemos dirigir seu veiculo. Por favor, sair do outro veiculo.", source, 38, 122, 216, true) end end)
  9. Sim, eu entendi como funciona o seu script. Inclusive fiz ele aparecer aqui. Mas tive que tirar um monte de coisa pra testar. O que não faz sentido foi como vc escreveu ele. Eu deixei dessa forma só pra testar: local screenW, screenH = guiGetScreenSize() -- local playerC = isPedInVehicle ( localPlayer ) -- local assento = getPedOccupiedVehicleSeat(localPlayer) function Hud() local v = getPedOccupiedVehicle (localPlayer) -- for i,v in ipairs(getElementsByType("vehicle")) do if getVehicleType (v) ~= "BMX" then -- if playerC then -- if assento >=0 then if v then dxDrawLine(screenW * 0.7818, screenH * 0.7266, screenW * 0.7818, screenH * 0.9427, tocolor(180, 180, 180, 130), 3, true) dxDrawLine(screenW * 0.7811, screenH * 0.7279, screenW * 0.8075, screenH * 0.7279, tocolor(180, 180, 180, 130), 3, true) dxDrawLine(screenW * 0.7811, screenH * 0.9427, screenW * 0.8075, screenH * 0.9427, tocolor(180, 180, 180, 130), 3, true) -- dxDrawImage(screenW * 0.7456, screenH * 0.7904, screenW * 0.0329, screenH * 0.0716, "FuelSzam.png", 0, 0, 0, tocolor(180, 180, 180, 255), false) local fuel = getElementData(v, "fuel") or 0 if (fuel)>=1 then dxDrawRectangle(screenW * 0.7870, screenH * 0.9219, screenW * 0.0205, screenH * 0.0156, tocolor(255, 0, 0, 130), true) if (fuel)>=10 then dxDrawRectangle(screenW * 0.7870, screenH * 0.9010, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=20 then dxDrawRectangle(screenW * 0.7870, screenH * 0.8802, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=30 then dxDrawRectangle(screenW * 0.7870, screenH * 0.8594, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=40 then dxDrawRectangle(screenW * 0.7870, screenH * 0.8385, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=50 then dxDrawRectangle(screenW * 0.7870, screenH * 0.8177, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=60 then dxDrawRectangle(screenW * 0.7870, screenH * 0.7969, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=70 then dxDrawRectangle(screenW * 0.7870, screenH * 0.7760, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=80 then dxDrawRectangle(screenW * 0.7870, screenH * 0.7552, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) if (fuel)>=90 then dxDrawRectangle(screenW * 0.7870, screenH * 0.7344, screenW * 0.0205, screenH * 0.0156, tocolor(180, 180, 180, 130), true) end end end end end end end end end end end -- end end -- end end -- addEventHandler("onClientPlayerVehicleEnter", root, Hud) addEventHandler ("onClientRender", root, Hud)
  10. Outra ideia interessante seria você salvar o veículo (elemento) naquele quarto parâmetro no lugar do false. Em vez de salvar true quando está ocupado. Depois quando quiser por exemplo buscar o veículo e tirar ele da vaga, passa um loop por todas as vagas (mais ou menos como eu fiz ali pra verificar quais estavam livres) verificando se o veículo que você quer é o mesmo daquele quarto parâmetro. Se for, teleporta o veículo para a posição do jogador e salva aquele parâmetro como false novamente. Liberando assim a vaga.
  11. Ele está reclamando que você não atribuiu valor na coluna fuel. (você colocou um ? pra ela mas não atribuiu valor a este ?) Na linha 80, depois do or 0, coloque o fuel. dbExec(db, "UPDATE VehicleList SET X = ?, Y = ?, Z = ?, RotZ = ?, HP = ?, Colors = ?, Upgrades = ?, Paintjob = ?, new_hydr = ?, fuel = ? WHERE Account = ? AND ID = ?", x, y, z, rz, getElementHealth(theVehicle), color, upgrade, Paintjob, getElementData ( theVehicle, "NewHydr") and 1 or 0, fuel, getAccountName(getPlayerAccount(Owner)), id)
  12. A lógica do seu script não faz sentido.
  13. Crie uma table vazia onde todas as bikes vão ficar. E indexe as bikes aos jogadores. Não use source como parâmetro de função. E aquela sua linha 6 não faz sentido.
  14. vaga é o item da table detran. Cada item da table detran é uma "sub-table". Isso significa que o vaga[4] é aquele false que aparece no item. É o quarto item, do item vaga.
  15. A minha dica é você criar uma table vazia no início do script e depois quando for criar o veículo, colocar o veículo nessa table, usando o jogador que criou ele como índice. (Sim, eu sei que usei uma linguagem técnica e difícil de entender) Segue um exemplo pra ajudar vc a interpretar a lógica do esquema: tableVehs = {} -- Isso é uma table vazia, criada no início do script. Todos os veículos dos jogadores serão colocados nesta table. allVeh = {510} -- Table de IDs possíveis de veículo. function qualquerCoisa (thePlayer) local x, y, z = getElementPosition (thePlayer) if tableVehs[thePlayer] then -- Se o veículo do jogador já existe, então: setElementPosition (tableVehs[thePlayer], x, y, z+1) -- Move o veículo para a posição do jogador ao invés de criar outro. else -- Se o veículo do jogador não existe, então: tableVehs[thePlayer] = createVehicle (math.random(#allVeh), x, y, z) -- Cria o veículo na posição do jogador. Adicionando a variável deste veículo na table e usando o próprio jogador como índice. end end addCommandHandler ("criar", qualquerCoisa) -- Comando qualquer só pra testar essa função. function qualquerCoisa2 (thePlayer) if tableVehs[thePlayer] then -- Se o veículo do jogador já existe, então: destroyElement (tableVehs[thePlayer]) tableVehs[thePlayer] = nil -- Anula a variável da table para liberar espaço na memória. end end addCommandHandler ("destruir", qualquerCoisa2) -- Comando qualquer só pra testar essa função. function morreu () if tableVehs[source] then destroyElement (tableVehs[source]) tableVehs[source] = nil end end addEventHandler ("onPlayerWasted", root, morreu) -- O source neste evento é o jogador que morreu. addEventHandler ("onPlayerQuit", root, morreu) -- O source neste evento é o jogador que saiu do server.
  16. Vai ter que reprogramar o script mano. O jeito que o cara da internet fez não permite que você obtenha o veículo depois pra poder destruí-lo. Quando o cara fez o veh ser uma variável local, a variável deixa de existir fora daquele escopo que ela foi criada.
  17. Ah desculpe. Esqueci de 1 comando. Corrigi o código do meu comentário, tente novamente.
  18. Eu fiz de propósito não ser compatível com seu script pra forçar você a interpretar o que eu quis dizer em vez de copiar o código. detran = { -- x, y, z, ocupado [1] = {746.4, -1334.81, 13.54, false}, -- Esta coordenada está no seu script. [2] = {245.45, -1002.78, 12.5, false}, -- Esta coordenada eu inventei. } addEvent("WarpMyVehicle", true) addEventHandler("WarpMyVehicle", root, function(id) if not isPedInVehicle (source) then if getElementInterior(source) == 0 then if getPlayerMoney(source) >= tonumber(1000) then local vehicle = getVehicleByID(id) if isElement(vehicle) then for i, vaga in ipairs (detran) do -- Para cada vaga, faça: local x, y, z, status = unpack (vaga) -- x, y, z são as coordenadas pra onde teleportar o veículo. if not status then -- Se a vaga está desocupada, então: vaga[4] = true takePlayerMoney (source, 1000) setElementPosition (vehicle, x, y, z) outputMessage ("#c1c1c1O seu veiculo #00FF66"..(customCarNames[getElementModel(vehicle)] or getVehicleNameFromModel(getElementModel(vehicle))).." #c1c1c1foi entregue ao Detran.", source, 38, 122, 216, true) return end end else outputMessage("#c1c1c1O seu veiculo não está spawnado.", source, 38, 122, 216, true) end else outputMessage("#c1c1c1Você não tem os meios de se teletransportar para o veiculo.", source, 38, 122, 216, true) end else outputMessage("#c1c1c1Você só poderá mudar de veiculo se sair do atual.", source, 38, 122, 216, true) end else outputMessage("#c1c1c1Nós não podemos dirigir seu veiculo. Por favor, sair do outro veiculo.", source, 38, 122, 216, true) end end) Obs: Vc ainda precisa de uma função para liberar a vaga novamente, senão vc ocupa ela e ela fica ocupada pra sempre.
  19. Você não deve usar a mesma função para eventos diferentes quando os eventos possuem parâmetros de função diferentes em uso. Além disso, veh não é um veículo nessa função. E outra: O evento onPlayerBan não faz sentido para esse objetivo. E o evento onPlayerDie nem existe. O resto do seu script também não faz sentido, você usa veh como parâmetro de função em eventos que não tem nada a ver com veículos.
  20. Ative o resource pool. Ele está reclamando que não conseguiu ativar a função exportada por ele.
  21. Faz uma table com as coordenadas, seguido por um valor que representa se tal coordenada está em uso ou não por algum veículo. Quando um veículo é mandado para tal coordenada, altera seu respectivo valor. detran = { -- x, y, z, ocupado [1] = {1382.23, -432.53, 15.1, false}, [2] = {245.45, -1002.78, 12.5, false}, } function ocuparDetran (thePlayer) -- Função teste. for i, vaga in ipairs (detran) do -- Para cada vaga, faça: local x, y, z, status = unpack (vaga) -- x, y, z são as coordenadas pra onde teleportar o veículo. if not status then -- Se a vaga está desocupada, então: outputChatBox ("Carro foi pra vaga "..i, thePlayer) vaga[4] = true -- Vaga agora está ocupada. return end end outputChatBox ("Não há vagas disponíveis", thePlayer) end addCommandHandler ("vaga", ocuparDetran) (Fiz pelo celular)
  22. trailers = { createVehicle (422, -710.332, 964.509, 12.405), createVehicle (422, -714.95, 954.419, 12.234), } function Trailers_Spawn (thePlayer) if (source == trailers[1]) then -- Se o veículo que o jogador entrou for o 1º da lista, então: outputChatBox ("Entrou no veículo 1.", thePlayer) elseif (source == trailers[2]) then outputChatBox ("Entrou no veículo 2.", thePlayer) end end addEventHandler ("onVehicleStartEnter", root, Trailers_Spawn)
  23. E o que acontece se todos os lugares estiverem cheios?
×
×
  • Create New...