• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Serena, Kris, Dawn, Red - which Pokémon protagonist is your favorite? Let us know by voting in our grand final favorite protagonist poll!
  • PokéCommunity supports the Stop Killing Games movement. If you're a resident of the UK or EU, consider signing one of the petitions to stop publishers from destroying games. Click here for more information!
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Title Screens Depending on Progress

#Not Important

All hail the wishmaker
  • 905
    Posts
    5
    Years
    Code:
    # When progress is made increase the value of the game variable that VarNumber is set to. More below
    VarNumber = 50
    $screens = []
    fileName = "screenNames.txt"
    
    def getVals(filename)
      f = File.open(filename).read
      f = f.split("
    ")
      for i in f
        i = i.split(":")
        $screens.push(i[1])
      end
    end
    
    class IntroEventScene < EventScene
      TICKS_PER_PIC         = 40   # 20 ticks per second, so 2 seconds
      TICKS_PER_ENTER_FLASH = 40
      FADE_TICKS            = 8
    
      def initialize(pics,splash,viewport=nil)
        super(nil)
        getVals(filename)
        @pics   = pics
        @splash = $screens[$game_variables[VarNumber]]#splash
        @pic = addImage(0,0,"")
        @pic.setOpacity(0,0)    # set opacity to 0 after waiting 0 frames
        @pic2 = addImage(0,0,"")   # flashing "Press Enter" picture
        @pic2.setOpacity(0,0)
        @index = 0
        data_system = pbLoadRxData("Data/System")
        pbBGMPlay(data_system.title_bgm)
        openPic(self,nil)
      end
    
      def openPic(scene,args)
        onCTrigger.clear
        @pic.name = "Graphics/Titles/"+@pics[@index]
        # fade to opacity 255 in FADE_TICKS ticks after waiting 0 frames
        @pic.moveOpacity(0,FADE_TICKS,255)
        pictureWait
        @timer = 0                          # reset the timer
        onUpdate.set(method(:picUpdate))    # call picUpdate every frame
        onCTrigger.set(method(:closePic))   # call closePic when C key is pressed
      end
    
      def closePic(scene,args)
        onUpdate.clear
        onCTrigger.clear
        @pic.moveOpacity(0,FADE_TICKS,0)
        pictureWait
        @index += 1   # Move to the next picture
        if @index>[email protected]
          openSplash(scene,args)
        else
          openPic(scene,args)
        end
      end
    
      def picUpdate(scene,args)
        @timer += 1
        if @timer>TICKS_PER_PIC*Graphics.frame_rate/20
          @timer = 0
          closePic(scene,args)   # Close the picture
        end
      end
    
      def openSplash(scene,args)
        onUpdate.clear
        onCTrigger.clear
        @pic.name = "Graphics/Titles/"+@splash
        @pic.moveOpacity(0,FADE_TICKS,255)
        @pic2.name = "Graphics/Titles/start"
        @pic2.setXY(0,0,322)
        @pic2.setVisible(0,true)
        @pic2.moveOpacity(0,FADE_TICKS,255)
        pictureWait
        onUpdate.set(method(:splashUpdate))    # call splashUpdate every frame
        onCTrigger.set(method(:closeSplash))   # call closeSplash when C key is pressed
      end
    
      def closeSplash(scene,args)
        onUpdate.clear
        onCTrigger.clear
        # Play random cry
        cry = pbCryFile(1+rand(PBSpecies.maxValue))
        pbSEPlay(cry,80,100) if cry
        @pic.moveXY(0,20,0,0)
        pictureWait
        # Fade out
        @pic.moveOpacity(0,FADE_TICKS,0)
        @pic2.clearProcesses
        @pic2.moveOpacity(0,FADE_TICKS,0)
        pbBGMStop(1.0)
        pictureWait
        scene.dispose   # Close the scene
        sscene = PokemonLoad_Scene.new
        sscreen = PokemonLoadScreen.new(sscene)
        sscreen.pbStartLoadScreen
      end
    
      def closeSplashDelete(scene,args)
        onUpdate.clear
        onCTrigger.clear
        # Play random cry
        cry = pbCryFile(1+rand(PBSpecies.maxValue))
        pbSEPlay(cry,80,100) if cry
        @pic.moveXY(0,20,0,0)
        pictureWait
        # Fade out
        @pic.moveOpacity(0,FADE_TICKS,0)
        @pic2.clearProcesses
        @pic2.moveOpacity(0,FADE_TICKS,0)
        pbBGMStop(1.0)
        pictureWait
        scene.dispose   # Close the scene
        sscene = PokemonLoad_Scene.new
        sscreen = PokemonLoadScreen.new(sscene)
        sscreen.pbStartDeleteScreen
      end
    
      def splashUpdate(scene,args)
        # Flashing of "Press Enter" picture
        if [email protected]?
          @pic2.moveOpacity(TICKS_PER_ENTER_FLASH*2/10,TICKS_PER_ENTER_FLASH*4/10,0)
          @pic2.moveOpacity(TICKS_PER_ENTER_FLASH*6/10,TICKS_PER_ENTER_FLASH*4/10,255)
        end
        if Input.press?(Input::DOWN) &&
           Input.press?(Input::B) &&
           Input.press?(Input::CTRL)
          closeSplashDelete(scene,args)
        end
      end
    end
    
    
    
    class Scene_Intro
      def initialize(pics, splash = nil)
        @pics   = pics
        @splash = splash
      end
    
      def main
        Graphics.transition(0)
        @eventscene = IntroEventScene.new(@pics,@splash)
        @eventscene.main
        Graphics.freeze
      end
    end
    You will also need more files:
    • screenNames.txt (Base folder) Contains the data for the screens. It's structured as follows: Progress Var No.:Screen filename. To have more than 1 separate the values with a new line.
    • The screen files in Graphics/Pictures/
    Then each time the game is booted, the title screen will depend on the progress variable. not fully tested
     
    Last edited:
    Back
    Top