Jump to content

Gaimo

Members
  • Posts

    209
  • Joined

  • Last visited

Everything posted by Gaimo

  1. Uma dúvida, não seria melhor eu passar para o client, no caso quando criar novos marker no client, não vai ser exclusivo para ele? Esse é meu objetivo fazer marker só para um player especifico.
  2. Estou com um problema, não estou conseguindo acessar o valor de uma tabela, Estou tentando comparar se o marker que o player entrou é o marker criado pra ele (markers.thePlayer["startMarker"] = createMarker...) if marker == markers.source["startMarker"] -- Só que é como se eu estivesse tentando indexar um valor e não comparar, como eu faço para fazer essa comparação? Debugscript = attempt to index a field 'source' ( a nil value ) Server-side veh = {} markers = { } -- Cria os veiculos e coloca na table veh for i=1,6 do veh[createVehicle(459, 1700.75781 + 3*i, -1806.09680, 13.54688, 0,0,0)] = true end -- Quando o player entra no vehicle addEventHandler ( "onVehicleEnter", getRootElement(), function(thePlayer, seat) if not markers.thePlayer then markers.thePlayer = {} end -- Se o veiculo que o player entrou pertence ao trabalho entao if veh[getPedOccupiedVehicle(thePlayer)] then -- Cria um marker para o player print(tostring(thePlayer)) markers.thePlayer["StartMarker"] = createMarker(1683.57776, -1811.70239, 13.54688 - 0.8, "cylinder", 3, 255, 0, 0, 255, thePlayer) end end) addEventHandler("onPlayerMarkerHit", getRootElement(), function(marker, dim) if dim then if marker == markers.source["StartMarker"] then print ("entrou") end -- ERRO Eu meio que estou tentando colocar algo no index ao inves de comparar end end) -- Otimização addEventHandler( "onPlayerQuit", root, function() if markers[source] then for k,v in pairs(markers[source]) do if isElement(v) then destroyElement(v) end end markers[source] = nil end end )
  3. Utilize o high save system - https://community.multitheftauto.com/index.php?p=resources&s=details&id=10588 Ele salva roupas.
  4. Use esse mod https://community.multitheftauto.com/index.php?p=resources&s=details&id=10588 Ele salva todos os dados do jogador. -Position -Rotation -Interior -Dimension -Team -Skin -Health -Armor -Money -Wanted level -Clothes -Weapons -Stats
  5. Descobri é algum "BUG" relacionado a qualidade do GTA, se eu mudo tanto no offiline quanto no mta, de low para qualquer outra opção o FPS cai drasticamente, o restante das configurações eu posso mudar menos a qualidade dos efeitos, mesmo rodando em resoluções super baixa com tudo desativado se eu mudar essa opção da um LAG do carai.
  6. Formatei o PC, Reinstalei o GTA SA e nada, meu GTA é o da rockstar, estranho é que comparei em 3 lugares diferentes e o uso do PC não muda muito segue as imagens: Não importa o servidor e os mods, se eu for em determinados lugares o FPS cai MUITO.
  7. MOD finalizado com sucesso, até então sem BUGS, pelo menos pelo que eu testei hahaha, Segue o link para download: Download Algumas imagens do MOD
  8. Esse não é o problema, o que acontece é que ele repete a função várias vezes conforme entra e sai, exemplo: Tem um outputchatbox, que informa em qual corte ele está, quando ele sai e entra em vez de aparecer apenas um está saindo dois, e assim vai repetindo quantas vezes ele sai e entra, se ele entrar e sair 10 vezes, vai trocar de cabelo bem rápido 10 vezes e vai sair 10 outputchatbox, sendo que era pra sair apenas um e trocar uma vez de cabelo. Testei o que você disse mas não funcionou. Encontrei o problema, era onde eu estava suspeitando, transformei em uma função e adicionei um removeEventHandler, estava criando um novo sempre que o player entrava. function panel(_,state) if state == "down" then if isCursorOnElement((screenW - 400) / 2, (screenH - 200) / 2, 80, 80) then valorAtual = valorAtual - 1 if valorAtual <= 0 then valorAtual = sizeTable end triggerServerEvent ( "haircut", resourceRoot, localPlayer, "left", valorAtual) elseif isCursorOnElement((screenW + 200) / 2, (screenH - 200) / 2, 80, 80) then valorAtual = valorAtual + 1 if valorAtual >= sizeTable then valorAtual = 1 end triggerServerEvent ( "haircut", resourceRoot, localPlayer, "right", valorAtual) elseif isCursorOnElement((screenW - 100) / 2, (screenH + 200) / 2, 80, 80) then triggerServerEvent ( "haircut", resourceRoot, localPlayer, "confirm" ) end end end addEventHandler ( "onClientClick", getRootElement(), panel)
  9. O que aparece no /debugscript 3 ? Parece que tu esqueceu de um end na local function endAnimation( thePlayer ). mrk2 = createMarker(329.45990, 61.67885, 1.50823, "cylinder", 1.5, 255,0,0, 0) mrk1 = createMarker(339.67804, 65.90197, 2.84165, "cylinder", 1.5, 255,0,0, 0) mrk = createMarker (342.66888, 62.64292, 2.86276, "cylinder", 1.5, 255,255,0, 45) npc = createPed (28, 340.71704, 64.24253, 3.84022 ) local blip = createBlip (342.66888, 62.64292, 2.86276, 23, 0, 0, 0, 255) function msg(player) outputChatBox("#ffffff Escreva #FF0000 /maconha #ffffff para abrir o painel", player, 255,255,255, true) end addEventHandler("onMarkerHit", mrk, msg) function nohitnpc() cancelEvent() end addEventHandler("onClientPedDamage", npc, nohitnpc) function droga (thePlayer) local x, y, z = getElementPosition (thePlayer) function setAnimation( thePlayer ) setPedAnimation (thePlayer,"CARRY", "liftup", -1, false, false, false) end addEventHandler("onMarkerHit", mrk1, setAnimation) local objPick = createObject (1578, 0, 0, 0) setTimer ( function (thePlayer) ------------Problema local function endAnimation( thePlayer ) setPedAnimation (thePlayer, nil) end -- Esqueceu de fechar essa function end addEventHandler("onMarkerHit", mrk2, endAnimation) exports.bone_attach:attachElementToBone (objPick, thePlayer, 4, -0.3, 0.2, 0, -125, 0, 0) end, 1000, 1, thePlayer) end addEventHandler ("onMarkerHit", mrk1, droga)
  10. Estou com um problema, quando o jogador sai e entra meio que dobra a função, estou suspeitando que é o evento onClientClick acho que ele está sendo criado infinitamente, vou mostrar os script e descrever melhor o problema. Quando o jogador entra no marker abre o painel, ele clica para escolher algum lado, esquerda ou direita, troca o corte e exibe no outputchatbox o valor da variavel valorAtual, que tem como utilidade selecionar o corte na table haircuts, ele sai do estabelecimento e retorna, quando ele aperta para algum dos lados sai 2 outputchatbox e assim vai aumentado conforme ele vai saindo e entrando, exemplo: Entrou uma vez valorAtual = 1 Entrou pela segunda vez valorAtual = 1 valorAtual = 2 Ele repete o valorAtual da anterior e cria um novo, se ele deixou no corte 8 e entrou novamente vai aparecer o 8 e o 1 valorAtual = 8 valorAtual = 1 ( esse eh o que eh aplicado) mas da uns bug depois de entrar umas 4 vzs ou mais pq ele troca varias vezes mt rapido de corte. Minha suspeita esta no client-side esta marcado para facilitar. Server-side: -- Posição dos markers markers = { [1] = {createMarker(2070.85, -1793.88147, 13.54688-0.92, "cylinder", 1, 0, 200, 200, 160)}, -- Entrada Reece's Barbershop [2] = {createMarker(411.59732, -23, 1001.80469-0.90, "cylinder", 1, 0, 200,200,0)}, -- Saida Reece's Barbershop } setElementInterior(markers[2][1], 2) -- Seta o interior do marker de saída createBlipAttachedTo(markers[1][1], 7) -- Blip na entrada Reece's Barbershop. -- Transição do mundo para o interior function teleportPlayer(playerSource, int, x, y , z, r) fadeCamera(playerSource, false, 0.5) setTimer(fadeCamera, 500, 1, playerSource, true, 1) setCameraTarget( playerSource, playerSource ) setTimer(setElementInterior, 500, 1, playerSource, int, x, y , z) setTimer(setElementRotation, 500, 1, playerSource, 0, 0, r) end -- Salva o corte de cabelo do player na conta. function saveCut (playerSource, model, texture) account = getPlayerAccount(playerSource) setAccountData(account, "1_model", model) setAccountData(account, "1_texture", texture) end -- Quando o jogador entra no marker function hitarMarker(marker, dim) if dim and not isPedInVehicle(source) then if getElementModel(source) ~= 0 then outputChatBox("#ff3b3b[ERRO] #ffffffCorte somente para a skin do CJ", source, 255, 255, 255, true) return end if marker == markers[1][1] then -- Se for o marker de entrada local model, texture = getPedClothes(source, 1) -- Pega o corte atual do player quando entrou no marker saveCut(source, model, texture) -- Salva o corte que o jogador entrou outputChatBox("Bem-vindo ao Reece's Barbershop", source, 127,255,212, true) -- Envia a mensagem teleportPlayer(source, 2, 411.61981, -22.34467, 1001.80469 , 0) -- Teleporta o jogador. triggerClientEvent(source, "showPanel", source, true) -- Abre o painel. elseif marker == markers[2][1] then -- Se for o marker de saída. account = getPlayerAccount(source) -- Pega a conta do jogador local model = getAccountData(account, "1_model") local texture = getAccountData(account, "1_texture") addPedClothes(source, model, texture, 1) -- Era pra adicionar o corte que está salvo na conta do player. teleportPlayer(source, 0, 2071.88013, -1793.78210, 13.54688, -90) triggerClientEvent(source, "showPanel", source, false) end end end addEventHandler("onPlayerMarkerHit", getRootElement(), hitarMarker) haircuts = { -- Textura, Modelo [1] = {"player_face", "head"}, [2] = {"hairblond", "head"}, [3] = {"hairred", "head"}, [4] = {"hairblue", "head"}, [5] = {"hairgreen", "head"}, [6] = {"hairpink", "head"}, [7] = {"bald", "head"}, [8] = {"baldbeard", "head"}, [9] = {"baldtash", "head"}, [10] = {"baldgoatee", "head"}, [11] = {"highfade", "head"}, } function haircut (playerSource, status, valorAtual) if status == "left" then outputChatBox("valorAtualL = "..valorAtual) addPedClothes(playerSource, haircuts[valorAtual][1], "head", 1) end if status == "right" then outputChatBox("valorAtualR = "..valorAtual) addPedClothes(playerSource, haircuts[valorAtual][1], "head", 1) end if status == "confirm" then local model, texture getPedClothes(playerSource, 1) if getPlayerMoney(playerSource) >= 25 then takePlayerMoney(playerSource, 25) saveCut(playerSource, model, texture) outputChatBox("Compra realizada com sucesso.") else outputChatBox("[ERRO] Você não tem dinheiro suficiente!" ) end end end addEvent( "haircut", true ) addEventHandler( "haircut", resourceRoot, haircut ) Client-side: local screenW, screenH = guiGetScreenSize() local valorAtual = 1 function draw() dxDrawImage((screenW - 400) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Left dxDrawImage((screenW + 200) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 180, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Right dxDrawImage((screenW - 100) / 2, (screenH + 200) / 2, 100, 100, "img/scissors.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Confim dxDrawText("Custo: R$ 25,00", (screenW - 200) / 2, (screenH + 230) / 2, ((screenW - 200) / 2) + 200, ( (screenH - 40) / 2) + 40, tocolor(45, 199, 29, 255), 1.00, "pricedown", "center", "center", false, false, false, false, false) end function isCursorOnElement( posX, posY, width, height ) if isCursorShowing( ) then local mouseX, mouseY = getCursorPosition( ) local clientW, clientH = guiGetScreenSize( ) local mouseX, mouseY = mouseX * clientW, mouseY * clientH if ( mouseX > posX and mouseX < ( posX + width ) and mouseY > posY and mouseY < ( posY + height ) ) then return true end end return false end function barbershop(status) if not type(status) == "boolean" then return false end if status then local sizeTable = 11 setTimer ( function() addEventHandler("onClientRender", root, draw) end, 1000, 1 ) -- ESTOU SUSPEITANDO DISSO AQUI ----------------------------------------- addEventHandler ( "onClientClick", getRootElement(), function(_,state) if state == "down" then if isCursorOnElement((screenW - 400) / 2, (screenH - 200) / 2, 80, 80) then valorAtual = valorAtual - 1 if valorAtual <= 0 then valorAtual = sizeTable end triggerServerEvent ( "haircut", resourceRoot, localPlayer, "left", valorAtual) elseif isCursorOnElement((screenW + 200) / 2, (screenH - 200) / 2, 80, 80) then valorAtual = valorAtual + 1 if valorAtual >= sizeTable then valorAtual = 1 end triggerServerEvent ( "haircut", resourceRoot, localPlayer, "right", valorAtual) elseif isCursorOnElement((screenW - 100) / 2, (screenH + 200) / 2, 80, 80) then triggerServerEvent ( "haircut", resourceRoot, localPlayer, "confirm" ) end end end) -------------------------------------------------------------------------------------------------------- elseif status == false then removeEventHandler("onClientRender", root, draw) end end addEvent( "showPanel", true ) addEventHandler( "showPanel", localPlayer, barbershop)
  11. Sim, mas estou suspeitando que é alguma coisa no meu PC e não com o jogo, vou verificar aqui qualquer coisa eu formato o PC, sa poha de uns dia pra cá ta se arrastando. Mas o que me deixou pensativo é que só em alguns lugares que fica um lag do caraio, em outros perfeitamente normal.
  12. Por algum motivo bizarro, estou com problema de desempenho, meu mta estava funcionando liso (60 FPS ++) tanto em servidores quanto no meu server local onde fico testando/criando mods, mas agora dependendo do lugar no mapa onde vou meu fps dropa muito, tipo vai pra 30 25 20 e fica nisso até eu sair dessa área, alguma ideia do que seja? Já rodei um servidor limpo pra ver se não era algum mod e o problema persistiu.
  13. Estou fazendo um mod de barbearia, tudo está funcionando, mas precisa dos ajustes finais, não sei como fazer para cobrar o corte, funcionamento atual do mod: O jogador só consegue entrar se estiver com a skin do CJ, caso contrário recebe uma mensagem informando o mesmo. Ao entrar na barbearia o painel já fica disponivel segue a imagem: Ao clicar nas setas ele pode alternar entre os cortes, mas quando ele sai do estabelecimento, ele permanece com o corte e o painel obviamente some. O que eu preciso é dar utilidade para a tesoura, no caso ela seria quem iria confirmar o corte e cobrar, mas não sei bem como fazer isso, vou mostrar o código atual e o que eu penso em fazer, aceito criticas e sugestões. Client-Side: local screenW, screenH = guiGetScreenSize() function draw() dxDrawImage((screenW - 400) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Left dxDrawImage((screenW + 200) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 180, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Right dxDrawImage((screenW - 100) / 2, (screenH + 200) / 2, 100, 100, "img/scissors.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) -- Button Confim end -- ignore essa função function isCursorOnElement( posX, posY, width, height ) if isCursorShowing( ) then local mouseX, mouseY = getCursorPosition( ) local clientW, clientH = guiGetScreenSize( ) local mouseX, mouseY = mouseX * clientW, mouseY * clientH if ( mouseX > posX and mouseX < ( posX + width ) and mouseY > posY and mouseY < ( posY + height ) ) then return true end end return false end function barbershop(status) if not type(status) == "boolean" then return false end if status then -- timer para esperar a animação de fade que acontece com a camera setTimer ( function() addEventHandler("onClientRender", root, draw) end, 700, 1 ) addEventHandler ( "onClientClick", getRootElement(), function(_,state) if state == "down" then if isCursorOnElement((screenW - 400) / 2, (screenH - 200) / 2, 80, 80) then triggerServerEvent ( "haircut", resourceRoot, localPlayer, "left" ) elseif isCursorOnElement((screenW + 200) / 2, (screenH - 200) / 2, 80, 80) then triggerServerEvent ( "haircut", resourceRoot, localPlayer, "right" ) elseif isCursorOnElement((screenW - 100) / 2, (screenH + 200) / 2, 80, 80) then triggerServerEvent ( "haircut", resourceRoot, localPlayer, "confirm" ) end end end) elseif status == false then removeEventHandler("onClientRender", root, draw) end end addEvent( "showPanel", true ) addEventHandler( "showPanel", localPlayer, barbershop) Server-side: -- Posição dos markers markers = { [1] = {createMarker(2070.85, -1793.88147, 13.54688-0.92, "cylinder", 1, 0, 200, 200, 160)}, -- Entrada Reece's Barbershop [2] = {createMarker(411.59732, -23, 1001.80469-0.90, "cylinder", 1, 0, 200,200,0)}, -- Saida Reece's Barbershop } setElementInterior(markers[2][1], 2) -- Seta o interior do marker de saída createBlipAttachedTo(markers[1][1], 7) -- Blip na entrada Reece's Barbershop. -- Transição do mundo para o interior function teleportPlayer(playerSource, int, x, y , z, r) fadeCamera(playerSource, false, 0.5) setTimer(fadeCamera, 500, 1, playerSource, true, 1) setCameraTarget( playerSource, playerSource ) setTimer(setElementInterior, 500, 1, playerSource, int, x, y , z) setTimer(setElementRotation, 500, 1, playerSource, 0, 0, r) end -- Quando o jogador entra no marker function hitarMarker(marker, dim) if dim and not isPedInVehicle(source) then if getElementModel(source) ~= 0 then outputChatBox("#ff3b3b[ERRO] #ffffffCorte somente para a skin do CJ", source, 255, 255, 255, true) return end if marker == markers[1][1] then -- Se for o marker de entrada outputChatBox("Bem-vindo ao Reece's Barbershop", source, 127,255,212, true) teleportPlayer(source, 2, 411.61981, -22.34467, 1001.80469 , 0) triggerClientEvent(source, "showPanel", source, true) elseif marker == markers[2][1] then -- Se for o marker de saída. teleportPlayer(source, 0, 2071.88013, -1793.78210, 13.54688, -90) triggerClientEvent(source, "showPanel", source, false) end end end addEventHandler("onPlayerMarkerHit", getRootElement(), hitarMarker) haircuts = { -- Textura, Modelo [1] = {"player_face", "head"}, [2] = {"hairblond", "head"}, [3] = {"hairred", "head"}, [4] = {"hairblue", "head"}, [5] = {"hairgreen", "head"}, [6] = {"hairpink", "head"}, [7] = {"bald", "head"}, [8] = {"baldbeard", "head"}, [9] = {"baldtash", "head"}, [10] = {"baldgoatee", "head"}, [11] = {"highfade", "head"}, } local valorAtual = 1 -- Tem algum problema ficar aqui?? Se outros player forem cortar o cabelo qual vai ser o valor?? function haircut (playerSource, status) if status == "left" then valorAtual = valorAtual - 1 if valorAtual == 0 then valorAtual = #haircuts end addPedClothes(playerSource, haircuts[valorAtual][1], "head", 1) end if status == "right" then valorAtual = valorAtual + 1 if valorAtual >= #haircuts then valorAtual = 1 end addPedClothes(playerSource, haircuts[valorAtual][1], "head", 1) end end addEvent( "haircut", true ) addEventHandler( "haircut", resourceRoot, haircut ) A primeira dúvida é a váriavel valorAtual ela está fora da função haircut e é serverside, se um jogador alterar o valor dela, vai alterar o valor da váriavel (valorAtual) de todos? Como estou pensando em fazer para cobrar o jogador, criar uma váriavel paid, quando o jogador entrar no marker de entrada, salvar o corte atual dele, e quando ele sair verificar se paid é == true se for mantem o corte se não volta para o que foi salvo quando ele entrou, seria isso? Alguma sugestão?
  14. Eu tenho uma lista com X itens, quero fazer uma rolagem infinita, por exemplo: Item atual = 2, se eu apertar para a esquerda, vai para o 1, se eu apertar novamente, quero que vá para o último da lista. Gostaria de saber se essa é uma opção viável ou é uma gambiarra, teria como melhorar? Pensei em fazer algo assim: table = { [1] = {"item1"}, [2] = {"item2"}, [3] = {"item3"}, } function exemplo () local valorAtual = 1 if pressedLeft then valorAtual -= 1 if valorAtual <= 0 then valorAtual = 3 end -- Deve impedir de ficar um valor negativo elseif pressedRight then valorAtual += 1 if valorAtual >= 3 then valorAtual = 1 end -- Deve impedir de ficar um valor maior que o existente na tabela end end
  15. Tem alguma função que detecta que eu cliquei em um dx?
  16. Estou com problema para fechar o painel, ele abre mas não fecha, testei usar um while panel == true, mas acabou travando o jogo. Quero que feche o painel quando o jogador sair da barbearia. Segue o código: Server-side: -- Quando o jogador entra no marker function hitarMarker(marker, dim) if dim and not isPedInVehicle(source) then -- abaixo ele verifica se o marker hitado é equivalente ao index [1] valor [1] da tabela enterMarker, ou seja a marker criada 1. if marker == enterMarker[1][1] then outputChatBox("Bem-vindo ao Reece's Barbershop", source, 127,255,212, true) teleportPlayer(source, 2, 411.61981, -22.34467, 1001.80469 , 0) triggerClientEvent(source, "showPanel", source, true) -- Ativa o painel elseif marker == exitMarker[1][1] then teleportPlayer(source, 0, 2071.88013, -1793.78210, 13.54688, 0) triggerClientEvent(source, "showPanel", source, false) -- Deveria desativar o painel end end end addEventHandler("onPlayerMarkerHit", getRootElement(), hitarMarker) Client-side: local screenW, screenH = guiGetScreenSize() function barbershop(status) outputChatBox(tostring(status)) local panel = status if panel == true then addEventHandler("onClientRender", root, function() bleft = dxDrawImage((screenW - 400) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) bright = dxDrawImage((screenW + 200) / 2, (screenH - 200) / 2, 100, 100, "img/arrow.png", 180, 0, 0, tocolor(255, 255, 255, 255), false) bconfirm = dxDrawImage((screenW - 100) / 2, (screenH + 200) / 2, 100, 100, "img/scissors.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end) end end addEvent( "showPanel", true ) addEventHandler( "showPanel", localPlayer, barbershop)
  17. Como eu transformo uma imagem em botão? quero detectar se o player clicou nela, tentei usar o addEventHandler("onClientClick" mas não consegui, não se se é com ele ou usei de forma indevida.
  18. Quero fazer um script de lojas de roupas, o meu problema inicial é o seguinte, como vou detectar que o jogador está no marker da table enterMarker? Imagino que com o addEventHandler("onPlayerMarkerHit" Porém não sei como fazer a verificação, como posso verificar se o marker que o player está pertence a tabela enterMarker? Segue o script: -- Posição dos marker para entrar enterMarker = { {1170.88306, -1489.64990, 22.75516}, {1147.24207, -1487.55115, 22.76903}, } -- Posição dos marker para sair exitMarker = { } -- Posição dos marker para comprar buyMarker = { } for i, v in pairs (enterMarker) do enterMarker = createMarker(v[1], v[2], v[3]-0.85, "cylinder", 2, 0, 20, 255, 160) end
  19. Quando tu diz alinhar, quer dizer mudar a posição dos icones e informações que aparecem na tela?
  20. Achei que ficaria parecido com isso: veh = { [ createVehicle(481, 1505.42102, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +1, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +2, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +3, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +4, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +5, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +6, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +7, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +8, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +9, -1753.69446, 13.54688) ] = true } Entao vou ter que fazer manualmente os 30 createVehicle?
  21. addEventHandler( "onResourceStart", resourceRoot, function() local dist = 0 local bmx = {} for i=1,30 do dist = dist - 1 table.insert(bmx, i, createVehicle (481, 1120, -1474 + dist, 15, 0, 0, 90)) end end) Como posso definir o setVehicleRespawnPosition? Tentei isso mas n'ao funcionou. for v, _ in pairs(bmx) do local px, py, pz = getElementPosition(v) local rx, ry, rz = getElementRotation(v) setVehicleRespawnPosition(v, px, py, pz, rx, ry, rz) end Como fica a tabela bmx com esse for ? O que tem la dentro e como esta organizado? Expected element at argument 1 no getElementPosition e Rotation, o que exatamente significa esse V ? for v, _
  22. addEventHandler( "onResourceStart", resourceRoot, function() local x = 0 -- valor inicial local y = 30 -- quantidade de bikes local dist = 0 -- distancia das bikes while x ~= y do x = x + 1 dist = dist - 1 createVehicle( 481, 1120, -1474 + dist, 15, 0, 0, 90 ) end end) Como posso colocar os veiculos criados no while dentro de uma tabela? N'ao quero ter que fazer isso: veh = { [ createVehicle(481, 1505.42102, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +1, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +2, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +3, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +4, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +5, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +6, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +7, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +8, -1753.69446, 13.54688) ] = true, [ createVehicle(481, 1505.42102 +9, -1753.69446, 13.54688) ] = true }
  23. É possível ter duas skins no mesmo veículo no servidor e que todos possam ver? Exemplo duas lojas em uma ele compra com a primeira skin, na outra ele compra com outra skin.
  24. Você vai fazer algo assim: Quando o jogador entrar (onPlayerLogin) então: playerStatus = getAccountData Variavel que vai receber o valor. setPedStat - valor que contem na playerStatus e adiciona também quando o jogador sair (onPlayerLogout) setAccountData playerStatus o que está contido em playerStatus. function onPlayerLogin(_,account) local defaultStatus = 0 -- Valor inicial local playerStatus = getAccountData(account, "playerStatus") or defaultStatus -- Recebe o valor que está armazenado em playerStatus ou caso seja o primeiro login então recebe o valor padrão no caso que está armazenado na variavel defaultStatus setPedStat(source, 23, playerStatus) -- Coloca o valor de "musculo" no jogador end addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) -- Quando o jogador deslogar, não sei se ele simplesmente sair vai funcionar, qualquer coisa add um onPlayerQuit addEventHandler("onPlayerLogout",getRootElement(), function() setAccountData( getPlayerAccount( source ), "playerStatus", getPedStat(source, 23) ) -- Vai colocar no DB da conta dele o valor que contem de "musculo" na variavel playerStatus end ) Não testei, se acontecer algum erro pode ser por conta do account data pedir um valor em string, mas usa um tostring() e tonumber()
×
×
  • Create New...