Postado Maio 25, 2016 9 anos Boa noite pessoal, queria uma luz aqui. Tô com um script da svargrond, ela é por lib, tá acontecendo o seguinte. Ela funciona toda, 99,9%. Porém se o player morrer lá dentro o bixo continua vivo, e se outra pessoa for tentar fazer vai nascer outro, tipo que ficam 2 monstros, e se morrer e outro for fazer vão ficar três, e assim vai. Alguém tem noção do que pode ser? Tfs. 1.2
Postado Maio 25, 2016 9 anos Sim eu estava com ele problema também em um sistema que fiz no meu ot e resolvi colocando sempre que o player entrar na próxima parte remover todos os monstros em tal área. Passa sua lib que se eu chegar em casa e ninguém tiver resolvido ainda eu resolvo.
Postado Maio 25, 2016 9 anos Autor 8 horas atrás, koete disse: Sim eu estava com ele problema também em um sistema que fiz no meu ot e resolvi colocando sempre que o player entrar na próxima parte remover todos os monstros em tal área. Passa sua lib que se eu chegar em casa e ninguém tiver resolvido ainda eu resolvo. Aqui. data/lib/svargrondArenaQuest.lua master Last changed by TheSumm over 1 year ago --[[ TODO - Include PITS and ARENA table in SvargrondArena -> SvargrondArena.arenas / SvargrondArena.pits - Restructure PITS and ARENA table (reward.storage does not seem to be used) ]] SvargrondArena = { -- kick time in seconds (10 minutes) kickTime = 600, kickPosition = Position(32251, 31098, 6), rewardPosition = Position(32222, 31080, 6), -- used to store event ids kickEvents = {}, timerEvents = {}, effectPositionCache = {}, -- item ids used by the script itemTimer = 10288, itemPillar = 1354, itemTeleport = 5023, itemsNotErasable = {10288, 1354, 1543, 1544, 1545}, } -- Script automatically derives other pit positions from this one local firstPit = { fromPos = {x = 32205, y = 31094, z = 7}, toPos = {x = 32214, y = 31103, z = 7}, center = {x = 32210, y = 31098, z = 7}, pillar = {x = 32204, y = 31098, z = 7}, tp = {x = 32204, y = 31098, z = 7}, summon = {x = 32210, y = 31100, z = 7} } PITS = { [1] = { fromPos = firstPit.fromPos, toPos = firstPit.toPos, center = firstPit.center, pillar = firstPit.pillar, tp = firstPit.tp, summon = firstPit.summon }, [2] = { fromPos = {x = firstPit.fromPos.x - 14, y = firstPit.fromPos.y, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 14, y = firstPit.toPos.y, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 14, y = firstPit.center.y, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 14, y = firstPit.pillar.y, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 14, y = firstPit.tp.y, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 14, y = firstPit.summon.y, z = firstPit.summon.z} }, [3] = { fromPos = {x = firstPit.fromPos.x - 28, y = firstPit.fromPos.y, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 28, y = firstPit.toPos.y, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 28, y = firstPit.center.y, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 28, y = firstPit.pillar.y, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 28, y = firstPit.tp.y, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 28, y = firstPit.summon.y, z = firstPit.summon.z} }, [4] = { fromPos = {x = firstPit.fromPos.x - 42, y = firstPit.fromPos.y, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 42, y = firstPit.toPos.y, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 42, y = firstPit.center.y, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 42, y = firstPit.pillar.y, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 42, y = firstPit.tp.y, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 42, y = firstPit.summon.y, z = firstPit.summon.z} }, [5] = { fromPos = {x = firstPit.fromPos.x - 35, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 35, y = firstPit.toPos.y - 14, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 35, y = firstPit.center.y - 14, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 35, y = firstPit.pillar.y - 14, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 35, y = firstPit.tp.y - 14, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 35, y = firstPit.summon.y - 14, z = firstPit.summon.z} }, [6] = { fromPos = {x = firstPit.fromPos.x - 21, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 21, y = firstPit.toPos.y - 14, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 21, y = firstPit.center.y - 14, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 21, y = firstPit.pillar.y - 14, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 21, y = firstPit.tp.y - 14, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 21, y = firstPit.summon.y - 14, z = firstPit.summon.z} }, [7] = { fromPos = {x = firstPit.fromPos.x - 7, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 7, y = firstPit.toPos.y - 14, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 7, y = firstPit.center.y - 14, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 7, y = firstPit.pillar.y - 14, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 7, y = firstPit.tp.y - 14, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 7, y = firstPit.summon.y - 14, z = firstPit.summon.z} }, [8] = { fromPos = {x = firstPit.fromPos.x - 14, y = firstPit.fromPos.y - 28, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 14, y = firstPit.toPos.y - 28, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 14, y = firstPit.center.y - 28, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 14, y = firstPit.pillar.y - 28, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 14, y = firstPit.tp.y - 28, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 14, y = firstPit.summon.y - 28, z = firstPit.summon.z} }, [9] = { fromPos = {x = firstPit.fromPos.x - 28, y = firstPit.fromPos.y - 28, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 28, y = firstPit.toPos.y - 28, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 28, y = firstPit.center.y - 28, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 28, y = firstPit.pillar.y - 28, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 28, y = firstPit.tp.y - 28, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 28, y = firstPit.summon.y - 28, z = firstPit.summon.z} }, [10] = { fromPos = {x = firstPit.fromPos.x - 21, y = firstPit.fromPos.y - 42, z = firstPit.fromPos.z}, toPos = {x = firstPit.toPos.x - 21, y = firstPit.toPos.y - 42, z = firstPit.toPos.z}, center = {x = firstPit.center.x - 21, y = firstPit.center.y - 41, z = firstPit.center.z}, pillar = {x = firstPit.pillar.x - 21, y = firstPit.pillar.y - 41, z = firstPit.pillar.z}, tp = {x = firstPit.tp.x - 21, y = firstPit.tp.y - 41, z = firstPit.tp.z}, summon = {x = firstPit.summon.x - 21, y = firstPit.summon.y - 41, z = firstPit.summon.z} } } ARENA = { [1] = { name = 'Greenhorn', price = 1000, questLog = Storage.SvargrondArena.QuestLogGreenhorn, achievement = 'Greenhorn', creatures = { [1] = 'frostfur', [2] = 'bloodpaw', [3] = 'bovinus', [4] = 'achad', [5] = 'colerian the barbarian', [6] = 'the hairy one', [7] = 'axeitus headbanger', [8] = 'rocky', [9] = 'cursed gladiator', [10] = 'orcus the cruel' }, reward = { trophy = 5807, trophyStorage = Storage.SvargrondArena.TrophyGreenhorn, desc = 'A brave warrior that finished the Greenhorn mode. Awarded to %s.', [26300] = { container = true, id = 1990, inside = { {2114, 1}, {9570, 1}, {6574, 1}, {2688, 10}, {7372, 1} } }, [26400] = { container = true, id = 7342, inside = { {7364, 100}, {7365, 100} }, }, [26500] = { id = {7406, 1} }, [26600] = { id = {7380, 1} }, [26700] = { id = {7392, 1} } } }, [2] = { name = 'Scrapper', price = 5000, questLog = Storage.SvargrondArena.QuestLogScrapper, achievement = 'Scrapper', creatures = { [1] = 'avalanche', [2] = 'kreebosh the exile', [3] = 'the dark dancer', [4] = 'the hag', [5] = 'slim', [6] = 'grimgor guteater', [7] = 'drasilla', [8] = 'spirit of earth', [9] = 'spirit of water', [10] = 'spirit of fire' }, reward = { trophy = 5806, trophyStorage = Storage.SvargrondArena.TrophyScrapper, desc = 'A brave warrior that finished the Scrapper mode. Awarded to %s.', [27300] = { container = true, id = 1990, inside = { {7183, 1}, {6574, 1}, {7373, 1}, {2688, 10} } }, [27400] = { container = true, id = 7342, inside = { {2304, 50}, {2311, 50}, {2547, 200}, {7365, 100} }, }, [27500] = { id = {7384, 1} }, [27600] = { id = {7389, 1} }, [27700] = { id = {7415, 1} } } }, [3] = { name = 'Warlord', price = 10000, questLog = Storage.SvargrondArena.QuestLogWarlord, achievement = 'Warlord of Svargrond', creatures = { [1] = 'webster', [2] = 'darakan the executioner', [3] = 'norgle glacierbeard', [4] = 'the pit lord', [5] = 'svoren the mad', [6] = 'the masked marauder', [7] = 'gnorre chyllson', [8] = 'fallen mooh\'tah master ghar', [9] = 'deathbringer', [10] = 'the obliverator' }, reward = { trophy = 5805, trophyStorage = Storage.SvargrondArena.TrophyWarlord, desc = 'A brave warrior that finished the Warlord mode. Awarded to %s.', [28300] = { container = true, id = 1990, inside = { {6568, 1}, {6574, 1}, {7374, 1}, {2688, 10} } }, [28400] = { container = true, id = 7342, inside = { {6529, 100}, {7440, 1}, {7443, 1}, {2268, 50}, {2273, 50} }, }, [28500] = { id = {7390, 1} }, [28600] = { id = {7434, 1} }, [28700] = { id = {7429, 1} } } } } function SvargrondArena.getPitCreatures(pitId) if not PITS[pitId] then return {} end local ret = {} local specs = Game.getSpectators(PITS[pitId].center, false, false, 5, 5, 5, 5) for i = 1, #specs do ret[#ret+1] = specs end return ret end function SvargrondArena.resetPit(pitId) if not PITS[pitId] then return end for x = PITS[pitId].fromPos.x, PITS[pitId].toPos.x do for y = PITS[pitId].fromPos.y, PITS[pitId].toPos.y do for z = PITS[pitId].fromPos.z, PITS[pitId].toPos.z do local tile = Tile({x=x, y=y, z=z}) if tile then local moveableItem = tile:getThing(STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE) if moveableItem and moveableItem:isItem() then local itemType = ItemType(moveableItem.itemid) if itemType and itemType:isMovable() and not isInArray(SvargrondArena.itemsNotErasable, moveableItem.itemid) then moveableItem:remove() end end local creature = tile:getTopCreature() if creature and creature:isMonster() then creature:remove() end end end end end local pillarTile = Tile(PITS[pitId].pillar) if pillarTile then local teleportItem = pillarTile:getItemById(SvargrondArena.itemTeleport) if teleportItem then teleportItem:remove() end local pillarItem = pillarTile:getItemById(SvargrondArena.itemPillar) if not pillarItem then Game.createItem(SvargrondArena.itemPillar, 1, PITS[pitId].pillar) end end end function SvargrondArena.getPitOccupant(pitId, ignorePlayer) local creatures = SvargrondArena.getPitCreatures(pitId) for i = 1, #creatures do if creatures:isPlayer() and creatures.uid ~= ignorePlayer.uid then return creatures end end return nil end function SvargrondArena.kickPlayer(cid, hideMessage) SvargrondArena.cancelEvents(cid) local player = Player(cid) if not player then return end if player:getStorageValue(Storage.SvargrondArena.Pit) > 0 then player:teleportTo(SvargrondArena.kickPosition) SvargrondArena.kickPosition:sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(Storage.SvargrondArena.Pit, 0) if not hideMessage then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your time ran out!') end end end function SvargrondArena.cancelEvents(cid) local kickEvent = SvargrondArena.kickEvents[cid] if kickEvent then SvargrondArena.removeTimer(kickEvent.pitId) stopEvent(kickEvent.eventId) end SvargrondArena.kickEvents[cid] = nil end function SvargrondArena.scheduleKickPlayer(cid, pitId) SvargrondArena.cancelEvents(cid) SvargrondArena.startTimer(pitId) local eventId = addEvent(SvargrondArena.kickPlayer, SvargrondArena.kickTime * 1000, cid) SvargrondArena.kickEvents[cid] = {eventId = eventId, pitId = pitId} end function SvargrondArena.startTimer(pitId) local tile = Tile(PITS[pitId].fromPos) if not tile then return end local timerItem = tile:getItemById(SvargrondArena.itemTimer) if timerItem then timerItem:remove() end timerItem = Game.createItem(SvargrondArena.itemTimer, 1, PITS[pitId].fromPos) if timerItem then timerItem:decay() end if SvargrondArena.timerEvents[pitId] then stopEvent(SvargrondArena.timerEvents[pitId]) end SvargrondArena.timerEvents[pitId] = addEvent(SvargrondArena.removeTimer, SvargrondArena.kickTime * 1000, pitId) end function SvargrondArena.removeTimer(pitId) local tile = Tile(PITS[pitId].fromPos) if not tile then return end local timerItem = tile:getItemById(SvargrondArena.itemTimer) if timerItem then timerItem:remove() end SvargrondArena.timerEvents[pitId] = nil end function SvargrondArena.sendPillarEffect(pitId) local positions = SvargrondArena.effectPositionCache[pitId] if not positions then local position = PITS[pitId].pillar local effectPositions = { Position(position.x - 1, position.y, position.z), Position(position.x + 1, position.y, position.z), Position(position.x + 1, position.y - 1, position.z), Position(position.x + 1, position.y + 1, position.z), Position(position.x, position.y, position.z) } SvargrondArena.effectPositionCache[pitId] = effectPositions positions = effectPositions end for _, position in ipairs(positions) do position:sendMagicEffect(CONST_ME_MAGIC_BLUE) end end Se possível me dizer o que você alterou, aonde mexeu e tal. Valeu Editado Maio 25, 2016 9 anos por Jobs (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.