Big Smoker Posted December 26, 2019 Share Posted December 26, 2019 Boa Noite, Jpa estou 1 semana tentando fazer essa função mais nada da certo, ou quando acho que da certo aparece bug. Eu resolvi hoje tentar de volta, consegui so que ele fica criando varias vezes o objeto, ai resolvi colocar um setElementData so que ai ao inves de aparecer 4 objetos que ta no chao, ele aparece apenas 2. Ou o outro lado do X,Y,Z nao aparece o objeto do chao, eu preciso muito arrumar isso. Alguem pode me ajuda pelo discord, ou aqui pelo forum, pois eu mando mais demora a resposta. Script: Client.Lua obejctItem = {} function startRefreshLoot() if getElementData(getLocalPlayer(),"logedin") then for i,col in pairs(getElementsByType("colshape"))do if getElementData(col,"itemloot") == true then local cx, cy, cz = getElementPosition (col) local px, py, pz = getElementPosition (localPlayer) --Aqui você acha a localização do player. local distancia = math.floor(getDistanceBetweenPoints3D (cx, cy, cz, px, py, pz)) if tonumber(distancia) <= 50 then obejctItem = {} if getElementData(localPlayer,"objetsddsdsoCdd22") == 1 then outputChatBox("JA CRIADO") return end for i, item in ipairs(itemTable["other"]) do counter = 0 if getElementData(col,item[1]) and getElementData(col,item[1]) > 0 then if counter == 3 then break end counter = counter + 1 obejctItem[counter] = createObject(item[2],cx+math.random(-1,1),cy+math.random(-1,1),cz-0.875,item[4]) setObjectScale(obejctItem[counter],item[3]) setElementCollisionsEnabled(obejctItem[counter], false) setElementFrozen (obejctItem[counter],true) end end setElementData(localPlayer,"objetsddsdsoCdd22",1) outputChatBox("CRIADO") setTimer(function() startRefreshLoot() end,5000,1) elseif tonumber(distancia) > 50 and tonumber(distancia) < 60 then if (getElementData(localPlayer,"objetsddsdsoCdd22") == 1) then for i,colObjet in pairs(obejctItem)do if isElement(colObjet) then destroyElement(colObjet) colObjet = false outputChatBox("DESTROI"--[[.." / Y: "..cy.."/ Z: "..cz--]]) end end setElementData(localPlayer,"objetsddsdsoCdd22",false) end end end end end end startRefreshLoot() obrigado desde de já Link to comment
Big Smoker Posted December 26, 2019 Author Share Posted December 26, 2019 15 hours ago, felipebaidoloko said: Boa Noite, Já estou a 1 semana tentando fazer essa função mais nada da certo, ou quando acho que da certo aparece bug. Eu resolvi hoje tentar de volta. Consegui so que ele fica criando varias vezes o mesmo objeto, ai resolvi colocar um setElementData so que ai ao inves de aparecer 4 objetos que ta no chao, ele aparece apenas 2. Ou o outro lado do X,Y,Z nao aparece o objeto do chao, eu preciso muito arrumar isso. Alguém pode me ajuda pelo discord, ou aqui pelo forum, pois eu mando mais demora a resposta. Script: Client.Lua obejctItem = {} function startRefreshLoot() if getElementData(getLocalPlayer(),"logedin") then for i,col in pairs(getElementsByType("colshape"))do if getElementData(col,"itemloot") == true then local cx, cy, cz = getElementPosition (col) local px, py, pz = getElementPosition (localPlayer) --Aqui você acha a localização do player. local distancia = math.floor(getDistanceBetweenPoints3D (cx, cy, cz, px, py, pz)) if tonumber(distancia) <= 50 then obejctItem = {} if getElementData(localPlayer,"objetsddsdsoCdd22") == 1 then outputChatBox("JA CRIADO") return end for i, item in ipairs(itemTable["other"]) do counter = 0 if getElementData(col,item[1]) and getElementData(col,item[1]) > 0 then if counter == 3 then break end counter = counter + 1 obejctItem[counter] = createObject(item[2],cx+math.random(-1,1),cy+math.random(-1,1),cz-0.875,item[4]) setObjectScale(obejctItem[counter],item[3]) setElementCollisionsEnabled(obejctItem[counter], false) setElementFrozen (obejctItem[counter],true) end end setElementData(localPlayer,"objetsddsdsoCdd22",1) outputChatBox("CRIADO") setTimer(function() startRefreshLoot() end,5000,1) elseif tonumber(distancia) > 50 and tonumber(distancia) < 60 then if (getElementData(localPlayer,"objetsddsdsoCdd22") == 1) then for i,colObjet in pairs(obejctItem)do if isElement(colObjet) then destroyElement(colObjet) colObjet = false outputChatBox("DESTROI"--[[.." / Y: "..cy.."/ Z: "..cz--]]) end end setElementData(localPlayer,"objetsddsdsoCdd22",false) end end end end end end startRefreshLoot() obrigado desde de já Link to comment
Tommy. Posted December 26, 2019 Share Posted December 26, 2019 Você consegue explicar o que está tentando fazer ? Link to comment
Big Smoker Posted December 26, 2019 Author Share Posted December 26, 2019 (edited) Sim ate eu me embaralhei, o Lord também não entendeu, ate perguntou se tenho algum tipo de deficiência, mais não é. Eu fiquei o dia todo mexendo nele ai mexendo ali e mexendo la me embaralhei todo. Mais em fim vou explicar ao certo o que eu quero fazer. Quero fazer uma função a onde cria os Objetos no chão de acordo com a ID que esta na Tabela, Isso de trata de um servidor de MTA DayZ (Você já deve ter ouvido fala ou já ter jogado), mais então, nele to com problema na renderização dos objetos que fica "piscando". Um exemplo claro é quando vai na área 51 a onde tem vários objetos modelados e editados que usa ID do GTA SA pra substituir tipo (Torres, Galpão, etc..) e no jogo tem os Itens Exemplo (Motor, Pneu, Caixa de Ferramenta e armamentos,etc..) todos esses itens também usa ID do GTA SA quando dropa no chão ai eu coloco a ID do objeto. Só que o problema é que os objetos em volta tipo: Torres, Arvores, golpes(Objetos modelados), fica sumindo do nada mesmo próximo, ai procurei aqui no fórum ate fiz um tópico pedindo ajuda e me falaram, que isso se da com a quantidade de objetos criado em volta. A unica solução que eu achei e tava testando era fazer um sistema a onde cria o objeto (itens do jogo) quando o jogador chega próximo da Gear (colShope a onde ta os itens) e deu certo a função que eu fiz, mais o único problema é que ele fica criando o mesmo objeto varias vezes, e quero que ele cria 1 vez e quando sai do raio de 15 metros ele destrói aqueles objetos criado. Essa função eu fiz para ser executada em modo Client obejctItem = {} function startRefreshLoot() if getElementData(getLocalPlayer(),"logedin") then for i,col in pairs(getElementsByType("colshape"))do if getElementData(col,"itemloot") == true then local cx, cy, cz = getElementPosition (col) -- localização da onde ta as Gear. local px, py, pz = getElementPosition (localPlayer) -- localização do player. local distancia = math.floor(getDistanceBetweenPoints3D (cx, cy, cz, px, py, pz)) if tonumber(distancia) <= 15 then obejctItem = {} for i, item in ipairs(itemTable["other"]) do counter = 0 if getElementData(col,item[1]) and getElementData(col,item[1]) > 0 then if counter == 3 then break end counter = counter + 1 obejctItem[counter] = createObject(item[2],cx+math.random(-1,1),cy+math.random(-1,1),cz-0.875,item[4]) setObjectScale(obejctItem[counter],item[3]) setElementCollisionsEnabled(obejctItem[counter], false) setElementFrozen (obejctItem[counter],true) outputChatBox("Objetos Criados") end end setTimer(function() ----- faz a função se repetir dando um refresh startRefreshLoot() end,5000,1) elseif tonumber(distancia) > 15 and tonumber(distancia) < 20 then for i,colObjet in pairs(obejctItem)do if isElement(colObjet) then destroyElement(colObjet) colObjet = false outputChatBox("Objetos Destruídos") end end end end end end end startRefreshLoot() Edited December 26, 2019 by felipebaidoloko Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now