Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''pivigu''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 2 registros

  1. Máquina para criar armadura

    POR FAVOR, NÃO COMENTE FRASES COMO 'OBRIGADO', 'VALEU' OU ALGO DO TIPO. APENAS POSTE SUAS DÚVIDAS E SUAS MENSAGENS DE ERRO.OBRIGADO Máquina de criar armadura desenvolvido por Pivigu Nome: Pivigu Machine Versão: 8.4x Tipo do script: Action Servidor Testado: The Forgotten Server 0.3 b3 Autor: Pivigu (Eu) Descrição Pivigu Machine é uma máquina onde você irá posicionar três itens de sacrifício e uma armadura para formar uma nova. Você precisa escolher corretamente a quantidade e os itens que serão usados para a fabricação da nova armadura. A alavanca poderá ser puxada apenas se você por óleo nela. Ao puxa-la, se a máquina estiver aquecida (você precisa lançar um fire field no lugar correto para que a máquina aqueça) você terá uma chance de conseguir fabricar a nova armadura. O sistema é parecido com um de forja. Scripts [spoiler=Pivigu Machine Config.lua] Pivigu Machine Config.lua -- Pivigu Machine desenvolvido por Pivigu combinacao = {id1 = 5880, count1 = 2, id2 = 5904, count2 = 1, id3 = 2157, count3 = 1} -- Itens que serão sacrificados sacrpos1 = {x = 39, y = 32, z = 7, stackpos = 1} -- Posição do sacrifício sacrpos2 = {x = 40, y = 32, z = 7, stackpos = 1} sacrpos3 = {x = 41, y = 32, z = 7, stackpos = 1} armadura = {id = 2465, count = 1, resultadoId = 2466, resultadoCount = 1} -- Armadura que será usada e a que será formada armadurapos = {x = 38, y = 36, z = 7, stackpos = 2} -- Posição da armadura criararm = {x = 40, y = 37, z = 7} -- Posição que será criada a armadura machinepos1 = {x = 39, y = 36, z = 7} -- Posição da máquina (para efeitos machinepos2 = {x = 40, y = 36, z = 7} machinepos3 = {x = 41, y = 36, z = 7} efeitos = {2, 3, 5, 7, 2, 2, 3, 3, 5, 2, 12, 13, 14, 15} -- Efeitos que serão lançados lixoitem = 2258 -- ID do item que será criado caso de errada a fabricação fogoid = {1492, 1493, 1494, 1487, 1488, 1489} -- IDs dos fogos chanceComFogo = {30, 15, 5, 30, 15, 5} -- Chance de cada fogo fogopos = {x = 40, y = 33, z = 7, stackpos = 1} -- Posição do fogo poco1 = {x = 39, y = 34, z = 7} -- Posição dos poços de lava poco2 = {x = 42, y = 34, z = 7} [/spoiler_name] [spoiler_name=Pivigu Machine.lua] Pivigu Machine.lua dofile("data/actions/Pivigu Machine Config.lua") function onUse(cid, item, position) if getGlobalStorageValue(2050) ~= 1 then doPlayerSendCancel(cid, "Você não pode usar este item.") if item.itemid == 1945 then doTransformItem(item.uid, 1946) else doTransformItem(item.uid, 1945) end return FALSE end local chance = 0 for i = 1, #fogoid do if getThingFromPos(fogopos).itemid == fogoid[i] then chance = chanceComFogo[i] end end if chance == 0 then doPlayerSendCancel(cid, "A máquina não está preparada.") if item.itemid == 1945 then doTransformItem(item.uid, 1946) else doTransformItem(item.uid, 1945) end return FALSE end local thingsacr1 = getThingFromPos(sacrpos1) local thingsacr2 = getThingFromPos(sacrpos2) local thingsacr3 = getThingFromPos(sacrpos3) local thingarmor = getThingFromPos(armadurapos) local success = 0 local criaritem = lixoitem local criarcount = 1 if thingsacr1.itemid == combinacao.id1 and thingsacr2.itemid == combinacao.id2 and thingsacr3.itemid == combinacao.id3 then if thingsacr1.type == combinacao.count1 and thingsacr2.type == combinacao.count2 and thingsacr3.type == combinacao.count3 then if thingarmor.itemid > 1 then doRemoveItem(thingsacr1.uid, combinacao.count1) doRemoveItem(thingsacr2.uid, combinacao.count2) doRemoveItem(thingsacr3.uid, combinacao.count3) success = 1 end end end if thingarmor.itemid > 1 then doRemoveItem(thingarmor.uid, armadura.count) end if thingarmor.itemid ~= armadura.id then doPlayerSendCancel(cid, "Você não tem uma armadura para modificar.") return FALSE end local tabela1 = {1, 3, 5, 7, 10} local tabela2 = {2, 3, 5, 6, 9} local tabela3 = {1, 2, 4, 8, 9} for i, v in ipairs(tabela1) do addEvent(doSendMagicEffect, v*1000, machinepos1, efeitos[math.random(#efeitos)]) end for i, v in ipairs(tabela2) do addEvent(doSendMagicEffect, v*1000, machinepos2, efeitos[math.random(#efeitos)]) end for i, v in ipairs(tabela3) do addEvent(doSendMagicEffect, v*1000, machinepos3, efeitos[math.random(#efeitos)]) end sendShoot(poco1, poco2, 0) addEvent(sendShoot, 250, poco2, poco1, 0) addEvent(sendShoot, 250, poco1, {x = 40, y = 36, z = 7}, 0) sendShoot(poco2, {x = 40, y = 36, z = 7}, 0) pegarFogo({x = 40, y = 34, z = 7}, 0,36) pegarFogo({x = 40, y = 36, z = 7}, 0,36) pegarFogo({x = 43, y = 33, z = 7}, 0,15) pegarFogo({x = 37, y = 33, z = 7}, 0,15) if success > 0 then criaritem = armadura.resultadoId criarcount = armadura.resultadoCount end if math.random(1,100) > chance then criaritem = lixoitem end addEvent(doCreateItem, 11*1000, criaritem, criarcount, criararm) return TRUE end function sendShoot(frompos, topos, count) if count < 20 then doSendDistanceShoot(frompos, topos, 3) addEvent(sendShoot, 500, frompos, topos, count + 1) end end function pegarFogo(pos, count, effect) if count < 40 then doSendMagicEffect(pos,effect) addEvent(pegarFogo, 250, pos, count + 1, effect) end end [spoiler=containers.lua] Adicione em containers.lua if item.type == TYPE_OIL and itemEx.uid == 2050 then setGlobalStorageValue(itemEx.uid, 1) addEvent(setGlobalStorageValue, 60*1000, itemEx.uid, 0) local splash = doCreateItem(ITEM_POOL, item.type, toPosition) doDecayItem(splash) doChangeTypeItem(item.uid, TYPE_EMPTY) return TRUE end Instalando o script [spoiler=Instalando] Configurando [spoiler=Configuração] Download Aqui está o download de todos os scripts e o mapa para demonstração. Download Screens Prêmios Este script ganhou a nota 99, a mais alta do Mini Concurso de Scripting #1. Direitos Todo o conteúdo foi desenvolvido por Pivigu (neste fórum com o nick de Pivizz) e deverá, sempre, continuar com seus respectivos créditos. Você pode editar o script do modo que desejar, desde que não remova os créditos.
  2. Sistema de incêndio

    POR FAVOR, NÃO COMENTE FRASES COMO 'OBRIGADO', 'VALEU' OU ALGO DO TIPO. APENAS POSTE SUAS DÚVIDAS E SUAS MENSAGENS DE ERRO. OBRIGADO Sistema de Incêndio desenvolvido por Pivigu - Pivigu World OTServ, em breve! Nome: Sistema de Incêndio Versão: 8.4x Tipo do script: Creature script, Global Script, Monster Servidor Testado: The Forgotten Server 0.3 b3 Autor: Pivigu (Eu) Descrição Quando o incêndio é iniciado, monstros como Fire Devils e Fire Elementals são sumonados de tempos em tempos. Após a quarta invocação, um boss é sumonado. Esse boss é o The Incendier. Em seguida, a floresta toda começa a pegar fogo, ou seja, são criados itens como Fire Fields e paredes de fogo nas árvores. Durante o incêndio são mandadas mensagens como se fosse uma invasão. Quando o boss The Incendier é morto, há um random de 5 a 15 segundos para que todo o fogo da invasão se apague. Os monstros e os itens são configuráveis, assim como o tempo da invasão. Scripts [spoiler=incendio.lua] incendio.lua -- Incêndio script by Pivigu - Pivigu World OTServ, em breve! function onThink(interval, lastExecution) -- Configuração local fromArea = {x = 58, y = 56, z = 7} -- Área que o incêndio vai acontecer. local toArea = {x = 88, y = 82, z = 7} -- Área que o incêndio vai acontecer. local chanceRaid = 30 -- Chance do incêndio acontecer, em porcentagem. local intervaloExe = 60*24*7 -- Intervalo de execução, em minutos. No exemplo, ela só poderá ocorrer 7 dias após a última execucao. -- Monstros local bossName = "The Incendier" -- Nome do Boss a ser sumonado. local monsterMinions = {"Fire Elemental", "Fire Devil"} -- Monstros que também serão sumonados. local monsterAmount = 28 -- Quantidade de monstros a serem sumonados (Múltiplos de 4, de preferência). local florestaName = "Pens" -- Nome da floresta ou da cidade onde a floresta se localiza. -- M = Mensagem, T = Tempo em segundos local BroadCast1M = ("A temperatura está muito quente na floresta de " .. florestaName .. ".") local BroadCast1T = 1 local BroadCast2M = ("Um incêndio está começando em " .. florestaName .. "!") local BroadCast2T = 3 local BroadCast3M = ("Parece que um monstro muito quente está botando fogo em tudo o que vê!") local BroadCast3T = 6 local BroadCast4M = (bossName .. " foi visto em " .. florestaName .. ". Não se aproxime da floresta. Tudo está pegando fogo!") local BroadCast4T = 9 -- Incêndio local idArvoresG = {2700, 2708, 2701, 2702, 2707} -- ID de árvores grandes para FireWall. local idArvoresP = {2767, 2703, 2768} -- ID de árvores pequenas para FireField. (2703 considerada pequena) local FFID = {1487,1488,1489} -- ID dos Fire Fields. local FWID = {5063} -- ID dos FireWalls. local fogoNoChao = TRUE -- Adicionar fogo no chão? TRUE = Verdadeiro, FALSE = Falso local terraID = {103} -- ID dos chãos a pegar fogo for iid = 4526, 4541 do -- Adicionando as gramas ao terraID terraID[table.maxn(terraID) + 1] = iid end local chanceFogo = 65 -- Chance de pegar fogo. -- Fim de Configuracao -- Verificar Erros if math.random(1, 100) > chanceRaid then return TRUE end if os.time(t) - getGlobalStorageValue(5001) < intervaloExe*60 then -- debugPrint("doIncendio: Execução cancelada pelo intervalo de execuções.") return TRUE end if toArea.x <= fromArea.x or toArea.y <= fromArea.y or toArea.z < fromArea.z then debugPrint("doIncendio: Erro na Area.") return FALSE end if BroadCast4T <= BroadCast3T or BroadCast3T <= BroadCast2T or BroadCast2T <= BroadCast1T then debugPrint("doIncendio: Erro no tempo dos Broadcasts.") return FALSE end if chanceFogo < 1 then chanceFogo = 0 end local summonArea = 0 local allArea = {} local getChao = 0 local getItem = 0 for xx = fromArea.x, toArea.x do for yy = fromArea.y, toArea.y do for zz = fromArea.z, toArea.z do getChao = getThingFromPos({x = xx, y = yy, z = zz, stackpos = STACKPOS_GROUND}) getItem = getThingFromPos({x = xx, y = yy, z = zz, stackpos = 1}) for ch = 1, table.maxn(terraID) do if terraID[ch] == getChao.itemid and (getItem.itemid == 0 or getItem.itemid == 6216 or getItem.itemid == 6217 or getItem.itemid == 6218 or getItem.itemid == 6219) then allArea[table.maxn(allArea) + 1] = {x = xx, y = yy, z = zz} end end end end end -- Fim de verificar erros -- Adicionando eventos addEvent(BroadCast, BroadCast1T*1000, BroadCast1M, monsterAmount, monsterMinions, allArea) addEvent(BroadCast, BroadCast2T*1000, BroadCast2M, monsterAmount, monsterMinions, allArea) addEvent(BroadCast, BroadCast3T*1000, BroadCast3M, monsterAmount, monsterMinions, allArea) addEvent(BroadCastBoss, BroadCast4T*1000, BroadCast4M, monsterAmount, monsterMinions, bossName, allArea) addEvent(doIncendio, BroadCast4T*1002, fromArea, toArea, idArvoresG, idArvoresP, fogoNoChao, chanceFogo, FFID, FWID, terraID) -- Fim de Adicionando eventos debugPrint("doIncendio: Incendio iniciado.") setGlobalStorageValue(5001, lastExecution) return TRUE end function BroadCast(BroadCastM, Amount, Monsters, allArea) doBroadcastMessage(BroadCastM,22) local summonPos = {x = 0, y = 0, z = 0} local monsterName = 0 for i = 1, Amount / 4 do monsterName = Monsters[math.random(1, table.maxn(Monsters))] summonPos = allArea[math.random(1, table.maxn(allArea))] doSummonCreature(monsterName, summonPos) end return TRUE end function BroadCastBoss(BroadCastM, Amount, Monsters, BossName, allArea) doBroadcastMessage(BroadCastM,22) local summonPos = {x = 0, y = 0, z = 0} local monsterName = 0 for i = 1, Amount / 4 do monsterName = Monsters[math.random(1, table.maxn(Monsters))] summonPos = allArea[math.random(1, table.maxn(allArea))] doSummonCreature(monsterName, summonPos) end monsterName = Monsters[math.random(1, table.maxn(Monsters))] summonPos = allArea[math.random(1, table.maxn(allArea))] doSummonCreature(BossName, summonPos) return TRUE end -- Incendios function doIncendio(fromArea, toArea, agID, apID, FChao, Chance, FireFieldID, FireWallsID, chaoLib) local arvoreID = 0 local posNow = {x = 0, y = 0, z = 0} local randomFF = math.random(1, table.maxn(FireFieldID)) local chaoID = 0 for t = fromArea.z, toArea.z do -- Área for n = fromArea.y, toArea.y do for i = fromArea.x, toArea.x do posNow = {x = i, y = n, z = t} for ar = 1, table.maxn(apID) do -- Nas árvores pequenas FF arvoreID = getThingFromPos({x = i, y = n, z = t, stackpos = 1}) if arvoreID.itemid == apID[ar] then if Chance >= math.random(1,100) then randomFF = math.random(1, table.maxn(FireFieldID)) doCreateItem(FireFieldID[randomFF], 1, posNow) end end end for ar = 1, table.maxn(agID) do -- Nas árvores grandes FireWall arvoreID = getThingFromPos({x = i, y = n, z = t, stackpos = 1}) if arvoreID.itemid == agID[ar] then if Chance / 4 >= math.random(1,100) then randomFF = math.random(1, table.maxn(FireFieldID)) doCreateItem(FireFieldID[randomFF], 1, posNow) end if Chance >= math.random(1,100) then posNow = {x = i, y = n, z = t} randomFF = math.random(1, table.maxn(FireWallsID)) doCreateItem(FireWallsID[randomFF], 1, posNow) end end end if FChao == TRUE then -- FF no Chão arvoreID = getThingFromPos({x = i, y = n, z = t, stackpos = 1}) chaoID = getThingFromPos({x = i, y = n, z = t, stackpos = STACKPOS_GROUND}) if arvoreID.itemid == 0 then if Chance >= math.random(1,100) then for ch = 1, table.maxn(chaoLib) do if chaoID.itemid == chaoLib[ch] then posNow = {x = i, y = n, z = t} randomFF = math.random(1, table.maxn(FireFieldID)) doCreateItem(FireFieldID[randomFF], 1, posNow) end end end end end end -- Área end end return TRUE end [spoiler=incendioMonster.lua] incendioMonster.lua function onDeath(killer, monster, corpse, damage, totaldamage) -- Configuracao local fromArea = {x = 58, y = 56, z = 7} -- Area que o incendio aconteceu local toArea = {x = 88, y = 82, z = 7}-- Area que o incendio aconteceu local FFID = {1487,1488,1489} -- ID dos Fire Fields local FWID = {5063} -- ID dos FireWalls -- Fim de Configuracao addEvent(doRemoveIncendio, math.random(5,15)*1000, fromArea, toArea, FFID, FWID) return TRUE end function doRemoveIncendio(fromArea, toArea, FFID, FWID) local posNow = {x = 0, y = 0, z = 0, stackpos = 2} local itemRemover = 0 for t = fromArea.z, toArea.z do -- Area for n = fromArea.y, toArea.y do for i = fromArea.x, toArea.x do for it = 1, table.maxn(FFID) do for st = 1, 3 do posNow = {x = i, y = n, z = t, stackpos = st} itemRemover = getThingFromPos(posNow) if itemRemover.itemid == FFID[it] then doRemoveItem(itemRemover.uid) end end end for it = 1, table.maxn(FWID) do for st = 1, 3 do posNow = {x = i, y = n, z = t, stackpos = st} itemRemover = getThingFromPos(posNow) if itemRemover.itemid == FWID[it] then doRemoveItem(itemRemover.uid) end end end end end end return TRUE end [spoiler=The Incendier.xml] The Incendier.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="The Incendier" nameDescription="the Incendier" race="fire" experience="2900" speed="300" manacost="0" script="incendio.lua"> <health now="2560" max="2560"/> <look type="243" corpse="6324"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="4"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-30" max="-100"/> <attack name="firefield" interval="3000" chance="80" range="7" radius="4" target="0"> <attribute key="shootEffect" value="fire"/> </attack> <attack name="fire" interval="1000" chance="65" range="7" radius="4" target="1" min="-80" max="-885"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> </attacks> <defenses armor="35" defense="40"> </defenses> <elements> <element firePercent="100"/> <element energyPercent="40"/> <element physicalPercent="24"/> <element deathPercent="22"/> <element icePercent="-20"/> </elements> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> </voices> <loot> <item id="2148" countmax="100" chance1="100000" chancemax="0"/> --Gold Coin <item id="2147" countmax="4" chance1="8888" chancemax="0"/> --Small Ruby <item id="7894" chance="8000"/> --magma legs <item id="7899" chance="5000"/> --magma coat <item id="5944" chance="4222"/> --Soul Orb <item id="2239" chance="20000"/> --Burnt Scroll <item id="2136" chance="7666"/> --Demonbone Amulet <item id="2187" chance="40111"/> -- wand of Inferno <item id="2187" chance="20111"/> -- wand of Inferno <item id="1987" chance="100000"> --Bag <inside> <item id="2432" chance="9800"/> --Fire Axe <item id="2145" countmax="8" chance1="15000" chancemax="0"/> --Small Diamond <item id="2392" chance="13550"/> --Fire Sword </inside> </item> </loot> <script> <event name="incendio"/> </script> </monster> Instalando [spoiler=Instalando scripts] Configurando [spoiler=Configurando] Downloads Mapa usado para Teste Scripts Vídeo Este script foi o ganhador do Script tournament #4. Sim, havia apenas um script concorrendo, o meu. Direitos Todo o conteúdo foi desenvolvido por Pivigu (neste fórum com o nick de Pivizz) e deverá, sempre, continuar com seus respectivos créditos. Você pode editar o script do modo que desejar, desde que não remova os créditos. Gostaria que este script não fosse publicado em outro fórum. Desejo que seje exclusivo do OTNET. Obrigado Bugs Este sistema foi testado no servidor The Forgotten Server 0.3 b3 e não apresentou nenhuma mensagem de erro. Caso você receba alguma, poste neste tópico que usarei todo o meu conhecimento para lhe ajudar. Não há nenhum bug conhecido até agora. Prêmios
×