Go Back   The PokéCommunity Forums > Creative Discussions > Game Development > Scripts & Tutorials
Reload this Page [Essentials script] D/P/Pt Load Screen

Notices
For all updates, view the main page.

Scripts & Tutorials This forum is for scripts and code, as well as all kinds of tutorials, software, tools and so forth. Remember to give credit!
The thread revival limit does not apply here.



Reply
 
Thread Tools
  #1    
Old August 10th, 2010 (11:15 AM).
Crazyninjaguy's Avatar
Crazyninjaguy Crazyninjaguy is offline
I'm back.
 
Join Date: May 2008
Location: England
Age: 23
Gender: Male
Posts: 663
Well i've decided to post this here, as my members have had this for a few weeks now.

This is a loading screen similar to Diamond/Pearl/Platinum.

Original Thread: http://www.planetdev.net/index.php?showtopic=414

Here's a screenie to show what i mean:



For those of you wondering where the options errr, option is, it's below new game.

When you move the cursor below new game, it scrolls smoothly down to options and back up when selecting continue.

Ok, here are the instructions.

1. Create a new script section above main and call it something like "PokemonLoad"

2. Paste the following script into the new section you just created:

Spoiler:
Code:
#===============================================================================
# * Single Screen D/P/Pt Load Screen
# * By Crazyninjaguy
# * http://www.planetdev.net
#===============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     x      : window x-coordinate
  #     y      : window y-coordinate
  #     width  : window width
  #     height : window height
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    # Dispose if window contents bit map is set
    if self.contents != nil
      self.contents.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Get Text Color
  #     n : text color number (0-7)
  #--------------------------------------------------------------------------
  def text_color(n)
    case n
    when 0
      return Color.new(255, 255, 255, 255)
    when 1
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end
  #--------------------------------------------------------------------------
  # * Get Normal Text Color
  #--------------------------------------------------------------------------
  def normal_color
    return Color.new(255, 255, 255, 255)
  end
  #--------------------------------------------------------------------------
  # * Get Disabled Text Color
  #--------------------------------------------------------------------------
  def disabled_color
    return Color.new(255, 255, 255, 128)
  end
  #--------------------------------------------------------------------------
  # * Get System Text Color
  #--------------------------------------------------------------------------
  def system_color
    return Color.new(192, 224, 255, 255)
  end
  #--------------------------------------------------------------------------
  # * Get Crisis Text Color
  #--------------------------------------------------------------------------
  def crisis_color
    return Color.new(255, 255, 64, 255)
  end
  #--------------------------------------------------------------------------
  # * Get Knockout Text Color
  #--------------------------------------------------------------------------
  def knockout_color
    return Color.new(255, 64, 0)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # Reset if windowskin was changed
    if $game_system.windowskin_name != @windowskin_name
      @windowskin_name = $game_system.windowskin_name
      self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Graphic
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Draw Name
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.name)
  end
  #--------------------------------------------------------------------------
  # * Draw Class
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  #--------------------------------------------------------------------------
  # * Draw Level
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_level(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, "Lv")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Make State Text String for Drawing
  #     actor       : actor
  #     width       : draw spot width
  #     need_normal : Whether or not [normal] is needed (true / false)
  #--------------------------------------------------------------------------
  def make_battler_state_text(battler, width, need_normal)
    # Get width of brackets
    brackets_width = self.contents.text_size("[]").width
    # Make text string for state names
    text = ""
    for i in battler.states
      if $data_states[i].rating >= 1
        if text == ""
          text = $data_states[i].name
        else
          new_text = text + "/" + $data_states[i].name
          text_width = self.contents.text_size(new_text).width
          if text_width > width - brackets_width
            break
          end
          text = new_text
        end
      end
    end
    # If text string for state names is empty, make it [normal]
    if text == ""
      if need_normal
        text = "[Normal]"
      end
    else
      # Attach brackets
      text = "[" + text + "]"
    end
    # Return completed text string
    return text
  end
  #--------------------------------------------------------------------------
  # * Draw State
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : draw spot width
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end
  #--------------------------------------------------------------------------
  # * Draw EXP
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 24, 32, "E")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
    self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
  end
  #--------------------------------------------------------------------------
  # * Draw HP
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : draw spot width
  #--------------------------------------------------------------------------
  def draw_actor_hp(actor, x, y, width = 144)
    # Draw "HP" text string
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # Draw HP
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    # Draw MaxHP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw SP
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : draw spot width
  #--------------------------------------------------------------------------
  def draw_actor_sp(actor, x, y, width = 144)
    # Draw "SP" text string
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # Draw SP
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # Draw MaxSP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Parameter
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     type  : parameter type (0-6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Draw Item Name
  #     item : item
  #     x    : draw spot x-coordinate
  #     y    : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y)
    if item == nil
      return
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name)
  end
