gui56 27 Postado Junho 14, 2010 Share Postado Junho 14, 2010 (editado) Rain System Nome do Sistema: Rain SystemNome do Autor: Kaotar Servidor Testado e/ou Versão do Tibia: TSF 0.3.6(8.54), acho que funciona em versões mais antigas, fiz ele para a versão 0.3.3 Créditos: 99% Kaotar (Por Fazer o Script) / 1% Zakk (Por trazer e conteudo ao XTIBIA e Organizar o Tópico) Entre em data/globalevents/script/, crie um arquivo com nome rain.lua, cole o código abaixo, salve e feche: local rain = Rain:new() function onThink(interval, lastExecution) local minX = 0 local minY = 0 local maxX = 120 local maxY = 150 local frompos = {x=math.random(minX, maxX), y=math.random(minY, maxY), z=7} local topos = {x=math.random(frompos.x, maxX), y=math.random(frompos.y, maxY), z=7} local effects = { snow = { disteffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICETORNADO }, rain = { disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } } random = math.random(0, 10) if (random == 0) then rain.chance = math.random(10,50) rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) else rain.chance = math.random(20,100) rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, math.random(100, 1000), math.random(100, 350)) end return TRUE end Agora vá em data/globalevents/globalevents.xml e adicione essa TAG: <globalevent name="rain" interval="200" event="script" value="rain.lua"/> Depois, vá em data/globalevents/lib/, crie um arquivo com nome Rain.lua, cole o código abaixo, salve e feche: -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end Agora vá em data/globalevents/lib/globalevents.lua e adicione essa TAG: dofile(getDataDir() .."globalevents/lib/Rain.lua") Configurando: O script não necessita de muitas configurações, apenas mude as variáveis como seu gosto: local minX = 0 local minY = 0 local maxX = 120 local maxY = 150 Bom essa configuração muda apenas a posição das chuvas se quiser mudar a densidade da chuva mude a linha rain.chance = math.random(20,100), lembrando não ultrapasse muito do valor 100, pois pode deixar a chuva muito feia. Para entender melhor a função rain:start(positions, effects, duraction, delay) postarei o que cada argumento significa. positions - sera um tabela com 2 posições chamadas fromPos e toPos. Exemplo : {fromPos = {x=10, y=10, z=7}, toPos={x=20, y=20, z=7} effects - será uma tabela com os efeitos mandando no solo e de cima para baixo. Exemplo: rain = {disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } duraction - será o numero de vezes que ira "chover", ou seja, cair efeitos, dando assim a duração da chuva. Exemplo: 100 delay - será a diferença do tempo de cada pingo de chuva influencia a densidade da chuva, lembrando que também tem a variável chance Para tornar a chuva mais intensa diminua o delay e aumente o duraction e a chance, mais fraca o inverso. Para chuvas mais duradouras aumente o delay e o duraction. Também é possível que o script crie "poças de agua" isso é configurado na linha rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}}. Para aqueles que sabem mexer em script é possível fazer chover meteoros mudando os efeitos e varias outras coisas a sua imaginação. Para mudar de quanto enquanto tempo a chuva ira acontecer devera mudar a tag do globalevents.xml na parte de interval. Considerações finais: Não é aconselhável usar a snow do jeito que está configurado, pois está bem feio, também há um erro que sempre que ocorre uma nova chuva se uma antiga esta acontecendo, a velha para, e a novo começa. É fácil arrumar, porém eu só não arrumei pois isso pode acarretar novos bugs. Screenshot: Editado Junho 18, 2010 por Guilhermee56 Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/ Compartilhar em outros sites More sharing options...
Henrique Moura 193 Postado Junho 14, 2010 Share Postado Junho 14, 2010 Muuuuito bom rapaz, realmente excelente. Tópico organizado e bem explicado. Abraços. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-890512 Compartilhar em outros sites More sharing options...
luisfe23 199 Postado Junho 14, 2010 Share Postado Junho 14, 2010 Ótimo script e tópico organizado. Parabens, continue sempre trazendo conteudo ao XTibia. Abraços. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-890521 Compartilhar em outros sites More sharing options...
gui56 27 Postado Junho 14, 2010 Autor Share Postado Junho 14, 2010 @Henrique Moura Muito Obrigaado ! Abraço. @luisfe23 Obrigado cara. Abraço! Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-890620 Compartilhar em outros sites More sharing options...
dwhfms 168 Postado Junho 14, 2010 Share Postado Junho 14, 2010 Excelente Script Rapaz, muito bom mesmo!! Só uma dúvida: O sistema não pesa no servidor? Deixa com Lag e tal? Ou roda tranquilo? Abraços! Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-890621 Compartilhar em outros sites More sharing options...
gui56 27 Postado Junho 14, 2010 Autor Share Postado Junho 14, 2010 @Won Helder cara, acredito que tudo depende da velocidade da sua conexão com a internet e o desempenho do servidor que estará hospedando o OT, se tudo for bom, acho que nao terá laag não. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-890728 Compartilhar em outros sites More sharing options...
digo327 1 Postado Junho 15, 2010 Share Postado Junho 15, 2010 Gostei muito do seu script. Sao daqueles que vale a pena adicionar ao serv. Abraço Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-891143 Compartilhar em outros sites More sharing options...
Oapocalipse 1 Postado Junho 22, 2010 Share Postado Junho 22, 2010 (editado) Muito bom! mas tem como retirar esse gelo? +REP por favro, me passa um config boa pro escript. Pois quando usei aki, n fiko bom :\ Editado Junho 22, 2010 por hretro Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-894501 Compartilhar em outros sites More sharing options...
gui56 27 Postado Junho 29, 2010 Autor Share Postado Junho 29, 2010 Muito bom! mas tem como retirar esse gelo? +REP por favro, me passa um config boa pro escript. Pois quando usei aki, n fiko bom :\ Edita nessa parte: effects - será uma tabela com os efeitos mandando no solo e de cima para baixo. Exemplo: rain = {disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } Ali ta mostrando o efeito "CONST_ANI_ICE" o ICE é o gelo. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-898496 Compartilhar em outros sites More sharing options...
zani123 17 Postado Junho 29, 2010 Share Postado Junho 29, 2010 Ja tinha visto esse script. Mas mesmo assim, vlw por trazer ao Xtibia. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-899112 Compartilhar em outros sites More sharing options...
DevilMoon 125 Postado Julho 4, 2010 Share Postado Julho 4, 2010 Muinto Bom cara o Ruin que deve dar uma Leg Tremenda no Ot, ja vi varios ots com esse sistema dava um leg fdp! Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-901616 Compartilhar em outros sites More sharing options...
davialves 18 Postado Julho 4, 2010 Share Postado Julho 4, 2010 muito bom, tirando o lag. Mesmo assim está de parabéns. Rep+ Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-901660 Compartilhar em outros sites More sharing options...
gui56 27 Postado Julho 4, 2010 Autor Share Postado Julho 4, 2010 Obrigado galera, quanto ao LAG, acredito que se o host do servidor for consideravelmente bom não vai dar LAG, outra possibilidade é diminuir a área em que a Chuva cai editando essa parte: positions - sera um tabela com 2 posições chamadas fromPos e toPos. Exemplo : {fromPos = {x=10, y=10, z=7}, toPos={x=20, y=20, z=7} Abraços. Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-901665 Compartilhar em outros sites More sharing options...
caiocesar2 3 Postado Julho 6, 2010 Share Postado Julho 6, 2010 Muito bom, parabéns :positive: Achei bem legal. Abraços Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-902641 Compartilhar em outros sites More sharing options...
fenix123 0 Postado Julho 7, 2010 Share Postado Julho 7, 2010 Ei Galera. Fis tudo certinho so nao entendi essa parte function onThink(interval, lastExecution) local minX = 0 local minY = 0 local maxX = 120 local maxY = 150 Tpw o que eu tenho que editar ale? Link para o comentário https://xtibia.com/forum/topic/134952-rain-system-com-ss/#findComment-903076 Compartilhar em outros sites More sharing options...
Posts Recomendados