sirrjohn Posted August 20, 2023 Share Posted August 20, 2023 (edited) Ola boa noite, gostaria de uma ajuda quanto a função abaixo, sempre que spawna o "airdrop" (dayz) ele contém sempre apenas um dos itens abaixo... tem como fazer conter de 1 a 4 itens da lista? lootItems = { {"M4A3 CCO",70}, {"M16A2",70}, {"Steyr AUG",70}, {"AKS (gold)",70}, {"AKM",70}, {"AK-74",70}, {"AK-107",70}, {"G36C (camo)",70}, {"FN FAL",70}, {"LK-05 SD",70}, {"FN SCAR-L",70}, {"DMR",70}, {"M107",60}, {"M40A3",60}, {"AS50",60}, {"KSVK",60}, {"M249 SAW",40}, {"PKM",30}, {"MG36",30}, {"M240",30}, {"Mk 48 Mod 0",30}, {"Medic Kit",85}, {"Painkiller",50}, {"Morphine",50}, {"Bandage",50}, {"Toolbox",80}, {"Scrap Metal",34}, {"Steel Sheet",100}, {"Engine",43}, {"Tire",43}, {"Tank Parts",43}, {"MP5SD6",50}, {"Revolver",50}, {"Coyote Camo Backpack",60}, {"Drybag Backpack",80}, {"Alice Backpack",70}, {"Czech Backpack",60}, {"Motorbike Helmet 1",50}, {"Police Vest",50}, {"UK Vest Black",50}, {"Gas Mask 2",50}, } function spawnAirdrop(player) if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup("Admin"))then return end if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer)then killTimer(respawnAirdropTimer) end respawnAirdropTimer = setTimer(spawnAirdrop,120000,1) local item_id = math.random(1,#spawnLocations) xq,yq,zq = spawnLocations[item_id][1],spawnLocations[item_id][2],spawnLocations[item_id][3]+0.35 xpsq,ypsq,zpsq = xq,yq,zq+7,3 xpvq,ypvq,zpvq = xq-48,yq-16,zq+37 xsbq,ysbq,zsbq = xq-48,yq-16,zq+41 xssq,yssq,zssq = xq-528,yq+2,zq+141 xsdq,ysdq,zsdq = xq+528,yq+2,zq+141 blipq = createBlip(xq,yq,zq,5) aviaNavaq = createObject(1683,xssq,yssq,zssq,0,0,0) moveObject(aviaNavaq,8000,xsbq,ysbq,zsbq) setTimer(function() parasProdq = createObject(2903,xpvq,ypvq,zpvq,0,0,0) moveObject(aviaNavaq,8000,xsdq,ysdq,zsdq) moveObject(parasProdq,15000,xpsq,ypsq,zpsq) triggerClientEvent("playAirdropSound",getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255,255,255,true) end,8000,1) setTimer(destroyElement,16100,1,aviaNavaq) setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669,xq,yq,zq,0,0,0) variavel = createObject(2060, xq, yq, zq +1.3, 1, 0, 0 ) setElementFrozen(productq,true) avialColq = createColSphere(xq,yq,zq,2) attachElements(avialColq,productq,0,0,0) setElementData(avialColq,"parent",object) setElementData(avialColq,"hospitalbox",true) setElementData(avialColq,"MAX_Slots",5000) for i,item in pairs(lootItems)do local value = math.percentChance(item[2],1) if value >= 1 then setElementData(avialColq,item[1],value) local ammoData,weapID = getWeaponAmmoType(item[1],true) if ammoData then local minBullets,maxBullets = math.floor(getAmmoPlus(ammoData)/3),getAmmoPlus(ammoData)*2 local ammoQuantity = math.random(minBullets,maxBullets) setElementData(avialColq,ammoData,ammoQuantity) end end end end,23100,1) end Edited August 20, 2023 by sirrjohn Link to comment
gustavorn Posted August 21, 2023 Share Posted August 21, 2023 Fala meu brother, como vai você? Que nostalgia me aventurar neste ambiente tão legal de comunicado aqui de novo, após tanto tempo. Vou tentar te ajudar, afinal faz tempo que não sei o que é Lua, viu? Kkkk! Em resposta a sua dúvida, irei responder, levando em conta que você saiba algo sobre lógica de programação. Existem vários objetos (itens) com chave e valor sendo armazenado dentro da nossa variável (lista) lootItems, desta forma, certifique-se de que está lista contenha todos os itens que precisam ser adicionados. Agora, vamos para a função. Comentei em blocos para identar o código e melhorar o entendimento. function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Adiciona de 1 a 4 itens da lista lootItems for i = 1, math.random(1, 4) do local item = lootItems[math.random(1, #lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end, 23100, 1) end A sua função spawnAirdrop original tinha o objetivo de criar um airdrop com um único item escolhido aleatoriamente da lista lootItems. Para modificar essa função e para que o airdrop contenha de 1 a 4 itens adicionei um loop for i = 1, math.random(1, 4) do Isso cria um loop que escolhe um número aleatório entre 1 e 4, representado por math.random(1, 4), que determinará quantos itens serão adicionados ao airdrop. Espero que tenha funcionado para você e que tenha entendido, no mais, fique a vontade para voltar com qualquer dúvida. Abraços! 1 Link to comment
sirrjohn Posted August 21, 2023 Author Share Posted August 21, 2023 (edited) 33 minutes ago, gustavorn said: Fala meu brother, como vai você? Que nostalgia me aventurar neste ambiente tão legal de comunicado aqui de novo, após tanto tempo. Vou tentar te ajudar, afinal faz tempo que não sei o que é Lua, viu? Kkkk! Em resposta a sua dúvida, irei responder, levando em conta que você saiba algo sobre lógica de programação. Existem vários objetos (itens) com chave e valor sendo armazenado dentro da nossa variável (lista) lootItems, desta forma, certifique-se de que está lista contenha todos os itens que precisam ser adicionados. Agora, vamos para a função. Comentei em blocos para identar o código e melhorar o entendimento. function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Adiciona de 1 a 4 itens da lista lootItems for i = 1, math.random(1, 4) do local item = lootItems[math.random(1, #lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end, 23100, 1) end A sua função spawnAirdrop original tinha o objetivo de criar um airdrop com um único item escolhido aleatoriamente da lista lootItems. Para modificar essa função e para que o airdrop contenha de 1 a 4 itens adicionei um loop for i = 1, math.random(1, 4) do Isso cria um loop que escolhe um número aleatório entre 1 e 4, representado por math.random(1, 4), que determinará quantos itens serão adicionados ao airdrop. Espero que tenha funcionado para você e que tenha entendido, no mais, fique a vontade para voltar com qualquer dúvida. Abraços! Oi amigo, primeiramente agradeço imensamente pela sua atenção e ajuda, sou muito grato! Segundo, continua dando apenas 1 item mas por outro lado resolveu outro problema que estava acontecendo, de vir sempre o mesmo item todas as vezes. Agora está vindo 100% aleatório de acordo com as porcentagens! Pra ficar perfeito so dando mais de 1 item simultâneo agora PS.: Adorei seus comentários !! Eu já tive servidores de outros games mas Lua é totalmente novo pra mim Edited August 21, 2023 by sirrjohn Link to comment
gustavorn Posted August 21, 2023 Share Posted August 21, 2023 7 minutes ago, sirrjohn said: Oi amigo, primeiramente agradeço imensamente pela sua atenção e ajuda, sou muito grato! Segundo, continua dando apenas 1 item mas por outro lado resolveu outro problema que estava acontecendo, de vir sempre o mesmo item todas as vezes. Agora está vindo 100% aleatório de acordo com as porcentagens! Pra ficar perfeito so dando mais de 1 item simultâneo agora PS.: Adorei seus comentários !! Eu já tive servidores de outros games mas Lua é totalmente novo pra mim Não há de que, amigo. Vamos tentar adicionar mais uma função para simular a alternância de 1 a 4 itens. -- Função para adicionar de 1 a 4 itens da lista lootItems ao airdrop function addRandomItemsToAirdrop(avialColq) for i = 1, math.random(1, 4) do local item = lootItems[math.random(#lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Chama a função para adicionar itens aleatórios addRandomItemsToAirdrop(avialColq) end, 23100, 1) end Não tenho mais o jogo instalado mas acredito que funcione. Espero que ajude, abraços! 1 Link to comment
sirrjohn Posted August 21, 2023 Author Share Posted August 21, 2023 (edited) 21 minutes ago, gustavorn said: Não há de que, amigo. Vamos tentar adicionar mais uma função para simular a alternância de 1 a 4 itens. -- Função para adicionar de 1 a 4 itens da lista lootItems ao airdrop function addRandomItemsToAirdrop(avialColq) for i = 1, math.random(1, 4) do local item = lootItems[math.random(#lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Chama a função para adicionar itens aleatórios addRandomItemsToAirdrop(avialColq) end, 23100, 1) end Não tenho mais o jogo instalado mas acredito que funcione. Espero que ajude, abraços! Não deu certo está dando 0 itens, eu vou postar o script inteiro ok pode ser isso, talvez está em outro lugar o problema spawnLocations = { {314.83642578125,2506.2631835938,16.484375}, --1 {2617.6479492188,825.74291992188,5.3157968521118}, --2 {1576.1378173828,1447.9056396484,10.831636428833}, --3 {1691.6828613281,1448.0660400391,10.76537322998}, --4 {2004.66015625,1544.4243164063,13.590750694275}, --5 {2181.5466308594,1676.5620117188,11.064884185791}, --6 {2448.1176757813,1273.7723388672,10.8203125}, --7 {2137.3835449219,1442.6499023438,10.8203125}, --8 {2575.3510742188,1824.5400390625,10.8203125}, --9 {2419.8813476563,1920.921875,6.015625}, --10 {2240.4582519531,2045.9215087891,11.0625}, --11 {2179.2749023438,1989.0098876953,10.8203125}, --12 {2127.1943359375,2358.7133789063,10.8203125}, --13 {1997.0966796875,2490.3330078125,10.830327987671}, --14 {1615.7999267578,2377.9553222656,10.8203125}, --15 {1490.2097167969,2188.0922851563,10.8203125}, --16 {1347.8723144531,2153.9106445313,11.015625}, --17 {957.20593261719,2036.7243652344,10.8203125}, --18 {960.08746337891,1730.7059326172,8.6484375}, --19 {271.10870361328,1412.4757080078,10.456546783447}, --20 {10.840476989746,1527.2421875,12.75}, --21 {-334.07357788086,1523.8828125,75.359375}, --22 {-299.88012695313,1025.5218505859,19.59375}, --23 {-702.23919677734,965.90991210938,12.38724899292}, --24 {364.03866577148,874.66436767578,20.40625}, --25 {1088.8571777344,1072.4573974609,10.8359375}, --26 {1489.9666748047,726.11511230469,10.8203125}, --27 {68.575103759766,-254.28695678711,1.578125}, --28 {-864.30541992188,1554.6318359375,23.846151351929}, --29 {-740.29302978516,2058.623046875,60.381847381592}, --30 {-1291.6973876953,2695.0310058594,50.0625}, --31 {-1406.4880371094,2642.3232421875,55.6875}, --32 {-2264.1694335938,2315.4348144531,4.8125}, --33 {-2466.390625,2232.5173339844,4.8093810081482}, --34 {-2614.7595214844,2258.6372070313,8.1994504928589}, --35 {-2681.3798828125,1815.4410400391,68.126068115234}, --36 {224.79331970215,-1832.55859375,3.7705931663513}, --37 {284.9049987793,-1176.2043457031,80.9140625}, --38 {755.96240234375,-1257.9576416016,13.564019203186}, --39 {773.50372314453,-1358.9060058594,13.535238265991},--40 {1128.8109130859,-1447.4973144531,15.796875}, --41 {1268.8708496094,-1251.5638427734,13.722779273987}, --42 {1588.3646240234,-1617.8371582031,13.3828125}, --43 {836.51336669922,-1999.4309082031,12.8671875}, --45 {977.61590576172,-2148.6538085938,13.09375}, --46 {1766.6722412109,-2543.4919433594,13.546875}, --47 {1786.4699707031,-1913.0993652344,13.39405632019}, --48 {1880.51953125,-1395.1171875,13.5703125}, --49 {2101.5480957031,-1572.7170410156,13.371836662292}, --50 {2316.2751464844,-1527.4803466797,25.34375}, --51 {2225.3930664063,-1343.8658447266,23.984144210815},--52 {2154.4069824219,-1168.8410644531,23.821853637695}, --53 {2217.7885742188,-1164.4217529297,25.7265625}, --54 {2028.7626953125,-1195.8115234375,21.663816452026}, --55 {1698.3475341797,-1053.8067626953,23.90625}, --56 {2488.0227050781,-1670.6463623047,13.335947036743}, --57 {2592.5354003906,-1560.2576904297,9.0321044921875}, --58 {2780.2709960938,-1855.2202148438,9.799732208252}, --59 {2874.2202148438,-1572.2838134766,11.100312232971}, --60 {2366.556640625,-111.22863769531,27.541097640991}, --61 {2140.7541503906,-70.945930480957,2.9356446266174}, --62 {-2531.8095703125,1229.8636474609,37.428329467773}, --63 {-2457.4055175781,730.96234130859,35.022338867188},--64 {-2511.1162109375,353.08959960938,35.1171875}, --65 {-2906.40625,472.73828125,4.9140625},--66 {-2327.1994628906,194.27606201172,35.3125},--67 {-2414.2265625,428.54388427734,34.9609375},--68 {-2087.9938964844,261.86730957031,35.669929504395},--69 {-1918.8548583984,264.65570068359,41.046875},--70 {-1968.3210449219,188.20690917969,27.15994644165},--71 {-2182.8562011719,-409.66201782227,35.3359375},--72 {-2406.6630859375,-597.85241699219,132.6484375},--73 {-2520.9538574219,-608.611328125,132.5625},--74 {-2140.0119628906,-860.41796875,32.0234375},--75 {-1515.9364013672,-401.26516723633,7.078125},--76 {-1328.1328125,-17.730365753174,14.1484375},--77 {-1653.7340087891,290.01672363281,7.1875},--78 {-1839.4580078125,144.68249511719,15.1171875},--79 {-1628.8912353516,664.92175292969,7.1875},--80 {-1504.8503417969,737.44427490234,7.1875},--81 {-1833.3952636719,-1574.7811279297,21.75},--82 {-2328.5769042969,-1628.1723632813,483.7038269043},--83 {-2209.6984863281,-2366.5932617188,30.892566680908},--84 {-2011.8569335938,-2430.955078125,30.618188858032},--85 {-1538.6431884766,-2756.8186035156,48.5390625},--86 {-1119.9534912109,-2857.6271972656,67.71875},--87 {-25.108991622925,-2509.640625,36.6484375},--88 } lootItems = { {"M4A1",70}, {"M4A3 CCO",70}, {"M16A2",70}, {"Steyr AUG",70}, {"AKS (gold)",70}, {"AKM",70}, {"AK-74",70}, {"AK-107",70}, {"G36C (camo)",70}, {"FN FAL",70}, {"LK-05 SD",70}, {"FN SCAR-L",70}, {"DMR",70}, {"M107",60}, {"M40A3",60}, {"AS50",60}, {"KSVK",60}, {"M249 SAW",40}, {"PKM",30}, {"MG36",30}, {"M240",30}, {"Mk 48 Mod 0",30}, {"Medic Kit",85}, {"Painkiller",50}, {"Morphine",50}, {"Bandage",50}, {"Toolbox",80}, {"Scrap Metal",34}, {"Steel Sheet",100}, {"Engine",43}, {"Tire",43}, {"Tank Parts",43}, {"MP5SD6",50}, {"Revolver",50}, {"Coyote Camo Backpack",60}, {"Drybag Backpack",80}, {"Alice Backpack",70}, {"Czech Backpack",60}, {"Motorbike Helmet 1",50}, {"Police Vest",50}, {"UK Vest Black",50}, {"Gas Mask 2",50}, } function math.percentChance(percent,repeatTime) local hits = 0 for i = 1,repeatTime do local number = math.random(1,1000)/10 if number <= percent then hits = hits+1 end end return hits end respawnAirdropTimer = false -- Função para adicionar de 1 a 4 itens da lista lootItems ao airdrop function addRandomItemsToAirdrop(avialColq) for i = 1, math.random(1, 4) do local item = lootItems[math.random(#lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Chama a função para adicionar itens aleatórios addRandomItemsToAirdrop(avialColq) end, 23100, 1) end spawnAirdrop() addCommandHandler("spawnairdrop",spawnAirdrop) addCommandHandler("removeairdrop",function(player) if not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup("Admin"))then return end if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer)then killTimer(respawnAirdropTimer) end end) Edited August 21, 2023 by sirrjohn Link to comment
sirrjohn Posted August 21, 2023 Author Share Posted August 21, 2023 Oi amigo seu código estava correto, é que estava gerando itens que nao existiam rs ai achava que nao tinha nenhum ou que nunca tinha mais de 1. mas na verdade eles eram criados mas sem existir por isso não apareciam. Obrigado!! tudo ok. Link to comment
gustavorn Posted August 22, 2023 Share Posted August 22, 2023 (edited) 7 hours ago, sirrjohn said: Oi amigo seu código estava correto, é que estava gerando itens que não existiam rs ai porque não tinha nenhum ou que nunca tinha mais de 1. mas na verdade eles eram criados mas sem existir por isso não apareciam. Obrigado!! tudo bem. Bacana meu camarada, fico feliz que tenha dado certo. Como mencionei, era preciso se atentar aos itens da lista. Qualquer outra dúvida, fica a vontade para perguntar neste fórum. Um grande abraço! Edited August 22, 2023 by gustavorn 1 Link to comment
Recommended Posts