The PokéCommunity Forums Fan Games Game Development Scripts & Tutorials
Essentials Script D/P/Pt Load Screen

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: 25
    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

    Relevant Advertising!

      #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: 20
      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 (1:11 PM).
      Crazyninjaguy's Avatar
      Crazyninjaguy Crazyninjaguy is offline
      I'm back.
         
        Join Date: May 2008
        Location: England
        Age: 25
        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...
        • Silver Tier
         
        Join Date: Jul 2005
        Location: Ontario, Canada
        Age: 24
        Gender: Male
        Nature: Relaxed
        Posts: 4,675
        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 (9:23 PM).
        Rise's Avatar
        Rise Rise is offline
        「Rise Director」
           
          Join Date: Aug 2010
          Age: 26
          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 (3: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 View Post
            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 (4:45 AM).
            pokemad's Avatar
            pokemad pokemad is offline
            Self taught hacker
               
              Join Date: Jun 2008
              Age: 22
              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 GMT -8. The time now is 7:21 AM.