Postado Outubro 7, 2015 9 anos Video de Demonstração ________________________________________________ Baseado neste evento: http://www.tibiawiki.com.br/wiki/Silencer_Plateau ________________________________________________ data/actions/script/ResonanceChamber.lua --Config local config = { item = 22535, storage = 34380, position = { Position(33637, 32516, 5), -- Top Left Position(33664, 32537, 5), -- botton Right Position(33650, 32527, 5) -- Center }, raid = { [1] = {"silencer", math.random(8,15) }, [2] = {"silencer", math.random(11,18) }, [3] = {"silencer", math.random(8,15) }, [4] = {"Sight of Surrender", math.random(3,8) } }, globalEventTime = 30 * 60 * 1000, -- [30min] waiting time to get started again timeBetweenraid = 1 * 60 * 1000, -- [1min] Waiting time between each raid cleanraid = true -- Clean zone after globalEventTime } local function isWalkable(position) local tile = Tile(position) if not tile then return false end local ground = tile:getGround() if not ground or ground:hasProperty(CONST_PROP_BLOCKSOLID) then return false end local items = tile:getItems() for i = 1, tile:getItemCount() do local item = items[i] local itemType = item:getType() if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and item:hasProperty(CONST_PROP_BLOCKSOLID) then return false end end return true end local function raids(monster) local randX,randY,randZ = 0,0,0 randX = math.random(config.position[1].x, config.position[2].x) randY = math.random(config.position[1].y, config.position[2].y) randZ = math.random(config.position[1].z, config.position[2].z) if isWalkable(Position(randX, randY, randZ)) then Game.createMonster(monster, Position(randX, randY, randZ)) else raids(monster) end end local function cleanRaid() local mostersraid= Game.getSpectators(config.position[3], false, false, 13, 13, 11, 11) for i = 1, #mostersraid do if mostersraid[i]:isMonster() then mostersraid[i]:remove() end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) local max,time,monster = 0,0,"" if item.itemid ~= config.item then return true end local spectators,hasPlayer,hasMonsters = Game.getSpectators(config.position[3], false, false, 13, 13, 11, 11),false,false for i = 1, #spectators do if spectators[i]:isPlayer() then if spectators[i]:getName() == player:getName() then hasPlayer = true end elseif spectators[i]:isMonster() then hasMonsters = true end end if not hasPlayer then player:sendCancelMessage('Use on Silencer Plateau is located in the south-eastern part of Roshamuul') return true end if hasMonsters then player:sendCancelMessage('You need kill all monsters') return true end if Game.getStorageValue(config.storage) <= 0 then if math.random(0,10000) < 7000 then player:say("PRRRR...*crackle*", TALKTYPE_MONSTER_SAY) item:remove(1) return true else player:say("PRRRROOOOOAAAAAHHHH!!!", TALKTYPE_MONSTER_SAY) end local raid = config.raid for y, x in pairs(raid) do local i = 1 while i <= #x do print(x[i]) print(x[i+1]) time = time + config.timeBetweenraid for j = 1, x[i+1] do Game.setStorageValue(config.storage,x[i+1]) addEvent(raids,time,x[i]) end i = i + 2 end end addEvent(Game.setStorageValue, config.globalEventTime, config.storage, 0) if config.cleanraid then addEvent(cleanRaid, config.globalEventTime) end item:remove(1) else player:sendCancelMessage('You need to wait') end end data/actions/actions.xml <action itemid="22535" script=ResonanceChamber.lua"/> ________________________________________________ Créditos: Omin Editado Dezembro 7, 2015 9 anos por Azhaurn (veja o histórico de edições)
Postado Outubro 9, 2015 9 anos Em nome da comunidade do TK, muito obrigado pela contribuição! Seu tópico de conteúdo foi aprovado e será movido para a seção adequada. Você ganhou 1 REP+! _ .-'` `} _./) / } .'o \ | } '.___.'`.\ {` /`\_/ , `. } ME DA UMA NOZ! \=' .-' _`\ { `'`;/ `, } _\ @ ; } /__`;-...'--' Cluck!
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.