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!