View Single Post
  #1    
Old December 19th, 2012 (1:14 PM). Edited December 19th, 2012 by carmaniac.
carmaniac's Avatar
carmaniac carmaniac is offline
Where the pickle surprise at?
     
    Join Date: Apr 2009
    Location: England
    Age: 23
    Nature: Relaxed
    Posts: 683
    Yes, this is a public resource for anyone who wants to use it, only tested with version 10 of essentials, please credit me if used.



    Anyway, I present to you, B/W styled loading screen for essentials. To install this script, go to the script, PokémonLoad in the script editor, and replace the entire script with this new one below, download the graphics folder and put all the graphics into the Graphics/Pictures folder of your game.

    http://www.mediafire.com/?olw1l5t5o6lfu8t

    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
        @[email protected]["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
          
          textpos=[
          [_INTL("CONTINUE"),84,10,false,baseColor,shadowColor],
          [_INTL("NEW GAME"),84,238,false,baseColor,shadowColor],
          [_INTL("OPTIONS"),84,288,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"][email protected]
        @sprites["locwindow"].visible=false
        @sprites["cmdwindow"]=Window_CommandPokemon.new([])
        @sprites["cmdwindow"].x=512
        @sprites["cmdwindow"].y=0
        @sprites["cmdwindow"][email protected]
        @sprites["cmdwindow"].visible=false
        pbFadeInAndShow(@sprites) { pbUpdate }
      end
    
      def pbSetAuxiliaryWindow(loctext)
         @sprites["locwindow"].resizeToFit(loctext,[email protected]["cmdwindow"].width)
         @sprites["locwindow"].width=228 if @sprites["locwindow"].width<228
         @sprites["locwindow"].height=Graphics.height
         @sprites["locwindow"].x=512#[email protected]["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")
            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")
            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")
            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("{1}",mapname)
            loctext+=_INTL("Player{2}",textColor,fmtescape(trainer.name))
            loctext+=_ISPRINTF("Time{2:02d}:{3:02d}",textColor,hour,min)
            loctext+=_INTL("Badges{2}",textColor,trainer.numbadges)
            if trainer.pokedex
              loctext+=_INTL("Pokédex{2}/{3}",textColor,trainer.pokedexOwned,trainer.pokedexSeen)
            end
            
            @sprites={}
            @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height)
            @sprites["overlay"].z = 99999
            @[email protected]["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")
        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 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
    __________________
    This signature has been disabled.
    Spoilers are not allowed in signatures.
    Please review and fix the issues by reading the signature rules.

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

    Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.
    Reply With Quote