-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
- 69 respostas
- 26600 visualizações
-
- 47 respostas
- 23221 visualizações
-
- 0 respostas
- 1304 visualizações
-
- 0 respostas
- 1640 visualizações
-
- 6 respostas
- 7698 visualizações
-
Pergunta
GustavaoTibia 0
Olá gostaria de pedir uma força pra alguem ai.
Eu gostaria que este script me envie uma BAG por cada boss do reward chest que o jogador matar, atualmente ele esta enviando os items normal so que se eu mato 2 bosses iguais ou diferentes os items fica um em cima do outro, gostaria de separar.
Ex: matou um boss os items vai ser enviado dentro de uma bag ou backpack dependendo do id que colocar, quando eu matar o outro boss vou receber outra bag ou backpack e quando eu ir na ilha pegar os items do reward, lá vai esta 2 bag ou backpack e nao os items tudo juntos
Eu tentei mais consegui apenas enviar 1 item por cada bag ou backpack, ou seja, se eu matar um boss e ganhar 10 item, vai ser enviado 10 bags :\
Por fim o scritp é este:
function sort_descending(t) local tmp = {} for k, v in pairs(t) do table.insert(tmp, {k, v}) end table.sort(tmp, function(a, b) return a[2] > b[2] end) return tmpendfunction table.find(t, v) for i,x in pairs(t) do if x == v then return true end endendfunction Player:addItemRewardBag(itemid, count)local rewardbag = self:getDepotChest(99, true) return rewardbag:addItem(itemid, count)endfunction MonsterType:getBossReward(chance, unique) local ret = {} local function randomItem(lootBlock, chance) local randvalue = math.random(0, 100000) / (getConfigInfo("rateLoot") * chance) if randvalue < lootBlock.chance then if (ItemType(lootBlock.itemId):isStackable()) then return (randvalue%lootBlock.maxCount) + 0 else return 1 end end end local lootBlockList = self:getLoot() for _, loot in pairs(lootBlockList) do local rd = randomItem(loot, chance) if rd then if loot.uniquedrop then if unique then table.insert(ret, {loot, rd}) end else table.insert(ret, {loot, rd}) end end end return retendBossLoot = {}BossUids = {}function BossLoot:new(boss) if not table.find(BossUids, boss:getId()) then table.insert(BossUids, boss:getId()) return setmetatable({creature=boss}, {__index = BossLoot}) endendfunction BossLoot:updateDamage() if self.creature then local tmp = {} local totaldmg = 0 for killer, damage in pairs(self.creature:getDamageMap()) do totaldmg = totaldmg+damage.total tmp[killer] = damage.total end self.players = sort_descending(tmp) self.totaldmg = totaldmg else error("Creature not found.") endendfunction BossLoot:setRewards() if self.totaldmg and self.creature then if getConfigInfo("rateLoot") > 0 then local mt = MonsterType(self.creature:getName()) for i, playertab in ipairs(self.players) do local loot if i == 1 then loot = mt:getBossReward(playertab[2] / self.totaldmg, true) else loot = mt:getBossReward(playertab[2] / self.totaldmg, false) end table.insert(self.players[i], loot) end end else error("Error") endendfunction BossLoot:addRewards() if self.players and self.players[1] and self.players[1][3] then for i, playertab in ipairs(self.players) do local player = Player(playertab[1]) if player then local str = "The following items are available in your reward chest: " for i, lootTable in ipairs(playertab[3]) do local item = player:addItemRewardBag(lootTable[1].itemId, math.ceil(lootTable[2])) if item then str = str .. item:getNameDescription() .. ", " end end str = str:sub(1, #str-2) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, str) end end else error("Error") endendfunction onKill(cid, target)target = Monster(target) if (target ~= nil) then local mt = MonsterType(target:getName()) if mt:useRewardChest() then local loot = BossLoot:new(target) if loot then local corpse = Item(doCreateItem(MonsterType(target:getName()):getCorpseId(), 1, target:getPosition())) doDecayItem() target:setDropLoot(false) loot:updateDamage() loot:setRewards() loot:addRewards() corpse:setAttribute('aid', 21584) end end end return trueend
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados