Postado Outubro 4, 2019 5 anos Este é um post popular. Salve galera bom tinha uns membros do fórum atrás do sistema de chuva porém estava confuso e totalmente configuravel apenas por math.random então com ajuda do @xWhiteWolf agora o script esta totalmente sem math.random e eu detalhei tudo dentro do script como configurar etc... tópico original Aviso 1º: Mude a tag do globalevents.xml para interval=1 Aviso 2º: Todas as explicações estão dentro do script basta ler Vídeo demonstrativo 2019-10-04 01-44-37.mp4 Vamos as modificações basicamente substitua o arquivo que fica em data/globalevents/scripts/rain.lua abra ele e cole esse código dentro Spoiler ---[[ RETIRADO O MATH.RANDOM BY LEOTK & NIGHTWOLF -- minX e Y : Pegar a posição lado esquerda, cima -- maxX e Y : Pegar a posição lado direito, baixo -- Effects : Configurar o id dos efeitos distance e o pingo caindo e o effect e o pingo ao ter contato com uma superficie -- Chuva de neve esta desativado para ativar basta remover os comentários -- Retirado a função de criar poça de água também para ativar basta retirar o comentário -- rain.chance : Quanto maior mais chuva quanto menor menos chuva -- rain:start : os dois ultimos números configuraveis só ir testando vai mudar a quantidade da chuva e a força também ---]] local rain = Rain:new() function onThink(interval, lastExecution) local minX = 1024 local minY = 1249 local maxX = 1042 local maxY = 1260 local frompos = {x=minX, y=minY, z=7} local topos = {x=maxX, y=maxY, z=7} local effects = { snow = { disteffect = 150, effect = 254 }, rain = { disteffect = 185, effect = 131 } } --rain.chance = math.random(10,50) --rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) --else rain.chance = 650 --rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, 100, 100) return TRUE end Aproveitando fiz uma modificação na direção que a chuva cai caso quiser a modificação vá em data/globalevents/scripts/lib e abra o arquivo rain.lua e substitua tudo que tiver lá por esse código Spoiler -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} ---[[ EDITANDO O LADO DA CHUVA BY LEOTK -- possivel editar o lado que a chuva vem alterando o +3 e -7 -- doSendDistanceShoot({x = position.x + 3, y = position.y - 7, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) ---]] 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 + 3, y = position.y - 7, 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 Créditos: @Guilherme. @xWhiteWolf @LeoTK Elexonic (Otland) Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
Postado Outubro 5, 2019 5 anos Ficou perfeito esse rain system, parabéns pelo código!! Gostei mesmo, espero ver mais scripts seus daqui pra frente, você é o cara mesmo! [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Outubro 5, 2019 5 anos Autor @Vodkart obrigado vod bom eu sempre tenho ajuda kkk e foi só uma modificação no script ali e outra aqui mesmo assim valeu xD Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
Postado Outubro 5, 2019 5 anos 21 horas atrás, LeoTK disse: Salve galera bom tinha uns membros do fórum atrás do sistema de chuva porém estava confuso e totalmente configuravel apenas por math.random então com ajuda do @xWhiteWolf agora o script esta totalmente sem math.random e eu detalhei tudo dentro do script como configurar etc... tópico original Aviso 1º: Mude a tag do globalevents.xml para interval=1 Aviso 2º: Todas as explicações estão dentro do script basta ler Vídeo demonstrativo 2019-10-04 01-44-37.mp4 4 MB · 0 downloads Vamos as modificações basicamente substitua o arquivo que fica em data/globalevents/scripts/rain.lua abra ele e cole esse código dentro Mostrar conteúdo oculto ---[[ RETIRADO O MATH.RANDOM BY LEOTK & NIGHTWOLF -- minX e Y : Pegar a posição lado esquerda, cima -- maxX e Y : Pegar a posição lado direito, baixo -- Effects : Configurar o id dos efeitos distance e o pingo caindo e o effect e o pingo ao ter contato com uma superficie -- Chuva de neve esta desativado para ativar basta remover os comentários -- Retirado a função de criar poça de água também para ativar basta retirar o comentário -- rain.chance : Quanto maior mais chuva quanto menor menos chuva -- rain:start : os dois ultimos números configuraveis só ir testando vai mudar a quantidade da chuva e a força também ---]] local rain = Rain:new() function onThink(interval, lastExecution) local minX = 1024 local minY = 1249 local maxX = 1042 local maxY = 1260 local frompos = {x=minX, y=minY, z=7} local topos = {x=maxX, y=maxY, z=7} local effects = { snow = { disteffect = 150, effect = 254 }, rain = { disteffect = 185, effect = 131 } } --rain.chance = math.random(10,50) --rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) --else rain.chance = 650 --rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, 100, 100) return TRUE end Aproveitando fiz uma modificação na direção que a chuva cai caso quiser a modificação vá em data/globalevents/scripts/lib e abra o arquivo rain.lua e substitua tudo que tiver lá por esse código Mostrar conteúdo oculto -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} ---[[ EDITANDO O LADO DA CHUVA BY LEOTK -- possivel editar o lado que a chuva vem alterando o +3 e -7 -- doSendDistanceShoot({x = position.x + 3, y = position.y - 7, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) ---]] 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 + 3, y = position.y - 7, 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 Créditos: @Guilherme. @xWhiteWolf @LeoTK Elexonic (Otland) Testei em 3 poketibias, Aconteceu nada. .-. Meus tópicos Se ajudei você deixe seu Rep! para fortalecer a amizade Vamos ajudar o fórum a crescer mais. Mengão porra! . . ----- NPC que vende informação ----- -----Baú Que dá Outfit se tiver Level ----- ----- [Npc] Que vende Stones (itens) por diamonds -----
Postado Outubro 5, 2019 5 anos Autor @Ayron5 o que eu fiz foi uma modificação vai no tópico original e instala e depois substitui os que eu editei Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
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.