Postado Outubro 11, 2014 10 anos Bom galera a um tempo eu procuro esse evento os que eu encontrei aki não funcionou no meu ot e depois de muito procurar acabei encontrando em um outro fórum estrangeiro e resolvi trazer esse conteúdo pro tibiaking . Eu testei esse evento no tfs 0.4 rev 3777 criado por Luanluciano93 . chega de bla bla bla e vamos ao que interessa : Como funciona o evento ? O evento funciona da seguinte forma , assim que começar o evento os players devem digitar o comando " !fire join " logo apos ele é teleportado para dentro do evento onde deve aguardar o inicio da tempestade , em seguida desviar se o mais rápido da chuva de fogos se ele for atingido ele será teleportado para o templo e o ultimo player que ficar no evento se torna o vencedor . Na pasta do seu servidor tem uma pasta mods , abra essa pasta , copie e cole um arquivo com o nome w-fire.xml depois cole esse script dentro desse arquivo que tu criou . <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" enabled="yes"> <config name="fireStorm_conf"><![CDATA[ fireStormRewards = { random = false, rew = {2160,30,2494,1,2495,1 } } fireStormShootInterval = 8 --in seconds fireStormNewFireShoots = 15 fireStormBaseFireShoots = 40 fireStormMaxPlayers = 2 fireStormMinPlayers = 1 fireStormAccesToIgnore = 5 timeOnJoinToEvent = 10 --in minutes fireStormJoinType = 'booth' --movement, talkaction or booth enableMessage = true -- POSITIONS fireStormKickPosition = {x=160,y=51,z=7} fireStormEnterPosition = {x=781,y=955,z=7} fireStormCenterRoomPosition = {x=767,y=959,z=7} fireStormRangeX_RangeY = {51,50} -- STORAGES fireStormStorageStatus = 31000 -- =< 0 - off, 1 - waiting for players, 2 - is running local _f = doTeleportThing function doTeleportThing(cid, newpos, ignoreBlocking) return (ignoreBlocking or isWalkable(newpos, true, true, false) or false) and _f(cid, newpos, true, true) end function kickPlayerFromFireStormArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, fireStormKickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) return doCreatureSetStorage(cid, fireStormStorageStatus, 0) and doCreatureSetNoMove(cid, false) end function getFireStormEventPlayers() local players = {} for _, cid in pairs(getPlayersOnline()) do if getCreatureStorage(cid, fireStormStorageStatus) == 1 then table.insert(players, cid) end end return players end function isWalkable(pos, creature, proj, pz) if getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function loseOnFireStorm(cid) local players, msg = getFireStormEventPlayers(), '' kickPlayerFromFireStormArea(cid) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You are dead.') if(#getFireStormEventPlayers() <= 1) then local winner = getFireStormEventPlayers()[1] or players[1] if winner then if fireStormRewards.random then local i = math.random(#fireStormRewards.rew/2) doPlayerAddItem(winner, fireStormRewards.rew[i*2-1], fireStormRewards.rew[i*2], true) else for i = 1, #fireStormRewards.rew/2 do doPlayerAddItem(winner, fireStormRewards.rew[i*2-1], fireStormRewards.rew[i*2], true) end end doPlayerSendTextMessage(winner, MESSAGE_INFO_DESCR, 'You won Fire Storm Event.') msg = getCreatureName(winner) .. ' won Fire Storm Event.' kickPlayerFromFireStormArea(winner) if getSpectators(fireStormCenterRoomPosition, fireStormRangeX_RangeY[1], fireStormRangeX_RangeY[2]) then for _, v in ipairs(getSpectators(fireStormCenterRoomPosition, fireStormRangeX_RangeY[1], fireStormRangeX_RangeY[2])) do if isMonster(v) then doRemoveThing(v) elseif isPlayer(v) then kickPlayerFromFireStormArea(v) end end end else msg = 'Fire Storm Event finished! No one win!' end doSetStorage(fireStormStorageStatus, 0) end return (msg ~= '' and doBroadcastMessage(msg) or true) end function spawnNewFire(count, reserved) for i = 1, count do if getStorage(fireStormStorageStatus) <= 1 then return true end local pos = {x = fireStormCenterRoomPosition.x + math.random(-fireStormRangeX_RangeY[1],fireStormRangeX_RangeY[1]), y = fireStormCenterRoomPosition.y + math.random(-fireStormRangeX_RangeY[2],fireStormRangeX_RangeY[2]), z = fireStormCenterRoomPosition.z} if i == count then return addEvent(spawnNewFire, fireStormShootInterval*1000, fireStormNewFireShoots + reserved, fireStormNewFireShoots + reserved) end if isWalkable(pos, false, true, true) then addEvent(function() if #getFireStormEventPlayers() < 1 then return true end local xx = math.abs(pos.x - fireStormCenterRoomPosition.x) + fireStormRangeX_RangeY[1] local yy = math.abs(pos.y - fireStormCenterRoomPosition.y) + fireStormRangeX_RangeY[2] doSendDistanceShoot({x=pos.x-xx,y=pos.y-yy,z=pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, math.max(xx,yy)*15, pos, CONST_ME_HITBYFIRE) local player = getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=STACKPOS_TOP_CREATURE}).uid if isPlayer(player) and getPlayerAccess(player) < fireStormAccesToIgnore then addEvent(loseOnFireStorm, 500, player) end return true end, math.random(500, fireStormShootInterval*1000), pos) else return spawnNewFire(count-(i-1), math.max(reserved, count)) end end return true end function addPlayerToFireStormArea(cid, block) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, fireStormEnterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) return doCreatureSetStorage(cid, fireStormStorageStatus, 1) and doCreatureSetNoMove(cid, block) end function startFireStormEvent() if getStorage(fireStormStorageStatus) > 0 then return false end doSetStorage(fireStormStorageStatus, 1) return enableMessage and doBroadcastMessage('Fire Storm Event is active. We are waiting for ' .. fireStormMaxPlayers - #getFireStormEventPlayers() .. ' players or, if not found, '..timeOnJoinToEvent..' minutes to start. If you want joined to event just use command "!fire join", but if you would leave fire storm arena just say "!fire leave". Have fun!') or true end ]]></config> <talkaction words='!fire' event='script'><![CDATA[ domodlib('fireStorm_conf') function onSay(cid, words, param, channel) if fireStormJoinType == 'movement' then return false end local msg = '' if isInArray({'join','add','go','joined'}, param:lower()) then if getCreatureCondition(cid, CONDITION_INFIGHT) and getPlayerAccess(cid) <= fireStormAccesToIgnore then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You have a PZ! You have to get rid of it. Somehow.') end if getPlayerAccess(cid) >= fireStormAccesToIgnore then startFireStormEvent() return doTeleportThing(cid, fireStormEnterPosition, true) elseif #getFireStormEventPlayers() < fireStormMaxPlayers and getStorage(fireStormStorageStatus) == 1 then addPlayerToFireStormArea(cid, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You are player of number '..#getFireStormEventPlayers()..', which join to event.') if #getFireStormEventPlayers() == fireStormMaxPlayers then doSetStorage(fireStormStorageStatus, 2) addEvent(spawnNewFire, fireStormShootInterval * 1000, fireStormBaseFireShoots, fireStormBaseFireShoots) for _, v in pairs(getFireStormEventPlayers()) do addPlayerToFireStormArea(v, false) end msg = 'Fire Storm Event is started. We have ' .. fireStormMaxPlayers .. ' players, which joined to event. Have fun!' else msg = getCreatureName(cid) .. ' has entered a Fire Storm Arena. We still need ' .. fireStormMaxPlayers - #getFireStormEventPlayers() .. ' players.' end return (msg ~= '' and doBroadcastMessage(msg) or true) else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Arena is full.') end elseif isInArray({'leave','abort','delete'}, param:lower()) then if getStorage(fireStormStorageStatus) < 2 then doCreatureSetNoMove(cid, false) doCreatureSetStorage(cid, fireStormStorageStatus, 0) return doTeleportThing(cid, getCreatureLastPosition(cid), true) end return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You can\'t leave from arena if event is already running.') end return true end ]]></talkaction> <globalevent name="fireStormTime" time="23:25" event="script"><![CDATA[ domodlib("fireStorm_conf") function onTime(time) addEvent(function() if getStorage(fireStormStorageStatus) == 2 then return true end if getStorage(fireStormStorageStatus) == 1 and #getFireStormEventPlayers() >= fireStormMinPlayers then doSetStorage(fireStormStorageStatus, 2) addEvent(spawnNewFire, fireStormShootInterval * 1000, fireStormBaseFireShoots, fireStormBaseFireShoots) for _, v in ipairs(getFireStormEventPlayers()) do addPlayerToFireStormArea(v, false) end return enableMessage and doBroadcastMessage('Fire Storm Event is started. We have '..#getFireStormEventPlayers()..' players on area') or true end for _, v in ipairs(getFireStormEventPlayers()) do kickPlayerFromFireStormArea(v) end return enableMessage and doBroadcastMessage('Fire Storm Event is stopped. We could not find enough players.') or true end, timeOnJoinToEvent * 1000 * 60) return startFireStormEvent() end ]]></globalevent> </mod> Agora vamos configurar o local que o player vai ser teleportado , a área que a tempestade de fogo vai cair , o local que o player atingido e o ganhador vai ser teleportado , os prêmios e o mais importante o horário que vai abrir o evento que é 100% automático .. Configurar prêmio: fireStormRewards = { random = false, rew = {2160,30,2494,1,2495,1} <<< aki esta configurado para dar 300k + demon armor + demon legs , configure a seu gosto Configurar posições : fireStormKickPosition = {x=160,y=51,z=7} <<< aki você coloca a posição do seu templo ou cidade que desejar , pois é o local onde o player será teleportado ao terminar o evento e os players que forem atingidos pela tempestade fireStormCenterRoomPosition = {x=767,y=959,z=7} <<< aki você vai colocar o local que o player será teleportado quando ele disser "!fire join" fireStormRangeX_RangeY = {51,50} <<< aki você vai colocar a area da tempestade quanto maior for os números , maior será a área atingida . <globalevent name="fireStormTime" time="23:25" event="script"> <<< aki você configura o horário que tu quiser . Se quiserem usar o mesmo mapa que usei é só clicar AQUI Pronto galera como eu apenas trouxe o conteúdo para o tibiaking e caso esteja contra as regras peço aos moderadores para retirar o tópico e quanto aos créditos eu realmente não sei quem criou esse sistema se alguém souber me informe que postarei os devidos créditos . Editado Outubro 11, 2014 10 anos por Klauguns (veja o histórico de edições)
Postado Outubro 11, 2014 10 anos Oque custa você dizer como funciona o evento? '--' (Se você soubér né). Editado Outubro 11, 2014 10 anos por Eremes (veja o histórico de edições)
Postado Outubro 11, 2014 10 anos Autor Oque custa você dizer como funciona o evento? '--' (Se você soubér né). Acabei esquecendo essa parte e obrigado por me lembrar Prontinho brother .. Editado Outubro 11, 2014 10 anos por Klauguns (veja o histórico de edições)
Postado Outubro 11, 2014 10 anos http://www.tibiaking.com/forum/topic/34805-firestorm-event-chuva-de-fogos-desespero-on/ Coincidência!
Postado Outubro 11, 2014 10 anos Autor http://www.tibiaking.com/forum/topic/34805-firestorm-event-chuva-de-fogos-desespero-on/ Coincidência! Eu usei o seu script e não funcionou no meu ot pois dava erros no distro . Eu apenas postei o que funcionou comigo . Afinal conteudo nunca é d + brother .
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.