• 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
  • Age 28
  • 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
  • Age 35
  • Seen yesterday
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
  • Age 17
  • 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
  • Age 24
  • 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
  • Age 17
  • 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
  • Age 29
  • 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
  • Age 25
  • 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
  • Age 33
  • 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