• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Pokémon B/W-style loading screen for Essentials

Diverscope

Pardon me
152
Posts
11
Years
  • I've tried to make it compatible with v11. The only difficult to make it wrong it the cinditional branch.

    Code:
    if (trainer.mysterygiftaccess rescue false)
          @sprites["Continue"] = Sprite.new
          @sprites["Continue"].x = 100
          @sprites["Continue"].y = 4
          @sprites["Continue"].z = 99998
          @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
          @sprites["Continue"].opacity = 210
          
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 116
          @sprites["NewGame"].y = 232
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 116
          @sprites["Options"].y = 282
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          @sprites["MysteryGift"] = Sprite.new
          @sprites["MysteryGift"].x = 116
          @sprites["MysteryGift"].y = 332
          @sprites["MysteryGift"].z = 99998
          @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["MysteryGift"].opacity = 210
          
          textpos=[
          [_INTL("CONTINUE"),132,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),132,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),132,288,false,baseColor,shadowColor],
          [_INTL("MYSTERY GIFT"),132,338,false,baseColor,shadowColor],
          #[_INTL(
          ]
          pbDrawTextPositions(@overlay,textpos)
    But "(trainer.mysterygiftaccess rescue false)" doesn't work and removing the "rescue false" will it end with an error (method mysterygiftaccess doesn'tc exist)

    Has someone an idea how the conditional branch should look?
     

    bleach12

    ProjectM76Creator/AmateurCoder
    6
    Posts
    13
    Years
  • I would love to use this, but I'm having a problem. I've put the code in and all, but when I get to the menu screen, the background is correct, but the actual bars and boxes that you selected aren't BW styled, they still look like the default.

    EDIT
    I put the code in the TrainerCard section not the Loading one xD
    Stupid mistake, code works perfectly :)
     
    Last edited:

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    I've tried to make it compatible with v11. The only difficult to make it wrong it the cinditional branch.

    Code:
    if (trainer.mysterygiftaccess rescue false)
          @sprites["Continue"] = Sprite.new
          @sprites["Continue"].x = 100
          @sprites["Continue"].y = 4
          @sprites["Continue"].z = 99998
          @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
          @sprites["Continue"].opacity = 210
          
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 116
          @sprites["NewGame"].y = 232
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 116
          @sprites["Options"].y = 282
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          @sprites["MysteryGift"] = Sprite.new
          @sprites["MysteryGift"].x = 116
          @sprites["MysteryGift"].y = 332
          @sprites["MysteryGift"].z = 99998
          @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["MysteryGift"].opacity = 210
          
          textpos=[
          [_INTL("CONTINUE"),132,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),132,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),132,288,false,baseColor,shadowColor],
          [_INTL("MYSTERY GIFT"),132,338,false,baseColor,shadowColor],
          #[_INTL(
          ]
          pbDrawTextPositions(@overlay,textpos)
    But "(trainer.mysterygiftaccess rescue false)" doesn't work and removing the "rescue false" will it end with an error (method mysterygiftaccess doesn'tc exist)

    Has someone an idea how the conditional branch should look?

    Well, first of all, you can't just take pieces of code, throw them together and expect them to work...

    if (trainer.mysterygiftaccess rescue false)

    That is saying, "can mystery gift be accessed... If yes... Show Mystery Gift option.", not, "if I click this... Do something special."...

    If you want it to check whether Mystery Gift is on, you will need to use something else like

    commands[cmdMysteryGift=commands.length]=_INTL("Mystery Gift") if (trainer.mysterygiftaccess rescue false)

    As it is already...

    To add the mystery gift option... Try putting that line of code around line 456... However, then you will need to put how the window will work... What the command MysteryGift will do... Etc. etc.

    Try copying the right sections before trying to make something out the blue... There's your start.
     

    Diverscope

    Pardon me
    152
    Posts
    11
    Years
  • Thank you, but I already put this command-line. I can access to the mystery gift option, but I can't make the window to show the mystery gift option, cause this conditional branch doesn't work (Sorry that I hadn't mentioned this before). Unfortunalety, things like "something else like" or "around" doesn't help me. I'm not a coder as you see.
     

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    Thank you, but I already put this command-line. I can access to the mystery gift option, but I can't make the window to show the mystery gift option, cause this conditional branch doesn't work (Sorry that I hadn't mentioned this before). Unfortunalety, things like "something else like" or "around" doesn't help me. I'm not a coder as you see.

    Try removing the brackets, rescue and false...

    Where is the Mystery Gift event in Essentials? I'll take a quick look at how Mystery Gift works and take a look myself
     

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    I'll go take a look now and see what's up...

    EDIT:

    If the mystery gift works during the game... Why would you want it to appear on the load screen?
    It would seem so far that I can't get mystery gift to appear on the load screen anyway, so I don't think I can help you unless I can get that to work

    EDIT:

    So I figured out everything.

    Code:
    class PokemonLoadScene # :doc:
      def pbUpdate
        pbUpdateSpriteHash(@sprites)
      end
    
      def pbStartScene
        @sprites={}
        @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
        @viewport.z=99998
        savefile=RTP.getSaveFileName("Game.rxdata")
        
        @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
        @sprites["overlay"].z = 99999
        @overlay=@sprites["overlay"].bitmap
        @overlay.clear
        baseColor=Color.new(239, 239, 239)
        shadowColor=Color.new(140,140,140)
        pbSetSystemFont(@sprites["overlay"].bitmap)
            
        if safeExists?(savefile)      
          @sprites["Continue"] = Sprite.new
          @sprites["Continue"].x = 52
          @sprites["Continue"].y = 4
          @sprites["Continue"].z = 99998
          @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
          @sprites["Continue"].opacity = 210
          
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 232
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210      
          
          @sprites["MysteryGift"] = Sprite.new
          @sprites["MysteryGift"].x = 68
          @sprites["MysteryGift"].y = 282
          @sprites["MysteryGift"].z = 99998
          @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["MysteryGift"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 332
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          textpos=[
          [_INTL("CONTINUE"),84,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),84,238,false,baseColor,shadowColor],
          [_INTL("MYSTERY GIFT"),84,288,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,338,false,baseColor,shadowColor],
          #[_INTL(
          ]
          pbDrawTextPositions(@overlay,textpos)
        else
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 142
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 192
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          textpos=[
          [_INTL("NEW GAME"),84,148,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,198,false,baseColor,shadowColor],
          ]
          pbDrawTextPositions(@overlay,textpos)
          
        end
        
        addBackgroundOrColoredPlane(@sprites,"background","loadbg",
           Color.new(96,96,248),@viewport)
        @sprites["locwindow"]=Window_AdvancedTextPokemon.new("")
        @sprites["locwindow"].viewport=@viewport
        @sprites["locwindow"].visible=false
        @sprites["cmdwindow"]=Window_CommandPokemon.new([])
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].viewport=@viewport
        @sprites["cmdwindow"].visible=false
        pbFadeInAndShow(@sprites) { pbUpdate }
      end
    
      def pbSetAuxiliaryWindow(loctext)
         @sprites["locwindow"].resizeToFit(loctext,Graphics.width-@sprites["cmdwindow"].width)
         @sprites["locwindow"].width=228 if @sprites["locwindow"].width<228
         @sprites["locwindow"].height=Graphics.height
         @sprites["locwindow"].x=512#Graphics.width-@sprites["locwindow"].width
         @sprites["locwindow"].visible=true
         @sprites["locwindow"].text=loctext
      end
    
      def pbSetParty(trainer,hasPokedex=false)
        for i in 0...trainer.party.length
          @sprites["party#{i}"]=PokemonIconSprite.new(trainer.party[i])
          @sprites["party#{i}"].z=99999
          @sprites["party#{i}"].x=80+60*i
          @sprites["party#{i}"].y=150
        end
      end
    
      def pbChoose(commands)
        @sprites["cmdwindow"].resizeToFit(commands)
        @sprites["cmdwindow"].commands=commands
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].visible=true
        loop do
          Graphics.update
          Input.update
          pbUpdate
          savefile=RTP.getSaveFileName("Game.rxdata")
          if safeExists?(savefile)
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue_S")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==2
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==3
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
            end
          else
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
            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
    
    
    
    module FontInstaller # :doc:
      # filenames of fonts to be installed
      Filenames = [
         'pkmnem.ttf',
         'pkmnemn.ttf',
         'pkmnems.ttf',
         'pkmnrs.ttf',
         'pkmndp.ttf',
         'pkmnfl.ttf'
      ]    
      # names (not filenames) of fonts to be installed
      Names = [
        'Power Green',
        'Power Green Narrow',
        'Power Green Small',
        'Power Red and Blue',
        'Power Clear',
        'Power Red and Green'
      ]
      # whether to notify player (via pop-up message) that fonts were installed
      Notify = true
      # location of fonts (relative to game folder)
      Source = 'Fonts/'
    
      def self.getFontFolder
        fontfolder=MiniRegistry.get(MiniRegistry::HKEY_CURRENT_USER,
           "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
           "Fonts")
        return fontfolder+"\\" if fontfolder
        if ENV['SystemRoot']
          return ENV['SystemRoot'] + '\\Fonts\\'
        elsif ENV['windir']
          return ENV['windir'] + '\\Fonts\\'
        else
          return '\\Windows\\Fonts\\'
        end   
      end
    
      AFR = Win32API.new('gdi32', 'AddFontResource', ['P'], 'L')
      WPS = Win32API.new('kernel32', 'WriteProfileString', ['P'] * 3, 'L')
      SM = Win32API.new('user32', 'PostMessage', ['L'] * 4, 'L')
      WM_FONTCHANGE = 0x001D
      HWND_BROADCAST = 0xffff
    
      def self.copy_file(src,dest)
        File.open(src,  'rb') {|r|
           File.open(dest, 'wb') {|w|
              while s = r.read(4096)
                w.write s
              end
           }
        }
      end
    
      def self.pbResolveFont(name)
        RTP.eachPathFor(Source+name) {|file|
           return file if safeExists?(file)
        }
        return Source+name
      end
    
      def self.install
        success = []
        # Check if all fonts already exist
        filesExist=true
        fontsExist=true
        dest=self.getFontFolder()
        for i in 0...Names.size
          if !safeExists?(dest + Filenames[i])
            filesExist=false
          end
          if !Font.exist?(Names[i])
            fontsExist=false
          end
        end
        return if filesExist
        # Check if all source fonts exist
        exist=true
        for i in 0...Names.size
          if !RTP.exists?(Source + Filenames[i])
            exist=false
            break
          end
        end
        return if !exist # Exit if not all source fonts exist
        Kernel.pbMessage(_INTL("One or more fonts used in this game do not exist on the system.\1"))
        Kernel.pbMessage(_INTL("The game can be played, but the look of the game's text will not be optimal.\1"))
        failed=false
        for i in 0...Filenames.size
          f = Filenames[i]
          if safeExists?(dest + f) && !Font.exist?(Names[i])
            File.delete(dest + f) rescue nil
          end
          # check if already installed...
          if not safeExists?(dest + f)
            # check to ensure font is in specified location...
            if RTP.exists?(Source + f)
              # copy file to fonts folder
              succeeded=false
              begin
                copy_file(pbResolveFont(f), dest + f)
                # add font resource
                AFR.call(dest + f)
                # add entry to win.ini/registry
                WPS.call('Fonts', Names[i] + ' (TrueType)', f)
                succeeded=safeExists?(dest + f)
                rescue SystemCallError
                # failed
                succeeded=false
              end
              if succeeded
                success.push(Names[i])
              else
                failed=true
              end
            end
          else
            success.push(Names[i]) # assume success
          end
        end
        if success.length>0 # one or more fonts successfully installed
          SM.call(HWND_BROADCAST,WM_FONTCHANGE,0,0)
          if Notify
            fonts = ''
            success.each do |f|
              fonts << f << ', '
            end
            if failed
              Kernel.pbMessage(_INTL("Some of the fonts were successfully installed.\1"))
              Kernel.pbMessage(_INTL("To install the other fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
            else
              Kernel.pbMessage(_INTL("The fonts were successfully installed.\1"))
            end
            if Kernel.pbConfirmMessage(_INTL("Would you like to restart the game and apply the changes?"))
              a = Thread.new { system('Game') }
              exit
            end
          end
        else
          # No fonts were installed.
          Kernel.pbMessage(_INTL("To install the necessary fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
        end
      end
    end
    
    
    
    class PokemonLoad
      def initialize(scene)
        @scene=scene
      end
    
      def pbDisplay(text,brief=false)
        @scene.pbDisplay(text,brief)
      end
    
      def pbDisplayPaused(text)
        @scene.pbDisplayPaused(text)
      end
    
      def pbConfirm(text)
        return @scene.pbConfirm(text)
      end
    
      def pbTryLoadFile(savefile)
        trainer=nil
        framecount=nil
        game_system=nil
        pokemonSystem=nil
        mapid=nil
        File.open(savefile){|f|
           trainer=Marshal.load(f)
           framecount=Marshal.load(f)
           game_system=Marshal.load(f)
           pokemonSystem=Marshal.load(f)
           mapid=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)
        raise "Corrupted file" if !mapid.is_a?(Numeric)
        return [trainer,framecount,game_system,pokemonSystem,mapid]
      end
    
      def pbStartDeleteScreen
        savefile=RTP.getSaveFileName("Game.rxdata")
        @scene.pbStartScene
        if safeExists?(savefile)
          if Kernel.pbConfirmMessageSerious(_INTL("Delete all saved data?"))
            Kernel.pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
            if Kernel.pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
              Kernel.pbMessage(_INTL("Deleting all data.\r\nDon't turn off the power.\\wtnp[0]"))
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
        else
          Kernel.pbMessage(_INTL("No save file was found."))
        end
        @scene.pbEndScene
        $scene=pbCallTitle
      end
    
      def pbStartLoadScreen
        $PokemonTemp   = PokemonTemp.new
        $game_temp     = Game_Temp.new
        $game_system   = Game_System.new
        $PokemonSystem = PokemonSystem.new if !$PokemonSystem
        @scene.pbStartScene
        cmdContinue=-1
        cmdNewGame=0
        cmdOption=1
        cmdLanguage=-1
        commands=[]
        savefile=RTP.getSaveFileName("Game.rxdata")
        FontInstaller.install
        data_system = pbLoadRxData("Data/System")
        mapfile=$RPGVX ? sprintf("Data/Map%03d.rvdata",data_system.start_map_id) :
                         sprintf("Data/Map%03d.rxdata",data_system.start_map_id)
        if data_system.start_map_id==0 || !pbRgssExists?(mapfile)
          Kernel.pbMessage(_INTL("No starting position was set in the map editor.\1"))
          Kernel.pbMessage(_INTL("The game cannot continue."))
          @scene.pbEndScene
          $scene=nil
          return
        end
        if safeExists?(savefile)
          trainer=nil
          framecount=0
          showContinue=false
          haveBackup=false
          begin
            trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile)
            showContinue=true
            rescue
            if safeExists?(savefile+".bak")
              begin
                trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile+".bak")
                haveBackup=true
                showContinue=true
                rescue
              end
            end
            if haveBackup
              Kernel.pbMessage(_INTL("The save file is corrupt.  The previous save file will be loaded."))
            else
              Kernel.pbMessage(_INTL("The save file is corrupt, or is incompatible with this game."))
              if !Kernel.pbConfirmMessageSerious(_INTL("Do you want to delete the save file and start anew?"))
                raise "scss error - Corrupted or incompatible save file."
              end
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              $PokemonSystem=PokemonSystem.new if !$PokemonSystem
              $game_system=Game_System.new
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
          if showContinue
            if !haveBackup
              begin; File.delete(savefile+".bak"); rescue; end
              end
            totalsec = framecount / Graphics.frame_rate
            hour = totalsec / 60 / 60
            min = totalsec / 60 % 60
            mapname=pbGetMapNameFromId(mapid)
            mapname.gsub!(/\\PN/,trainer.name)
            textColor=["0070F8,78B8E8","E82010,F8A8B8","0070F8,78B8E8"][trainer.gender]
            loctext=_INTL("<ac><c2=06644bd2>{1}</c2></ac>",mapname)
            loctext+=_INTL("Player<r><c3={1}>{2}</c3><br>",textColor,fmtescape(trainer.name))
            loctext+=_ISPRINTF("Time<r><c3={1:s}>{2:02d}:{3:02d}</c3><br>",textColor,hour,min)
            loctext+=_INTL("Badges<r><c3={1}>{2}</c3><br>",textColor,trainer.numbadges)
            if trainer.pokedex
              loctext+=_INTL("Pokédex<r><c3={1}>{2}/{3}</c3><br>",textColor,trainer.pokedexOwned,trainer.pokedexSeen)
            end
            
            @sprites={}
            @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
            @sprites["overlay"].z = 99999
            @overlay=@sprites["overlay"].bitmap
            @overlay.clear
            baseColor=Color.new(239, 239, 239)
            shadowColor=Color.new(140,140,140)
            pbSetSystemFont(@sprites["overlay"].bitmap)
        
            textpos=[
            [_INTL("{1}",trainer.name),84,60,false,Color.new(57,165,255),Color.new(57,107,173)],
            [_INTL("{1}",mapname),84,90,false,baseColor,shadowColor],
            [_INTL("Badges: {1}",trainer.numbadges),84,135,false,baseColor,shadowColor],
            [_ISPRINTF("Time: {1:02d}:{2:02d}",hour,min),220,135,false,baseColor,shadowColor],
            ]
            pbDrawTextPositions(@overlay,textpos)
              
            loctext+=_INTL("Party") if trainer.party.length>0
            @scene.pbSetAuxiliaryWindow(loctext)
            @scene.pbSetParty(trainer,trainer.pokedex)
          end
          commands[cmdContinue=commands.length]=_INTL("Continue") if showContinue
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdMysteryGift=commands.length]=_INTL("Mystery Gift") if (trainer.mysterygiftaccess rescue false)
          commands[cmdOption=commands.length]=_INTL("Options")
        else
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdOption=commands.length]=_INTL("Options")
        end
        if LANGUAGES.length>=2
          commands[cmdLanguage=commands.length]=_INTL("Language")
        end
        loop do
          [email protected](commands)
          if cmdNewGame>=0 && command==cmdNewGame
            savefile=RTP.getSaveFileName("Game.rxdata")
            if safeExists?(savefile)
              @sprites["overlay"].opacity = 0
            end
            @scene.pbEndScene
            if $game_map && $game_map.events
              for event in $game_map.events.values
                event.clear_starting
              end
            end
            $game_temp.common_event_id=0 if $game_temp
            $scene               = Scene_Map.new
            Graphics.frame_count = 0
            $game_system         = Game_System.new
            $game_switches       = Game_Switches.new
            $game_variables      = Game_Variables.new
            $game_self_switches  = Game_SelfSwitches.new
            $game_screen         = Game_Screen.new
            $game_player         = Game_Player.new
            $ItemData            = readItemList("Data/items.dat")
            $PokemonMap          = PokemonMapMetadata.new
            $PokemonGlobal       = PokemonGlobalMetadata.new
            $PokemonStorage      = PokemonStorage.new
            $PokemonEncounters   = PokemonEncounters.new
            $PokemonTemp.begunNewGame=true
            $data_system         = pbLoadRxData("Data/System")
            $MapFactory          = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
            $game_player.moveto($data_system.start_x, $data_system.start_y)
            $game_player.refresh
            $game_map.autoplay
            $game_map.update
            return
          elsif cmdLanguage>=0 && command==cmdLanguage
            @scene.pbEndScene
            $PokemonSystem.language=pbChooseLanguage
            pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
            savedata=[]
            if safeExists?(savefile)
              File.open(savefile,"rb"){|f|
                 14.times {    savedata.push(Marshal.load(f)) }
              }
              savedata[3]=$PokemonSystem
              begin
                File.open(RTP.getSaveFileName("Game.rxdata"),"wb"){|f|
                   14.times {|i| Marshal.dump(savedata[i],f) }
                }
              rescue; end
            end
            $scene=pbCallTitle
            return
          elsif cmdContinue>=0 && command==cmdContinue
            unless safeExists?(savefile)
              pbPlayBuzzerSE()
              next
            end
            @sprites["overlay"].opacity = 0
            @scene.pbEndScene
            metadata=nil
            File.open(savefile){|f|
               $Trainer             = Marshal.load(f)
               Graphics.frame_count = Marshal.load(f)
               $game_system         = Marshal.load(f)
               Marshal.load(f) # PokemonSystem already loaded
               Marshal.load(f) # Current map id no longer needed
               $game_switches       = Marshal.load(f)
               $game_variables      = Marshal.load(f)
               $game_self_switches  = Marshal.load(f)
               $game_screen         = Marshal.load(f)
               $MapFactory          = Marshal.load(f)
               $game_map            = $MapFactory.map
               $game_player         = Marshal.load(f)
               $PokemonGlobal       = Marshal.load(f)
               metadata             = Marshal.load(f)
               $ItemData            = readItemList("Data/items.dat")
               $PokemonBag          = Marshal.load(f)
               $PokemonStorage      = Marshal.load(f)
               magicNumberMatches=false
               if $data_system.respond_to?("magic_number")
                 magicNumberMatches=($game_system.magic_number==$data_system.magic_number)
               else
                 magicNumberMatches=($game_system.magic_number==$data_system.version_id)
               end
               if !magicNumberMatches || $PokemonGlobal.safesave
                 if pbMapInterpreterRunning?
                   pbMapInterpreter.setup(nil,0)
                 end
                 begin
                   $MapFactory.setup($game_map.map_id) # calls setMapChanged
                   rescue Errno::ENOENT
                   if $DEBUG
                     Kernel.pbMessage(_INTL("Map {1} was not found.",$game_map.map_id))
                     map=pbWarpToMap()
                     if map
                       $MapFactory.setup(map[0])
                       $game_player.moveto(map[1],map[2])
                     else
                       $game_map=nil
                       $scene=nil
                       return
                     end
                   else
                     $game_map=nil
                     $scene=nil
                     Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
                   end
                 end
                 $game_player.center($game_player.x, $game_player.y)
               else
                 $MapFactory.setMapChanged($game_map.map_id)
               end
            }
            if !$game_map.events # Map wasn't set up
              $game_map=nil
              $scene=nil
              Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
              return
            end
            $PokemonMap=metadata
            $PokemonEncounters=PokemonEncounters.new
            $PokemonEncounters.setup($game_map.map_id)
            pbAutoplayOnSave
            $game_map.update
            $PokemonMap.updateMap
            $scene = Scene_Map.new
            return
          elsif cmdMysteryGift>=0 && command==cmdMysteryGift
            pbFadeOutIn(99999){
               trainer=pbDownloadMysteryGift(trainer)
            }
          elsif cmdOption>=0 && command==cmdOption
            scene=PokemonOptionScene.new
            screen=PokemonOption.new(scene)
            pbFadeOutIn(99999) { screen.pbStartScreen }
          end
        end
        @sprites["overlay"].opacity = 0
        @scene.pbEndScene
        return
      end
    end

    Replace your code with this one, made it look neat and tidy too...
    This was tested with a gift waiting, it will look silly if there isn't one... If you want it to look better, I'll let you figure that out, since all the code is there, you can learn to edit it yourself.
     
    Last edited:

    ppooookkkkkkk

    Banned
    229
    Posts
    11
    Years
  • this doesn't work:
    ---------------------------
    Pokemon Essentials
    ---------------------------
    Exception: NoMethodError
    Message: undefined method `>=' for nil:NilClass
    PokemonLoad:611:in `pbStartLoadScreen'
    PokemonLoad:483:in `loop'
    PokemonLoad:620:in `pbStartLoadScreen'
    DebugIntro:6:in `main'
    Main:37:in `mainFunctionDebug'
    Main:15:in `mainFunction'
    Main:15:in `pbCriticalCode'
    Main:15:in `mainFunction'
    Main:47
    Main:46:in `loop'

    This exception was logged in
    C:\Users\Mohammad\Saved Games/Pokemon Essentials/errorlog.txt.
    Press Ctrl+C to copy this message to the clipboard.
    ---------------------------
    OK
    ---------------------------
     

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    What doesn't work?
    It works fine for me...
    itworks.png

    mysterygiftscreen.png


    EDIT
    at line 387, try putting:
    Code:
        cmdMysteryGift=-1
     
    Last edited:
    1
    Posts
    10
    Years
    • Seen Jul 26, 2013
    I'll go take a look now and see what's up...

    EDIT:

    If the mystery gift works during the game... Why would you want it to appear on the load screen?
    It would seem so far that I can't get mystery gift to appear on the load screen anyway, so I don't think I can help you unless I can get that to work

    EDIT:

    So I figured out everything.


    Actually, there's a error on this code too, whe you select "Continue" it will reload the file before the mystery gift was downloaded. I have done my own editing and it's working fine like this:

    Code:
    class PokemonLoadScene # :doc:
      def pbUpdate
        pbUpdateSpriteHash(@sprites)
      end
    
      def pbStartScene
        @sprites={}
        @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
        @viewport.z=99998
        savefile=RTP.getSaveFileName("Game.rxdata")
        
        @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
        @sprites["overlay"].z = 99999
        @overlay=@sprites["overlay"].bitmap
        @overlay.clear
        baseColor=Color.new(239, 239, 239)
        shadowColor=Color.new(140,140,140)
        pbSetSystemFont(@sprites["overlay"].bitmap)
            
        if safeExists?(savefile)      
          @sprites["Continue"] = Sprite.new
          @sprites["Continue"].x = 52
          @sprites["Continue"].y = 4
          @sprites["Continue"].z = 99998
          @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
          @sprites["Continue"].opacity = 210
          
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 232
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 282
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          @sprites["MysteryGift"] = Sprite.new
          @sprites["MysteryGift"].x = 68
          @sprites["MysteryGift"].y = 332
          @sprites["MysteryGift"].z = 99998
          @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["MysteryGift"].opacity = 210
          
          textpos=[
          [_INTL("CONTINUE"),84,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),84,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,288,false,baseColor,shadowColor],
          [_INTL("MYSTERY GIFT"),84,338,false,baseColor,shadowColor],
          #[_INTL(
          ]
          pbDrawTextPositions(@overlay,textpos)
        else
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 142
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 192
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          textpos=[
          [_INTL("NEW GAME"),84,148,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,198,false,baseColor,shadowColor],
          ]
          pbDrawTextPositions(@overlay,textpos)
          
        end
        
        addBackgroundOrColoredPlane(@sprites,"background","loadbg",
           Color.new(96,96,248),@viewport)
        @sprites["locwindow"]=Window_AdvancedTextPokemon.new("")
        @sprites["locwindow"].viewport=@viewport
        @sprites["locwindow"].visible=false
        @sprites["cmdwindow"]=Window_CommandPokemon.new([])
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].viewport=@viewport
        @sprites["cmdwindow"].visible=false
        pbFadeInAndShow(@sprites) { pbUpdate }
      end
    
      def pbSetAuxiliaryWindow(loctext)
         @sprites["locwindow"].resizeToFit(loctext,Graphics.width-@sprites["cmdwindow"].width)
         @sprites["locwindow"].width=228 if @sprites["locwindow"].width<228
         @sprites["locwindow"].height=Graphics.height
         @sprites["locwindow"].x=512#Graphics.width-@sprites["locwindow"].width
         @sprites["locwindow"].visible=true
         @sprites["locwindow"].text=loctext
      end
    
      def pbSetParty(trainer,hasPokedex=false)
        for i in 0...trainer.party.length
          @sprites["party#{i}"]=PokemonIconSprite.new(trainer.party[i])
          @sprites["party#{i}"].z=99999
          @sprites["party#{i}"].x=80+60*i
          @sprites["party#{i}"].y=150
        end
      end
    
      def pbChoose(commands)
        @sprites["cmdwindow"].resizeToFit(commands)
        @sprites["cmdwindow"].commands=commands
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].visible=true
        loop do
          Graphics.update
          Input.update
          pbUpdate
          savefile=RTP.getSaveFileName("Game.rxdata")
          if safeExists?(savefile)
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
           elsif @sprites["cmdwindow"].index==2
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
           elsif @sprites["cmdwindow"].index==3
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
           end
          else
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
            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
    
    
    
    module FontInstaller # :doc:
      # filenames of fonts to be installed
      Filenames = [
         'pkmnem.ttf',
         'pkmnemn.ttf',
         'pkmnems.ttf',
         'pkmnrs.ttf',
         'pkmndp.ttf',
         'pkmnfl.ttf'
      ]    
      # names (not filenames) of fonts to be installed
      Names = [
        'Power Green',
        'Power Green Narrow',
        'Power Green Small',
        'Power Red and Blue',
        'Power Clear',
        'Power Red and Green'
      ]
      # whether to notify player (via pop-up message) that fonts were installed
      Notify = true
      # location of fonts (relative to game folder)
      Source = 'Fonts/'
    
      def self.getFontFolder
        fontfolder=MiniRegistry.get(MiniRegistry::HKEY_CURRENT_USER,
           "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
           "Fonts")
        return fontfolder+"\\" if fontfolder
        if ENV['SystemRoot']
          return ENV['SystemRoot'] + '\\Fonts\\'
        elsif ENV['windir']
          return ENV['windir'] + '\\Fonts\\'
        else
          return '\\Windows\\Fonts\\'
        end   
      end
    
      AFR = Win32API.new('gdi32', 'AddFontResource', ['P'], 'L')
      WPS = Win32API.new('kernel32', 'WriteProfileString', ['P'] * 3, 'L')
      SM = Win32API.new('user32', 'PostMessage', ['L'] * 4, 'L')
      WM_FONTCHANGE = 0x001D
      HWND_BROADCAST = 0xffff
    
      def self.copy_file(src,dest)
        File.open(src,  'rb') {|r|
           File.open(dest, 'wb') {|w|
              while s = r.read(4096)
                w.write s
              end
           }
        }
      end
    
      def self.pbResolveFont(name)
        RTP.eachPathFor(Source+name) {|file|
           return file if safeExists?(file)
        }
        return Source+name
      end
    
      def self.install
        success = []
        # Check if all fonts already exist
        filesExist=true
        fontsExist=true
        dest=self.getFontFolder()
        for i in 0...Names.size
          if !safeExists?(dest + Filenames[i])
            filesExist=false
          end
          if !Font.exist?(Names[i])
            fontsExist=false
          end
        end
        return if filesExist
        # Check if all source fonts exist
        exist=true
        for i in 0...Names.size
          if !RTP.exists?(Source + Filenames[i])
            exist=false
            break
          end
        end
        return if !exist # Exit if not all source fonts exist
        Kernel.pbMessage(_INTL("One or more fonts used in this game do not exist on the system.\1"))
        Kernel.pbMessage(_INTL("The game can be played, but the look of the game's text will not be optimal.\1"))
        failed=false
        for i in 0...Filenames.size
          f = Filenames[i]
          if safeExists?(dest + f) && !Font.exist?(Names[i])
            File.delete(dest + f) rescue nil
          end
          # check if already installed...
          if not safeExists?(dest + f)
            # check to ensure font is in specified location...
            if RTP.exists?(Source + f)
              # copy file to fonts folder
              succeeded=false
              begin
                copy_file(pbResolveFont(f), dest + f)
                # add font resource
                AFR.call(dest + f)
                # add entry to win.ini/registry
                WPS.call('Fonts', Names[i] + ' (TrueType)', f)
                succeeded=safeExists?(dest + f)
                rescue SystemCallError
                # failed
                succeeded=false
              end
              if succeeded
                success.push(Names[i])
              else
                failed=true
              end
            end
          else
            success.push(Names[i]) # assume success
          end
        end
        if success.length>0 # one or more fonts successfully installed
          SM.call(HWND_BROADCAST,WM_FONTCHANGE,0,0)
          if Notify
            fonts = ''
            success.each do |f|
              fonts << f << ', '
            end
            if failed
              Kernel.pbMessage(_INTL("Some of the fonts were successfully installed.\1"))
              Kernel.pbMessage(_INTL("To install the other fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
            else
              Kernel.pbMessage(_INTL("The fonts were successfully installed.\1"))
            end
            if Kernel.pbConfirmMessage(_INTL("Would you like to restart the game and apply the changes?"))
              a = Thread.new { system('Game') }
              exit
            end
          end
        else
          # No fonts were installed.
          Kernel.pbMessage(_INTL("To install the necessary fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
        end
      end
    end
    
    
    
    class PokemonLoad
      def initialize(scene)
        @scene=scene
      end
    
      def pbDisplay(text,brief=false)
        @scene.pbDisplay(text,brief)
      end
    
      def pbDisplayPaused(text)
        @scene.pbDisplayPaused(text)
      end
    
      def pbConfirm(text)
        return @scene.pbConfirm(text)
      end
    
      def pbTryLoadFile(savefile)
        trainer=nil
        framecount=nil
        game_system=nil
        pokemonSystem=nil
        mapid=nil
        File.open(savefile){|f|
           trainer=Marshal.load(f)
           framecount=Marshal.load(f)
           game_system=Marshal.load(f)
           pokemonSystem=Marshal.load(f)
           mapid=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)
        raise "Corrupted file" if !mapid.is_a?(Numeric)
        return [trainer,framecount,game_system,pokemonSystem,mapid]
      end
    
      def pbStartDeleteScreen
        savefile=RTP.getSaveFileName("Game.rxdata")
        @scene.pbStartScene
        if safeExists?(savefile)
          if Kernel.pbConfirmMessageSerious(_INTL("Delete all saved data?"))
            Kernel.pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
            if Kernel.pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
              Kernel.pbMessage(_INTL("Deleting all data.\r\nDon't turn off the power.\\wtnp[0]"))
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
        else
          Kernel.pbMessage(_INTL("No save file was found."))
        end
        @scene.pbEndScene
        $scene=pbCallTitle
      end
    
      def pbStartLoadScreen
        $PokemonTemp   = PokemonTemp.new
        $game_temp     = Game_Temp.new
        $game_system   = Game_System.new
        $PokemonSystem = PokemonSystem.new if !$PokemonSystem
        @scene.pbStartScene
        cmdContinue=-1
        cmdNewGame=0
        cmdOption=1
        cmdLanguage=-1
        cmdMysteryGift=-1
        commands=[]
        savefile=RTP.getSaveFileName("Game.rxdata")
        FontInstaller.install
        data_system = pbLoadRxData("Data/System")
        mapfile=$RPGVX ? sprintf("Data/Map%03d.rvdata",data_system.start_map_id) :
                         sprintf("Data/Map%03d.rxdata",data_system.start_map_id)
        if data_system.start_map_id==0 || !pbRgssExists?(mapfile)
          Kernel.pbMessage(_INTL("No starting position was set in the map editor.\1"))
          Kernel.pbMessage(_INTL("The game cannot continue."))
          @scene.pbEndScene
          $scene=nil
          return
        end
        if safeExists?(savefile)
          trainer=nil
          framecount=0
          showContinue=false
          haveBackup=false
          begin
            trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile)
            showContinue=true
            rescue
            if safeExists?(savefile+".bak")
              begin
                trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile+".bak")
                haveBackup=true
                showContinue=true
                rescue
              end
            end
            if haveBackup
              Kernel.pbMessage(_INTL("The save file is corrupt.  The previous save file will be loaded."))
            else
              Kernel.pbMessage(_INTL("The save file is corrupt, or is incompatible with this game."))
              if !Kernel.pbConfirmMessageSerious(_INTL("Do you want to delete the save file and start anew?"))
                raise "scss error - Corrupted or incompatible save file."
              end
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              $PokemonSystem=PokemonSystem.new if !$PokemonSystem
              $game_system=Game_System.new
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
          if showContinue
            if !haveBackup
              begin; File.delete(savefile+".bak"); rescue; end
              end
            totalsec = framecount / Graphics.frame_rate
            hour = totalsec / 60 / 60
            min = totalsec / 60 % 60
            mapname=pbGetMapNameFromId(mapid)
            mapname.gsub!(/\\PN/,trainer.name)
            textColor=["0070F8,78B8E8","E82010,F8A8B8","0070F8,78B8E8"][trainer.gender]
            loctext=_INTL("<ac><c2=06644bd2>{1}</c2></ac>",mapname)
            loctext+=_INTL("Player<r><c3={1}>{2}</c3><br>",textColor,fmtescape(trainer.name))
            loctext+=_ISPRINTF("Time<r><c3={1:s}>{2:02d}:{3:02d}</c3><br>",textColor,hour,min)
            loctext+=_INTL("Badges<r><c3={1}>{2}</c3><br>",textColor,trainer.numbadges)
            if trainer.pokedex
              loctext+=_INTL("Pokédex<r><c3={1}>{2}/{3}</c3><br>",textColor,trainer.pokedexOwned,trainer.pokedexSeen)
            end
            
            @sprites={}
            @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
            @sprites["overlay"].z = 99999
            @overlay=@sprites["overlay"].bitmap
            @overlay.clear
            baseColor=Color.new(239, 239, 239)
            shadowColor=Color.new(140,140,140)
            pbSetSystemFont(@sprites["overlay"].bitmap)
        
            textpos=[
            [_INTL("{1}",trainer.name),84,60,false,Color.new(57,165,255),Color.new(57,107,173)],
            [_INTL("{1}",mapname),84,90,false,baseColor,shadowColor],
            [_INTL("Badges: {1}",trainer.numbadges),84,135,false,baseColor,shadowColor],
            [_ISPRINTF("Time: {1:02d}:{2:02d}",hour,min),220,135,false,baseColor,shadowColor],
            ]
            pbDrawTextPositions(@overlay,textpos)
              
            loctext+=_INTL("Party") if trainer.party.length>0
            @scene.pbSetAuxiliaryWindow(loctext)
            @scene.pbSetParty(trainer,trainer.pokedex)
          end
          commands[cmdContinue=commands.length]=_INTL("Continue") if showContinue
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdOption=commands.length]=_INTL("Options")
          commands[cmdMysteryGift=commands.length]=_INTL("Mystery Gift") if (trainer.mysterygiftaccess rescue false)
        else
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdOption=commands.length]=_INTL("Options")
        end
        if LANGUAGES.length>=2
          commands[cmdLanguage=commands.length]=_INTL("Language")
        end
        
        loop do
          [email protected](commands)
          if cmdNewGame>=0 && command==cmdNewGame
            savefile=RTP.getSaveFileName("Game.rxdata")
            if safeExists?(savefile)
              @sprites["overlay"].opacity = 0
            end
            @scene.pbEndScene
            if $game_map && $game_map.events
              for event in $game_map.events.values
                event.clear_starting
              end
            end
            $game_temp.common_event_id=0 if $game_temp
            $scene               = Scene_Map.new
            Graphics.frame_count = 0
            $game_system         = Game_System.new
            $game_switches       = Game_Switches.new
            $game_variables      = Game_Variables.new
            $game_self_switches  = Game_SelfSwitches.new
            $game_screen         = Game_Screen.new
            $game_player         = Game_Player.new
            $ItemData            = readItemList("Data/items.dat")
            $PokemonMap          = PokemonMapMetadata.new
            $PokemonGlobal       = PokemonGlobalMetadata.new
            $PokemonStorage      = PokemonStorage.new
            $PokemonEncounters   = PokemonEncounters.new
            $PokemonTemp.begunNewGame=true
            $data_system         = pbLoadRxData("Data/System")
            $MapFactory          = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
            $game_player.moveto($data_system.start_x, $data_system.start_y)
            $game_player.refresh
            $game_map.autoplay
            $game_map.update
            return
          elsif cmdLanguage>=0 && command==cmdLanguage
            @scene.pbEndScene
            $PokemonSystem.language=pbChooseLanguage
            pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
            savedata=[]
            if safeExists?(savefile)
              File.open(savefile,"rb"){|f|
                 14.times {    savedata.push(Marshal.load(f)) }
              }
              savedata[3]=$PokemonSystem
              begin
                File.open(RTP.getSaveFileName("Game.rxdata"),"wb"){|f|
                   14.times {|i| Marshal.dump(savedata[i],f) }
                }
              rescue; end
            end
            $scene=pbCallTitle
            return
          elsif cmdContinue>=0 && command==cmdContinue
            unless safeExists?(savefile)
              pbPlayBuzzerSE()
              next
            end
            @sprites["overlay"].opacity = 0
            @scene.pbEndScene
            metadata=nil
            File.open(savefile){|f|
               Marshal.load(f) # Trainer already loaded
               $Trainer             = trainer
               Graphics.frame_count = Marshal.load(f)
               $game_system         = Marshal.load(f)
               Marshal.load(f) # PokemonSystem already loaded
               Marshal.load(f) # Current map id no longer needed
               $game_switches       = Marshal.load(f)
               $game_variables      = Marshal.load(f)
               $game_self_switches  = Marshal.load(f)
               $game_screen         = Marshal.load(f)
               $MapFactory          = Marshal.load(f)
               $game_map            = $MapFactory.map
               $game_player         = Marshal.load(f)
               $PokemonGlobal       = Marshal.load(f)
               metadata             = Marshal.load(f)
               $ItemData            = readItemList("Data/items.dat")
               $PokemonBag          = Marshal.load(f)
               $PokemonStorage      = Marshal.load(f)
               magicNumberMatches=false
               if $data_system.respond_to?("magic_number")
                 magicNumberMatches=($game_system.magic_number==$data_system.magic_number)
               else
                 magicNumberMatches=($game_system.magic_number==$data_system.version_id)
               end
               if !magicNumberMatches || $PokemonGlobal.safesave
                 if pbMapInterpreterRunning?
                   pbMapInterpreter.setup(nil,0)
                 end
                 begin
                   $MapFactory.setup($game_map.map_id) # calls setMapChanged
                   rescue Errno::ENOENT
                   if $DEBUG
                     Kernel.pbMessage(_INTL("Map {1} was not found.",$game_map.map_id))
                     map=pbWarpToMap()
                     if map
                       $MapFactory.setup(map[0])
                       $game_player.moveto(map[1],map[2])
                     else
                       $game_map=nil
                       $scene=nil
                       return
                     end
                   else
                     $game_map=nil
                     $scene=nil
                     Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
                   end
                 end
                 $game_player.center($game_player.x, $game_player.y)
               else
                 $MapFactory.setMapChanged($game_map.map_id)
               end
            }
            if !$game_map.events # Map wasn't set up
              $game_map=nil
              $scene=nil
              Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
              return
            end
            $PokemonMap=metadata
            $PokemonEncounters=PokemonEncounters.new
            $PokemonEncounters.setup($game_map.map_id)
            pbAutoplayOnSave
            $game_map.update
            $PokemonMap.updateMap
            $scene = Scene_Map.new
            return
          elsif cmdOption>=0 && command==cmdOption
            scene=PokemonOptionScene.new
            screen=PokemonOption.new(scene)
            pbFadeOutIn(99999) { screen.pbStartScreen }
          elsif cmdMysteryGift>=0 && command==cmdMysteryGift
           pbFadeOutIn(99999){
               trainer=pbDownloadMysteryGift(trainer)
            }
          end
        end
        @sprites["overlay"].opacity = 0
        @scene.pbEndScene
        return
      end
    end

    See that in the Continue part you "Reloaded" the $Trainer from the file?

    basically you change this:
    Code:
               $Trainer             = Marshal.load(f)

    to this:
    Code:
               Marshal.load(f) # Trainer already loaded
               $Trainer             = trainer

    It's 100% Working, the only "issue" know is that every save file will have the "Mystery Gift" on the Menu regardless the access.

    PS: Sorry about bad english and stuff :P
     

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    There were more errors in my code, it was a quick mock up.
    Anyway... You're having the problem because the load is reading:
    New Game
    Options

    as one set of commands, and once a save is made
    Continue
    New Game
    Options
    Mystery Gift

    as another set of commands... There is no in betweeny.
    Unfortunately there is no tidy fix for this except doing it this way.
    Code:
    class PokemonLoadScene # :doc:
      def pbUpdate
        pbUpdateSpriteHash(@sprites)
      end
    
      def pbStartScene
        @sprites={}
        @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
        @viewport.z=99998
        savefile=RTP.getSaveFileName("Game.rxdata")
        
        @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
        @sprites["overlay"].z = 99999
        @overlay=@sprites["overlay"].bitmap
        @overlay.clear
        baseColor=Color.new(239, 239, 239)
        shadowColor=Color.new(140,140,140)
        pbSetSystemFont(@sprites["overlay"].bitmap)
            
        if safeExists?(savefile)      
          @sprites["Continue"] = Sprite.new
          @sprites["Continue"].x = 52
          @sprites["Continue"].y = 4
          @sprites["Continue"].z = 99998
          @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
          @sprites["Continue"].opacity = 210
          
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 232
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 282
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
        if (trainer.mysterygiftaccess rescue false)
          @sprites["MysteryGift"] = Sprite.new
          @sprites["MysteryGift"].x = 68
          @sprites["MysteryGift"].y = 332
          @sprites["MysteryGift"].z = 99998
          @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["MysteryGift"].opacity = 210    
          textpos=[
          [_INTL("CONTINUE"),84,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),84,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,288,false,baseColor,shadowColor],
          [_INTL("MYSTERY GIFT"),84,338,false,baseColor,shadowColor],
          #[_INTL(
          ]
          pbDrawTextPositions(@overlay,textpos)
        else   
          textpos=[
          [_INTL("CONTINUE"),84,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),84,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,288,false,baseColor,shadowColor],
          ]
          pbDrawTextPositions(@overlay,textpos)
        end  
        else
          @sprites["NewGame"] = Sprite.new
          @sprites["NewGame"].x = 68
          @sprites["NewGame"].y = 142
          @sprites["NewGame"].z = 99998
          @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["NewGame"].opacity = 210
          
          @sprites["Options"] = Sprite.new
          @sprites["Options"].x = 68
          @sprites["Options"].y = 192
          @sprites["Options"].z = 99998
          @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
          @sprites["Options"].opacity = 210
          
          textpos=[
          [_INTL("NEW GAME"),84,148,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,198,false,baseColor,shadowColor],
          ]
          pbDrawTextPositions(@overlay,textpos)
          
        end
        
        addBackgroundOrColoredPlane(@sprites,"background","loadbg",
           Color.new(96,96,248),@viewport)
        @sprites["locwindow"]=Window_AdvancedTextPokemon.new("")
        @sprites["locwindow"].viewport=@viewport
        @sprites["locwindow"].visible=false
        @sprites["cmdwindow"]=Window_CommandPokemon.new([])
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].viewport=@viewport
        @sprites["cmdwindow"].visible=false
        pbFadeInAndShow(@sprites) { pbUpdate }
      end
    
      def pbSetAuxiliaryWindow(loctext)
         @sprites["locwindow"].resizeToFit(loctext,Graphics.width-@sprites["cmdwindow"].width)
         @sprites["locwindow"].width=228 if @sprites["locwindow"].width<228
         @sprites["locwindow"].height=Graphics.height
         @sprites["locwindow"].x=512#Graphics.width-@sprites["locwindow"].width
         @sprites["locwindow"].visible=true
         @sprites["locwindow"].text=loctext
      end
    
      def pbSetParty(trainer,hasPokedex=false)
        for i in 0...trainer.party.length
          @sprites["party#{i}"]=PokemonIconSprite.new(trainer.party[i])
          @sprites["party#{i}"].z=99999
          @sprites["party#{i}"].x=80+60*i
          @sprites["party#{i}"].y=150
        end
      end
    
      def pbChoose(commands)
        @sprites["cmdwindow"].resizeToFit(commands)
        @sprites["cmdwindow"].commands=commands
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"].visible=true
        loop do
          Graphics.update
          Input.update
          pbUpdate
          savefile=RTP.getSaveFileName("Game.rxdata")
          if safeExists?(savefile)
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar") if (trainer.mysterygiftaccess rescue false)
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar") if (trainer.mysterygiftaccess rescue false)
           elsif @sprites["cmdwindow"].index==2
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar") if (trainer.mysterygiftaccess rescue false)
           elsif @sprites["cmdwindow"].index==3 && (trainer.mysterygiftaccess rescue false)
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Continue"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Continue")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["MysteryGift"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S") if (trainer.mysterygiftaccess rescue false)
           end
          else
            if @sprites["cmdwindow"].index==0
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
            elsif @sprites["cmdwindow"].index==1
              @sprites["NewGame"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar")
              @sprites["Options"].bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Bar_S")
            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
    
    
    
    module FontInstaller # :doc:
      # filenames of fonts to be installed
      Filenames = [
         'pkmnem.ttf',
         'pkmnemn.ttf',
         'pkmnems.ttf',
         'pkmnrs.ttf',
         'pkmndp.ttf',
         'pkmnfl.ttf'
      ]    
      # names (not filenames) of fonts to be installed
      Names = [
        'Power Green',
        'Power Green Narrow',
        'Power Green Small',
        'Power Red and Blue',
        'Power Clear',
        'Power Red and Green'
      ]
      # whether to notify player (via pop-up message) that fonts were installed
      Notify = true
      # location of fonts (relative to game folder)
      Source = 'Fonts/'
    
      def self.getFontFolder
        fontfolder=MiniRegistry.get(MiniRegistry::HKEY_CURRENT_USER,
           "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
           "Fonts")
        return fontfolder+"\\" if fontfolder
        if ENV['SystemRoot']
          return ENV['SystemRoot'] + '\\Fonts\\'
        elsif ENV['windir']
          return ENV['windir'] + '\\Fonts\\'
        else
          return '\\Windows\\Fonts\\'
        end   
      end
    
      AFR = Win32API.new('gdi32', 'AddFontResource', ['P'], 'L')
      WPS = Win32API.new('kernel32', 'WriteProfileString', ['P'] * 3, 'L')
      SM = Win32API.new('user32', 'PostMessage', ['L'] * 4, 'L')
      WM_FONTCHANGE = 0x001D
      HWND_BROADCAST = 0xffff
    
      def self.copy_file(src,dest)
        File.open(src,  'rb') {|r|
           File.open(dest, 'wb') {|w|
              while s = r.read(4096)
                w.write s
              end
           }
        }
      end
    
      def self.pbResolveFont(name)
        RTP.eachPathFor(Source+name) {|file|
           return file if safeExists?(file)
        }
        return Source+name
      end
    
      def self.install
        success = []
        # Check if all fonts already exist
        filesExist=true
        fontsExist=true
        dest=self.getFontFolder()
        for i in 0...Names.size
          if !safeExists?(dest + Filenames[i])
            filesExist=false
          end
          if !Font.exist?(Names[i])
            fontsExist=false
          end
        end
        return if filesExist
        # Check if all source fonts exist
        exist=true
        for i in 0...Names.size
          if !RTP.exists?(Source + Filenames[i])
            exist=false
            break
          end
        end
        return if !exist # Exit if not all source fonts exist
        Kernel.pbMessage(_INTL("One or more fonts used in this game do not exist on the system.\1"))
        Kernel.pbMessage(_INTL("The game can be played, but the look of the game's text will not be optimal.\1"))
        failed=false
        for i in 0...Filenames.size
          f = Filenames[i]
          if safeExists?(dest + f) && !Font.exist?(Names[i])
            File.delete(dest + f) rescue nil
          end
          # check if already installed...
          if not safeExists?(dest + f)
            # check to ensure font is in specified location...
            if RTP.exists?(Source + f)
              # copy file to fonts folder
              succeeded=false
              begin
                copy_file(pbResolveFont(f), dest + f)
                # add font resource
                AFR.call(dest + f)
                # add entry to win.ini/registry
                WPS.call('Fonts', Names[i] + ' (TrueType)', f)
                succeeded=safeExists?(dest + f)
                rescue SystemCallError
                # failed
                succeeded=false
              end
              if succeeded
                success.push(Names[i])
              else
                failed=true
              end
            end
          else
            success.push(Names[i]) # assume success
          end
        end
        if success.length>0 # one or more fonts successfully installed
          SM.call(HWND_BROADCAST,WM_FONTCHANGE,0,0)
          if Notify
            fonts = ''
            success.each do |f|
              fonts << f << ', '
            end
            if failed
              Kernel.pbMessage(_INTL("Some of the fonts were successfully installed.\1"))
              Kernel.pbMessage(_INTL("To install the other fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
            else
              Kernel.pbMessage(_INTL("The fonts were successfully installed.\1"))
            end
            if Kernel.pbConfirmMessage(_INTL("Would you like to restart the game and apply the changes?"))
              a = Thread.new { system('Game') }
              exit
            end
          end
        else
          # No fonts were installed.
          Kernel.pbMessage(_INTL("To install the necessary fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
        end
      end
    end
    
    
    
    class PokemonLoad
      def initialize(scene)
        @scene=scene
      end
    
      def pbDisplay(text,brief=false)
        @scene.pbDisplay(text,brief)
      end
    
      def pbDisplayPaused(text)
        @scene.pbDisplayPaused(text)
      end
    
      def pbConfirm(text)
        return @scene.pbConfirm(text)
      end
    
      def pbTryLoadFile(savefile)
        trainer=nil
        framecount=nil
        game_system=nil
        pokemonSystem=nil
        mapid=nil
        File.open(savefile){|f|
           trainer=Marshal.load(f)
           framecount=Marshal.load(f)
           game_system=Marshal.load(f)
           pokemonSystem=Marshal.load(f)
           mapid=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)
        raise "Corrupted file" if !mapid.is_a?(Numeric)
        return [trainer,framecount,game_system,pokemonSystem,mapid]
      end
    
      def pbStartDeleteScreen
        savefile=RTP.getSaveFileName("Game.rxdata")
        @scene.pbStartScene
        if safeExists?(savefile)
          if Kernel.pbConfirmMessageSerious(_INTL("Delete all saved data?"))
            Kernel.pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
            if Kernel.pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
              Kernel.pbMessage(_INTL("Deleting all data.\r\nDon't turn off the power.\\wtnp[0]"))
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
        else
          Kernel.pbMessage(_INTL("No save file was found."))
        end
        @scene.pbEndScene
        $scene=pbCallTitle
      end
    
      def pbStartLoadScreen
        $PokemonTemp   = PokemonTemp.new
        $game_temp     = Game_Temp.new
        $game_system   = Game_System.new
        $PokemonSystem = PokemonSystem.new if !$PokemonSystem
        @scene.pbStartScene
        cmdContinue=-1
        cmdNewGame=0
        cmdOption=1
        cmdLanguage=-1
    #    cmdMysteryGift=-1
        commands=[]
        savefile=RTP.getSaveFileName("Game.rxdata")
        FontInstaller.install
        data_system = pbLoadRxData("Data/System")
        mapfile=$RPGVX ? sprintf("Data/Map%03d.rvdata",data_system.start_map_id) :
                         sprintf("Data/Map%03d.rxdata",data_system.start_map_id)
        if data_system.start_map_id==0 || !pbRgssExists?(mapfile)
          Kernel.pbMessage(_INTL("No starting position was set in the map editor.\1"))
          Kernel.pbMessage(_INTL("The game cannot continue."))
          @scene.pbEndScene
          $scene=nil
          return
        end
        if safeExists?(savefile)
          trainer=nil
          framecount=0
          showContinue=false
          haveBackup=false
          begin
            trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile)
            showContinue=true
            rescue
            if safeExists?(savefile+".bak")
              begin
                trainer, framecount, $game_system, $PokemonSystem, mapid=pbTryLoadFile(savefile+".bak")
                haveBackup=true
                showContinue=true
                rescue
              end
            end
            if haveBackup
              Kernel.pbMessage(_INTL("The save file is corrupt.  The previous save file will be loaded."))
            else
              Kernel.pbMessage(_INTL("The save file is corrupt, or is incompatible with this game."))
              if !Kernel.pbConfirmMessageSerious(_INTL("Do you want to delete the save file and start anew?"))
                raise "scss error - Corrupted or incompatible save file."
              end
              begin; File.delete(savefile); rescue; end
              begin; File.delete(savefile+".bak"); rescue; end
              $PokemonSystem=PokemonSystem.new if !$PokemonSystem
              $game_system=Game_System.new
              Kernel.pbMessage(_INTL("The save file was deleted."))
            end
          end
          if showContinue
            if !haveBackup
              begin; File.delete(savefile+".bak"); rescue; end
              end
            totalsec = framecount / Graphics.frame_rate
            hour = totalsec / 60 / 60
            min = totalsec / 60 % 60
            mapname=pbGetMapNameFromId(mapid)
            mapname.gsub!(/\\PN/,trainer.name)
            textColor=["0070F8,78B8E8","E82010,F8A8B8","0070F8,78B8E8"][trainer.gender]
            loctext=_INTL("<ac><c2=06644bd2>{1}</c2></ac>",mapname)
            loctext+=_INTL("Player<r><c3={1}>{2}</c3><br>",textColor,fmtescape(trainer.name))
            loctext+=_ISPRINTF("Time<r><c3={1:s}>{2:02d}:{3:02d}</c3><br>",textColor,hour,min)
            loctext+=_INTL("Badges<r><c3={1}>{2}</c3><br>",textColor,trainer.numbadges)
            if trainer.pokedex
              loctext+=_INTL("Pokédex<r><c3={1}>{2}/{3}</c3><br>",textColor,trainer.pokedexOwned,trainer.pokedexSeen)
            end
            
            @sprites={}
            @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
            @sprites["overlay"].z = 99999
            @overlay=@sprites["overlay"].bitmap
            @overlay.clear
            baseColor=Color.new(239, 239, 239)
            shadowColor=Color.new(140,140,140)
            pbSetSystemFont(@sprites["overlay"].bitmap)
        
            textpos=[
            [_INTL("{1}",trainer.name),84,60,false,Color.new(57,165,255),Color.new(57,107,173)],
            [_INTL("{1}",mapname),84,90,false,baseColor,shadowColor],
            [_INTL("Badges: {1}",trainer.numbadges),84,135,false,baseColor,shadowColor],
            [_ISPRINTF("Time: {1:02d}:{2:02d}",hour,min),220,135,false,baseColor,shadowColor],
            ]
            pbDrawTextPositions(@overlay,textpos)
              
            loctext+=_INTL("Party") if trainer.party.length>0
            @scene.pbSetAuxiliaryWindow(loctext)
            @scene.pbSetParty(trainer,trainer.pokedex)
          end
          commands[cmdContinue=commands.length]=_INTL("Continue") if showContinue
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdOption=commands.length]=_INTL("Options")
          commands[cmdMysteryGift=commands.length]=_INTL("Mystery Gift") if (trainer.mysterygiftaccess rescue false)
        else
          commands[cmdNewGame=commands.length]=_INTL("New Game")
          commands[cmdOption=commands.length]=_INTL("Options")
        end
        if LANGUAGES.length>=2
          commands[cmdLanguage=commands.length]=_INTL("Language")
        end
        loop do
          [email protected](commands)
          if cmdNewGame>=0 && command==cmdNewGame
            savefile=RTP.getSaveFileName("Game.rxdata")
            if safeExists?(savefile)
              @sprites["overlay"].opacity = 0
            end
            @scene.pbEndScene
            if $game_map && $game_map.events
              for event in $game_map.events.values
                event.clear_starting
              end
            end
            $game_temp.common_event_id=0 if $game_temp
            $scene               = Scene_Map.new
            Graphics.frame_count = 0
            $game_system         = Game_System.new
            $game_switches       = Game_Switches.new
            $game_variables      = Game_Variables.new
            $game_self_switches  = Game_SelfSwitches.new
            $game_screen         = Game_Screen.new
            $game_player         = Game_Player.new
            $ItemData            = readItemList("Data/items.dat")
            $PokemonMap          = PokemonMapMetadata.new
            $PokemonGlobal       = PokemonGlobalMetadata.new
            $PokemonStorage      = PokemonStorage.new
            $PokemonEncounters   = PokemonEncounters.new
            $PokemonTemp.begunNewGame=true
            $data_system         = pbLoadRxData("Data/System")
            $MapFactory          = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
            $game_player.moveto($data_system.start_x, $data_system.start_y)
            $game_player.refresh
            $game_map.autoplay
            $game_map.update
            return
          elsif cmdLanguage>=0 && command==cmdLanguage
            @scene.pbEndScene
            $PokemonSystem.language=pbChooseLanguage
            pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
            savedata=[]
            if safeExists?(savefile)
              File.open(savefile,"rb"){|f|
                 14.times {    savedata.push(Marshal.load(f)) }
              }
              savedata[3]=$PokemonSystem
              begin
                File.open(RTP.getSaveFileName("Game.rxdata"),"wb"){|f|
                   14.times {|i| Marshal.dump(savedata[i],f) }
                }
              rescue; end
            end
            $scene=pbCallTitle
            return
          elsif cmdContinue>=0 && command==cmdContinue
            unless safeExists?(savefile)
              pbPlayBuzzerSE()
              next
            end
            @sprites["overlay"].opacity = 0
            @scene.pbEndScene
            metadata=nil
            File.open(savefile){|f|
               Marshal.load(f) # Trainer already loaded
               $Trainer             = trainer
               Graphics.frame_count = Marshal.load(f)
               $game_system         = Marshal.load(f)
               Marshal.load(f) # PokemonSystem already loaded
               Marshal.load(f) # Current map id no longer needed
               $game_switches       = Marshal.load(f)
               $game_variables      = Marshal.load(f)
               $game_self_switches  = Marshal.load(f)
               $game_screen         = Marshal.load(f)
               $MapFactory          = Marshal.load(f)
               $game_map            = $MapFactory.map
               $game_player         = Marshal.load(f)
               $PokemonGlobal       = Marshal.load(f)
               metadata             = Marshal.load(f)
               $ItemData            = readItemList("Data/items.dat")
               $PokemonBag          = Marshal.load(f)
               $PokemonStorage      = Marshal.load(f)
               magicNumberMatches=false
               if $data_system.respond_to?("magic_number")
                 magicNumberMatches=($game_system.magic_number==$data_system.magic_number)
               else
                 magicNumberMatches=($game_system.magic_number==$data_system.version_id)
               end
               if !magicNumberMatches || $PokemonGlobal.safesave
                 if pbMapInterpreterRunning?
                   pbMapInterpreter.setup(nil,0)
                 end
                 begin
                   $MapFactory.setup($game_map.map_id) # calls setMapChanged
                   rescue Errno::ENOENT
                   if $DEBUG
                     Kernel.pbMessage(_INTL("Map {1} was not found.",$game_map.map_id))
                     map=pbWarpToMap()
                     if map
                       $MapFactory.setup(map[0])
                       $game_player.moveto(map[1],map[2])
                     else
                       $game_map=nil
                       $scene=nil
                       return
                     end
                   else
                     $game_map=nil
                     $scene=nil
                     Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
                   end
                 end
                 $game_player.center($game_player.x, $game_player.y)
               else
                 $MapFactory.setMapChanged($game_map.map_id)
               end
            }
            if !$game_map.events # Map wasn't set up
              $game_map=nil
              $scene=nil
              Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
              return
            end
            $PokemonMap=metadata
            $PokemonEncounters=PokemonEncounters.new
            $PokemonEncounters.setup($game_map.map_id)
            pbAutoplayOnSave
            $game_map.update
            $PokemonMap.updateMap
            $scene = Scene_Map.new
            return
          elsif cmdOption>=0 && command==cmdOption
            scene=PokemonOptionScene.new
            screen=PokemonOption.new(scene)
            pbFadeOutIn(99999) { screen.pbStartScreen }
          elsif cmdMysteryGift>=0 && command==cmdMysteryGift
           pbFadeOutIn(99999){
               trainer=pbDownloadMysteryGift(trainer)
            }
          end
        end
        @sprites["overlay"].opacity = 0
        @scene.pbEndScene
        return
      end
    end
    That's the problem with defining windows and such, directly, not when it's needed.
    This will fix your problem, Phaelitico... As long as you don't look at the code, it does what is needed and can be considered neat and tidy (even though it's ugly and a mess).
     

    mustafa505

    Aeon Developer
    306
    Posts
    14
    Years
  • i am using version 11 and i get this error whenever i goto new game:
    Code:
    ---------------------------
    Pokemon Essentials
    ---------------------------
    Exception: NoMethodError
    
    Message: undefined method `pbQuantity' for nil:NilClass
    
    Hud:35:in `initialize'
    
    Scene_Map:29:in `new'
    
    Scene_Map:29:in `createSpritesets'
    
    Scene_Map:28:in `each'
    
    Scene_Map:28:in `createSpritesets'
    
    Scene_Map:63:in `cng_dayseason_map_main'
    
    Season:162:in `main'
    
    Main:37:in `mainFunctionDebug'
    
    Main:15:in `mainFunction'
    
    Main:15:in `pbCriticalCode'
    
    
    
    This exception was logged in 
    
    C:\Users\Mansoor\Saved Games/Pokemon Essentials/errorlog.txt.
    
    Press Ctrl+C to copy this message to the clipboard.
    ---------------------------
    OK   
    ---------------------------
     
    63
    Posts
    11
    Years
    • Seen Mar 17, 2015
    Im Using essentials And everething Works Fine And i 'Versionen Never got an error
    Ok the Misters Gift Sitzfläche Don 't work ,but this is Not so Big Problem .(Sorry for my Bad english)
     
    67
    Posts
    12
    Years
  • Thanks heaps, looks great. But when I try using it, I keep getting
    The safe file is corrupt, or is incompatible with this game

    followed by the question to delete the previous safe file.
    Once I press no I get this error:

    Spoiler:


    How to fix that?
     

    Nickalooose

    --------------------
    1,309
    Posts
    16
    Years
    • Seen Dec 28, 2023
    Delete the save file... The error gives you the solution and the fix, you chose to say no when you need to say yes... It will work when you do that.
     
    Back
    Top