Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Oi. 

Antes de tudo, este sistema foi escrito para o servidor PDA by Slicer, versão 1.9. A adaptação para outras bases pode ser bem simples, dependendo do seu conhecimento em Lua (que na verdade nem precisa ser grande).

Resolvi escrever este simples sistema porque me deu um certo desgosto ver vários servidores onde a mega evolução é literalmente uma evolução (inclusive o que estive jogando, onde alguns jogadores também concordaram com minha opinião). Quero dizer, o pokémon fica transformado direto, para sempre, forever, algo que contraria a ideia original.

Optei por fazer o sistema igual (ou semelhante, já que me baseei apenas nas informações disponíveis no Blog PxG, que aliás são poucas) ao da PokeXGames. Mais futuramente, no entanto, posso fazer uma outra versão voltada a ideia de uma mega evolução temporária.

Para quem não conhece o sistema, bem, estou com preguiça de explicar, logo recomendo acessar 

Hidden Content

    Give reaction to this post to see the hidden content.
. A diferença é que a pedra (mega stone) não ocupa o espaço de um Held Item tier Y (visto que não são todos os servidores que possuem este sistema).

O sistema, como poderão notar, possui muitos detalhes. O motivo é que tenho a tendência de deixar a configuração o menor possível. Ou seja, basta configurar o efeito no código da spell e a tabela das mega evoluções.

Nossa, que textão.

 

TL;DR: Igual ao sistema da PxG; PDA; muitos detalhes mas pouquíssima configuração.

data/lib:

cooldown bar.lua:

Troque o código da função getNewMoveTable(table, n) por este:

function getNewMoveTable(table, n)
    if table == nil then
        return false
    end
    local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12}
    local returnValue = moves
    if n then
        returnValue = moves[n]
    end
    return returnValue
end

No código da função doUpdateMoves(cid), troque o segundo:

table.insert(ret, "n/n,")

Por:

local mEvolve
if not getCreatureName(summon):find("Mega") and getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") then
    if not isInArray(ret, "Mega Evolution,") then
        table.insert(ret, "Mega Evolution,")
        mEvolve = true
    end
end
if not mEvolve then
    table.insert(ret, "n/n,")
end
Depois, em pokemon moves.lua:
Troque:
min = getSpecialAttack(cid) * table.f * 0.1   --alterado v1.6

por:

min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1   --alterado v1.6

Código da spell:

elseif spell == "Mega Evolution" then
    local effect = xxx                          --Efeito de mega evolução.
    if isSummon(cid) then
        local pid = getCreatureMaster(cid)
        if isPlayer(pid) then
            local ball = getPlayerSlotItem(pid, 8).uid
            if ball > 0 then
                local attr = getItemAttribute(ball, "megaStone")
                if attr and megaEvolutions[attr] then
                    local oldPosition, oldLookdir = getThingPos(cid), getCreatureLookDir(cid)
                    doItemSetAttribute(ball, "poke", megaEvolutions[attr][2])
                    doSendMagicEffect(getThingPos(cid), effect)
                    doRemoveCreature(cid)
                    doSummonMonster(pid, megaEvolutions[attr][2])
                    local newPoke = getCreatureSummons(pid)[1]
                    doTeleportThing(newPoke, oldPosition, false)
                    doCreatureSetLookDir(newPoke, oldLookdir)
                    adjustStatus(newPoke, ball, true, false)
                    if useKpdoDlls then
                        addEvent(doUpdateMoves, 5, pid)
                    end
                end
            end
        end
    end

Depois, em configuration.lua:

megaEvolutions = {
    --[itemid] = {"poke_name", "mega_evolution"},
    [11638] = {"Charizard", "Mega Charizard X"},
    [11639] = {"Charizard", "Mega Charizard Y"},
}

Agora, em data/actions/scripts, código da mega stone:

function onUse(cid, item)
    local mEvolution, ball = megaEvolutions[item.itemid], getPlayerSlotItem(cid, 8).uid
    if not mEvolution then
        return doPlayerSendCancel(cid, "Sorry, this isn't a mega stone.")
    elseif ball < 1 then
        return doPlayerSendCancel(cid, "Put a pokeball in the pokeball slot.")
    elseif #getCreatureSummons(cid) > 0 then
        return doPlayerSendCancel(cid, "Return your pokemon.")
    elseif getItemAttribute(ball, "poke") ~= mEvolution[1] then
        return doPlayerSendCancel(cid, "Put a pokeball with a(n) "..mEvolution[1].." in the pokeball slot.")
    elseif getItemAttribute(ball, "megaStone") then
        return doPlayerSendCancel(cid, "Your pokemon is already holding a mega stone.")
    end
    doItemSetAttribute(ball, "megaStone", item.itemid)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your "..getItemAttribute(ball, "poke").." is holding a(n) "..getItemNameById(item.itemid)..".")
    doRemoveItem(item.uid)
    return true
end
Depois, em goback.lua:
Abaixo de:
if not pokes[pokemon] then
    return true
end

coloque:

    if pokemon:find("Mega") then
        local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1]
        if normalPoke then
            doItemSetAttribute(item.uid, "poke", normalPoke)
            pokemon = normalPoke
        end
    end
Depois, em data/creaturescripts/scripts, look.lua:
Abaixo de:
local boost = getItemAttribute(thing.uid, "boost") or 0

coloque:

local extraInfo, megaStone = "", getItemAttribute(thing.uid, "megaStone")
if megaStone then
    extraInfo = getItemNameById(megaStone)   
    if pokename:find("Mega") then
        pokename = megaEvolutions[megaStone][1]
    end
end

Depois, acima de:

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))

coloque:

if extraInfo ~= "" then
    table.insert(str, "\nIt's holding a(n) "..extraInfo..".")
end
Já em data/talkactions/scripts, move1.lua:
Troque:
   if not move then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
        return true
    end

por:

if not move then
        local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone")
        if not isMega or name:find("Mega") then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
            return true
        end
        local moveTable, index = getNewMoveTable(movestable[name]), 0
        for i = 1, 12 do
            if not moveTable[i] then
                index = i
                break
            end
        end
        if tonumber(it) ~= index then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
            return true
        end
        local needCds = true                   --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown.
        if needCds then
            for i = 1, 12 do
                if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then
                    return doPlayerSendCancel(cid, "To mega evolve, all the spells of your pokemon need to be ready.")
                end
            end
        end
        move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}
    end

E troque:

doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)

por:

local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"
if move.name == "Mega Evolution" then
    spellMessage = "Mega Evolve!"
end
doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY)
Se quiser que o "Mega" não apareça no nome do pokémon, vá em data/lib, level system.lua:
Acima de:
if getItemAttribute(item, "nick") then
    nick = getItemAttribute(item, "nick")
end

coloque:

    if nick:find("Mega") then
        nick = nick:match("Mega (.*)")
        if not pokes[nick] then
            nick = nick:explode(" ")[1]
        end
    end
E, caso o seu servidor possua pokémons evoluídos permanentemente na forma mega, em data/actions/scripts, goback.lua:
Troque:
    if pokemon:find("Mega") then
        local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1]
        if normalPoke then
            doItemSetAttribute(item.uid, "poke", normalPoke)
            pokemon = normalPoke
        end
    end

por:

  if pokemon:find("Mega") then
        local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1]
        if not normalPoke then
            local megaStone
            for itemid, table in pairs(megaEvolutions) do
                if table[2] == pokemon then
                    megaStone = itemid
                    break
                end
            end
            if not megaStone then
                return doPlayerSendTextMessage(cid, 27, "Your pokemon is bugged. Please, talk to the administrator.")
            end
            doItemSetAttribute(item.uid, "megaStone", megaStone)
            normalPoke = megaEvolutions[megaStone][1]
        end
        doItemSetAttribute(item.uid, "poke", normalPoke)
        pokemon = normalPoke
    end

Bom pessoal é isso!

Espero que ajude !

Creditos:

zipter98  (Pela criação)

Eu Lango Rullez (Por Divulgar ^_^)

 

Link para o post
Compartilhar em outros sites
  • Respostas 10
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Oi.  Antes de tudo, este sistema foi escrito para o servidor PDA by Slicer, versão 1.9. A adaptação para outras bases pode ser bem simples, dependendo do seu conhecimento em Lua (que na verdade nem precisa ser grande). Resolvi escrever este simples sistema porque me deu um certo desgosto ver vários servidores onde a mega evolução é literalmente uma evolução (inclusive o que estive jogando, onde alguns jogadores também concordaram com minha opinião). Quero dizer, o pokémon fica transfor

