Ir para conteúdo
Banner com Efeitos

PegasusBR

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    PegasusBR deu reputação a mee em Mega Evolution System (PxG)   
    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 este link. 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 Bem, é isso aí. Acho que não esqueci de nada. Até mais.   Obs¹:,esqueci uma informação específica no segundo passo de instalação do sistema (doUpdateMoves). Editado.
    Ah, editei novamente com uma correção para OTClient.
     
    Creditos:
    zipter98  (Pela criação)
    Eu (por divulgalo)
     
  2. Gostei
    PegasusBR deu reputação a mee em Mega Evolution System (PxG)   
    Que demora é essa para aprovar meu conteudo?
    Deus me livre...
  3. Obrigado
    PegasusBR deu reputação a henriquesafadao em Pokepro2 30/05/2018   
    Pra ajudar vocês que tem base Lendas Pokemon esto li dano a spr é dat Pokepro2 Atualizado Hoji 30/05/2018


     
    Download : http://www.mediafire.com/file/syf7asqm8j00tli/Pokepro %2C.rar
    Scan   :https://www.virustotal.com/pt/file/b2b41330849da3b3cbf0afa5bd58190de3b11d6d0e83bc894a569ff559daa1e3/analysis/1527717553/
  4. Gostei
    PegasusBR deu reputação a zipter98 em Ditto Memory System por talkaction   
    OK, isto não é exatamente um sistema, visto que é composto por um único arquivo com um único callback, mas enfim.
    Antes de começar a desenvolver o tópico, digo-lhes: o código é para poketibia, não outros derivados ou Tibia comum.
    Introdução:
     
    A pedidos de um amigo, resolvi escrever este script. Por não programar em OTClient, optei por escrevê-lo em uma talkaction. Para aqueles que não conhecem o sistema, consiste em praticidade para as transformações do Ditto: ao invés de repetir o cansativo processo de procurar o pokémon que deseja-se copiar, você pode simplesmente salvá-lo na memória do Ditto para, sempre que quiser, transformá-lo em um único comando. 
    Você pode configurar quantos slots de "memória" quiser.
    Para usar os comandos, você deve colocar uma pokebola com um Ditto no slot 8/feet (a.k.a "pokeball slot"). Alguns, no entanto, necessitam também que o pokémon esteja "solto".
    Comandos:
    /memory check Use este comando para verificar os atuais slots de seu Ditto. /memory forget [slot] Use este comando para deletar uma memória salva, respectiva ao slot indicado. Ex.: /memory forget 1 /memory save [slot] Use este comando para salvar uma memória, respectiva ao slot indicado. A memória salva será do pokémon que seu Ditto estará transformado no momento. Ex.: /memory save 3 /memory [slot] Use este comando para transformar seu Ditto no pokémon que estiver armazenado no slot indicado. Ex.: /memory 2 PS: Você também pode usar !memory.
    Instalação:
     
    Em data/talkactions/scripts, crie um arquivo com extensão .lua, nomeie-o dittomemory e coloque o seguinte conteúdo:



    Em data/talkactions, abra o arquivo talkactions.xml e coloque a seguinte tag: <talkaction words="/memory;!memory" event="script" value="dittomemory.lua"/> Versão testada: 8.54 Servidor testado: PDA by Slicer, versão 1.9 É um código bem simples, escrito em poucos minutos. Resolvi postá-lo pois gostei do resultado apresentado.  Para alguns, pode não ser tão útil; para outros, espero que sim. É isso aí, até mais.
  5. Curtir
    PegasusBR deu reputação a TsplayerT em [PEDIDO] Transform ditto   
    Bom, vou ensinar como fazer um ditto system igual pxg, ou seja, clona tipo(fire, water...), habilidades...
    Ex: se eu clonar um charizard, ele fica tipo fire/flying, e eu posso usar fly...
     
    CLIQUE NO BOTÃO A BAIXO PARA ABRIR O TUTORIAL


     
    por:: 
     
     


     
    Pronto, ele ja esta se transformando, mas e pra voltar?
    Crie um arquivo.lua com nome de dittorevert na pasta "data/talkactions/scripts".
    E dentro dele bote:
    function onSay(cid, words, param, channel)
    local thisball = getPlayerSlotItem(cid, 8)
    if getItemAttribute(thisball.uid, "ehditto") then
    doItemSetAttribute(thisball.uid, "poke",  "Ditto")
    doItemSetAttribute(thisball.uid, "ehditto",  1)
    end
    end
    Depois vá em talkactions.xml, localizado na pasta "data/talkactions" e insira esta linha:
                  <talkaction log = "yes" words = "!revert" hide="yes" event = "script" value = "dittorevert.lua"/>
    Perfeito, sistema funcionando, mas tem um problema, ele tem a mesma força do pokemon normal, como faço pra diminuir?
    Simples, vá em "data/lib" e abra o "level system.lua".
    Nele procure isso:
     
     


     
    E substitua por isso:
     
     


     
    PS: Como ali está "0.75", a força é diminuida em 1/4(um quarto).
    Pode mudar para o quanto quiser.
    EX:
    0.50 -> 2/4.
    0.25 -> 3/4.
     
    Pronto, sistema feito. Mas assim não da de indentificar que é ditto, sendo assim possivel enganar outros players. Para isso, vá em "data/creaturescripts/scripts" abra look.lua e procure por:
    table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n")
    e substitua por:
    if getItemAttribute(thing.uid, "ehditto") == 1 then
    table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename.." (Ditto).\n")   
    else
    table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n") 
    end
    No Goback.lua(data/actions/scripts) e no Some Functions.lua(data/lib)  procure isso:
     
     


    E apague.
     
    Em Some Functions.lua procure por:
     
     


     
    E deixe assim:
     
     


     
    Ainda no some functions.lua apague isso:
     


     
    GIF do System:
     


     
    OBS: Para que o ditto se transforme por completo, fale !revert puxe e bote ele novamente.
    Qualquer bug, avisem.
    PS: Se feito corretamente, não há bugs.
     
    Créditos:: TsplayerT por Trazer até aqui!



     

    DE REP+ PARA ME AJUDAR!

Informação Importante

Confirmação de Termo