end


module Colors
  Black = Color.new(0,0,0)
  Blue = Color.new(0,0,255)
end

class PokemonLoadScene # :doc:
def pbStartScene
  @move_adv_up = false
  @move_new_up = false
  @move_opt_up = false
  @move_adv_down = false
  @move_new_down = false
  @move_opt_down = false
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
addBackgroundOrColoredPlane(@sprites,"clrvp","loadbg",
   Color.new(17<<3,18<<3,31<<3),@viewport)
@sprites["locwindow"]=Window_AdvancedTextPokemon.new("")
@sprites["locwindow"].visible=false
@sprites["cmdwindow"]=Window_CommandPokemon.new([])
@sprites["cmdwindow"].x=480
@sprites["cmdwindow"].y=0
@sprites["cmdwindow"].visible=false
if FileTest.exist?("Game.rxdata")
   @sprites["adventure"]=Window_AdventureData.new
   @sprites["adventure"].opacity = 255
   @sprites["newgame"]=Window_NewGame.new(224)
   @sprites["newgame"].opacity = 200
   @sprites["options"]=Window_Options.new((224 + 56) + 16)
   @sprites["options"].opacity = 200
else
   @sprites["newgame"]=Window_NewGame.new(16)
   @sprites["newgame"].opacity = 255
   @sprites["options"]=Window_Options.new((56 + 16) + 16)
   @sprites["options"].opacity = 200
end
pbFadeInAndShow(@sprites) { pbUpdate }
end
alias cng_load_auxillary pbSetAuxiliaryWindow
def pbSetAuxiliaryWindow(loctext)
  cng_load_auxillary(loctext)
  @sprites["locwindow"].x = 480
end
def pbChoose(commands)
@sprites["cmdwindow"].resizeToFit(commands)
@sprites["cmdwindow"].commands=commands
@sprites["cmdwindow"].x=480
@sprites["cmdwindow"].y=0
@sprites["cmdwindow"].visible=true
loop do
  Graphics.update
  Input.update
  pbUpdate
  if @move_adv_up
    if @sprites["adventure"].y >= -192
      @sprites["adventure"].y -= 8
    end
    if @sprites["adventure"].y == -192
      @move_adv_up = false
    end
  end
  if @move_new_up
    if @sprites["newgame"].y >= 16
      @sprites["newgame"].y -= 8
    end
    if @sprites["newgame"].y == 16
      @move_new_up = false
    end
  end
  if @move_opt_up
    if @sprites["options"].y >= 88
      @sprites["options"].y -= 8
    end
    if @sprites["options"].y == 88
      @move_opt_up = false
    end
  end
  if @move_adv_down
    if @sprites["adventure"].y <= 16
      @sprites["adventure"].y += 8
    end
    if @sprites["adventure"].y == 16
      @move_adv_down = false
    end
  end
  if @move_new_down
    if @sprites["newgame"].y <= 224
      @sprites["newgame"].y += 8
    end
    if @sprites["newgame"].y == 224
      @move_new_down = false
    end
  end
  if @move_opt_down
    if @sprites["options"].y <= 296
      @sprites["options"].y += 8
    end
    if @sprites["options"].y == 296
      @move_opt_down = false
    end
  end
  if FileTest.exist?("Game.rxdata")
    case @sprites["cmdwindow"].index
    when 0
      @sprites["adventure"].opacity = 255
      @sprites["newgame"].opacity = 200
      @sprites["options"].opacity = 200
    when 1
      @sprites["adventure"].opacity = 200
      @sprites["newgame"].opacity = 255
      @sprites["options"].opacity = 200
    when 2
      @sprites["adventure"].opacity = 200
      @sprites["newgame"].opacity = 200
      @sprites["options"].opacity = 255
    end
  else
    case @sprites["cmdwindow"].index
    when 0
      @sprites["newgame"].opacity = 255
      @sprites["options"].opacity = 200
    when 1
      @sprites["newgame"].opacity = 200
      @sprites["options"].opacity = 255
    end
  end
  if FileTest.exist?("Game.rxdata")
    if Input.trigger?(Input::DOWN) && @sprites["cmdwindow"].index == 2
      @move_adv_up = true
      @move_new_up = true
      @move_opt_up = true
    elsif Input.trigger?(Input::UP) && @sprites["cmdwindow"].index == 0
      @move_adv_down = true
      @move_new_down = true
      @move_opt_down = true
    end
  end
  if Input.trigger?(Input::C)
    return @sprites["cmdwindow"].index
  end