51mutNo.png Parabéns, seu tópico de conteúdo foi aprovado!
 Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
 Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Link para o post
Compartilhar em outros sites
  • 1 month later...

Desculpe cara não entendi nada mesmo aonde colocar as pastas já no início vc falou data/actions/scripts e código da mega stone ai colocou o script eu n entendi o q fazer dai pq só tinha pastas e um monte de arquivos e dai deu erro em td no meu server mas era o copiado sera que tu poderia me auxiliar pelo skype???

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 1 month later...

Manow... esse sistema ai não funfa na versão 8.54 pokecyan com icon system? '-' se não funfar e alguem ai poder colaborar a editar ai ... :) mas, vlw, conteudo muito bom!! gostei da ideia!!

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Under
      Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia! 
       O que é o Tibia-IA?
      Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça! 
       Versão Experimental Fechada
      Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
      Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!  
      Contato direto discord : underewar
       Acesse agora: https://ai.tibiaking.com
       Como funciona?
       Geração automática de scripts LUA para TFS  Suporte a diferentes eventos, criaturas, NPCs, magias, etc.  Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! Até dia 05/05/2025
      Basta criar uma conta em: https://ai.tibiaking.com
      Utilize a IA para gerar seus scripts de forma simples e rápida
      Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!

      Problemas relatar diretamente no meu discord pessoal : underewar
       



    • Por Leohige
      The Ruby Server - Base Pokémon
      Ao olhar as diversas bases que podem ser encontradas aqui no fórum e em outros locais da internet, pude ver que todas elas carecem de qualidade. Todas estas bases são feitas utilizando gambiarras para diversos sistemas funcionarem, e com isso vários problemas surgem, como de sistemas que não funcionam direito, e o mais importante, com um desempenho extremamente baixo, gerando apenas servidores instáveis. Com isso eu decidi que iria começar a desenvolver uma base para servidores relacionados a Pokémon, com dois objetivos. Um dos objetivos é ganhar mais conhecimento em cima da linguagem de programação C++, o outro objetivo é disponibilizar uma base completamente estável, funcional e de fácil configuração e desenvolvimento para servidores de Pokémon, para que mais ótimos trabalhos possam surgir. Este projeto também irá incluir um cliente próprio e estável, junto com um website.
       
      Também planejo criar uma espécie de Wiki para o servidor, cliente e website, com o objetivo de auxiliar quem for desenvolver em cima deste servidor, e também aqueles que pouco entendem do assunto relacionando a criação de escripts, Pokémon, spells e etc.
       
      Alguns poucos sistemas foram implementados no servidor por ora. Sistemas como o de catch e de goback serão implementados mais para frente, quando outros sistemas forem completamente implementados, como o sistema de configuração de Pokeballs, criação de Pokémons e sistema de shinys. Estou visando a qualidade do servidor como um todo, por isso algumas coisas irão demorar para aparecer.

      O sistema de Pokeballs e de criação de Pokémon já está bem encaminhado, e um sistema de gêneros também já está pronto com fácil configuração, onde o spawn destes Pokémon com sexo será por % igual aos jogos da franquia. Um sistema de surgimento de Ditto aleatório já está praticamente implementado, onde um Pokémon aleatório pode ser um Ditto disfarçado.
       
      [+] Informações do Servidor
      Baseado em: TFS 1.3
      Protocolo: 10.98
       
      [+] Informações do Client
      Baseado em: otclient 0.6.6

      [+] Informações do Website
      Baseado em: nenhum
      Desenvolvido em: PHP (por ser o mais comum na comunidade)
       
      Como contribuir?
      Eu gostaria muito que a comunidade ajudasse no desenvolvimento deste projeto, pois o mesmo será disponibilizado para todos, e para contribuir não necessariamente é preciso entender de programação. Você pode também ajudar testando e reportando os bugs encontrados no repositório do projeto no GitHub, assim como com sugestões e ideias de mudança/implementação no servidor através do próprio repositório ou através do Discord, ou ajudar na criação de guias para o website do projeto.
       
      Links
       
      [+] RubyServer - GitHub
      https://github.com/rubyserver/rubyserver
       
      [+] RubyClient - GitHub
      https://github.com/rubyserver/rubyclient
       
      [+] RubyServer - Website
      https://rubyserver.github.io/rubyserver/
       
      [+] RubyServer - Discord
      https://discord.gg/XTrZGpy
       
      Algumas Imagens
       
       
       
       
       
    • Por alun0n0v0
      Ola Galera Venho trazer uma base que todos nos adorava, a Poke Hand(Antiga) sim é elas mesmo estou com ela alguns anos baixada em meu pc e venho traser para a comunidade ela, etão vamos la.
       
      Base Poke hand
      Shiny e mega
      Sistema de Auto loot
      respaw de shiny free
      Mega pokemon 
      sistema de bike
      sistema de Held T1 ao T7
      50 Quest
      Sistema de Rare candy e Boost stone
      Master ball
      -----------------------------------------------------------------------------
       
      download:  http://www.mediafire.com/file/vjbpo5m3b6x6w5p/Base_Hand_g.rar/file
      Scan: https://www.virustotal.com/gui/url/6efa9873650435768ab6d5817919c8c2201006a36d09448a01b9619bf0bdd41d/detection
      -------------------------------------------------------------------------------------
       
      Creditos: a Mim
       Hang caxias ( desenvovedor da base)
       
       
       
      ME PERDO PESSOAL SE ESTA FALTANDO ALGO, MAS É MEU PRIMEIRO POST NO TK. PESSOAL DEIXA UM UP PARA FORTALECER
       
    • Por SwayaDzn
      ##Change Log##
      Foram feita muitas modificações na base PokeImperium que foi feita pelo Lord Baxx. (Todos os devidos créditos da base vão para ele.)
      A principal ídeia era fazer um servidor BASEADO na PokeXGames, eu criei muito conteúdo assim como estava adicionando novos pokemons,
      então vou deixar esse changelog de várias coisas que eu adicionei/fui mechendo
      * Foram Feitas várias modificações no mapa, adicionando novas hunts da "cosmic world" como se fosse a nightmare world do pokexgames.
      * Adicionado todos os pokemons do TIER 1 de todos os clans, "os t1h da pokexgames"
      Zoroark, Shiny Pachirisu, Shiny Gardevoir, Shiny Rampardos, Shiny Hariyama, Shiny Heatmor, Shiny Mawile, Mega Pidgeot, Mega Glalie.
      * Foram CRIADOS novos MOVES para TODOS os pokémons de TIER 1.
      * Adicionado alguns novos pokemons de cada clan (não está nem um pouco completo, falta adicionar/balancear diversos pokemons de seus diversos clans
      * Adicionado mais de 3k+ de newtypes(outfit) e items novos no servidor.
      * Todos os pokémons novos tem seus proprios portraits/corpse. INCLUINDO os pokémons megas.
      * Eu criei uma base pra "clones quest" que séria uma quest que resetava a cada semana.
      * Sistema de travel estava sendo feito, porém não terminei (sistema de travel séria o "teleport" para a cosmic world.
      * Alteração no Task System.
      * Alterado Client/Modules/Ui/Interface.

      Principal Bug do servidor, este bug já tinha na propria base do lord baxx que é o auto loot, basicamente se você separa vários items iguais na sua mochila,
      e coletar algum loot de pokémon que tenha esse mesmo item, basicamente duplica, triplica, etc. esse item na sua mochila.
      Meu foco era deixar primeralmente o servidor "divertido" então não corri atrás de arrumar bugs.
      Não tenho mais tempo/vontade de mecher no servidor, então estou disponibilizando.
       
      Imagens/Vídeos
       
      Download: https://www.mediafire.com/file/nqgja991oomtfz0/PokeGhost+Project.rar/file
      scan: https://www.virustotal.com/gui/file/545e3c5e7a894e82cce5e9cb885f2dc4f8f2b8ce1d7f31ff75bb2d8e7bbf4095/detection
       
      Database: Imperium.s3db
    • Por Zagaf
      ShowOff Poketibia
       
      Bom a alguns dias atrás eu comecei a reformular um mapa de poketibia que eu baixei (pokexmaster) , ate o momento eu refiz a cidade de saffron.
       
       
       
       
       
  • Estatísticas dos Fóruns

    96845
    Tópicos
    519606
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo