Jump to content

destroi objeto


Recommended Posts

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
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

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 by felipebaidoloko
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...