Ir para conteúdo

mee

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    mee recebeu reputação de thalisson12 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. Obrigado
    mee recebeu reputação de thalisson12 em Mega Evolution System (PxG)   
    Que demora é essa para aprovar meu conteudo?
    Deus me livre...
  3. Obrigado
    mee recebeu reputação de DarkRed 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)
     
  4. Gostei
    mee recebeu reputação de PegasusBR 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)
     
  5. Gostei
    mee recebeu reputação de PegasusBR em Mega Evolution System (PxG)   
    Que demora é essa para aprovar meu conteudo?
    Deus me livre...
  6. Gostei
    mee recebeu reputação de WinnDRunner 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)
     
  7. Gostei
    mee recebeu reputação de Show X 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)
     
  8. Gostei
    mee recebeu reputação de dindalluiz 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)
     
  9. Gostei
    mee recebeu reputação de Sanieg 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)
     
  10. Gostei
    mee recebeu reputação de hylo 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)
     
  11. Gostei
    mee recebeu reputação de Mikex14 em Sprite feitas por Kaléu William (Pokémon)   
    Creditos~
     
     
    Eu (Por criar varios pokes Megas,Por criar os icons)
     
    Caso tiver divulgaçao dessas Sprites em outro Forum botar Creditos Meus.Obg!
     
    Meu face: https://www.facebook.com/kaleu.schlickmann
     
    Dowloand= http://www.mediafire.com/download/8hye6f6iciyj33q/854.rar
     
    Scan= http://imgur.com/kN2Xnuj
     
     
     
    Prints abaixo dos pokemons que contem!

  12. Gostei
    mee recebeu reputação de Vanne Bonser em PXG>Pokés Megas,Descompilado.   
    Creditos.
     
    Yagoo Rme(eu) <Pela descompilaçao e pela disponibilização.
    Pxg<Pelas Sprites!
     
    Obs:Já em formato OBD
    Obs²:Não esqueça do Rep+ pelo trabalho,Obg =)
     
    (+Info)
    Download's= http://www.mediafire.com/download/675fcxdy5bbfi2r/Megas+PXG.rar
     
    Scan (Por Virus-total) = https://goo.gl/gf7er3
     
    Print dos megas que contém = http://imgur.com/pSxtaNr
  13. Gostei
    mee recebeu reputação de Poke Marcos em PXG>Pokés Megas,Descompilado.   
    Creditos.
     
    Yagoo Rme(eu) <Pela descompilaçao e pela disponibilização.
    Pxg<Pelas Sprites!
     
    Obs:Já em formato OBD
    Obs²:Não esqueça do Rep+ pelo trabalho,Obg =)
     
    (+Info)
    Download's= http://www.mediafire.com/download/675fcxdy5bbfi2r/Megas+PXG.rar
     
    Scan (Por Virus-total) = https://goo.gl/gf7er3
     
    Print dos megas que contém = http://imgur.com/pSxtaNr
  14. Gostei
    mee recebeu reputação de mixnaruto em PXG>Pokés Megas,Descompilado.   
    huehae,é so clicar em ''Gostei'' <destacado em verde,Vlw
    Não tenho a animaçao dele atacando!
  15. Gostei
    mee recebeu reputação de mixnaruto em PXG>Pokés Megas,Descompilado.   
    Já está em OBD,Só baixar.
  16. Gostei
    mee recebeu reputação de mixnaruto em PXG>Pokés Megas,Descompilado.   
    Post Organizado e Scan Fixado,Peço a aprovação,desde já,obrigado!
  17. Gostei
    mee recebeu reputação de mixnaruto em PXG>Pokés Megas,Descompilado.   
    Mt obrigado
  18. Gostei
    mee recebeu reputação de saymonwilliam 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)
     
  19. Gostei
    mee recebeu reputação de kaleudd em Mega Evolution System (PxG)   
    Que demora é essa para aprovar meu conteudo?
    Deus me livre...
  20. Gostei
    mee recebeu reputação de kaleudd 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)
     
  21. Gostei
    mee recebeu reputação de kaleudd em PXG>Pokés Megas,Descompilado.   
    Post Organizado e Scan Fixado,Peço a aprovação,desde já,obrigado!
  22. Gostei
    mee recebeu reputação de kaleudd em PXG>Pokés Megas,Descompilado.   
    Creditos.
     
    Yagoo Rme(eu) <Pela descompilaçao e pela disponibilização.
    Pxg<Pelas Sprites!
     
    Obs:Já em formato OBD
    Obs²:Não esqueça do Rep+ pelo trabalho,Obg =)
     
    (+Info)
    Download's= http://www.mediafire.com/download/675fcxdy5bbfi2r/Megas+PXG.rar
     
    Scan (Por Virus-total) = https://goo.gl/gf7er3
     
    Print dos megas que contém = http://imgur.com/pSxtaNr
  23. Gostei
    mee recebeu reputação de pamonha em Sprite feitas por Kaléu William (Pokémon)   
    Sim usei a spr do Pyrus para add as spr pega do pxg,so adionei pocas coisas nessa spr!
  24. Gostei
    mee recebeu reputação de carlosfabian em PXG>Pokés Megas,Descompilado.   
    Creditos.
     
    Yagoo Rme(eu) <Pela descompilaçao e pela disponibilização.
    Pxg<Pelas Sprites!
     
    Obs:Já em formato OBD
    Obs²:Não esqueça do Rep+ pelo trabalho,Obg =)
     
    (+Info)
    Download's= http://www.mediafire.com/download/675fcxdy5bbfi2r/Megas+PXG.rar
     
    Scan (Por Virus-total) = https://goo.gl/gf7er3
     
    Print dos megas que contém = http://imgur.com/pSxtaNr
  25. Gostei
    mee recebeu reputação de carlosfabian em Pokexgames recruta spriter   
    Fake de merda.

Informação Importante

Confirmação de Termo