Muuuuito bom rapaz, realmente excelente.
Tópico organizado e bem explicado.
Abraços.
info
Grupo: Herói
Registrado: 17/02/08
Posts: 2.5k
Reputação: +193

Muuuuito bom rapaz, realmente excelente.
Tópico organizado e bem explicado.
Abraços.
info
Grupo: Conde
Registrado: 31/10/08
Posts: 871
Reputação: +199
Char no Tibia: Luis Felipe Knight

Ótimo script e tópico organizado.
Parabens, continue sempre trazendo conteudo ao XTibia.
Abraços.
info
Grupo: Campones
Registrado: 03/06/08
Posts: 85
Reputação: +27
Char no Tibia: Drunk Outlaw

@Henrique Moura
Muito Obrigaado !
Abraço.
@luisfe23
Obrigado cara.
Abraço!
info
Grupo: Marquês
Registrado: 08/05/08
Posts: 1.3k
Reputação: +168

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!
info
Grupo: Campones
Registrado: 03/06/08
Posts: 85
Reputação: +27
Char no Tibia: Drunk Outlaw

@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.
info
Grupo: Campones
Registrado: 03/05/10
Posts: 19
Reputação: +1
Char no Tibia: Lord Tyz

Gostei muito do seu script.
Sao daqueles que vale a pena adicionar ao serv.
Abraço
info
Grupo: Campones
Registrado: 29/04/07
Posts: 57
Reputação: +1
Char no Tibia: Careta Feia

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 por hretro
info
Grupo: Campones
Registrado: 03/06/08
Posts: 85
Reputação: +27
Char no Tibia: Drunk Outlaw

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.
info
Grupo: Barão
Registrado: 07/03/08
Posts: 231
Reputação: +17
Gênero: Masculino

Ja tinha visto esse script. Mas mesmo assim, vlw por trazer ao Xtibia.
info
Grupo: Conde
Registrado: 30/01/10
Posts: 706
Reputação: +125
Gênero: Masculino
Char no Tibia: Bakwin

Muinto Bom cara o Ruin que deve dar uma Leg Tremenda no Ot, ja vi varios ots com esse sistema dava um leg fdp!
muito bom, tirando o lag. Mesmo assim está de parabéns. Rep+ ![]()
info
Grupo: Campones
Registrado: 03/06/08
Posts: 85
Reputação: +27
Char no Tibia: Drunk Outlaw

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.
info
Grupo: Artesão
Registrado: 02/12/06
Posts: 149
Reputação: +3
Char no Tibia: Kanye Rusty

Muito bom, parabéns :positive:
Achei bem legal.
Abraços
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?
info
Grupo: Campones
Registrado: 03/06/08
Posts: 85
Reputação: +27
Char no Tibia: Drunk Outlaw
Rain System
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 endAgora vá em data/globalevents/globalevents.xml e adicione essa TAG:
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 endAgora vá em data/globalevents/lib/globalevents.lua e adicione essa TAG:
Configurando: O script não necessita de muitas configurações, apenas mude as variáveis como seu gosto:
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.
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 por Guilhermee56