The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Game Development > Pokémon Essentials
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Pokémon Essentials All questions and discussion about Pokémon Essentials, the Pokémon game kit for RPG Maker XP, go in here. Also contains links to the latest downloads and the Essentials Wiki.


Advertise here

Reply
Click here to go to the first staff post in this thread.  
Thread Tools
  #1    
Old March 21st, 2014, 11:16 AM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm

Advertise here
Hi, I apologize ahead of time if this isn't the right place to make script requests for Essentials, because I don't see it anywhere on this board, and this isn't really suited for the "resource request" topic (isn't it?).

Anyway, I would like to request a new "summary-like" or display type of script that would serve as a feature of the Pokegear. In my game, the screen would be called the "PokeExaminer," and it's purpose is to show the player how many Effort Points a species has, the value of their happiness, and also preferred berry flavor.

I am fully aware of the EV/IV screen script listed on PE's Wiki, but that script is not only poorly worded, the layout isn't desirable for me and I don't want this part of the summary screen, and instead accessed from the Pokegear.

As I can explain all of this better through pictures than with words, let me show you the following mock-ups to illustrate precisely what I want:


Basically, though my custom-made gear, the player would select a button that would go to the "PokeExaminer" screen.


This is the mock-up for the examiner screen itself. I generally want the same layout, similar to that of a typical summary screen. You don't need to provide a graphic for the background of this scene, by the way. I'll do that myself.

The pink bubbled numbers correlate to the following notes:

Spoiler:
1) Disregarding the incorrect font, I would like the "Pokémon Examiner" title to go here, similar to way titles are displayed on summary screens. Speaking of the font, I basically just want it to be the default font used in any other scene in the game, nothing specific.

2) Just like most summary screens, this would display the name of the Pokemon, the ball it was captured in, and its level.

3) Displays the battler sprite of the Pokemon selected. I'd prefer if the image was flipped like this through the script, but if you don't want to, that's fine.

4) This is the "Flavor Preference" Area. If you would rather have the "flavor preference" be part of the background graphic as oppose to script-generated text that is fine. The thing that matters is only that the strings "Like:" and "Dislike:" shows the Pokemon's preferred/disliked food flavors, as dependant on nature. Info on the Matter

5) This is the part of the screen that shows the Pokemon's current stats (not base stats), including happiness at the bottom. If there is a way to abbreviate each stat field like I have shown, that would be preferred, to save space for the extra information.

6) The green numbers that I want displayed should represent the Pokemon's effort points within that stat. The black numbers simply represent the total amount, with that effort point added.

7) The colored "+10%" and "-10%" represent the respective boosts and decrease given by the Pokemon's nature. I'd prefer the same colors as illustrated, and this data positioned in front of the one that shows EVs

8) For any stat that has no boost or EVs, I'd prefer nothing shown beside that stat. If you still add a "+0" or something beside it for your own reasons, however, I won't mind.

9) This field displays the value for the Pokemon's happiness, with everything highlighted in red.



If anyone could make this script for me, that would be awesome and would be greatly appreciated. If you think this is a hefty task or something I can do myself, I understand as well. Keep in mind, however, that because I'm somewhat inept when it comes to scripting, I would love to receive help from someone to make this happen.

Thanks!
Reply With Quote
  #2    
Old March 21st, 2014, 01:56 PM
Aquachu's Avatar
Aquachu
 
Join Date: Feb 2014
I would have no idea how to do this, but it sounds like a great idea. You wouldn't mind if I borrowed it, would you?
Reply With Quote
  #3    
Old March 21st, 2014, 03:58 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Quote:
Originally Posted by Aquachu View Post
I would have no idea how to do this, but it sounds like a great idea. You wouldn't mind if I borrowed it, would you?
I wouldn't mind at all.
Reply With Quote
  #4    
Old March 30th, 2014, 06:18 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Bumping on the account that this is still pertinent.
Reply With Quote
  #5    
Old March 31st, 2014, 02:56 AM
Nickalooose
--------------------
 
Join Date: Mar 2008
Gender: Female
I've seen a similar request like this somewhere else and the advice given was to use the PokéGear script, I think... However, everything you want is already made, the Summary screen already does this... Take a page from that (literally; pageone, pagetwo, pagethree, pagefour) and remove things such as descriptions, abilities and moves etc.

All you need to do is change the positions of things and the titles, text and coloring.

You don't need scripting knowledge to do things like this just the know-how, of functions such as:
ctrl+shift+f
ctrl+f
ctrl+v
ctrl+c

Have a go at it yourself, when you've tried everything... Come back... Show us what you've done and we will help you thereon... Remember, just because an Apple produces juice, doesn't mean it has to be squeezed.
Reply With Quote
  #6    
Old April 6th, 2014, 10:52 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
So I decided to take Nickalooose's advice on this, even deciding to change things around with it by displaying the breeding group of a Pokemon (for this I copied a bit from FL's advanced Pokedex Script. I guess I'll credit him for it?).


Unfortunately, I don't know whether it works or not because I can't even access the scene from the Pokegear. During gameplay, I see the option for the examiner displayed on the menu, but it takes me to the Jukebox instead, for some reason. The jukebox app, in turn, does nothing.

I'll post both the edited PokemonPokegear and the new PokemonExaminer script I have for you guys to pick apart, because I'm not sure what I'm doing wrong, exactly.

