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.
https://www.mediafire.com/?olw1l5t5o6lfu8t
![[PokeCommunity.com] Pokémon B/W-style loading screen for Essentials [PokeCommunity.com] Pokémon B/W-style loading screen for Essentials](https://i1004.photobucket.com/albums/af167/carmaniac94/Example_zps1bfdd2bd.png)
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.
https://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
@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
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"].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")
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("<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")
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
Last edited: