Nossa. que bacana. Pena que a minha equipe, Kingdom Age, já possuiu isto, em LUA também, mas muito bem feito e aprabéns a eles por divulgarem e criarem em lua, mais bem feito e menor.
- Fórum
- OTServ
- Recursos
- Scripting
- Actions e Talkactions
- Fogo Dinâmico
Não Entendi a Função Disso.
info
Grupo: Grão-Duque
Registrado: 02/10/06
Posts: 3.3k
Reputação: +151
Gênero: Masculino

boa jv ![]()
deve ser bem manero isso ae
Editado Dezembro 13 por pekeboi
info
Grupo: Visconde
Registrado: 14/08/07
Posts: 322
Reputação: +4
Char no Tibia: Conde Sapo (Secura)

sem comentários
só aplausos

:XTibia_smile:
info
Grupo: Cavaleiro
Registrado: 11/07/07
Posts: 177
Reputação: +3
Char no Tibia: Eorah Khaderu

Como disse nosso amigo Conde Sapo ![]()
So Aplausos >=D

Não Entendi a Função Disso.
esse aqui ele poe fogo nas arvores e ele vai passando pras otras como um incendio
Legal! Assim da pra fazer o OT serve ficar muito mais realista! =D
Boa JV!
Cya
info
Grupo: Lenda
Registrado: 10/10/05
Posts: 2.2k
Reputação: +63
Char no Tibia: Master Chequer

Que bom que tenham gostados.
Fuçando na NET se pode achar várias coisas legais para os OTS ;D
info
Grupo: Visconde
Registrado: 06/02/07
Posts: 284
Reputação: 0

Isso é como se fosse um incêndio...
Mas em incêndios reais o fogo o faz a árvore desaparecer e sim faz ela virar carvão ;]
podia transformar as arvores nas arvores secas... seria melhor e mais legal..
muito legal
eu estou viajando, quando eu voltar eu testo
verdade poderia virar dead tree neh
info
Grupo: Visconde
Registrado: 10/06/06
Posts: 338
Reputação: +6
Char no Tibia: Setyte Berseker

na verdade o newszoftzz não tem crédito algum pelo código, e sim pela idéia apenas. O código foi totalmente feito pelo SuperGillis.
info
Grupo: Cavaleiro
Registrado: 03/06/07
Posts: 150
Reputação: +2

Nossa, realmente incrivel...
Realista e divertido!
Sem mais comentários...
:hi:










info
Grupo: Lenda
Registrado: 10/10/05
Posts: 2.2k
Reputação: +63
Char no Tibia: Master Chequer
Créditos: newsoftzzz(pelo code) e SuperGillis(Pela Action recriando o Code)
O SuperGillis resolveu recriar o code do fogo dinâmico do newsoftzzz, porém, ao invés de fazer em C++ ele fez de um modo muito mais prático, em Lua.
Está é o Code Recriado pelo SuperGillis
Faça um arquivo chamado fire.lua e coloque-o em sua pasta Data.
Dentro do fire.lua deve conter o que está escrito abaixo.
dofile('data/wood.lua') fires = {} function addFire(pos, toItemId) local fire = getFire(pos) if fire ~= nil then transFormFire(fire, pos) else local uid = doCreateItem(1489, 1, pos) if uid > 0 then local info = nil if burningStuff[toItemId] == nil then info = burningStuff[1] else info = burningStuff[toItemId] end fires[posToStr(pos)] = {interval = info[1], event = 0, continue = 1, running = 0, data = info} fires[posToStr(pos)].event = addEvent(checkFire, info[1], {pos = pos}) end end return 1 end function posToStr(pos) return (pos.x..' '..pos.y..' '..pos.z) end function strToPos(str) local firstPoint = string.find(str, ' ') local secondPoint = string.find(str, ' ', firstPoint+1) local outputPos = {x=0, y=0, z=0} outputPos.x = tonumber(string.sub(str, 1, firstPoint-1)) outputPos.y = tonumber(string.sub(str, firstPoint+1, secondPoint-1)) outputPos.z = tonumber(string.sub(str, secondPoint+1)) return outputPos end function getFire(pos) local fire = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=2}) if fire ~= nil and isInArray({1487, 1488, 1489}, fire.itemid) == 1 then return fire end return nil end function transFormFire(fire, pos) local toId = math.min(math.max(fire.itemid-1, 1487), 1489) doTransformItem(fire.uid, toId) return toId end function checkFire(vars) if fires[posToStr(vars.pos)] == nil then return 0 end local fire = getFire(vars.pos) if fire == nil then return 0 end if math.random(0, 100) < fires[posToStr(vars.pos)].data[3] then local randX = math.random(-1, 1) local randY = math.random(-1, 1) if randX == 0 and randY == 0 then transFormFire(fire, vars.pos) else local coX = vars.pos.x+randX local coY = vars.pos.y+randY local coZ = vars.pos.z local wood = getThingfromPos({x=coX, y=coY, z=coZ, stackpos=1}) if wood == nil then return 0 end if burningStuff[wood.itemid] ~= nil then addFire({x=coX, y=coY, z=coZ, stackpos=2}, wood.itemid) end end end if fires[posToStr(vars.pos)].running > fires[posToStr(vars.pos)].data[2]*1000 then print('[checkFire] Stopping!') local wood = getThingfromPos({x=vars.pos.x, y=vars.pos.y, z=vars.pos.z, stackpos=1}) if wood ~= nil then fires[posToStr(vars.pos)].continue = 0 doRemoveItem(wood.uid) end doDecayItem(fire.uid) end if fires[posToStr(vars.pos)].continue == 0 then fires[posToStr(vars.pos)] = nil return 0 end if fire.itemid == 1487 then fires[posToStr(vars.pos)].running = fires[posToStr(vars.pos)].running+fires[posToStr(vars.pos)].data[1] --print('[checkFire] '..fires[posToStr(vars.pos)].running) end fires[posToStr(vars.pos)].event = addEvent(checkFire, fires[posToStr(vars.pos)].data[1], vars) return 1 endFaça um arquivo chamado wood.lua e coloque-o em sua pasta Data.
Dentro do fire.lua deve conter o que está escrito abaixo.
--[[ info [id] = {check, burn, chance} id = the id of the item that you want to be burnt burn = after howmuch seconds (when the big flame started) must the item dissapear chance = how big is the chance that the fire jumps to another burning item? ]]-- burningStuff = { -- wet trees [2700] = {2000, 30, 80}, [2700] = {2000, 30, 80}, [2701] = {2000, 30, 80}, [2702] = {2000, 30, 80}, [2703] = {2000, 30, 80}, [2704] = {2000, 30, 80}, [2705] = {2000, 30, 80}, [2706] = {2000, 30, 80}, [2707] = {2000, 30, 80}, [2708] = {2000, 30, 80}, [2711] = {2000, 30, 80}, [2712] = {2000, 30, 80}, -- dry trees [2709] = {1500, 20, 85}, [2710] = {1500, 20, 85}, [2713] = {1500, 20, 85}, [2714] = {1500, 20, 85}, [2715] = {1500, 20, 85}, [2716] = {1500, 20, 85}, [2717] = {1500, 20, 85}, [2718] = {1500, 20, 85}, [2719] = {1500, 20, 85}, [2720] = {1500, 20, 85}, [2721] = {1500, 20, 85}, [2722] = {1500, 20, 85}, }Depois adicione antes de tudo no global.lua o código a seguir.
dofile('data/fire.lua')Você também poderá escolher vários itens para queimar as árvores adicionando-os a este código abaixo.
Depois de escolher os itens, ou deixar como realmente é só por o código abaixo no começo do fire.lua
function onUse(cid, item, frompos, item2, topos) if isInArray({1488, 1489}, item2.itemid) or burningStuff[item2.itemid] ~= nil then return addFire(topos, item2.itemid) end return 0 endCaso tenha algum erro de tradução feito por minha pessoa, por favor, me comunique.
Não dou Suporte.
Espero que aproveitem a Action,
Sem mais.
Editado Dezembro 13 por JV Chequer