• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Pokémon Starter Selection [ADVANCED VERSION]

The cool Treecko

Wild Treecko appeared!
146
Posts
3
Years
  • bbenne6f.png


    What does the script do?
    The Script will create a cool cutscene where the player is able to choose his Pokémon.

    Getting started:
    - Download the Sprites from https://www.mediafire.com/?a9bxepawiuvtcrq and put them into your game.
    - Copy the Script below into a new script section above Main, and call it "Pokemon Starter Selection"

    Code:
    #===============================================================================
    # * Advanced Starter Selection Script for Pokémon Essentials by shiney570.
    #
    # Current Version: V1.0
    # 
    # 
    # * If you have any questions or found a bug let me know.
    # * Contact: Skype: imatrix.wt ;  DeviantArt: shiney570
    #===============================================================================
    class PokemonStarterSelection
     
     
     STARTERLEVEL = 5 # Feel free to change the value for the Level of your Starters.
    
     # Whether you are using the Elite Battle System or not.
     USING_ELITE_BATTLE = true
     
     def initialize(pkmn1,pkmn2,pkmn3)
      
      @pkmn1=pkmn1; @pkmn2=pkmn2; @pkmn3=pkmn3
      
      @select=1
     
      @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
      @viewport.z=99999
      @sprites={}
      
      @sprites["black"]=IconSprite.new(0,0,@viewport)    
      @sprites["black"].setBitmap("Graphics/Pictures/black")
      @sprites["black"].opacity=0
      
      @sprites["bg"]=IconSprite.new(0,0,@viewport)    
      @sprites["bg"].setBitmap("Graphics/Pictures/bg")
      @sprites["bg"].opacity=0
      
      @sprites["ball_1"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_1"].setBitmap("Graphics/Pictures/ball1")
      @sprites["ball_1"].x=90
      @sprites["ball_1"].y=154
      @sprites["ball_1"].opacity=0
      
      @sprites["ball_2"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_2"].setBitmap("Graphics/Pictures/ball2")
      @sprites["ball_2"].x=206
      @sprites["ball_2"].y=147
      @sprites["ball_2"].opacity=0
          
      @sprites["ball_3"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_3"].setBitmap("Graphics/Pictures/ball3")
      @sprites["ball_3"].x=330
      @sprites["ball_3"].y=151
      @sprites["ball_3"].opacity=0
      
      @sprites["select"]=IconSprite.new(0,0,@viewport)
      @sprites["select"].setBitmap("Graphics/Pictures/select")
      @sprites["select"].opacity=0
      @sprites["select"].x=5000
      
      @sprites["pkmn_1"]=IconSprite.new(0,0,@viewport)
      @sprites["pkmn_1"].setBitmap(sprintf("Graphics/Battlers/%03d",@pkmn1))
      @sprites["pkmn_1"].bitmap=AnimatedBitmapWrapper.new(sprintf("Graphics/Battlers/%03d",@pkmn1)).bitmap if USING_ELITE_BATTLE
      @sprites["pkmn_1"].x=340
      @sprites["pkmn_1"].y=120
      @sprites["pkmn_1"].opacity=0
      @sprites["pkmn_1"].ox = 104/2
      @sprites["pkmn_1"].oy =  96/2
      @sprites["pkmn_1"].zoom_x=1.5
      @sprites["pkmn_1"].zoom_y=1.5
    
      @sprites["pkmn_2"]=IconSprite.new(0,0,@viewport)
      @sprites["pkmn_2"].setBitmap(sprintf("Graphics/Battlers/%03d",@pkmn2))
      @sprites["pkmn_2"].bitmap=AnimatedBitmapWrapper.new(sprintf("Graphics/Battlers/%03d",@pkmn2)).bitmap if USING_ELITE_BATTLE
      @sprites["pkmn_2"].x=410
      @sprites["pkmn_2"].y=120
      @sprites["pkmn_2"].opacity=0
      @sprites["pkmn_2"].ox = 108/2
      @sprites["pkmn_2"].oy = 100/2
      @sprites["pkmn_2"].zoom_x=1.5
      @sprites["pkmn_2"].zoom_y=1.5
      
      @sprites["pkmn_3"]=IconSprite.new(0,0,@viewport)
      @sprites["pkmn_3"].setBitmap(sprintf("Graphics/Battlers/%03d",@pkmn3))
      @sprites["pkmn_3"].bitmap=AnimatedBitmapWrapper.new(sprintf("Graphics/Battlers/%03d",@pkmn3)).bitmap if USING_ELITE_BATTLE
      @sprites["pkmn_3"].x=170
      @sprites["pkmn_3"].y=120-10
      @sprites["pkmn_3"].opacity=0
      @sprites["pkmn_3"].ox = 105/2
      @sprites["pkmn_3"].oy =  95/2
      @sprites["pkmn_3"].zoom_x=1.5
      @sprites["pkmn_3"].zoom_y=1.5
      
      @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
      @sprites["overlay"].opacity=0
      
      @data={}
      @data["pkmn_1"]=PokeBattle_Pokemon.new(@pkmn1,STARTERLEVEL)
      @data["pkmn_2"]=PokeBattle_Pokemon.new(@pkmn2,STARTERLEVEL)
      @data["pkmn_3"]=PokeBattle_Pokemon.new(@pkmn3,STARTERLEVEL)
      @pokemon=@data["pkmn_#{@select}"]    
      self.openscene
     end
     
     def openscene
      25.times do
        @sprites["black"].opacity+=10.2
        @sprites["bg"].opacity+=10.2
        @sprites["ball_1"].opacity+=10.2
        @sprites["ball_2"].opacity+=10.2
        @sprites["ball_3"].opacity+=10.2
        @sprites["select"].opacity+=10.2
        pbWait(1)
      end
      self.gettinginput
      self.input_action
     end
     
     def closescene
      25.times do
        @sprites["black"].opacity-=10.2
        @sprites["bg"].opacity-=10.2
        @sprites["ball_1"].opacity-=10.2
        @sprites["ball_2"].opacity-=10.2
        @sprites["ball_3"].opacity-=10.2
        @sprites["select"].opacity-=10.2
        @sprites["pkmn_1"].opacity-=10.2
        @sprites["pkmn_2"].opacity-=10.2
        @sprites["pkmn_3"].opacity-=10.2
        @sprite.opacity-=10.2
        @sprites["pkmn_#{@select}"].opacity-=10.2
        @sprites["overlay"].opacity-=10.2
        pbWait(1)
        end      
      end
     
     def gettinginput
      if Input.trigger?(Input::RIGHT)  && @select <3
        @select+=1
      end
      if Input.trigger?(Input::LEFT) && @select >1
        @select-=1
      end
      pokemon=[@pkmn1,@pkmn2,@pkmn3]
      @pkmn_array=pokemon
      if defined?($mouse)
        for i in 1...4
          if $mouse.over?(@sprites["ball_#{i}"]) && !$mouse.isStatic?
            @select=i
          end
        end
        if $mouse.leftClick?(@sprites["ball_#{@select}"])
          pressBall
        end
      end
      if Input.trigger?(Input::C) 
        pressBall
      end
     end
     
     def pressBall
      @sprites["select"].visible=false
      20.times do
        @sprites["pkmn_#{@select}"].opacity+=255/20
        @sprite.opacity+=255/20; @sprites["overlay"].opacity+=255/20
        @sprites["ball_#{@select}"].x-=4; @sprites["ball_#{@select}"].y-=4
        @sprites["ball_#{@select}"].zoom_x+=0.05; @sprites["ball_#{@select}"].zoom_y+=0.05
        for j in 1...4
          @sprites["ball_#{j}"].opacity-=10 if !(j==@select)
          if @select==2#
          @sprites["ball_1"].x-=1
          else#
          @sprites["ball_#{j}"].x-=2 if !(j==@select) && @select>1
        end#
      end      
      @sprites["bg"].opacity-=10
      pbWait(1)
      end
      @sprites["pkmn_#{@select}"].visible=true
      @sprite.visible=true
      pbSEPlay(sprintf("%03dCry",@pkmn_array[@select-1]))
      pbWait(20)
      if Kernel.pbConfirmMessage("Do you want #{@pokemon.name}?")
        pbAddPokemon(@pkmn_array[@select-1],STARTERLEVEL)
        $game_variables[7]=@select
        self.closescene
      else
        20.times do
          @sprites["pkmn_#{@select}"].opacity-=255/20
          @sprite.opacity-=255/20; @sprites["overlay"].opacity-=255/20
          @sprites["ball_#{@select}"].x+=4; @sprites["ball_#{@select}"].y+=4
          @sprites["ball_#{@select}"].zoom_x-=0.05; @sprites["ball_#{@select}"].zoom_y-=0.05
          for j in 1...4
            @sprites["ball_#{j}"].opacity+=10 if !(j==@select)
              if @select==2
              @sprites["ball_1"].x+=1
              else
              @sprites["ball_#{j}"].x+=2 if !(j==@select) && @select>1
            end
          end  
          @sprites["bg"].opacity+=10
          pbWait(1)
        end
          @sprites["pkmn_#{@select}"].visible=false
          @sprite.visible=false
          @sprites["select"].visible=true
        end
      end
        
     def input_action
      x=[5000,109,229,353]
      y=[5000,54 ,45 ,51 ]
      while $game_variables[7]==0
        Graphics.update
        Input.update
        @pokemon=@data["pkmn_#{@select}"]
        self.gettinginput
        @sprites["select"].x=x[@select]
        @sprites["select"].y=y[@select]
        self.text; self.typebitmap
      end
     end
    
     def text
      overlay= @sprites["overlay"].bitmap
      overlay.clear
      baseColor=Color.new(255, 255, 255)
      shadowColor=Color.new(0,0,0)
      pbSetSystemFont(@sprites["overlay"].bitmap)
      name_x=[5000,273,343,103] # -70
      textos=[]
      textos.push([_INTL("{1}", @pokemon.name),name_x[@select],10,false,baseColor,shadowColor])
      pbDrawTextPositions(overlay,textos)
     end
    
     def typebitmap
      
      @sprite=Sprite.new(@viewport)
      @sprite.bitmap=Bitmap.new(194,28)
      @sprite.y=171
      
      @sprite.opacity=0
      @bitmap=BitmapCache.load_bitmap("Graphics/Pictures/types")
      
      @type1rect=Rect.new(0,@pokemon.type1*28,64,28)
      @type2rect=Rect.new(0,@pokemon.type2*28,64,28)
      
      typex=[5000,-120,-50,-285]
      
      if @[email protected]
        @sprite.x=402+typex[@select]
        @sprite.bitmap.blt(0,0,@bitmap,@type1rect)
      else
        @sprite.x=370+typex[@select]
        @sprite.bitmap.blt(0,0,@bitmap,@type1rect)
        @sprite.bitmap.blt(66,0,@bitmap,@type2rect)
      end
     end
    end

    If you are using the Elite Battle 2015 System then set USING_ELITE_BATTLE (in line 16) to true!

    You can change the Level of the Starter Pokémon by editing the line (In this case, the Level for the Starters is 5.) :
    Code:
    STARTERLEVEL = 5

    To Call the Script use:
    PokemonStarterSelection.new(
    1,4,7)

    To change the Pokémon in the Starter Selection, change the three values to the number of the Pokémon in the pokemon.txt file.
    so it's build like that: PokemonStarterSelection.new(PokémonNumber1,PokémonNumber2,PokémonNumber3)

    Example:
    PokemonStarterSelection.new(
    1,155,258)

    to choose between bulbasaur(1),cyndaquil(155) and mudkip(258).

    NOTE: This script does also include mouse inputs which means that it's compatible with Luka S.J's mouse module. If you are not using it you won't get any errors either.

    If you found bug or need support feel free to contact me!

    this works really good with all versions till v18.1 [haven't checked with v19] but how do i make an if condition by which events can be manipulated based on which starter they chose?
     
    8
    Posts
    3
    Years
    • Seen Jan 29, 2024
    Hi,

    This script is updated to v19. Now instead of the id of the Pokemon use colon then the internal name of the Pokemon.
    Example: PokemonStarterSelection.new(:METAGROSS,:SALAMENCE,:RAYQUAZA)

    Code:
    #===============================================================================
    # * Advanced Starter Selection Script for Pokémon Essentials by shiney570.
    #
    # Current Version: V1.0
    # 
    # 
    # * If you have any questions or found a bug let me know.
    # * Contact: Skype: imatrix.wt ;  DeviantArt: shiney570
    #===============================================================================
    class PokemonStarterSelection
     
     
     STARTERLEVEL = 5 # Feel free to change the value for the Level of your Starters.
    
     # Whether you are using the Elite Battle System or not.
     USING_ELITE_BATTLE = false
     
     def initialize(pkmn1,pkmn2,pkmn3)
      
      @pkmn1=pkmn1; @pkmn2=pkmn2; @pkmn3=pkmn3
      
      @select=1
     
      @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
      @viewport.z=99999
      @sprites={}
      
      @sprites["black"]=IconSprite.new(0,0,@viewport)    
      @sprites["black"].setBitmap("Graphics/Pictures/black")
      @sprites["black"].opacity=0
      
      @sprites["bg"]=IconSprite.new(0,0,@viewport)    
      @sprites["bg"].setBitmap("Graphics/Pictures/bg")
      @sprites["bg"].opacity=0
      
      @sprites["ball_1"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_1"].setBitmap("Graphics/Pictures/ball1")
      @sprites["ball_1"].x=90
      @sprites["ball_1"].y=154
      @sprites["ball_1"].opacity=0
      
      @sprites["ball_2"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_2"].setBitmap("Graphics/Pictures/ball2")
      @sprites["ball_2"].x=206
      @sprites["ball_2"].y=147
      @sprites["ball_2"].opacity=0
          
      @sprites["ball_3"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_3"].setBitmap("Graphics/Pictures/ball3")
      @sprites["ball_3"].x=330
      @sprites["ball_3"].y=151
      @sprites["ball_3"].opacity=0
      
      @sprites["select"]=IconSprite.new(0,0,@viewport)
      @sprites["select"].setBitmap("Graphics/Pictures/select")
      @sprites["select"].opacity=0
      @sprites["select"].x=5000
      
      @sprites["pkmn_1"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_1"].setSpeciesBitmap(@pkmn1)
      @sprites["pkmn_1"].x=340
      @sprites["pkmn_1"].y=120
      @sprites["pkmn_1"].opacity=0
      @sprites["pkmn_1"].ox = 104/2
      @sprites["pkmn_1"].oy =  96/2
      @sprites["pkmn_1"].zoom_x=1.5
      @sprites["pkmn_1"].zoom_y=1.5
    
      @sprites["pkmn_2"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_2"].setSpeciesBitmap(@pkmn2)
      @sprites["pkmn_2"].x=410
      @sprites["pkmn_2"].y=120
      @sprites["pkmn_2"].opacity=0
      @sprites["pkmn_2"].ox = 108/2
      @sprites["pkmn_2"].oy = 100/2
      @sprites["pkmn_2"].zoom_x=1.5
      @sprites["pkmn_2"].zoom_y=1.5
      
      @sprites["pkmn_3"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_3"].setSpeciesBitmap(@pkmn3)
      @sprites["pkmn_3"].x=170
      @sprites["pkmn_3"].y=120-10
      @sprites["pkmn_3"].opacity=0
      @sprites["pkmn_3"].ox = 105/2
      @sprites["pkmn_3"].oy =  95/2
      @sprites["pkmn_3"].zoom_x=1.5
      @sprites["pkmn_3"].zoom_y=1.5
      
      @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
      @sprites["overlay"].opacity=0
      
      @data={}
      @data["pkmn_1"]=Pokemon.new(@pkmn1,STARTERLEVEL)
      @data["pkmn_2"]=Pokemon.new(@pkmn2,STARTERLEVEL)
      @data["pkmn_3"]=Pokemon.new(@pkmn3,STARTERLEVEL)
      @pokemon=@data["pkmn_#{@select}"]
      self.openscene
     end
    
     def openscene
      25.times do
        @sprites["black"].opacity+=10.2
        @sprites["bg"].opacity+=10.2
        @sprites["ball_1"].opacity+=10.2
        @sprites["ball_2"].opacity+=10.2
        @sprites["ball_3"].opacity+=10.2
        @sprites["select"].opacity+=10.2
        pbWait(1)
      end
      self.gettinginput
      self.input_action
     end
     
     def closescene
    begin   
      25.times do
        @sprites["black"].opacity-=10.2
        @sprites["bg"].opacity-=10.2
        @sprites["ball_1"].opacity-=10.2
        @sprites["ball_2"].opacity-=10.2
        @sprites["ball_3"].opacity-=10.2
        @sprites["select"].opacity-=10.2
        @sprites["pkmn_1"].opacity-=10.2
        @sprites["pkmn_2"].opacity-=10.2
        @sprites["pkmn_3"].opacity-=10.2
        @sprite.opacity-=10.2
        @sprites["pkmn_#{@select}"].opacity-=10.2
        @sprites["overlay"].opacity-=10.2
        pbWait(1)
       end 
    end  
      end
    
     def gettinginput
      if Input.trigger?(Input::RIGHT)  && @select <3
        @select+=1
      end
      if Input.trigger?(Input::LEFT) && @select >1
        @select-=1
      end
      pokemon=[@pkmn1,@pkmn2,@pkmn3]
      @pkmn_array=pokemon
      if defined?($mouse)
        for i in 1...4
          if $mouse.over?(@sprites["ball_#{i}"]) && !$mouse.isStatic?
            @select=i
          end
        end
        if $mouse.leftClick?(@sprites["ball_#{@select}"])
          pressBall
        end
      end
      if Input.trigger?(Input::USE)
        pressBall
      end
     end
     
     def pressBall
      @sprites["select"].visible=false
      20.times do
        @sprites["pkmn_#{@select}"].opacity+=255/20
        @sprite.opacity+=255/20; @sprites["overlay"].opacity+=255/20
        @sprites["ball_#{@select}"].x-=4; @sprites["ball_#{@select}"].y-=4
        @sprites["ball_#{@select}"].zoom_x+=0.05; @sprites["ball_#{@select}"].zoom_y+=0.05
        for j in 1...4
          @sprites["ball_#{j}"].opacity-=10 if !(j==@select)
          if @select==2
            @sprites["ball_1"].x-=1
          else
            @sprites["ball_#{j}"].x-=2 if !(j==@select) && @select>1
          end
        end      
      @sprites["bg"].opacity-=10
      pbWait(1)
      end
    
      # Play Cry
      GameData::Species.play_cry_from_pokemon(@pokemon)
      
      pbWait(20)
      if pbConfirmMessage("Do you want #{@pokemon.name}?")
        pbAddPokemon(@pkmn_array[@select-1],STARTERLEVEL)
        $game_variables[7]=@select
        self.closescene
      else
        20.times do
          @sprites["pkmn_#{@select}"].opacity-=255/20
          @sprite.opacity-=255/20; @sprites["overlay"].opacity-=255/20
          @sprites["ball_#{@select}"].x+=4; @sprites["ball_#{@select}"].y+=4
          @sprites["ball_#{@select}"].zoom_x-=0.05; @sprites["ball_#{@select}"].zoom_y-=0.05
          for j in 1...4
            @sprites["ball_#{j}"].opacity+=10 if !(j==@select)
              if @select==2
              @sprites["ball_1"].x+=1
              else
              @sprites["ball_#{j}"].x+=2 if !(j==@select) && @select>1
            end
          end  
          @sprites["bg"].opacity+=10
          pbWait(1)
        end
        @sprites["select"].visible=true
      end
     end
        
     def input_action
      x=[5000,109,229,353]
      y=[5000,54 ,45 ,51 ]
      while $game_variables[7]==0
        Graphics.update
        Input.update
        @pokemon=@data["pkmn_#{@select}"]
        self.gettinginput
        @sprites["select"].x=x[@select]
        @sprites["select"].y=y[@select]
        self.text; self.typebitmap
      end
     end
    
     def text
      overlay= @sprites["overlay"].bitmap
      overlay.clear
      baseColor=Color.new(255, 255, 255)
      shadowColor=Color.new(0,0,0)
      pbSetSystemFont(@sprites["overlay"].bitmap)
      name_x=[5000,273,343,103] # -70
      textos=[]
      textos.push([_INTL("{1}", @pokemon.name),name_x[@select],10,false,baseColor,shadowColor])
      pbDrawTextPositions(overlay,textos)
     end
    
     def typebitmap
      @sprite=Sprite.new(@viewport)
      @sprite.bitmap=Bitmap.new(194,28)
      @sprite.y=171
      
      @sprite.opacity=0
      
      @typebitmap    = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
      type1_number = GameData::Type.get(@pokemon.type1).id_number
      type2_number = GameData::Type.get(@pokemon.type2).id_number
      type1rect = Rect.new(0, type1_number * 28, 64, 28)
      type2rect = Rect.new(0, type2_number * 28, 64, 28)
      
      typex=[5000,-120,-50,-285]
      
      if @[email protected]
        @sprite.x=402+typex[@select]
        @sprite.bitmap.blt(0,0,@typebitmap.bitmap,type1rect)
      else
        @sprite.x=370+typex[@select]
        @sprite.bitmap.blt(0,0,@typebitmap.bitmap,type1rect)
        @sprite.bitmap.blt(66,0,@typebitmap.bitmap,type2rect)
      end
     end
    end

    I am new in Essentials, so if someone can make it better, please do.
     
    68
    Posts
    3
    Years
    • Seen today
    I have updated the script to V18.1 thanks to the instructions, but something strange is happening. When I call the script with an event, the background images appear for a second and vanish again. The starter sprites won't show up and I can't select anything either. I think this is happening because of EBDX and I will have to use the traditional starter selection if I can't solve it.
     
    Last edited:

    Boxply

    Decently Experienced Ruby Coder
    21
    Posts
    2
    Years
    • He
    • Seen Aug 27, 2021
    The updates v19 script works perfectly fine, with EBDX that is... without it, the area where the type (as in grass water and fire) overlap the pokemon and the name of the pokemon isn't in the correct place. Perhaps a UI glitch?
     
    2
    Posts
    3
    Years
    • Seen Mar 17, 2022
    i need help.. this always comes up when i talk to the npc

    [2021-08-07 23:18:57 +0200]
    [Pokémon Essentials version 19.1]
    [v19.1 Hotfixes 1.0.3]

    Exception: RuntimeError
    Message: Script error in event 5 (coords 14,10), map 2 (Lappet Town):
    Exception: NameError
    Message: uninitialized constant PokemonStarterSelection::AnimatedBitmapWrapper

    ***Full script:
    PokemonStarterSelection.new(
    1,155,258)


    Backtrace:
    371:Pokemon selection:61:in `initialize'
    (eval):1:in `new'
    (eval):1:in `execute_script'
    033:Interpreter:137:in `eval'
    033:Interpreter:137:in `execute_script'
    034:Interpreter_Commands:1024:in `command_355'
    034:Interpreter_Commands:116:in `execute_command'
    033:Interpreter:127:in `block in update'
    033:Interpreter:87:in `loop'
    033:Interpreter:87:in `update'


    Backtrace:
    033:Interpreter:189:in `rescue in execute_script'
    033:Interpreter:135:in `execute_script'
    034:Interpreter_Commands:1024:in `command_355'
    034:Interpreter_Commands:116:in `execute_command'
    033:Interpreter:127:in `block in update'
    033:Interpreter:87:in `loop'
    033:Interpreter:87:in `update'
    032:Scene_Map:157:in `block in update'
    032:Scene_Map:155:in `loop'
    032:Scene_Map:155:in `update'

    =================

    [2021-08-08 02:20:26 +0200]
    [Pokémon Essentials version 19.1]
    [Generation 8 Project v1.1.0]
    [v19.1 Hotfixes 1.0.3]
    [EBDX v1.2.1]

    Exception: NoMethodError
    Message: undefined method `[]' for nil:NilClass

    Backtrace:
    265:Player_Pokedex:272:in `number_battled'
    265:Player_Pokedex:291:in `number_battled_shiny_tier'
    232:Overworld_WildEncounters:404:in `pbGenerateWildPokemon'
    230:Overworld_BattleStarting:251:in `block in pbWildBattleCore'
    230:Overworld_BattleStarting:242:in `each'
    230:Overworld_BattleStarting:242:in `pbWildBattleCore'
    230:Overworld_BattleStarting:323:in `pbWildBattle'
    [Elite Battle: DX] EBDX Randomizer.rb:274:in `pbWildBattle'
    [Elite Battle: DX] Class Overrides.rb:66:in `pbWildBattle'
    215:Overworld:206:in `pbBattleOnStepTaken'
     
    12
    Posts
    2
    Years
    • Seen Sep 11, 2021
    Hi,

    This script is updated to v19. Now instead of the id of the Pokemon use colon then the internal name of the Pokemon.
    Example: PokemonStarterSelection.new(:METAGROSS,:SALAMENCE,:RAYQUAZA)



    I am new in Essentials, so if someone can make it better, please do.

    Thanks, I really needed this.
     
    8
    Posts
    2
    Years
    • Seen Dec 25, 2023
    Hi all. Will freely admit, signed up for this... and because having an error I'm not sure how to solve. I've tried what I thought would work... but kept resulting in errors. So... even if its been a few months, just wondering if anyone has had similar problems?

    Edit;
    So, looked through the notes and the posts, and managed to get to the screen with the balls... and then this popped up.

    [Pokémon Essentials version 19.1]

    Exception: RuntimeError
    Message: Script error in event 5 (coords 5,6), map 86 (Professor Dogwood's Lab):
    Exception: NameError
    Message: uninitialized constant PokemonStarterSelection::BitmapCache

    ***Full script:
    PokemonStarterSelection.new(:MACHOP,:ARON,:TOGEPI)

    Backtrace:
    369:Starter Selection:226:in `typebitmap'
    369:Starter Selection:203:in `input_action'
    369:Starter Selection:99:in `openscene'
    369:Starter Selection:85:in `initialize'
    (eval):1:in `new'
    (eval):1:in `execute_script'
    033:Interpreter:137:in `eval'
    033:Interpreter:137:in `execute_script'
    034:Interpreter_Commands:352:in `command_111'
    034:Interpreter_Commands:29:in `execute_command'


    Backtrace:
    033:Interpreter:189:in `rescue in execute_script'
    033:Interpreter:135:in `execute_script'
    034:Interpreter_Commands:352:in `command_111'
    034:Interpreter_Commands:29:in `execute_command'
    033:Interpreter:127:in `block in update'
    033:Interpreter:87:in `loop'
    033:Interpreter:87:in `update'
    032:Scene_Map:157:in `block in update'
    032:Scene_Map:155:in `loop'
    032:Scene_Map:155:in `update'
     
    Last edited:
    1
    Posts
    1
    Years
    • Seen Nov 24, 2022
    Help trying this on v20.1 essentials and getting an error, not sure if there is a more updated version of this.

    Spoiler:
     
    3
    Posts
    1
    Years
    • Seen May 30, 2023
    For @SmiCat or others looking to get this working on Essentials v20.1

    Here is my script. I do have some things custom positioned as I am using a different background, but play with X and Y coordinates for each sprite to make it work for you.

    Main issue was with the way displaying the types was built. I will try to reimplement that soon.

    Mine works with Pokemon name, not ID number. Be sure to put a colon in front of the name.

    Example of function call:
    Code:
    PokemonStarterSelection.new(:BULBASAUR,:CHARMANDER,:SQUIRTLE)

    Code:
    #===============================================================================
    # * Advanced Starter Selection Script for Pokémon Essentials by shiney570.
    #
    # Current Version: V1.0
    # 
    # 
    # * If you have any questions or found a bug let me know.
    # * Contact: Skype: imatrix.wt ;  DeviantArt: shiney570
    #===============================================================================
    class PokemonStarterSelection
     
     
     STARTERLEVEL = 5 # Feel free to change the value for the Level of your Starters.
    
     # Whether you are using the Elite Battle System or not.
     USING_ELITE_BATTLE = false
     
     def initialize(pkmn1,pkmn2,pkmn3)
      
      @pkmn1=pkmn1; @pkmn2=pkmn2; @pkmn3=pkmn3
      
      @select=1
     
      @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
      @viewport.z=99999
      @sprites={}
      
      @sprites["black"]=IconSprite.new(0,0,@viewport)    
      @sprites["black"].setBitmap("Graphics/Pictures/black")
      @sprites["black"].opacity=0
      
      @sprites["bg"]=IconSprite.new(0,0,@viewport)    
      @sprites["bg"].setBitmap("Graphics/Pictures/bg")
      @sprites["bg"].x=5
      @sprites["bg"].y=100
      @sprites["bg"].opacity=0
      
      @sprites["ball_1"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_1"].setBitmap("Graphics/Pictures/ball1")
      @sprites["ball_1"].x=70
      @sprites["ball_1"].y=154
      @sprites["ball_1"].opacity=0
      
      @sprites["ball_2"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_2"].setBitmap("Graphics/Pictures/ball2")
      @sprites["ball_2"].x=206
      @sprites["ball_2"].y=147
      @sprites["ball_2"].opacity=0
          
      @sprites["ball_3"]=IconSprite.new(0,0,@viewport)
      @sprites["ball_3"].setBitmap("Graphics/Pictures/ball3")
      @sprites["ball_3"].x=350
      @sprites["ball_3"].y=151
      @sprites["ball_3"].opacity=0
      
      @sprites["select"]=IconSprite.new(0,0,@viewport)
      @sprites["select"].setBitmap("Graphics/Pictures/select")
      @sprites["select"].opacity=0
      @sprites["select"].x=5000
      
      @sprites["pkmn_1"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_1"].setSpeciesBitmap(@pkmn1)
      @sprites["pkmn_1"].x=340
      @sprites["pkmn_1"].y=120
      @sprites["pkmn_1"].zoom_x=1.5
      @sprites["pkmn_1"].zoom_y=1.5
      @sprites["pkmn_1"].opacity=0
    
      @sprites["pkmn_2"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_2"].setSpeciesBitmap(@pkmn2)
      @sprites["pkmn_2"].x=410
      @sprites["pkmn_2"].y=120
      @sprites["pkmn_2"].zoom_x=1.5
      @sprites["pkmn_2"].zoom_y=1.5
      @sprites["pkmn_2"].opacity=0
      
      @sprites["pkmn_3"]=PokemonSprite.new(@viewport)
      @sprites["pkmn_3"].setSpeciesBitmap(@pkmn3)
      @sprites["pkmn_3"].x=150
      @sprites["pkmn_3"].y=120
      @sprites["pkmn_3"].zoom_x=1.5
      @sprites["pkmn_3"].zoom_y=1.5
      @sprites["pkmn_3"].opacity=0
      
      @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
      @sprites["overlay"].opacity=0
      
      @data={}
      @data["pkmn_1"]=Pokemon.new(@pkmn1,STARTERLEVEL)
      @data["pkmn_2"]=Pokemon.new(@pkmn2,STARTERLEVEL)
      @data["pkmn_3"]=Pokemon.new(@pkmn3,STARTERLEVEL)
      @pokemon=@data["pkmn_#{@select}"]
      self.openscene
     end
    
     def openscene
      25.times do
        @sprites["black"].opacity+=10.2
        @sprites["bg"].opacity+=10.2
        @sprites["ball_1"].opacity+=10.2
        @sprites["ball_2"].opacity+=10.2
        @sprites["ball_3"].opacity+=10.2
        @sprites["select"].opacity+=10.2
        pbWait(1)
      end
      self.gettinginput
      self.input_action
     end
     
     def closescene
        begin   
          25.times do
            @sprites["black"].opacity-=10.2
            @sprites["bg"].opacity-=10.2
            @sprites["ball_1"].opacity-=10.2
            @sprites["ball_2"].opacity-=10.2
            @sprites["ball_3"].opacity-=10.2
            @sprites["select"].opacity-=10.2
            @sprites["pkmn_1"].opacity-=10.2
            @sprites["pkmn_2"].opacity-=10.2
            @sprites["pkmn_3"].opacity-=10.2
            @sprites["pkmn_#{@select}"].opacity-=10.2
            @sprites["overlay"].opacity-=10.2
            pbWait(1)
           end 
        end  
      end
    
     def gettinginput
      if Input.trigger?(Input::RIGHT)  && @select <3
        @select+=1
      end
      if Input.trigger?(Input::LEFT) && @select >1
        @select-=1
      end
      pokemon=[@pkmn1,@pkmn2,@pkmn3]
      @pkmn_array=pokemon
      if Input.trigger?(Input::USE)
        pressBall
      end
     end
     
     def pressBall
      @sprites["select"].visible=false
      20.times do
        @sprites["pkmn_#{@select}"].opacity+=255/20
        @sprites["overlay"].opacity+=255/20
        @sprites["ball_#{@select}"].x-=4; @sprites["ball_#{@select}"].y-=4
        @sprites["ball_#{@select}"].zoom_x+=0.05; @sprites["ball_#{@select}"].zoom_y+=0.05
        for j in 1...4
          @sprites["ball_#{j}"].opacity-=10 if !(j==@select)
          if @select==2
            @sprites["ball_1"].x-=1
          else
            @sprites["ball_#{j}"].x-=2 if !(j==@select) && @select>1
          end
        end      
      @sprites["bg"].opacity-=10
      pbWait(1)
      end
    
      # Play Cry
      GameData::Species.play_cry_from_pokemon(@pokemon)
      
      pbWait(20)
      if pbConfirmMessage("Do you want #{@pokemon.name}?")
        pbAddPokemon(@pkmn_array[@select-1],STARTERLEVEL)
        $game_variables[7]=@select
        self.closescene
      else
        20.times do
          @sprites["pkmn_#{@select}"].opacity-=255/20
          @sprites["overlay"].opacity-=255/20
          @sprites["ball_#{@select}"].x+=4; @sprites["ball_#{@select}"].y+=4
          @sprites["ball_#{@select}"].zoom_x-=0.05; @sprites["ball_#{@select}"].zoom_y-=0.05
          for j in 1...4
            @sprites["ball_#{j}"].opacity+=10 if !(j==@select)
              if @select==2
              @sprites["ball_1"].x+=1
              else
              @sprites["ball_#{j}"].x+=2 if !(j==@select) && @select>1
            end
          end  
          @sprites["bg"].opacity+=10
          pbWait(1)
        end
        @sprites["select"].visible=true
      end
     end
        
     def input_action
      x=[5000,90,229,370]
      y=[5000,51 ,45 ,51 ]
      while $game_variables[7]==0
        Graphics.update
        Input.update
        @pokemon=@data["pkmn_#{@select}"]
        self.gettinginput
        @sprites["select"].x=x[@select]
        @sprites["select"].y=y[@select]
        self.text
      end
     end
    
     def text
      overlay= @sprites["overlay"].bitmap
      overlay.clear
      baseColor=Color.new(255, 255, 255)
      shadowColor=Color.new(0,0,0)
      pbSetSystemFont(@sprites["overlay"].bitmap)
      name_x=[5000,290,360,100] # -70
      textos=[]
      textos.push([_INTL("{1}", @pokemon.name),name_x[@select],10,false,baseColor,shadowColor])
      pbDrawTextPositions(overlay,textos)
     end
    
    end
     
    Back
    Top