PokemonPokegear:
Code:
class PokegearButton < SpriteWrapper
  attr_reader :index
  attr_reader :name
  attr_accessor :selected

  def initialize(x,y,name="",index=0,viewport=nil)
    super(viewport)
    @index=index
    @name=name
    @selected=false
    fembutton=pbResolveBitmap(sprintf("Graphics/Pictures/pokegearButtonf"))
    if $Trainer.gender==1 && fembutton
      @button=AnimatedBitmap.new("Graphics/Pictures/pokegearButtonf")
    else
      @button=AnimatedBitmap.new("Graphics/Pictures/pokegearButton")
    end
    @contents=BitmapWrapper.new(@button.width,@button.height)
    self.bitmap=@contents
    self.x=x
    self.y=y
    update
  end

  def dispose
    @button.dispose
    @contents.dispose
    super
  end

  def refresh
    self.bitmap.clear
    self.bitmap.blt(0,0,@button.bitmap,Rect.new(0,0,@button.width,@button.height))
    pbSetSystemFont(self.bitmap)
    textpos=[          # Name is written on both unselected and selected buttons
       [@name,self.bitmap.width/349,93,2,Color.new(248,248,248),Color.new(40,40,40)],
       [@name,self.bitmap.width/2,62,2,Color.new(248,248,248),Color.new(40,40,40)]
    ]
    pbDrawTextPositions(self.bitmap,textpos)
    icon=sprintf("Graphics/Pictures/pokegear"+@name)
    imagepos=[         # Icon is put on both unselected and selected buttons
       [icon,64,64,0,0,-1,-1],
       [icon,64,192,0,0,-1,-1],
       [icon,224,192,0,0,-1,-1],
       [icon,224,192,0,0,-1,-1],
    ]
    pbDrawImagePositions(self.bitmap,imagepos)
  end

  def update
    if self.selected
      self.src_rect.set(0,self.bitmap.height/2,self.bitmap.width,self.bitmap.height/2)
    else
      self.src_rect.set(0,0,self.bitmap.width,self.bitmap.height/2)
    end
    refresh
    super
  end
end



#===============================================================================
# - Scene_Pokegear
#-------------------------------------------------------------------------------
# Modified By Harshboy
# Modified by Peter O.
# Also Modified By OblivionMew
# Overhauled by Maruno
#===============================================================================
class Scene_Pokegear
  #-----------------------------------------------------------------------------
  # initialize
  #-----------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #-----------------------------------------------------------------------------
  # main
  #-----------------------------------------------------------------------------
  def main
    commands=[]
# OPTIONS - If you change these, you should also change update_command below.
    @cmdMap=-1
    @cmdPhone=-1
    @cmdJukebox=-1
    @cmdExaminer=-1
    commands[@cmdMap=commands.length]=_INTL("Map")
    commands[@cmdPhone=commands.length]=_INTL("Phone") if $PokemonGlobal.phoneNumbers &&
                                                          $PokemonGlobal.phoneNumbers.length>0
    commands[@cmdJukebox=commands.length]=_INTL("Jukebox")
    commands[@cmdJukebox=commands.length]=_INTL("Examiner")

    @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z=99999
    @button=AnimatedBitmap.new("Graphics/Pictures/pokegearButton")
    @sprites={}
    @sprites["background"] = IconSprite.new(0,0)
    femback=pbResolveBitmap(sprintf("Graphics/Pictures/pokegearbgf"))
    if $Trainer.gender==1 && femback
      @sprites["background"].setBitmap("Graphics/Pictures/pokegearbgf")
    else
      @sprites["background"].setBitmap("Graphics/Pictures/pokegearbg")
    end
    @sprites["command_window"] = Window_CommandPokemon.new(commands,160)
    @sprites["command_window"].index = @menu_index
    @sprites["command_window"].x = Graphics.width
    @sprites["command_window"].y = 0
    for i in 0...commands.length
      x=118
      y=196 - (commands.length*24) + (i*48)
      @sprites["button#{i}"]=PokegearButton.new(x,y,commands[i],i,@viewport)
      @sprites["button#{i}"].selected=(i==@sprites["command_window"].index)
      @sprites["button#{i}"].update
    end
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    pbDisposeSpriteHash(@sprites)
  end
  #-----------------------------------------------------------------------------
  # update the scene
  #-----------------------------------------------------------------------------
  def update
    pbUpdateSpriteHash(@sprites)
    for i in 0...@sprites["command_window"].commands.length
      sprite=@sprites["button#{i}"]
      sprite.selected=(i==@sprites["command_window"].index) ? true : false
    end
    #update command window and the info if it's active
    if @sprites["command_window"].active
      update_command
      return
    end
  end
  #-----------------------------------------------------------------------------
  # update the command window
  #-----------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      pbPlayCancelSE()
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if @cmdMap>=0 && @sprites["command_window"].index==@cmdMap
        pbPlayDecisionSE()
        pbShowMap(-1,false)
      end
      if @cmdPhone>=0 && @sprites["command_window"].index==@cmdPhone
        pbPlayDecisionSE()
        pbFadeOutIn(99999) {
           PokemonPhoneScene.new.start
        }
      end
      if @cmdJukebox>=0 && @sprites["command_window"].index==@cmdJukebox
        pbPlayDecisionSE()
        $scene = Scene_Jukebox.new
      end
      if @cmdExaminer>=0 && @sprites["command_window"].index==@cmdExaminer
        pbPlayDecisionSE()
        pbFadeOutIn(99999) {
           PokemonExaminer.new.initialize
        }
      end
      return
    end
  end
end
I'm also having trouble getting the button graphics to display like the mock-up I've shown in the first post, but that's a new help topic altogether.


PokemonExaminer:
Code:
class Scene_Examiner
  def pbPokerus(pkmn)
    return pkmn.pokerusStage
  end

  def pbUpdate
    pbUpdateSpriteHash(@sprites)
  end

  def pbStartScene(party,partyindex)
    @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z=99999
    @party=party
    @partyindex=partyindex
    @pokemon=@party[@partyindex]
    @sprites={}
    @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
    @sprites["background"]=IconSprite.new(0,0,@viewport)
    @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
    @sprites["pokemon"]=PokemonSprite.new(@viewport)
    @sprites["pokemon"].setPokemonBitmap(@pokemon)
    @sprites["pokemon"].mirror=true
    @sprites["pokemon"].color=Color.new(0,0,0,0)
    pbPositionPokemonSprite(@sprites["pokemon"],40,134)
    @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
    @sprites["pokeicon"].x=14
    @sprites["pokeicon"].y=52
    @sprites["pokeicon"].mirror=false
    @sprites["pokeicon"].visible=false
    @sprites["movepresel"]=MoveSelectionSprite.new(@viewport)
    @sprites["movepresel"].visible=false
    @sprites["movepresel"].preselected=true
    @sprites["movesel"]=MoveSelectionSprite.new(@viewport)
    @sprites["movesel"].visible=false
    @page=0
    drawPageOne(@pokemon)
    pbFadeInAndShow(@sprites) { pbUpdate }
  end

  def pbEndScene
    pbFadeOutAndHide(@sprites) { pbUpdate }
    pbDisposeSpriteHash(@sprites)
    @typebitmap.dispose
    @viewport.dispose
  end

  #Draw the page
  def drawPageOne(pokemon)
    if pokemon.egg?
      drawPageOneEgg(pokemon)
      return
    end
    overlay=@sprites["overlay"].bitmap
    overlay.clear
    @sprites["background"].setBitmap("Graphics/Pictures/pokeexamScreen")
    imagepos=[]
    if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
      status=6 if pbPokerus(pokemon)==1
      status=@pokemon.status-1 if @pokemon.status>0
      status=5 if pokemon.hp==0
      imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
    end
    if pokemon.isShiny?
      imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
    end
    if pbPokerus(pokemon)==2
      imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
    end
    ballused=@pokemon.ballused ? @pokemon.ballused : 0
    ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
    imagepos.push([ballimage,14,60,0,0,-1,-1])
    if (pokemon.isShadow? rescue false)
      imagepos.push(["Graphics/Pictures/summaryShadow",224,240,0,0,-1,-1])
      shadowfract=pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
      imagepos.push(["Graphics/Pictures/summaryShadowBar",242,280,0,0,(shadowfract*248).floor,-1])
    end
    #-----------Define things I guess----------
    pbDrawImagePositions(overlay,imagepos)
    base=Color.new(248,248,248)
    shadow=Color.new(104,104,104)
    statshadows=[]
    for i in 0...5; statshadows[i]=shadow; end
    if !(pokemon.isShadow? rescue false) || pokemon.heartStage<=3
      natup=(pokemon.nature/5).floor
      natdn=(pokemon.nature%5).floor
      statshadows[natup]=Color.new(136,96,72) if natup!=natdn
      statshadows[natdn]=Color.new(64,120,152) if natup!=natdn
    end
    pbSetSystemFont(overlay)
    numberbase=(pokemon.isShiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
    numbershadow=(pokemon.isShiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
    speciesname=PBSpecies.getName(pokemon.species)
    growthrate=pokemon.growthrate
    pokename=@pokemon.name
    natureBoost=_INTL("")
    natureBoost=_INTL("+10%") if pokemon.nature==natup
    natureBoost=_INTL("-10%") if pokemon.nature==natdn
    #V------ I stole this code from FL's Advanced Pokedex script
    pbDexDataOffset(dexdata,@species,31)
    compat10=dexdata.fgetb
    compat11=dexdata.fgetb
    eggGroupArray=[
        nil,_INTL("Monster"),_INTL("Water1"),_INTL("Bug"),_INTL("Flying"),
        _INTL("Field"),_INTL("Fairy"),_INTL("Plant"),_INTL("Human-Like"),
        _INTL("Water3"),_INTL("Mineral"),_INTL("Amorphous"),
        _INTL("Water2"),_INTL("Ditto"),_INTL("Dragon"),_INTL("No Eggs")
    ]
    eggGroups = compat10==compat11 ? eggGroupArray[compat10] : 
        _INTL("{1}, {2}",eggGroupArray[compat10],eggGroupArray[compat11])
    #-------End of awesomely stolen code
    if @pokemon.name.split('').last=="♂" || @pokemon.name.split('').last=="♀"
      pokename=@pokemon.name[0..-2]
    end
    textpos=[
       [_INTL("POKéMON EXAMINER"),26,16,0,base,shadow],
       [pokename,46,62,0,base,shadow],
       [_INTL("{1}",pokemon.level),46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Egg Group"),16,320,0,base,shadow],
       [eggGroups,16,352,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("HP"),232,114,2,base,shadow],
       [_ISPRINTF("{1:d}",pokemon.totalhp),293,114,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF(""),360,114,1,base,shadow],
       [_ISPRINTF("+{1:3d}",pokemon.ev[0]),440,114,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Atk:"),232,146,0,base,shadow],
       [natureBoost,360,146,1,statshadows[0],shadow],
       [_ISPRINTF("{1:d}",pokemon.attack),293,146,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[1]),440,146,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Def:"),232,178,0,base,shadow],
       [natureBoost,360,178,1,statshadows[1],shadow],
       [_ISPRINTF("{1:d}",pokemon.defense),293,178,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[2]),440,178,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("SpAtk:"),232,210,0,base,shadow],
       [natureBoost,360,210,1,statshadows[3],shadow],
       [_ISPRINTF("{1:d}",pokemon.spatk),293,210,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[4]),440,210,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("SpDef:"),232,242,0,base,shadow],
       [natureBoost,360,242,1,statshadows[4],shadow],
       [_ISPRINTF("{1:d}",pokemon.spdef),293,242,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[5]),440,242,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Spd:"),232,274,0,base,shadow],
       [natureBoost,360,274,1,statshadows[2],shadow],
       [_ISPRINTF("{1:d}",pokemon.speed),293,274,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[3]),440,274,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("{1:d}",pokemon.happiness),340,312,0,base,shadow],
    ]
    if pokemon.gender==0
      textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
    elsif pokemon.gender==1
      textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
    end
    pbDrawTextPositions(overlay,textpos)
  end

  def drawPageOneEgg(pokemon)
    overlay=@sprites["overlay"].bitmap
    overlay.clear
    @sprites["background"].setBitmap("Graphics/Pictures/pokeexamScreen")
    imagepos=[]
    ballused=@pokemon.ballused ? @pokemon.ballused : 0
    ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
    imagepos.push([ballimage,14,60,0,0,-1,-1])
    #-----------Define things I guess----------
    pbDrawImagePositions(overlay,imagepos)
    base=Color.new(248,248,248)
    shadow=Color.new(104,104,104)
    pbSetSystemFont(overlay)
    textpos=[
       [_INTL("POKéMON EXAMINER"),26,16,0,base,shadow],
       [pokemon.name,46,62,0,base,shadow],
       [_INTL("???"),46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Egg Group"),16,320,0,base,shadow],
       [_ISPRINTF("???"),16,352,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("HP"),292,76,2,base,shadow],
       [_ISPRINTF("???"),462,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"),248,120,0,base,shadow],
       [_ISPRINTF("???"),456,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"),248,152,0,base,shadow],
       [_ISPRINTF("???"),456,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"),248,184,0,base,shadow],
       [_ISPRINTF("???"),456,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Def"),248,216,0,base,shadow],
       [_ISPRINTF("???"),456,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"),248,248,0,base,shadow],
       [_ISPRINTF("???"),456,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("???"),248,248,0,base,shadow],
    ]
    pbDrawTextPositions(overlay,textpos)
  end

  def pbGoToPrevious
    if @page!=0
      newindex=@partyindex
      while newindex>0
        newindex-=1
        if @party[newindex] && !@party[newindex].egg?
          @partyindex=newindex
          break
        end
      end
    else
      newindex=@partyindex
      while newindex>0
        newindex-=1
        if @party[newindex]
          @partyindex=newindex
          break
        end
      end
    end
  end

  def pbGoToNext
    if @page!=0
      newindex=@partyindex
      while newindex<@party.length-1
        newindex+=1
        if @party[newindex] && !@party[newindex].egg?
          @partyindex=newindex
          break
        end
      end
    else
      newindex=@partyindex
      while newindex<@party.length-1
        newindex+=1
        if @party[newindex]
          @partyindex=newindex
          break
        end
      end
    end
  end

  def pbScene
    pbPlayCry(@pokemon)
    loop do
      Graphics.update
      Input.update
      pbUpdate
      if Input.trigger?(Input::B)
        break
      end
      dorefresh=false
      if Input.trigger?(Input::C)
        if @page==0
          break
        elsif @page==3
          pbMoveSelection
          dorefresh=true
          drawPageFour(@pokemon)
        end
      end
      if Input.trigger?(Input::UP) && @partyindex>0
        pbGoToPrevious
        @pokemon=@party[@partyindex]
        @sprites["pokemon"].setPokemonBitmap(@pokemon)
        @sprites["pokemon"].color=Color.new(0,0,0,0)
        pbPositionPokemonSprite(@sprites["pokemon"],40,144)
        dorefresh=true
        pbPlayCry(@pokemon)
      end
      if Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
        pbGoToNext
        @pokemon=@party[@partyindex]
        @sprites["pokemon"].setPokemonBitmap(@pokemon)
        @sprites["pokemon"].color=Color.new(0,0,0,0)
        pbPositionPokemonSprite(@sprites["pokemon"],40,144)
        dorefresh=true
        pbPlayCry(@pokemon)
      end
      if dorefresh
        case @page
          when 0
            drawPageOne(@pokemon)
          when 1
            drawPageTwo(@pokemon)
          when 2
            drawPageThree(@pokemon)
          when 3
            drawPageFour(@pokemon)
          when 4
            drawPageFive(@pokemon)
        end
      end
    end
    return @partyindex
  end
end



class PokemonExaminer
  def initialize(scene)
    @scene=scene
  end

  def pbStartScreen(party,partyindex)
    @scene.pbStartScene(party,partyindex)
    ret=@scene.pbScene
    @scene.pbEndScene
    return ret
  end
end
Reply With Quote
  #7    
Old April 7th, 2014, 05:18 AM
~JV~'s Avatar
~JV~
Dev of Pokémon Uranium
 
Join Date: Aug 2007
Location: Rio de Janeiro
Age: 20
Nature: Relaxed
Send a message via Skype™ to ~JV~
To test your script just do a script call in any event with "$scene = Scene_Examiner.new".
__________________
Sig in maintenance!
Reply With Quote
  #8    
Old April 7th, 2014, 09:31 AM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Quote:
Originally Posted by ~JV~ View Post
To test your script just do a script call in any event with "$scene = Scene_Examiner.new".
I actually decided to put that in the Pokegear script itself. I figured out why the Pokegear didn't call the script correctly, because on line 91 I listed "@cmdJukebox" twice instead of the examiner, so calling the script from the Pokegear finally works.


... But now I got this:
Code:
Exception: NoMethodError
Message: undefined method `main' for #<Scene_Examiner:0xa87fed0>
PokemonUtilities:992:in `pbLoadRpgxpScene'
PokemonPauseMenu:169:in `pbStartPokemonMenu'
PokemonPauseMenu:144:in `loop'
PokemonPauseMenu:264:in `pbStartPokemonMenu'
Scene_Map:188:in `call_menu'
Scene_Map:159:in `update'
Scene_Map:68:in `main'
Scene_Map:65:in `loop'
Scene_Map:72:in `main'
Main:37:in `mainFunctionDebug'
I don't see a "main" in Scene_Examiner at all, so I don't understand what this error message is talking about. Any help would be appreciated.
Reply With Quote
  #9    
Old April 8th, 2014, 04:29 AM
Nickalooose
--------------------
 
Join Date: Mar 2008
Gender: Female
If it works, what's the problem?

Do you click something in your examiner?
Does the examiner even load?
Does the error appear when you click the icon in PokéGear?

Try calling PokemonExaminer instead of Scene_Examiner

Congrats on doing this yourself btw and you tried getting someone to do this for you... It's not as hard as everyone thinks, is it ;)
Reply With Quote
  #10    
Old April 8th, 2014, 11:10 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Quote:
Originally Posted by Nickalooose View Post
If it works, what's the problem?

Do you click something in your examiner?
Does the examiner even load?
Does the error appear when you click the icon in PokéGear?

Try calling PokemonExaminer instead of Scene_Examiner

Congrats on doing this yourself btw and you tried getting someone to do this for you... It's not as hard as everyone thinks, is it
The error message appeared when I selected the Examiner from the Pokegear. To clarify, what "works" is that the Pokegear is actually calling what I specified instead of loading the Jukebox, which occurred due to the typo I mentioned in my last post. So yeah, the new problem is that the Examiner won't even start.

I tried calling PokemonExaminer instead of Scene_Examiner, as you suggested. However, I got an argument error:
Code:
Exception: ArgumentError
Message: wrong number of arguments(0 for 1)
PokemonPokegear:168:in `initialize'
PokemonPokegear:168:in `new'
PokemonPokegear:168:in `update_command'
PokemonPokegear:138:in `update'
PokemonPokegear:119:in `main'
PokemonPokegear:116:in `loop'
PokemonPokegear:123:in `main'
PokemonUtilities:992:in `pbLoadRpgxpScene'
PokemonPauseMenu:169:in `pbStartPokemonMenu'
PokemonPauseMenu:144:in `loop'
This is the exact code I typed in line 166 of the Pokegear script:
Code:
      if @cmdExaminer>=0 && @sprites["command_window"].index==@cmdExaminer
        pbPlayDecisionSE()
        $scene = PokemonExaminer.new
      end
Reply With Quote
  #11    
Old April 9th, 2014, 12:05 AM
mej71
 
Join Date: Mar 2014
Gender: Male
I don't know if it's your main problem, but the fact that you don't have def's for these
Code:
when 1
            drawPageTwo(@pokemon)
          when 2
            drawPageThree(@pokemon)
          when 3
            drawPageFour(@pokemon)
          when 4
            drawPageFive(@pokemon)
will probably present problems later at the very least.
Reply With Quote
  #12    
Old April 9th, 2014, 04:16 AM
Nickalooose
--------------------
 
Join Date: Mar 2008
Gender: Female
Try:
Code:
    scene=Scene_Examiner.new
    screen=PokemonExaminer.new(scene)
    screen.pbStartScreen(party,partyindex)
Reply With Quote
  #13    
Old April 9th, 2014, 09:54 AM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Quote:
Originally Posted by Nickalooose View Post
Try:
Code:
    scene=Scene_Examiner.new
    screen=PokemonExaminer.new(scene)
    screen.pbStartScreen(party,partyindex)
Did this sometime around last night, and it still gave me an error message, specifically an "undefined local variable" message. One problem I think I've narrowed down is that "party" and "partyindex" are two variables that aren't defined in the PokeGear script. I don't know what code I should use that would get both information on the player's party and the party member the player has currently selected.

Thanks for sticking with me on this, though.

--------------
EDIT:

I tried this:
Code:
            party=@party
            partyindex=@partyindex
            scene=Scene_Examiner.new
            screen=PokemonExaminer.new(scene)
            screen.pbStartScreen(party,partyindex)
I think that should take care of the issues defining the variables, but now I have this bizarre error:
Code:
Exception: NoMethodError
Message: undefined method `[]' for nil:NilClass
--PokemonExaminer:15:in `pbStartScene'
--PokemonExaminer:290:in `pbStartScreen'
PokemonPokegear:173:in `update_command'
PokemonPokegear:168:in `pbFadeOutIn'
PokemonPokegear:168:in `update_command'
PokemonPokegear:138:in `update'
PokemonPokegear:119:in `main'
PokemonPokegear:116:in `loop'
PokemonPokegear:123:in `main'
PokemonUtilities:992:in `pbLoadRpgxpScene'
... A set of brackets are being looked at as a method?
I wonder how Maruno puts up with this.

Last edited by Ratty524; April 9th, 2014 at 10:58 AM.
Reply With Quote
  #14    
Old April 11th, 2014, 04:39 PM
Nickalooose
--------------------
 
Join Date: Mar 2008
Gender: Female
What does party and partyindex do? Remove them from start scene def... Within the brackets I mean... I don't understand why they are there
Reply With Quote
  #15    
Old April 11th, 2014, 05:15 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Quote:
Originally Posted by Nickalooose View Post
What does party and partyindex do? Remove them from start scene def... Within the brackets I mean... I don't understand why they are there
I'd assume it would call the Pokemon you currently have selected? Then again, considering this is a pokegear app that wouldn't make much sense. I removed it.

Now, however, it's popping up with a lot of "undefined" errors that kind of baffle me. "egg", "nature", and the icon for the "ball used" (all of these seem to cause no problems in the original summary script, and I see no defs for them anywhere) are popping up as undefined in this script. Is there something I need to reference?
Reply With Quote
  #16    
Old April 12th, 2014, 04:23 AM
Nickalooose
--------------------
 
Join Date: Mar 2008
Gender: Female
It's because you originally had partyindex, which you're script wasn't calling properly, so the script never got this far before, so now you're making progress, because you're getting to the final stages of your script.

You need to define pokemon as something, because atm you're checking if pokemon.egg? exists, which it can't because, pokemon doesn't mean anything.

I see what you've done now, you copied the summary screen, literally... I didn't see this before.

Since you've removed partyindex... What you could do is, set partyindex to a number, like 0 and possibly pokemon too... And always have it at 0 at the start of your script... Then add one to the number when down is pressed and take one away when up is pressed... Assuming you only have the one page, all the @page and drawpagetwo etc. is unnecessary, so your next and previous def's can literally look like this.
Code:
  def pbGoToPrevious
    newindex=partyindex
    while newindex>0
      newindex-=1
      if partyindex!=newindex
        partyindex=newindex
        break
      end
    end
  end

  def pbGoToNext
    newindex=partyindex
    while newindex<$Trainer.party.length-1
      newindex+=1
      if partyindex!=newindex
        partyindex=newindex
        break
      end
    end
  end
Edit to accompany what you need.
Reply With Quote
  #17    
Old April 12th, 2014, 07:08 AM
Maruno's Avatar
Maruno
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
Since you asked for my help, I thought I'd respond in here (because I don't like hiding information away by putting it in a PM to just one person when this thread is public). I've just glanced over what you've all been saying, though.

You're not quite opening the Examiner screen properly. Since you're copying the summary screen scripts, it'd make sense to also copy how, say, the party screen opens the summary screen. It does so like this:

Code:
    scene=PokemonSummaryScene.new
    screen=PokemonSummary.new(scene)
    screen.pbStartScreen(@party,pkmnid)
@party is just $Trainer.party (in battle it's a bit different, with the active Pokémon always at the top, so it makes a new party which is $Trainer.party jumbled up a bit to use instead, which is why it uses @party here. In the storage screen, @party is an array of the Pokémon in the current box and has nothing to do with $Trainer.party. You don't need to worry about that, though). pkmnid is the index in the party of the Pokémon you want to look at first. I'm assuming here that you'll always want to start at the top.

Use this code, but replace @party with $Trainer.party, and replace pkmnid with 0. And, you know, use Scene_Examiner and PokemonExaminer (respectively) for the class names. That'll get it open.

You don't need to replace the previous/next methods like Nickalooose suggested; the existing ones should work just fine. I imagine that the ONLY changes you'd need to make to the original summary screen scripts (aside from renaming the classes) are what I just mentioned along with disabling the left/right buttons so that you can only have one page. After that, it's just a matter of editing what text is displayed on the page (and there's plenty of examples of displaying text and different numbers already to help you). Remember to show nothing for eggs, because that's even more cheating than the Examiner screen already is.

Code:
@sprites["pokemon"].mirror=false
This makes Pokémon look to the left. Set it to true instead to make them look to the right. I generally dislike this, because of some asymmetric Pokémon like Torterra and Togekiss and Kingler.

Quote:
Originally Posted by Ratty524 View Post
Code:
Exception: NoMethodError
Message: undefined method `[]' for nil:NilClass
--PokemonExaminer:15:in `pbStartScene'
--PokemonExaminer:290:in `pbStartScreen'
PokemonPokegear:173:in `update_command'
PokemonPokegear:168:in `pbFadeOutIn'
PokemonPokegear:168:in `update_command'
PokemonPokegear:138:in `update'
PokemonPokegear:119:in `main'
PokemonPokegear:116:in `loop'
PokemonPokegear:123:in `main'
PokemonUtilities:992:in `pbLoadRpgxpScene'
... A set of brackets are being looked at as a method?
I wonder how Maruno puts up with this.
[] is a method. Have a look in the script section Game_Switches to see a method with this name. Even an array is a class, and [] is a method which applies to that class. = is also a method. If you have $Trainer.party[0], then $Trainer.party is the array and [0] is a method (whose parameter is 0) which returns the 0th element of that array.

An array is a very basic class, but it's still a class and it has associated methods. See here for a list of methods that an array has. (RMXP uses an older version of Ruby than detailed on that page, so some of the methods listed may not be in RMXP.)

Your error message was referring to the line @pokemon=@party[@partyindex]. The array is @party, the method is [], and the parameter is @partyindex. The error was caused by @party being nil rather than an array, and nil has no methods at all, let alone the method [] which is what this line was trying to call.
__________________
Reply With Quote
  #18    
Old April 12th, 2014, 05:28 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Real big thanks, Maruno. Your post actually helped me understand this thing a little bit more. After narrowing through some other kinks I was able to get this scene to activate without any error messages.

... It still has some problems, as you can see.
1) The text positions are wonky - That's something I can easily fix on my own.
2) The "egg group" field will display "Monster" regardless of the Pokemon I have selected.
3) The strings that correspond to the Pokemon's nature ("+10%" and "-10%") aren't displaying at all.
4) The value for "Happiness:" seems to be derped as well, not displaying the right value.
5) If I select an Egg within my party, it shows the egg as if it were a level 1 Pokemon with no EVs, instead of anything I specified in "drawPageOneEgg" (the "???" strings).

What works, however:
1) The controls to scroll between Pokemon in the party.
2) Both the total stats and the effort values are displaying.
3) The battler graphic and things.

Here is my most up to date version of the Pokemon Examiner script:
Code:
class Scene_Examiner
  def pbUpdate
    pbUpdateSpriteHash(@sprites)
  end

  def pbStartScene(party,partyindex)
    @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z=99999
    @party=party
    @partyindex=partyindex
    @pokemon=@party[@partyindex]
    @sprites={}
    @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
    @sprites["background"]=IconSprite.new(0,0,@viewport)
    @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
    @sprites["pokemon"]=PokemonSprite.new(@viewport)
    @sprites["pokemon"].setPokemonBitmap(@pokemon)
    @sprites["pokemon"].mirror=true
    @sprites["pokemon"].color=Color.new(0,0,0,0)
    pbPositionPokemonSprite(@sprites["pokemon"],40,134)
    @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
    @sprites["pokeicon"].x=14
    @sprites["pokeicon"].y=52
    @sprites["pokeicon"].mirror=false
    @sprites["pokeicon"].visible=false
    @sprites["movepresel"]=MoveSelectionSprite.new(@viewport)
    @sprites["movepresel"].visible=false
    @sprites["movepresel"].preselected=true
    @sprites["movesel"]=MoveSelectionSprite.new(@viewport)
    @sprites["movesel"].visible=false
    @page=0
    drawPageOne(@pokemon)
    pbFadeInAndShow(@sprites) { pbUpdate }
  end

  def pbEndScene
    pbFadeOutAndHide(@sprites) { pbUpdate }
    pbDisposeSpriteHash(@sprites)
    @typebitmap.dispose
    @viewport.dispose
  end

  #Draw the page
  def drawPageOne(pokemon)
    overlay=@sprites["overlay"].bitmap
    overlay.clear
    @sprites["background"].setBitmap("Graphics/Pictures/pokeexamScreen")
    imagepos=[]
    ballused=@pokemon.ballused ? @pokemon.ballused : 0
    ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
    imagepos.push([ballimage,14,60,0,0,-1,-1])
    if (pokemon.isShadow? rescue false)
      imagepos.push(["Graphics/Pictures/summaryShadow",224,240,0,0,-1,-1])
      shadowfract=pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
      imagepos.push(["Graphics/Pictures/summaryShadowBar",242,280,0,0,(shadowfract*248).floor,-1])
    end
    #-----------Define things I guess----------
    pbDrawImagePositions(overlay,imagepos)
    base=Color.new(248,248,248)
    shadow=Color.new(104,104,104)
    statshadows=[]
    for i in 0...5; statshadows[i]=shadow; end
    if !(pokemon.isShadow? rescue false) || pokemon.heartStage<=3
      natup=(pokemon.nature/5).floor
      natdn=(pokemon.nature%5).floor
      statshadows[natup]=Color.new(136,96,72) if natup!=natdn
      statshadows[natdn]=Color.new(64,120,152) if natup!=natdn
    end
    pbSetSystemFont(overlay)
    numberbase=(pokemon.isShiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
    numbershadow=(pokemon.isShiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
    speciesname=PBSpecies.getName(pokemon.species)
    growthrate=pokemon.growthrate
    pokename=@pokemon.name
    natureBoost=_INTL("")
    natureBoost=_INTL("+10%") if pokemon.nature==natup
    natureBoost=_INTL("-10%") if pokemon.nature==natdn
    #V------ I stole this code from FL's Advanced Pokedex script
    dexdata=pbOpenDexData
    compat10=dexdata.fgetb
    compat11=dexdata.fgetb
    eggGroupArray=[
        _INTL("Monster"),_INTL("Water1"),_INTL("Bug"),_INTL("Flying"),
        _INTL("Field"),_INTL("Fairy"),_INTL("Plant"),_INTL("Human-Like"),
        _INTL("Water3"),_INTL("Mineral"),_INTL("Amorphous"),
        _INTL("Water2"),_INTL("Ditto"),_INTL("Dragon"),_INTL("No Eggs")
    ]
    eggGroups = compat10==compat11 ? eggGroupArray[compat10] : 
        _INTL("{1}, {2}",eggGroupArray[compat10],eggGroupArray[compat11])
    #-------End of awesomely stolen code
    if @pokemon.name.split('').last=="♂" || @pokemon.name.split('').last=="♀"
      pokename=@pokemon.name[0..-2]
    end
    textpos=[
       [_INTL("POKéMON EXAMINER"),26,16,0,base,shadow],
       [pokename,46,62,0,base,shadow],
       [_INTL("{1}",pokemon.level),46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Egg Group"),16,320,0,base,shadow],
       [eggGroups,16,352,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("HP"),232,114,2,base,shadow],
       [_ISPRINTF("{1:d}",pokemon.totalhp),293,114,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF(""),360,114,1,base,shadow],
       [_ISPRINTF("+{1:3d}",pokemon.ev[0]),440,114,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Atk:"),232,146,0,base,shadow],
       [natureBoost,360,146,1,statshadows[0],shadow],
       [_ISPRINTF("{1:d}",pokemon.attack),293,146,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[1]),440,146,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Def:"),232,178,0,base,shadow],
       [natureBoost,360,178,1,statshadows[1],shadow],
       [_ISPRINTF("{1:d}",pokemon.defense),293,178,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[2]),440,178,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("SpAtk:"),232,210,0,base,shadow],
       [natureBoost,360,210,1,statshadows[3],shadow],
       [_ISPRINTF("{1:d}",pokemon.spatk),293,210,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[4]),440,210,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("SpDef:"),232,242,0,base,shadow],
       [natureBoost,360,242,1,statshadows[4],shadow],
       [_ISPRINTF("{1:d}",pokemon.spdef),293,242,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[5]),440,242,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("Spd:"),232,274,0,base,shadow],
       [natureBoost,360,274,1,statshadows[2],shadow],
       [_ISPRINTF("{1:d}",pokemon.speed),293,274,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_ISPRINTF("+{1:3d}",pokemon.ev[3]),440,274,1,Color.new(0,136,72),Color.new(176,176,176)],
       [_INTL("{1:d}",pokemon.happiness),340,312,0,base,shadow],
    ]
    if pokemon.gender==0
      textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
    elsif pokemon.gender==1
      textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
    end
    pbDrawTextPositions(overlay,textpos)
  end

  def drawPageOneEgg(pokemon)
    overlay=@sprites["overlay"].bitmap
    overlay.clear
    @sprites["background"].setBitmap("Graphics/Pictures/pokeexamScreen")
    imagepos=[]
    ballused=@pokemon.ballused ? @pokemon.ballused : 0
    ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
    imagepos.push([ballimage,14,60,0,0,-1,-1])
    #-----------Define things I guess----------
    pbDrawImagePositions(overlay,imagepos)
    base=Color.new(248,248,248)
    shadow=Color.new(104,104,104)
    pbSetSystemFont(overlay)
    textpos=[
       [_INTL("POKéMON EXAMINER"),26,16,0,base,shadow],
       [pokemon.name,46,62,0,base,shadow],
       [_INTL("???"),46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Egg Group"),16,320,0,base,shadow],
       [_ISPRINTF("???"),16,352,0,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("HP"),292,76,2,base,shadow],
       [_ISPRINTF("???"),462,76,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Attack"),248,120,0,base,shadow],
       [_ISPRINTF("???"),456,120,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Defense"),248,152,0,base,shadow],
       [_ISPRINTF("???"),456,152,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Atk"),248,184,0,base,shadow],
       [_ISPRINTF("???"),456,184,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Sp. Def"),248,216,0,base,shadow],
       [_ISPRINTF("???"),456,216,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("Speed"),248,248,0,base,shadow],
       [_ISPRINTF("???"),456,248,1,Color.new(64,64,64),Color.new(176,176,176)],
       [_INTL("???"),248,248,0,base,shadow],
    ]
    pbDrawTextPositions(overlay,textpos)
  end

  def pbGoToPrevious
    if @page!=0
      newindex=@partyindex
      while newindex>0
        newindex-=1
        if @party[newindex] && !@party[newindex].egg?
          @partyindex=newindex
          break
        end
      end
    else
      newindex=@partyindex
      while newindex>0
        newindex-=1
        if @party[newindex]
          @partyindex=newindex
          break
        end
      end
    end
  end

  def pbGoToNext
    if @page!=0
      newindex=@partyindex
      while newindex<@party.length-1
        newindex+=1
        if @party[newindex] && !@party[newindex].egg?
          @partyindex=newindex
          break
        end
      end
    else
      newindex=@partyindex
      while newindex<@party.length-1
        newindex+=1
        if @party[newindex]
          @partyindex=newindex
          break
        end
      end
    end
  end

  def pbScene
    pbPlayCry(@pokemon)
    loop do
      Graphics.update
      Input.update
      pbUpdate
      if Input.trigger?(Input::B)
        break
      end
      dorefresh=false
      if Input.trigger?(Input::C)
        if @page==0
          break
        elsif @page==3
          pbMoveSelection
          dorefresh=true
          drawPageFour(@pokemon)
        end
      end
      if Input.trigger?(Input::UP) && @partyindex>0
        pbGoToPrevious
        @pokemon=@party[@partyindex]
        @sprites["pokemon"].setPokemonBitmap(@pokemon)
        @sprites["pokemon"].color=Color.new(0,0,0,0)
        pbPositionPokemonSprite(@sprites["pokemon"],40,144)
        dorefresh=true
        pbPlayCry(@pokemon)
      end
      if Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
        pbGoToNext
        @pokemon=@party[@partyindex]
        @sprites["pokemon"].setPokemonBitmap(@pokemon)
        @sprites["pokemon"].color=Color.new(0,0,0,0)
        pbPositionPokemonSprite(@sprites["pokemon"],40,144)
        dorefresh=true
        pbPlayCry(@pokemon)
      end
      if dorefresh
        case @page
          when 0
            drawPageOne(@pokemon)
        end
      end
    end
    return @partyindex
  end
end



class PokemonExaminer
  def initialize(scene)
    @scene=scene
  end

  def pbStartScreen(party,partyindex)
    @scene.pbStartScene(party,partyindex)
    ret=@scene.pbScene
    @scene.pbEndScene
    return ret
  end
end
Reply With Quote
  #19    
Old April 13th, 2014, 08:36 AM
Maruno's Avatar
Maruno
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
2. If you're going to steal code from someone else, you could at least steal all the code you need. You forgot this line (just before your compat10= line):
Code:
pbDexDataOffset(dexdata,pokemon.species,31)
Oh, and put this line after the compat11= line:
Code:
dexdata.close
3. There are 5 things that a nature could boost or lower. Your code (below) doesn't result in different text for each of them. This code is also comparing the Pokémon's nature to an altered version of itself (either the nature divided by 5 or nature mod 5), which is just daft.

Code:
    natureBoost=_INTL("")
    natureBoost=_INTL("+10%") if pokemon.nature==natup
    natureBoost=_INTL("-10%") if pokemon.nature==natdn
Instead of this, put the following code beneath the large textpos= array:
Code:
if (pokemon.nature/5).floor!=(pokemon.nature%5).floor
  statupline=[0,1,4,2,3][(pokemon.nature/5).floor]
  statdownline=[0,1,4,2,3][(pokemon.nature%5).floor]
  textpos.push([_INTL("+10%"),360,146+32*statupline,1,Color.new(136,96,72),shadow])
  textpos.push([_INTL("-10%"),360,146+32*statdownline,1,Color.new(64,120,152),shadow])
end
4. You don't use {1:d} in an _INTL. Just use {1} there.

5. You deleted the following code from the top of the def drawPageOne:
Code:
if pokemon.egg?
  drawPageOneEgg(pokemon)
  return
end
__________________

Last edited by Maruno; April 13th, 2014 at 08:42 AM.
Reply With Quote
  #20    
Old April 14th, 2014, 12:01 PM
Ratty524's Avatar
Ratty524
 
Join Date: Jan 2011
Gender: Male
Nature: Calm
Thanks for your help, Maruno. I still need to kind of understand just how RGSS works in general, but I can safely say this entire script works.

Since someone asked for this script, I'm going to make a few adjustments so that it's presentable to the public, and then I'll post the final.
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 07:00 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.