Forums » RPG Maker XP

pokemon start kit tutorial

    • 404 posts
    29 de maio de 2015 16:32:33 ART

    aki vai tutorais pro pokemon start kit

    Spoiler 
    Tutorial sobre o Pokémon starter kit

    http://www.mediafire...0vaw0xixa05ka12 ultima verssão sem erros

    2° passo: Começando o seu jogo:

    Façam uma copia do starter kit para se tiver uma duvida, u perder algum arquivo importante você podera o pegar la. Abra um dos "starters kits" e delete todos os mapas menos o primeiro que é a Intro.

    3° passo: Modificando as coisas principais:


    Primeiro abra o "Editor.exe" que esta dentro da pasta do seu jogo. Va em "Visual Editor". Você vera o mapa que você estava mexendo no RPG Maker.
    Clique no fundo e abrira uma janelinha escrito:

    Home(1)
    Player A,B,C e D(2)
    Storage Creator(3)
    WildBattleBGM(4)
    WildVictoryME(5)
    TrainerVictoryME(6)
    TextSkin(7)
    SurfBGM(8)
    BicicleBGM(9)

    1 = A casa do personagem. Se ele perder uma batalha, e nunca tiver curado seus Pokémon nu centro pokémon, você devera se curar em casa.

    2 = O grafico dos personagens, recomendo deixar somente 2, pois o A é o menino e o B é a menina.

    3 = Aquele que fez os boxes, (ex: Bill, Lannette, etc...).

    4 = A musica de batalha quando encontra um pokémon selvagem.

    5 = A musica de quando você ganha de um pokémon selvagem.

    6 = A musica de quando você ganha de um treinador.

    7 = O estilo da caixa de texto.

    8 = A musica de quando você usa o HM SURF.

    9 = A musica de quando você esta na bicicleta.


    4° passo: Criando e modificando mapas:

    Abra o RPG Maker, e crie um Mapa com os tiles do starter kit. Crie um mapa que ficara ao lado dele(não importa qual lado). Abra connections.txt que esta na pasta PBS e apague tudo que esta la. Depois faça o seguinte:

    # Area 1 (4) - Area 2 (5)
    4,East,0,5,West,0

    Area 1 e Area 2 = Os nomes dos mapas

    4, 5, (4) e (5) = As IDs dos mapas

    East e West = Direção onde esta o mapa que sera conectado ao primeiro mapa.(North = Norte, South = Sul, East = Leste, West = Oeste) PS: O numero da esquerda é o ID do mapa. Exemplo simples:

    Area 1 com o ID 4 sera conectada com o Leste dela que é a Area 2 com o ID 5 que sera conectada com a outra pelo Oeste.


    Agora os Pokémon selvagens:

    Abra o Editor, e depois em "Set Encounters". Selecione o nosso mapa e clique.

    Aparecera Isso:

    Land
    Water
    OldRod
    GoodRod
    SuperRod
    HeadbuttLow
    HeadbuttHigh

    Land = Os pokémons que aparecerão na grama.

    Water = Os pokémons que aparecerão na agua.

    OldRod = Os pokémons que aparecerão se agente pesca com uma Old Rod.

    GoodRod = Os pokémons que aparecerão se agente pesca com uma Good Rod.

    SuperRod = Os pokémons que aparecerão se agente pesca com uma Super Rod.

    HeadbuttLow = Os pokémons que aparecerão se agente usa Headbutt.

    HeadbuttHigh = Os pokémons que aparecerão se agente usa Headbutt, so que um Headbutt forte.


    5° passo: Batalhas de treinadores:

    Crie um evento chamado "Traner (#)" O # sera a visão do treinador, ex.: Trainer (4) Se eu estiver 5 quadradihos (passos) ou mais longe dele, ele não me vera, mas se eu tiver de 4 passos ou menos perto dele, ele me vera.

    Crie 2 paginas, na primeira faça:

    Comentario: "Battle: (1)"
    Comentario: "Type: (2)"
    Comentario: "Name: (3)"
    Comentario: "EndSpeech: (4)"
    Comentario: "EndBattle: (5)"
    Comentario: "EndIfSwitch: (6)"
    Script: "pbTrainerIntro(:YOUNGSTER) (7)"
    Script: "Kernel.pbNoticePlayer(get_character(0))" (8)
    Texto: (9)
    Condição(script): "pbTrainerBattle(PBTrainers::YOUNGSTER,"Jimmy",_I( "Eu perdi?"),false,0) (" (10)
    Se a condição for feita: "Operação Switch Local A"
    FIM
    Script: "pbTrainerEnd" (11)

    1 = O que o treinador vai falar quando te encontrar.
    2 = O tipo do treinador: YOUNGSTER, EXPERT_Male (OBS.: O nome dos personagens é diferente do que aparece no jogo, então va em PBS, trainernames.txt e na esquerda você vera o nome deles para escrever la nos eventos, e na direita você vera o que aparecera no jogo.).
    3 = O nome do treinador. Ex.: Youngster "Jimmy" (So escreva o nome do treinador e não o tipo.).
    4 = O que o treinador dira no fim da batalha.
    5 = O que o treinador dira se você falar com ele e ja tiver derrotado ele.
    6 = Eu néao sei o que é. E é melhor deixar 27.
    7 = Substitua YOUNGSTER por aquilo que você escreveu no 2° comentario.
    8 = Deixe o que estiver la.
    9 = Escreva a mesma coisa que você escreveu no 1° comentario.
    10 = Substitua YOUNGSTER pelo tipo do treinador, Jimmy pelo nome do treinador, e "Eu perdi?" por o que o treinador vai falar quando te encontrar.
    11 = Esse é o script do fim da batalha. Não modifique isso.


    Na segunda pagina:

    Coloque para funcionar somente se o switch local A estiver ativado.
    Texto: (12)

    12 = Escreva a mesma coisa que escreveu no 5° comentario.

    Agora teste o jogo e fale com o treinador. Ele dira que não o encontrou. Clique em YES e depois escolha o seu primeiro pokémon. Depois vai pedir o nivel dele aperte para cima para aumentar o nivel, e para baixo para abaixar o nivel. Ai ele vai Perguntar se quer colocar mais um pokémon, clique em YES para colocar mais um pokémon e NO para deixar o treinador o jeito que esta.


    6° passo: Os lideres de GYM:

    Crie um evento com 2 paginas:
    Na primeira pagina faça:

    Texto: Você chegou longe, Mas você pode me vencer?(1)
    Condição(script): pbTrainerBattle(PBTrainers::LEADER_Roxanne,"Roxy", _I("Muito bom.")) (2)
    Reproduzir BGM: 'badge adquired', 100, 100(3)
    Texto: Você ganhou a insignia da (nome da insignia)! (4)
    Script: $Trainer.badges[0]=true(5)
    Reproduzir BGM: 'gym', 100, 100(6)
    Operação switch local A = On
    FIM

    1 = O que a lider fala antes da batalha.
    2 = Substitua Roxanne pelo nome do lider do R\S\E para saber(Roxanne = 1° lider), Substitua Roxy pelo nome do lider de GYM, e substitua "Muito bom" por o que a lider dira no fim da batalha.
    3 = A musica de quando ganha a insignia.
    4 = substitua (nome da insignia) pelo tipo (ex: Você ganhou a insignia da pedra!).
    5 = O numero de insignias. Substitua 0 pelo numero de insignias(OBS.: 0 = 1 insignias, 1 = 2 insignias, etc...)
    6 = Esse comando é para voltar a musica do GYM, sem este comando tocaria 'badge adquired' até que você troque de mapa, ou até que tenha um outro comando de mudar BGM.

    Na segunda pagina faça:

    Coloque para funcionar somente se o switch local A estiver ativado.
    Texto: (12)

    12 = O que o lider de GYM fala se você clica nele e ja tiver ganhado dele.


    7° passo: Outros comandos uteis:

    Sistema de Sombra: Comentario: begin Shadow Source(crie um evento com a ativação "Pressinar Tecla" no local onde o sol estara.

    Berry: Script: pbBerryPlant

    Rock Smash:
    Condição(script): Kernel.pbRockSmash
    Script: pbEraseThisEvent
    Script: Kernel.pbRockSmashRandomEncounter

    Cut: Condição(Script): Kernel.pbCut
    Script: pbEraseThisEvent

    Ganhar item: 1° pagina:
    Condição(script): Kernel.pbItemBall(::PBItems::POTION)
    Operação de switch local A
    2° pagina:
    Coloque para funcionar somente se o switch local A estiver ativado.

    Surf: é so colocar agua e o menino(a) vai surfar.

    Strenght: Script: pbPushThisBoulder

    Headbutt: Script: pbHeadbutt

    PC: Script: pbPokeCenterPC



    Spoiler 
    Este tutorial é referente a arquivos do Pokestarter Kit.

    TUTORIAL SOBRE ARQUIVOS “METADATAS” E “ENCOUNTERS”

    Neste tutorial irei explicar qual a utilidade dos arquivos “METADATAS” E “ENCOUNTERS” no Pokestarter.

    Inicio de Tudo.

    1°Passo - Crie seu mapa.

    Feito isso vá na pasta de "PBS" e abra o arquivo com o nome "metadata".
    Este metadata é tipo uma pasta de registros do seus mapas no jogo, sem esse “registro” do seu mapa as batalhas ficam com o title neutro ou sem efeito de dia e noite!
    Bem então vamos aprender como "registrar" seu mapa.

    EX 1:
    [027] ----------------------------->1
    # Route 1 ------------------------->2
    Bicycle=true ---------------------->3
    MapPosition=0,10,5 ---------------->4
    Outdoor=true ---------------------->5
    BicycleAlways=false --------------->6
    ShowArea=true --------------------->7

    Este é o exemplo de uma Route tradicional.
    1: Isso acho que todos já sabem o q é. É o ID do mapa, e deve se sempre colocados entras colchetes.
    2: Isso ñ é nada alem de uma explicação de a qual mapa você se refere, é apenas um comentário, + é bom para você se localizar melhor.
    3: Isso não passa de uma permissão pr se poder andar de bicicleta, já q obviamente em pokemon você não pode andar de bicicleta onde te der vontade. Então caso você estiver querendo fazer um centro ou uma casa será "Bicycle=false".
    4: Isso eu ñ seu bem pr q serve, + se deixar do jeito q esta, ele ñ irar influencia no seu mapa.
    5: Este eu também não sei bem, basta deixar desse jeito. xD
    6: Esta opção quando esta true (ou seja verdadeira) você não pode remover a bicicleta, como na ciclovia da ruby/safira.
    7: Este eu também ñ sei bem para que serve, porem é obrigatório todos o mapas terem.

    EX2:
    [004] -------------------------->1
    # Route 20 --------------------->2
    Weather=Rain,100 --------------->3
    Bicycle=true ------------------->4
    MapPosition=0,6,4 -------------->5
    Outdoor=true ------------------->6
    EscapePoint=11,9,9 ------------->7
    ShowArea=true ------------------>8

    Este já é o exemplo de uma route, porem um pouquinho diferente.
    1: isso eu já expliquei.
    2: Isso também. rs
    3: Isso é o efeito climático do local, neste esta chuva, para colocar outro efeito basta substituí-lo por:
    - Neve: Snow,100
    - Areia: Sandstorm,100
    - Tempestade: Storm,100
    - Chuva: Rain,100

    *Não sei para que serve e ñ os aconselho a mudar o valor 100!

    4: Já falei!
    5: Já falei!
    6: Já falei!
    7: Esta eu nãos sei bem, mas acho q é as coordenadas q você vai quando você usa DIG, sendo o primeiro numero para o ID do mapa, o segundo para coordenada X e o terceiro coordenada Y.
    8: Já falei.

    EX3:
    [022] ------------------------>1
    # Cave Dark ------------------>2
    Bicycle=true ----------------->3
    MapPosition=0,10,5 ----------->4
    DarkMap=true ----------------->5
    EscapePoint=11,21,17 --------->6
    ShowArea=true ---------------->7

    1,2,3 e 4: Já falei!
    5: Este é o famoso efeito escuridão, q só pode ser retirado com FLASH!
    6 e 7: Já falei.

    Gente, é isso, agora é só registrar o mapa de vocês, e depois ir lá no arquivo "encounters" na pasta "PBS".

    2° Passo - Encontros no mapa. "Encounters"

    Aqui você irá colocar tudo o q é tipo de pokemons que ira aparecer em seu mapa.

    EX1:

    011 # Test Map
    25,10,10
    Land # Grama ================================================== ======
    PIDGEY,16
    PARAS,16
    PARAS,16
    RATTATA,17
    RATTATA,18
    PIDGEY,17
    RATTATA,19
    RATTATA,18
    PIDGEY,19
    RATTATA,18
    PIDGEY,20
    RATTATA,20
    Water # Agua =============================================
    MAGIKARP,2
    GOLDEEN,3
    POLIWAG,3
    FEEBAS,3
    FEEBAS,3
    OldRod # vara de pesca 1 ====================================
    MAGIKARP,2
    GOLDEEN,3
    GoodRod # vara de pesca 2 ===================================
    MAGIKARP,2
    GOLDEEN,3
    POLIWAG,3
    SuperRod # vara de pesca 3 ==================================
    MAGIKARP,2
    GOLDEEN,3
    POLIWAG,3
    FEEBAS,3
    FEEBAS,3
    HeadbuttLow # pokemons q são raramente vistos quando se usa headbutt==
    PINECO,10
    PINECO,10
    PINECO,10
    PINECO,10
    AIPOM,10
    AIPOM,10
    AIPOM,10
    AIPOM,10
    HeadbuttHigh # pokemons q são sempre vistos quando se usa headbutt====
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10
    SPEAROW,10

    Bem ñ há muito o q falar disso.

    ###############################################
    # AIPOM,10 = Nome do Pokemon,Nível do Pokemon #
    ###############################################

    -Logo no inicio o 011 é o ID do mapa e o resto da linha é só comentário.
    -Os valores abaixo (25,10,10), são em relação a densidade e ñ há necessidade de serem mudados, são até mesmo dispensáveis, caso queira, ñ os coloque.
    -O Land, Warter, etc são os locais onde os pokemons podem aparecer, vou criar uma lista com eles.

    * Land - Encontros na grama.
    * Cave - Encontros a caverna.
    * Water - Encontros na água.
    * RockSmash - Quando usar RockSmash.
    * OldRod - Quando usar o OldRod.
    * GoodRod - Quando usar o GoodRod.
    * SuperRod - Quando usar o SuperRod.
    * HeadbuttLow - Pokemons que são raramente vistos quando se usa headbutt
    * HeadbuttHigh - Pokemons que são quase sempre vistos quando se usa headbutt
    * LandMorning - Encontros na grama, das 6 da tarde as 12 da noite.
    * LandDay - Encontros na grama, das 12 noite as 8 da manhã.
    * LandNight - Encontros na grama, 8 da manhã as 6 da tarde.

    *O relógio do jogo esta ajustado com o Relógio do seu PC.

    N° mínimo de tipos de encontros pr cada categoria varia, veja:

    * Land/Cave: 12 tipos de encontros.
    * Water/RockSmash: 5 tipos de encontros.
    * OldRod: 2 tipos de encontros.
    * GoodRod: 3 tipos de encontros.
    * SuperRod: 5 tipos de encontros.
    * HeadbuttHigh/HeadbuttLow: 8 tipos de encontros.
    *Caso não sejam colocados no mínimo estes numero de tipos de encontros, o jogo da erro!

    * Não é obrigatório colocar todos as categorias, caso ñ queira colocar alguma basta ignorar-la e pular para a próxima, porem evite modificar a ordem.








    Como fazer para um NPC iniciar uma batalha com um pokemon Selvagem no Starter Kit?

    Crie um evento, e use a opção chamar script e use o exemplo abaixo,

    pbWildBattle(
    ::PBSpecies::Nome do pokemon em letra maiuscula,lv,não altere)



    Ex: Esse exemplo aqui abaixo ira chamar o pokemon Lucario, no nivel 25. 
    pbWildBattle(
    ::PBSpecies::LUCARIO,25,1)



    Spoiler 

    e ai vai o script para pokemart
    pbPokemonMart([
    PBItems::POKeBALL,
    PBItems::POTION,
    PBItems::ANTIDOTE,
    PBItems::PARLYZHEAL,
    PBItems::AWAKENING])

    coloca chamarr script e todos os itens tem que tar com letra maiúscula e escrito certo de preferencia xD
    ===============================
    o do pokemart não vi em tuto algum explicando como fazer então criei este evento pra ficar igual ao mercado!
    ===============================



    e se sua pokedex estiver dando erro use script no lugar da dela 

    Spoiler 
    classWindow_Pokedex<SpriteWindow_Selectable attr_reader :baseColor attr_reader :shadowColor def initialize(x,y,width,height)   @starting=true   super(x,y,width,height)   @selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")   @pokeball=AnimatedBitmap.new("Graphics/Pictures/pokeball")   @baseColor=Color.new(9<<3,9<<3,9<<3)   @shadowColor=Color.new(26<<3,26<<3,26<<3)   self.index=0   @commands=[]   @item_max=0   @starting=false   refresh enddef commands=(value)   @commands=value   refresh enddef dispose   @selarrow.dispose   @pokeball.dispose   superenddef species   return@commands.length==0?0:@commands[self.index][0]enddef refresh   returnif@starting   @item_max=@commands.length   dheight=self.height-32   dwidth=self.width-32   if!self.contents ||self.contents.disposed?||       self.contents.height<dheight ||self.contents.width<dwidth   self.contents.dispose ifself.contents   self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)   pbSetSystemFont(self.contents)   end   self.contents.clear   contentsWidth=self.contents.width   ypos=0   for i in0...@item_max   if i<self.top_row || i>self.top_row+self.page_row_max     next   end   pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos)ifself.index==i   indexNumber=@commands[i][4]   species=@commands[i][0]   if $Trainer.seen[species]     j=self.top_row     if $Trainer.owned[species]     pbCopyBitmap(self.contents,@pokeball.bitmap,210,(i-j)*32)     end     text=_ISPRINTF("No.{1:03d} {2:s}",indexNumber,@commands[i][1])   else     text=_ISPRINTF("No.{1:03d} ----------",indexNumber)   end   self.contents.font.color=@shadowColor   pbDrawShadow(self.contents,center=+1,ypos,self.contents.width-16,32,text)   self.contents.font.color=@baseColor   self.contents.draw_text(center=+1,ypos,self.contents.width-16,32,text)   ypos+=32   endenddef update   dorefresh=false   oldindex=self.index   super   dorefresh=(self.index!=oldindex)   refresh if dorefresh endendclassWindow_ComplexCommandPokemon<SpriteWindow_Selectable attr_reader :baseColor attr_reader :shadowColor attr_reader :commands def getAutoDims(commands,dims,width=nil)   windowheight=commands.length*32+32   windowheight=33if windowheight<33   if!width || width<0   width=0   tmpbitmap=Bitmap.new(1,1)   pbSetSystemFont(tmpbitmap)   for i in commands     width=[width,tmpbitmap.text_size(i).width].max   end   width+=64   tmpbitmap.dispose   else   width=[33,width].max   end   dims[0]=width   dims[1]=windowheight enddef initialize(commands,width=nil)   @starting=true   @commands=commands   dims=[]   getAutoDims(commands,dims,width)   super(0,0,dims[0],dims[1])   @item_max=commands.length   @selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")   @index=0   self.active=true   @baseColor=Color.new(12*8,12*8,12*8)   @shadowColor=Color.new(26*8,26*8,25*8)   refresh   @starting=falseenddefself.newEmpty(x,y,width,height,viewport=nil)   ret=self.new([],width)   ret.x=x   ret.y=y   ret.width=width   ret.height=height   ret.viewport=viewport   return ret enddef index=(value)   super   refresh if!@startingenddef indexToCommand(index)   curindex=0   i=0; loop dobreakunless i<@commands.length   return[i/2,-1]if index==curindex   curindex+=1   return[i/2,index-curindex]if index-curindex<commands[i+1].length   curindex+=commands[i+1].length   i+=2   end   return[-1,-1]enddef getText(array,index)   cmd=indexToCommand(index)   return""if cmd[0]==-1   return array[cmd[0]*2]if cmd[1]<0   return array[cmd[0]*2+1][cmd[1]]enddef commands=(value)   @commands=value   @item_max=commands.length    self.index=self.index enddef width=(value)   super   if!@starting   self.index=self.index   endenddef height=(value)   super   if!@starting   self.index=self.index   endenddef resizeToFit(commands)   dims=[]   getAutoDims(commands,dims)   self.width=dims[0]   self.height=dims[1]enddef dispose   @selarrow.dispose   superenddef baseColor=(value)   @baseColor=value   refresh enddef shadowColor=(value)   @shadowColor=value   refresh enddef refresh   dwidth=self.width-32   dheight=self.height-32   @item_max=0   i=0; loop dobreakunless i<@commands.length   @item_max+=1+@commands[i+1].length   i+=2   end   if!self.contents ||self.contents.disposed?||     self.contents.width<dwidth ||     self.contents.height<dheight   self.contents.dispose ifself.contents   self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)   pbSetSystemFont(self.contents)   end   self.contents.clear   contentsWidth=self.contents.width   ypos=0   icommand=0   i=0; loop dobreakunless i<@commands.length   if icommand>=self.top_row && icommand<self.top_row+self.page_row_max     self.contents.font.color=self.shadowColor     pbDrawShadow(self.contents,0,ypos,contentsWidth,32,@commands[i])     self.contents.font.color=self.baseColor     self.contents.draw_text(0,ypos,contentsWidth,32,@commands[i])     ypos+=32   end   icommand+=1   for j in0...@commands[i+1].length     if icommand>=self.top_row && icommand<self.top_row+self.page_row_max     pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos)ifself.index==icommand     self.contents.font.color=self.shadowColor     pbDrawShadow(self.contents,16,ypos,contentsWidth-16,32,@commands[i+1][j])     self.contents.font.color=self.baseColor     self.contents.draw_text(16,ypos,contentsWidth-16,32,@commands[i+1][j])     ypos+=32     end     icommand+=1   end   i+=2   endenddef update   oldindex=self.index   super   refresh ifself.index!=oldindex endendclassPokemonPokedexScenedef setIconBitmap(file)@sprites["icon"].setBitmap(file)if@sprites["icon"].bitmap   @sprites["icon"].ox=@sprites["icon"].bitmap.width/2   @sprites["icon"].oy=@sprites["icon"].bitmap.height/2endend## Gets the region used for displaying Pokédex entries.# Species will be listed according to the given region's# numbering and the returned region can have any value# defined in the town map data file.  It's currently# set to the return value of pbGetCurrentRegion, # and thus will change according to the current map's # MapPosition metadata setting.#def pbGetPokedexRegion   return pbGetCurrentRegion()enddef pbStartScene @sprites={}@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)@viewport.z=99999@sprites["pokedex"]=Window_Pokedex.new(   160,0,Graphics.width-160,Graphics.height)@sprites["pokedex"].viewport=@viewport@sprites["dexentry"]=IconSprite.new(0,0,@viewport)@sprites["dexentry"].setBitmap("Graphics/Pictures/dexentry")@sprites["dexentry"].visible=false@sprites["overlay"]=SpriteWrapper.new(@viewport)@sprites["overlay"].bitmap=Bitmap.new(Graphics.width,Graphics.height) pbSetSystemFont(@sprites["overlay"].bitmap)@sprites["overlay"].x=0@sprites["overlay"].y=0@sprites["overlay"].visible=false@sprites["iconback"]=IconWindow.new(0,0,160,160)@sprites["iconback"].viewport=@viewport@sprites["auxlist"]=Window_CommandPokemon.newEmpty(272,0,208,224,@viewport)@sprites["searchlist"]=Window_ComplexCommandPokemon.newEmpty(0,0,272,224,@viewport)@sprites["infowindow"]=Window_UnformattedTextPokemon.newWithSize("",0,160,160,160,@viewport)@sprites["messagebox"]=Window_UnformattedTextPokemon.new("") pbBottomLeftLines(@sprites["messagebox"],2)@sprites["messagebox"].letterbyletter=false@sprites["messagebox"].visible=false@sprites["messagebox"].viewport=@viewport@sprites["auxlist"].visible=false@sprites["searchlist"].visible=false addBackgroundPlane(@sprites,"searchbg","searchbg",@viewport)=begin#  Suggestion for changing the background depending on region.  You#  can change the line below with the following:if pbGetPokedexRegion()==-1# Using national Pokédex   addBackgroundPlane(@sprites,"background","pokedexbg_national",@viewport)elsif pbGetPokedexRegion()==0# Using regional Pokédex   addBackgroundPlane(@sprites,"background","pokedexbg_regional",@viewport)end=end addBackgroundPlane(@sprites,"background","pokedexbg",@viewport)@sprites["searchbg"].visible=false@sprites["icon"]=IconSprite.new(80,80,@viewport)@searchResults=false pbRefreshDexList($PokemonGlobal.pokedexIndex) pbFadeInAndShow(@sprites)enddef pbDexSearchCommands(commands,selitem,helptexts=nil) ret=-1 auxlist=@sprites["auxlist"] messagebox=@sprites["messagebox"] auxlist.commands=commands auxlist.index=selitem messagebox.text=helptexts ? helptexts[auxlist.index]:"" loop do   Graphics.update   Input.update   oldindex=auxlist.index   auxlist.update   if auxlist.index!=oldindex && helptexts     messagebox.text=helptexts[auxlist.index]   end   ifInput.trigger?(Input::B)     ret=selitem     break   end   ifInput.trigger?(Input::C)     ret=auxlist.index     break   endend@sprites["auxlist"].commands=[]Input.update return ret enddef pbCanAddForModeList?(mode,nationalSpecies)case mode   when0   returntrue   when1   return $Trainer.seen[nationalSpecies]   when2,3,4,5   return $Trainer.owned[nationalSpecies]endenddef pbCanAddForModeSearch?(mode,nationalSpecies)case mode   when0,1   return $Trainer.seen[nationalSpecies]   when2,3,4,5   return $Trainer.owned[nationalSpecies]endenddef pbGetDexList() dexlist=[] dexdata=pbOpenDexData region=pbGetPokedexRegion() regionalSpecies=pbAllRegionalSpecies(region)if regionalSpecies.length==1   # No regional species defined,   # use national Pokédex order   for i in1..PBSpecies.getCount   regionalSpecies.push(i)   endendfor i in1...regionalSpecies.length   nationalSpecies=regionalSpecies[i]   if pbCanAddForModeList?($PokemonGlobal.pokedexMode,nationalSpecies)   pbDexDataOffset(dexdata,nationalSpecies,33)   height=dexdata.fgetw   weight=dexdata.fgetw   # Pushing national species, name, height, weight, index number   dexlist.push([nationalSpecies,       PBSpecies.getName(nationalSpecies),height,weight,i])   endend dexdata.close return dexlist enddef pbRefreshDexList(index=0) dexlist=pbGetDexList()case $PokemonGlobal.pokedexMode   when0# Numerical mode   # Remove species not seen from the list   i=0; loop dobreakunless i<dexlist.length     breakif $Trainer.seen[dexlist[i][0]]     dexlist[i]=nil     i+=1   end   i=dexlist.length-1; loop dobreakunless i>=0     breakif!dexlist[i]|| $Trainer.seen[dexlist[i][0]]     dexlist[i]=nil     i-=1   end   dexlist.compact!   # Sort species in ascending order by    # index number, not national species   dexlist.sort!{|a,b| a[4]<=>b[4]}   when1# Alphabetical mode   dexlist.sort!{|a,b| a[1]<=>b[1]}   when2# Heaviest mode   dexlist.sort!{|a,b| b[3]<=>a[3]}   when3# Lightest mode   dexlist.sort!{|a,b| a[3]<=>b[3]}   when4# Tallest mode   dexlist.sort!{|a,b| b[2]<=>a[2]}   when5# Smallest mode   dexlist.sort!{|a,b| a[2]<=>b[2]}endif!@searchResults   @sprites["infowindow"].text=_ISPRINTF("SEEN: {1:d}\r\nOWN: {2:d}\r\nZ: MENU\r\nF5: SEARCH",$Trainer.pokedexSeen,$Trainer.pokedexOwned)else   @sprites["infowindow"].text=_INTL("X: BACK\r\nZ: MENU\r\nF5: SEARCH")end@dexlist=dexlist @sprites["pokedex"].commands=@dexlist@sprites["pokedex"].index=index @sprites["pokedex"].refresh iconspecies=@sprites["pokedex"].species iconspecies=0if!$Trainer.seen[iconspecies] setIconBitmap(pbPokemonBitmapFile(iconspecies,false))enddef pbSearchDexList(params) dexlist=pbGetDexList()ifparams[0]!=0# Filter by name   nameCommands=[       "",_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),       _INTL("JKL"),_INTL("MNO"),_INTL("PQR"),       _INTL("STU"),_INTL("VWX"),_INTL("YZ")   ]   scanNameCommand=nameCommands[params[0]].scan(/./)   dexlist=dexlist.find_all {|item|   firstChar=item[1][0,1]   next scanNameCommand.any?{|v|  v==firstChar }   }endifparams[1]!=0# Filter by color   dexlist=dexlist.find_all {|item|   dexdata.pos=76*(item[0]-1)+6   color=dexdata.fgetb   next color==params[1]-1   }endifparams[2]!=0||params[3]!=0# Filter by type   typeCommands=[   -1,0,1,2,3,4,5,6,7,8,   10,11,12,13,14,15,16,17   ]   stype1=typeCommands[params[2]]   stype2=typeCommands[params[3]]   dexlist=dexlist.find_all {|item|   dexdata.pos=76*(item[0]-1)+8   type1=dexdata.fgetb   type2=dexdata.fgetb   if stype1>=0<                      
    Este post foi editado por Laura Mendes em 29 de maio de 2015 16:34:42 ART"