end
end
def pbEndScene
  pbFadeOutAndHide(@sprites) { pbUpdate }
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
def pbCloseScene
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
end

class Window_AdventureData < Window_Base
  def initialize
    super(16, 16, (480 - 32), 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 9999998
    refresh
  end
  def refresh
    self.contents.clear
    trainer, framecount, $game_system, $PokemonSystem=loadfile("Game.rxdata")
    self.contents.font.color = Colors::Black
    self.contents.draw_text(0, 0, width - 32, 32, "CONTINUE")
    self.contents.font.color = Colors::Blue
    self.contents.draw_text(32, 32, width - 32, 32, "PLAYER")
    self.contents.draw_text(32, 64, width - 32, 32, "TIME")
    if trainer.numbadges>0
      self.contents.draw_text(32, 96, width - 32, 32, "BADGES")
    end
    if trainer.pokedex
      self.contents.draw_text(32, 128, width - 32, 32, "POKEDEX")
    end
    self.contents.draw_text(0, 32, width - 32, 32, trainer.name, 2)
    totalsec = framecount / Graphics.frame_rate
    hour = totalsec / 60 / 60
    min = totalsec / 60 % 60
    self.contents.draw_text(0, 64, width - 32, 32, sprintf("%02d:%02d", hour, min), 2)
    if trainer.pokedex
      self.contents.draw_text(0, 128, width - 32, 32, trainer.pokedexOwned.to_s, 2)
    end
    if trainer.numbadges>0
      self.contents.draw_text(0, 96, width - 32, 32, trainer.numbadges.to_s, 2)
    end
  end
  def loadfile(savefile)
   trainer=nil
   framecount=nil
   game_system=nil
   pokemonSystem=nil
   File.open(savefile){|f|
    trainer=Marshal.load(f)
    framecount=Marshal.load(f)
    game_system=Marshal.load(f)
    pokemonSystem=Marshal.load(f)
   }
   raise "Corrupted file" if !trainer.is_a?(PokeBattle_Trainer)
   raise "Corrupted file" if !framecount.is_a?(Numeric)
   raise "Corrupted file" if !game_system.is_a?(Game_System)
   raise "Corrupted file" if !pokemonSystem.is_a?(PokemonSystem)
   return [trainer,framecount,game_system,pokemonSystem]
end
end

class Window_NewGame < Window_Base
  def initialize(y)
    super(16, y, (480 - 32), 56)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 9999998
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = Colors::Black
    self.contents.draw_text(0, 0, width - 32, 24, "NEW GAME")
  end
end

class Window_Options < Window_Base
  def initialize(y)
    super(16, y, (480 - 32), 56)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 9999998
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = Colors::Black
    self.contents.draw_text(0, 0, width - 32, 24, "OPTIONS")
  end
end


3. Give credit if you use this!

Thanks, and I hope you like it
__________________
PlanetDev - Game Development Community
Reply With Quote
  #2    
Old August 10th, 2010 (11:56 AM).
nmorr's Avatar
nmorr nmorr is offline
Takin a brake. -_-
 
Join Date: May 2009
Location: Poke City
Age: 18
Gender: Male
Nature: Jolly
Posts: 215
Hey CNG, I thought you left..Anyways, I hope u don't mind, I posted your Dual Screen Battle System, but gave you full credit.
__________________
This signature has been disabled.
Spoiler tags in Signatures are not allowed
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.
Reply With Quote
  #3    
Old August 10th, 2010 (01:11 PM).
Crazyninjaguy's Avatar
Crazyninjaguy Crazyninjaguy is offline
I'm back.
 
Join Date: May 2008
Location: England
Age: 23
Gender: Male
Posts: 663
I did leave, but i guess i'm back for now lol.
Just thought people might benefit from this.
__________________
PlanetDev - Game Development Community
Reply With Quote
  #4    
Old August 12th, 2010 (12:11 PM).
Yuoaman's Avatar
Yuoaman Yuoaman is offline
Legen- wait for it...
Community Supporter
 
Join Date: Jul 2005
Location: Ontario, Canada
Age: 22
Gender: Male
Nature: Relaxed
Posts: 4,673
This probably will fit better in Resources, so I'll move it over there.
__________________

Suit Up!
Awesome REGULAR MEMBER THAT OCCASIONALLY FREQUENTS FORUMS.

"pps new screenie" - No, really shut up yuoaman.

Haaave you read my LP?
Pokémon Quartz - The only one of mine really worth reading.

What about my [Un]Abridged series?
Aquaman the Unabridged Parody Series - Language warning.

The Playbook: My Anime List | Raptr | BackLoggery | Twitter


83% of this signature is empty space.

-dary!
Reply With Quote
  #5    
Old August 12th, 2010 (09:23 PM).
Rise's Avatar
Rise Rise is offline
「Rise Director」
 
Join Date: Aug 2010
Age: 23
Gender: Male
Nature: Relaxed
Posts: 26
I tried the script to see how it went, but it was practically impossible to show a continue screen. New game took over the spot for continue, still showing the same text, and options became new game, with the same problem.
__________________
Reply With Quote
  #6    
Old August 14th, 2010 (03:41 PM).
triggerhappymonk's Avatar
triggerhappymonk triggerhappymonk is offline
Strong as crap trainer
 
Join Date: Jan 2010
Gender: Male
Posts: 38
Quote originally posted by Rise:
I tried the script to see how it went, but it was practically impossible to show a continue screen. New game took over the spot for continue, still showing the same text, and options became new game, with the same problem.
Just use version 1, it works for me. the only thing is, when you select "OPTIONS" The menu stays while the option screen is in the background.
__________________
Pokémon Games I'm Making:

Pokémon Adenture Island
Pokémon Blastiose Blue/Charizard Red/Venasaur Green
Pokémon Pikachu Yellow
Pokémon Ho-Oh Gold/Lugia Silver
Pokémon Suicune Crystal
Pokémon Kyoger Sapphire/Groundon Ruby
Pokémon Rayquaza Emerald
Pokémon Dialga Diamond/Palkia Pearl
Pokémon Giratina Platnuim
Pokemon Reshiram Black/Zekrom White
Pokémon Tin/Steel
May seem like a lot, but i'll get them done. I apologize for any misspelling

Games I Support:
Reply With Quote
  #7    
Old August 15th, 2010 (04:45 AM).
pokemad's Avatar
pokemad pokemad is offline
Self taught hacker
 
Join Date: Jun 2008
Age: 20
Gender:
Nature: Gentle
Posts: 20
Great script.
A few problems but great overall
Reply With Quote
Reply
Quick Reply

Sponsored Links
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

Forum Jump


All times are UTC -8. The time now is 05:07 PM.