Ir para conteúdo

Willyan Miake

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Willyan Miake deu reputação a .HuRRiKaNe em Global Map Full - By NvSo   
    Informações:
    » Map RL 8.60, Com Novas Áreas;
    » Distro 100% - Sem Erros;
    » Magias Novas;
    » Monstros 100% RL;
    » Addons 100% RL;
    » NPC's 98% RL;
    » Addon Bonus 100%;
    » Items 95%;
    » War System 100%;
    » Quests RL 90%;
    » Servidor 100% Estável;

    Screen's:




    Download Server / Scan:
    » Download Server:
    http://www.mediafire.com/?9dw90td7e8bp955

    » Scan Server:
    OBS: Não realizei o scan porque o arquivo ultrapassa o limite de 32MB no virustotal!

    Account GOD:
    tibia / tibia

    Créditos:
    NvSo
    Kaiser e The OTX Team
    TheForgotten Server
    Cipsoft
    Animal Pak
  2. Gostei
    Willyan Miake deu reputação a YalaharianOzz em Como editar um item em seu ot [Simples]   
    Fala Galera!
    Esse é o meu primeiro tutorial do forum,espero que gostem!!!
    bem muita gente não sabe editar itens de seu ot e com isso eu trago pra vocês do TK como fazer isso
    é bem simples e fácil afinal até eu sei HAUAHAUAHU.
    Eu gosto de fazer isso do geito mais simples e fácil,
    Editando pelo .xml
    1º Vá em items.xml
    Data>Items



    Editando Armas :



    Tutorial Bem Basicão :/ estou estudando isso pra trazer cada vez mais !
  3. Gostei
  4. Gostei
    Olá Galerinha do TK...


    Vou Apresentar para vocês meu projeto, Foi um otserver meu que abri em Março deste ano, Ele é um mapa baiak feito cuidadosamente por mim, Com base no do Rael undead's .. Ficou online por 1 mes, Chegou a 100 Players , Então chega de papo e vamos as Features do Server..




    Features Baiak Titanica 8.60 By GuH~

    Quem Não gosta de um baiak né? Ultimamente você coloca um baiak online e consegui atingir uma boa quantidade de players com facilidade, Bom depende do seu projeto né.. Porem em um baiak os players procuram diversão e Opção de Teleportes e novos monstros,Items etc... Então resolvo postar aki exclusivo ao TK o meu mapa Baiak..


    Templo



    DePoT


    Teleportes Free


    Area Vip Teleportes


    Items Vips Configurados e Balanceados


    Então Pessoal eh isso ai, Como veem na imagem, Foram Adicionados novos teleportes na area vip 2, Que funcionava como donate no meu Baiak, e também os items vips que estão balanceados, Tanto para exp 999x,500x,400x.. Ai Vocês escolhem, Vamos Pros Downloads??


    Downloads Baiak Titanica e Scan BY GuH~







    è isso ae pessoal espero que gostem, Se gostou da REP não custa nada!
    Creditos :

    20% Daniloca (Por disponibilizar o server Base)
    20% GabrielSv (Editar o mapa)
    40% MatheusVidaLoka (Tirar bug's e fazer scripts)
    20% GuStavo Ferreira (Reedição e correção de alguns Bugs)
  5. Gostei
    Willyan Miake deu reputação a JhonatanCWest em Aprenda a criar e postar um NPC no seu Map   
    Olá KingTibianos
    A pedido de um membro, vou postar um tutorial de como criar um NPC. Explicando detalhadamente.
    Primeiramente, cada npc se encontra em data/npcs no seu ot.
    Vou postar aqui como exemplo um NPC que venda algumas coisas:
      <?xml version="1.0" encoding="UTF-8"?> <npc name="Paul" script="default.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="57" body="86" legs="0" feet="114" addons="2"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_sellable" value="crossbow,2455,150;bow,2456,130"/> <parameter key="shop_buyable" value="crossbow,2455,360;bow,2456,200;spear,2389,10;royal spear,7378,25;assassin star,7368,200;power bolt,2547,30;bolt,2543,3;arrow,2544,2;"/> </parameters> </npc> Explicando:
    <?xml version="1.0" encoding="UTF-8"?>
    Especifica o tipo de linguagem usada no script. Não altere.
    npc name = Nome do NPC
    script = Endereço do Script. Default é o padrão.
    walkinterval = O intervalo de tempo em que o NPC anda.
    floorchange = Se ele "troca de chão", ou seja se ele se movimenta.
    healthnow = Tanto de vida que o Npc está no momento. Geralmente modificado em caso de "quests" específicas.
    max = O tanto de vida máximo dele. Este deve ser maior que o healthnow.
    looktype = Roupa usada, você pode ver as roupas no arquivo: data/XML/outfits.xml
    head, body, legs, feet = A cor da roupa, eu não tenho agora, mas vou provicenciar o pack das cores.
    addon = Se usa algum addon. 1 para o 1°, 2 para o 2°, 3 para os dois.
    <parameters> = Define que abaixo começará uma série de códigos parâmetros.
    module_shop = Módulo, usado. No caso aqui, é shop.. compras/vendas.
    shop_sellable = Define o que o NPC lhe oferece para vender.
    value = Determina as Id's, Nomes e Preços.
    crossbow,2455,150; = Primeiro "crossbow" nome que aparecerá na janela de "venda" do NPC, ID do item, Preço do Item;
    shop_buyable = Define o que o NPC irá lhe oferece para comprar
    Como colocar no RME Map Editor (Atual usado):
    1° Abra o RME, juntamente ao seu mapa.
    2° Clique em File>Import>Importar Monsters/NPC
    3° Clique no arquivo XML acima criado
    4° De um F5 para garantir o aparecimento do NPC
    5° Vá em Window e selecione Terrain Palette caso ainda não tenha feito isso.
    6° Vá em Creature, no canto esquero onde tem um option Terrain Palette.
    7° Selecione abaixo em creatures, NPCS.
    8° Clique lá embaixo, em spawns e crie uma área de circulamento do NPC no seu Mapa.
    9° Clique no nome do seu NPC, e coloque-o no mapa.
    10° Salve o Mapa! Pronto!!
    Pronto, seu NPC criado, e desenvolvido.
    Em breve o tutorial de Mapping, criando uma área para seu NPC! Bem detalhado!
    Caso tenha gostado, +REP
    Ou ao menos comente sobre o Post!
    Abraços!
  6. Gostei
    Willyan Miake deu reputação a gabrieltl em [Resolvido] gesior erro Can't connect to MySQL database.   
    Certifique-se de que a senha está correta do phpmyadmin, e o nome do banco de dados também. E se você não mecher no login do phpmyadmin, ele vem como padrao "root".
  7. Gostei
    Willyan Miake deu reputação a 1215171 em [Resolvido] gesior erro Can't connect to MySQL database.   
    to com esse erro Can't connect to MySQL database.

    e não sei como resolver quando chego no step 3 do install do gesior ele da esse erro ae
  8. Gostei
    Willyan Miake deu reputação a Garou em Perfect Upgrade System   
    Nome: Perfect Upgrade System
    Tipo: Biblioteca, Action, Sistema
    Autor: Oneshot
    Essa é a versão final do Perfect Refine System ou Perfect Upgrade System criado por mim.
    É um sistema construído em cima de funções em POO (orientação a objetos), o que o torna muito versátil, possibilitando a outros programadores/scripters criarem seus próprios sistemas com base na biblioteca.
    A função do sistema é simples. Não passa de um sistema de refino, presente em todos os servidores, onde você usa um item em um equipamento e este fica mais forte e ganha um nome caracterizando o nível de força - bem clichê - mas muito interessante.
    Meu sistema é um pouco diferente dos outros, pois possui algumas características exclusivas, listadas abaixo:
    O nível máximo configurável é praticamente ilimitado O sistema funciona com armas de combate corpo-a-corpo, bows e crossbows. O refino pode falhar, não acontecendo nada, regredindo o nível ou resetando ele. Há um sistema nativo de broadcasts, que são enviados quando um jogador consegue refinar um equipamento até um certo nível ou maior. As chances são configuradas manualmente e sua randomização é muito precisa. Há dois modos de instalar o sistema em seu servidor, o primeiro é baixar a pasta com os scripts necessários e apenas copiar as chaves nos arquivos XMLs ou então seguir o curto tutorial de instalação.
    Crie um arquivo chamado upgradesystem.lua na pasta data/lib e copie o conteúdo abaixo:
      --[[ PERFECT UPGRADE SYSTEM 2.0 Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- UpgradeHandler = { levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, broadcast = 7, attributes = { ["attack"] = 2, ["defense"] = 1, ["armor"] = 1 }, message = { console = "Trying to refine %s to level +%s with %s%% success rate.", success = "You have upgraded %s to level +%s", fail = "You have failed in upgrade of %s to level +%s", downgrade = "The upgrade level of %s has downgraded to +%s", erase = "The upgrade level of %s has been erased.", maxlevel = "The targeted %s is already on max upgrade level.", notupgradeable = "This item is not upgradeable.", broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!", invalidtool = "This is not a valid upgrade tool.", toolrange = "This upgrade tool can only be used in items with level between +%s and +%s" }, tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, isEquipment = function(self) local weaponType = self:getItemWeaponType() return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0) end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end, chance = function(self) local chances = {} chances.upgrade = (self.levels[self.item.level + 1][1] or 100) chances.downgrade = (self.item.level * 5) chances.erase = (self.item.level * 3) return chances end } function UpgradeHandler:new(item) local obj, ret = {} obj.item = {} obj.item.level = 0 obj.item.uid = item.uid for key, value in pairs(getItemInfo(item.itemid)) do obj.item[key] = value end ret = setmetatable(obj, {__index = function(self, index) if _G[index] then return (setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end})) else return UpgradeHandler[index] end end}) if ret:isEquipment() then ret:update() return ret end return false end function UpgradeHandler:update() self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0) end function UpgradeHandler:refine(uid, item) if not self.item then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable) return "miss" end local tool = self.tools[item.itemid] if(tool == nil) then doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool) return "miss" end if(self.item.level > #self.levels) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name)) return "miss" end if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range))) return "miss" end local chance = (self:chance().upgrade + tool.info.chance) doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance))) if(tool.info.removeable == true) then doRemoveItem(item.uid, 1) end if chance * 100 > math.random(1, 10000) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1))) if (self.item.level + 1) >= self.broadcast then doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1))) end self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1"))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value) end end return "success" else if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name)) self:setItemName(self.item.name) for key, value in pairs(self.attributes) do if self.item[key] > 0 then doItemSetAttribute(self.item.uid, key, self.item[key]) end end elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1))) self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1))) end end else doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1))) end return "fail" end end Crie um arquivo chamado upgrade.lua em data/actions/scripts e cole o conteúdo abaixo:
      function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end local obj = UpgradeHandler:new(itemEx) if(obj == false) then return doPlayerSendCancel(cid, UpgradeHandler.message.notupgradeable) end local status = obj:refine(cid, item) if status == "success" then --doSendAnimatedText(toPosition, "Success!", COLOR_GREEN) doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN) elseif status == "fail" then --doSendAnimatedText(toPosition, "Fail!", COLOR_RED) doSendMagicEffect(toPosition, CONST_ME_POFF) else doSendMagicEffect(toPosition, CONST_ME_POFF) end return true end No arquivo actions.xml, cole a seguinte linha:
      <action itemid="8306" event="script" value="upgrade.lua"/> Para adicionar mais níveis de refino no sistema, edite a seguinte tabela:
      levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true} }, Por padrão, ela já está configurado como na maioria dos MMORPGs, 10 níveis de refino, com chances de sucesso, regressão e "quebra". Mas se você quiser, por exemplo, adicionar mais dois níveis, siga o modelo, sempre colocando uma vírgula no final com exceção da última linha da tabela:
      levels = { [1] = {100, false, false}, [2] = {90, false, false}, [3] = {75, false, false}, [4] = {60, true, false}, [5] = {45, true, false}, [6] = {30, true, false}, [7] = {25, true, false}, [8] = {20, true, true}, [9] = {15, true, true}, [10] = {10, true, true}, [11] = {10, true, true}, [12] = {5, true, true} }, O primeiro valor é chance de sucesso, o segundo se o item pode regredir na tentativa e o terceiro é se o item para "quebrar" (perder todo o nível de refino). Para criar novas ferramentas (itens) de refinar, configure a tabela abaixo:
      tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, }, Seguindo o mesmo esquema da tabela anterior, vírgulas em todas as linhas com exceção da última, seguindo o modelo abaixo. Por exemplo, uma ferramenta de ID 8303 que refine do level +6 ao +10, que dê 10% de chance bônus e que seja finita, eu faço assim:
      tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, [8310] = {range = {6, 10}, info = {chance = 10, removeable = true}} }, Em breve vídeo de demonstração com sistema em funcionamento.
    Perfect Upgrade System.rar
  9. Gostei
    Willyan Miake deu reputação a Winfernus em Entendendo Scripts,Rune,Spells,Monsters,etc...   
    ANTES DE TUDO ME AJUDE! NÃO SEI SE POSTEI NA ÁREA CERTA! Por Favor Mova!
    Aprenda a fazer seus próprios Monstros, Spells e NPC

    Basicamente scripts sao o conjunto dos códigos que formam os arquivos de players, monster, spells, etc.

    Nesse
    tutorial vou ensinar tudo, pra vc sair daqui fazendo monstros, spells e
    tudo mais. E se no final houver alguma duvida poste aqui que serei
    grato em ajudar. Neste Tutorial existem varios comandos básicos, bons
    para iniciantes, parte por parte é explicada, visando um maior
    entendimento sobre o assunto.
    Vamos lá!

    SPELLS
    Primeiro vamos falar sobre as spells
    Existem
    as spells de instant e as spells de rune, as spells de instant sao
    aquelas em q o monstro usa nele, e as de runa ele vai usar em vc. Entao
    a primeira coisa que precisamos fazer é decidir se vamos fazer uma
    spell de runa ou de instant, vou mostrar aqui apenas um exemplo, se nao
    o topico ficara muito grande. Vamos começar, seguindo um exemplo de uma
    magia minha:
    Primeiro, crie um arquivo chamado crossover.lua, na pasta Data>Spells>Instant

    Começamos o script com isso:

    CODE
    area = {
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    }


    Essa
    é a area em que a magia ira pegar, o numero 0 simboliza os espaços que
    a magia nao pega e os numeros 1, os lugares onde acontecerá a magia, no
    exemplo acima, é uma magia em forma de cruz
    Pulamos entao uma linha e acrescentamos isso:


    CODE
    attackType = ATTACK_PHYSICAL
    needDirection = false
    areaEffect = NM_ME_YELLOW_RINGS
    animationEffect = NM_ANI_NONE

    hitEffect = NM_ME_HIT_AREA
    damageEffect = NM_ME_DRAW_BLOOD
    animationColor = BLACK_WHITE
    offensive = true
    drawblood = true


    Vamos às explicações:
    attackType = o tipo de ataque que será, no exemplo será um ataque fisico, mas tbm poderia ser um ataque de fogo, ou de energy
    needDirection = se o ataque precisa de direção, como as firewaves
    areaEffect = o tipo de animação que saira na area na magia
    animationEffect = a animação de quando o player sofrer dano da magia
    damageEffect = o efeito que saira quando o player receber o dano
    animationColor = a cor da animação da Magia
    offensive = se a magia é de ataque ou nao
    drawblood = se embaixo do player vai sair sangue quando ele receber a magia


    Explicado, pulamos uma linha e adicionamos:

    CODE
    UltimateExplosionObject
    = MagicDamageObject(attackType, animationEffect, hitEffect,
    damageEffect, animationColor, offensive, drawblood, 0, 0)


    Essa é a função que fara com q oq explicamos acima funcione, pulamos outra linha e acrescentamos:


    CODE
    function onCast(cid, creaturePos, level, maglv, var)
    centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}
    n = tonumber(var)
    if n ~= nil then
    -- bugged
    -- ultimateExplosionObject.minDmg = var+0
    -- UltimateExplosionObject.maxDmg = var+0

    UltimateExplosionObject.minDmg = 0
    UltimateExplosionObject.maxDmg = 0
    else
    UltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 2.6 - 30
    UltimateExplosionObject.maxDmg = (level * 2 + maglv * 3) * 3.0
    end


    Essa é a fórmula do Dano que o player irá tomar ao receber a magia, agora pra finalizar adiconamos:

    CODE
    return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered())
    end


    Pronto ja terminamos nossa primeira spell, agora para faze-la funcionar precisamos acrescenta-la aou arquivo spells.xml
    vamos lá, na pasta Data>Spells abra o arquivo spells.xml e na sessao de INSTANT, acrescente esta linha:

    CODE
    spell
    name="CrossOver" words="crossover" maglv="12" mana="160"
    enabled="1">/>


    Explicando:
    spell name = nome da magia (pode ser qualquer um)
    words = as palavras magicas que terao que ser ditas pra magia funcionar (tem q ser igual ao nome do script da magia)
    magvl = maglv necessario para usar essa magia
    mana = mana que será gasta
    enabled = se a magia esta abilitada ou nao
    vocation id = para quais vocações essa magia funcionará, no caso acima ela so funciona pra sorc e druid
    ------------------

    MONSTERS
    Spell criada, vamos passar para o Monstro que usara esta spell
    Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters

    CODE

Informação Importante

Confirmação de Termo