Jvchequer 63 Postado Dezembro 13, 2007 Share Postado Dezembro 13, 2007 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 end Faç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 end Caso 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. Link para o comentário Compartilhar em outros sites More sharing options...
BeoWulf 0 Postado Dezembro 13, 2007 Share Postado Dezembro 13, 2007 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. Link para o comentário Compartilhar em outros sites More sharing options...
Shrimpzin 0 Postado Dezembro 13, 2007 Share Postado Dezembro 13, 2007 Não Entendi a Função Disso. Link para o comentário Compartilhar em outros sites More sharing options...
Felipe Moraes 151 Postado Dezembro 13, 2007 Share Postado Dezembro 13, 2007 (editado) boa jv deve ser bem manero isso ae Editado Dezembro 13, 2007 por pekeboi Link para o comentário Compartilhar em outros sites More sharing options...
Conde Sapo 4 Postado Dezembro 13, 2007 Share Postado Dezembro 13, 2007 sem comentários só aplausos :XTibia_smile: Link para o comentário Compartilhar em outros sites More sharing options...
speedyks 3 Postado Dezembro 14, 2007 Share Postado Dezembro 14, 2007 Como disse nosso amigo Conde Sapo So Aplausos >=D Link para o comentário Compartilhar em outros sites More sharing options...
_ferrari_ 1 Postado Dezembro 14, 2007 Share Postado Dezembro 14, 2007 Não Entendi a Função Disso. esse aqui ele poe fogo nas arvores e ele vai passando pras otras como um incendio Link para o comentário Compartilhar em outros sites More sharing options...
silkss 0 Postado Dezembro 17, 2007 Share Postado Dezembro 17, 2007 Legal! Assim da pra fazer o OT serve ficar muito mais realista! =D Boa JV! Cya Link para o comentário Compartilhar em outros sites More sharing options...
Jvchequer 63 Postado Dezembro 17, 2007 Autor Share Postado Dezembro 17, 2007 Que bom que tenham gostados. Fuçando na NET se pode achar várias coisas legais para os OTS ;D Link para o comentário Compartilhar em outros sites More sharing options...
Alttli 0 Postado Dezembro 17, 2007 Share Postado Dezembro 17, 2007 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.. Link para o comentário Compartilhar em outros sites More sharing options...
Ththt 2 Postado Dezembro 17, 2007 Share Postado Dezembro 17, 2007 muito legal eu estou viajando, quando eu voltar eu testo Link para o comentário Compartilhar em outros sites More sharing options...
_ferrari_ 1 Postado Dezembro 18, 2007 Share Postado Dezembro 18, 2007 verdade poderia virar dead tree neh Link para o comentário Compartilhar em outros sites More sharing options...
Nostradamus 6 Postado Dezembro 19, 2007 Share Postado Dezembro 19, 2007 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. Link para o comentário Compartilhar em outros sites More sharing options...
DeadKennedy 2 Postado Dezembro 19, 2007 Share Postado Dezembro 19, 2007 Nossa, realmente incrivel... Realista e divertido! Sem mais comentários... :hi: Link para o comentário Compartilhar em outros sites More sharing options...
linkay 0 Postado Janeiro 4, 2008 Share Postado Janeiro 4, 2008 Parabens Otimo topico e o fogo tem um efeito bem legal Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados