-
Posts
212 -
Joined
-
Last visited
Everything posted by Gaimo
-
Desculpa reviver o tópico mas preciso de uma ajuda, como eu seto o respawn? veh = {} -- 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 Tentei colocar setVehicleRespawnPosition em todo o lugar mas n foi n
-
Tive que refazer o mod completamente, passei para o client, eu tenho uma tara por fazer server-side, eh um trabalho, esta funcionando parcialmente, sim teria mais de um marker
-
addEventHandler( "onVehicleEnter", getRootElement(), function (thePlayer, seat) -- Se o veiculo que o player entrou pertence ao trabalho entao if getAccountData(thePlayer, "job") == "transportador" then if veh[getPedOccupiedVehicle(thePlayer)] then triggerClientEvent ( thePlayer, "startJob", thePlayer) end else cancelEvent() outputChatBox("Você não é um transportador!") end end) O cancelEvent nao esta funcionando. Nao diz nenhum erro.
-
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.
-
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 )
-
Utilize o high save system - https://community.multitheftauto.com/index.php?p=resources&s=details&id=10588 Ele salva roupas.
-
Tirem uma duvida minha sobre servidor!
Gaimo replied to WinsJr_'s topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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 -
Problema de desempenho
Gaimo replied to Gaimo's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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. -
Problema de desempenho
Gaimo replied to Gaimo's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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. -
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
-
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)
-
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)
-
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)
-
Problema de desempenho
Gaimo replied to Gaimo's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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. -
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.
-
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?
-
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
-
Tem alguma função que detecta que eu cliquei em um dx?
-
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)
-
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.
-
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
-
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?
-
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, _
-
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 }