PDA

View Full Version : [Essentials script] Pokémon B/W-style loading screen for Essentials


carmaniac
December 19th, 2012, 01:14 PM
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.

http://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.

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


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
command=@scene.pbChoose(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

Arma
December 19th, 2012, 01:33 PM
Looks sweet, I'll definitely be using this in my game!
Thanks a lot!

carmaniac
December 19th, 2012, 01:42 PM
Looks sweet, I'll definitely be using this in my game!
Thanks a lot!

No problem at all, I'll probably over the Christmas holidays also do the b/w menu for essentials.

Rayd12smitty
December 19th, 2012, 08:01 PM
It is really nice. I installed it and found an error though. It works fine when resuming a game, but something is wrong with new game.

---------------------------
Pokemon Melanite
---------------------------
Exception: NoMethodError

Message: undefined method `[]' for nil:NilClass

PokemonLoad:469:in `pbStartLoadScreen'

PokemonLoad:466:in `loop'

PokemonLoad:596: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\Administrator\Saved Games/Pokemon Melanite/errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------

carmaniac
December 19th, 2012, 10:45 PM
It is really nice. I installed it and found an error though. It works fine when resuming a game, but something is wrong with new game.

---------------------------
Pokemon Melanite
---------------------------
Exception: NoMethodError

Message: undefined method `[]' for nil:NilClass

PokemonLoad:469:in `pbStartLoadScreen'

PokemonLoad:466:in `loop'

PokemonLoad:596: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\Administrator\Saved Games/Pokemon Melanite/errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------


At line 469, replace @sprites["overlay"].opacity = 0 with:

savefile=RTP.getSaveFileName("Game.rxdata")
if safeExists?(savefile)
@sprites["overlay"].opacity = 0
end

VEGET@
December 20th, 2012, 05:07 AM
Now works fine, and looks great :) thanks a lot

Rayd12smitty
December 20th, 2012, 09:03 AM
Thanks it works now. This is awesome will give credit!

ppooookkkkkkk
December 20th, 2012, 09:07 AM
Wow this will defenatly make my game look better thanks a lot!

XerX
December 20th, 2012, 10:27 AM
Hey, I got the following error when I replaced the script.

---------------------------
Pokemon Essentials
---------------------------
Exception: NameError

Message: uninitialized constant Scene_DebugIntro::PokemonLoadScene

DebugIntro:4:in `main'

Main:37:in `mainFunctionDebug'

Main:15:in `mainFunction'

Main:15:in `pbCriticalCode'

Main:15:in `mainFunction'

Main:47

Main:46:in `loop'

Main:55



This exception was logged in ./errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------

carmaniac
December 21st, 2012, 03:08 AM
Hey, I got the following error when I replaced the script.

---------------------------
Pokemon Essentials
---------------------------
Exception: NameError

Message: uninitialized constant Scene_DebugIntro::PokemonLoadScene

DebugIntro:4:in `main'

Main:37:in `mainFunctionDebug'

Main:15:in `mainFunction'

Main:15:in `pbCriticalCode'

Main:15:in `mainFunction'

Main:47

Main:46:in `loop'

Main:55



This exception was logged in ./errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------


What version of essentials are you using?

XerX
December 21st, 2012, 08:30 AM
What version of essentials are you using?

I'm using Pokemon Essentials 10.

carmaniac
December 21st, 2012, 09:00 AM
I'm using Pokemon Essentials 10.

Not sure why you would be getting that error in debug mode. I guess trying to by-pass that load method might help. Go to the main script, and change line 3 return Scene_DebugIntro.new to return Scene_Intro.new(['intro1'], 'splash') just to see if it lets you play in debug mode.

XerX
December 21st, 2012, 09:56 AM
Nevermind. I figured it out. I had to delete my old save file.

ActionReplayer
December 28th, 2012, 09:33 AM
Thanks man, certainly gonna user it.

p.claydon
December 29th, 2012, 01:36 PM
is there a way to change the names colour depending on gender?

Arx
January 11th, 2013, 12:54 PM
Does this work on Essentials 11? If yes, i'm definitely going to use that for my game.

carmaniac
January 11th, 2013, 01:40 PM
Does this work on Essentials 11? If yes, i'm definitely going to use that for my game.

In theory it should work just fine, if it doesn't, I can update the script when free to 11.

Maruno
January 11th, 2013, 02:39 PM
It'll work, just without the Mystery Gift option.

Dradier234
January 19th, 2013, 02:14 PM
Very nice.. This is awesome. :D

Radical Raptr
January 19th, 2013, 04:43 PM
I am loving this
I'll be changing the graphics but great job! Thank you for this credible resource :P

Kaito123
February 8th, 2013, 12:40 AM
It'll work, just without the Mystery Gift option.

It is possible to make the Mystery Gift in this script? So you can use it for all Features in Essentials 11?

Obito Uchiha
May 10th, 2013, 03:54 PM
I've tried to make it compatible with v11. The only difficult to make it wrong it the cinditional branch.

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
May 19th, 2013, 12:28 AM
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 :)

Obito Uchiha
May 20th, 2013, 05:32 AM
And I still haven't an idea why "trainer.mysterygiftaccess" as condition at the beginning doesn't work...

Nickalooose
May 22nd, 2013, 01:06 PM
I've tried to make it compatible with v11. The only difficult to make it wrong it the cinditional branch.

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.

Obito Uchiha
May 23rd, 2013, 07:42 AM
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
May 23rd, 2013, 11:33 AM
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

Obito Uchiha
May 23rd, 2013, 01:19 PM
You can find the events on the "Lerucean Town Mart"-Map.

Nickalooose
May 23rd, 2013, 01:55 PM
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.


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
command=@scene.pbChoose(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.

ppooookkkkkkk
May 23rd, 2013, 08:52 PM
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
May 24th, 2013, 08:04 AM
What doesn't work?
It works fine for me...
https://imageshack.us/a/img69/9383/itworks.png
https://imageshack.us/a/img259/5938/mysterygiftscreen.png

EDIT
at line 387, try putting:

cmdMysteryGift=-1

Phaelitico
July 11th, 2013, 09:44 AM
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:



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
command=@scene.pbChoose(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:

$Trainer = Marshal.load(f)


to this:

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

lauerolus
July 12th, 2013, 06:27 AM
Thank you for this, definitely using and crediting you for it.

Nickalooose
July 12th, 2013, 01:42 PM
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.

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
command=@scene.pbChoose(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).

mewlover22
July 16th, 2013, 11:18 AM
By any chance are using version 12?

mustafa505
July 18th, 2013, 06:01 AM
i am using version 11 and i get this error whenever i goto new game:
---------------------------
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
---------------------------

pokemonmercury
July 20th, 2013, 03:44 PM
Thank you for this!
I will use this... And of course... I'll give credit. :)

linkthehero
July 23rd, 2013, 04:10 PM
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)

Yero
October 14th, 2013, 04:03 AM
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:

---------------------------
Shadows of the Past
---------------------------
Exception: RuntimeError

Message: scss error - Corrupted or incompatible save file.

PokemonLoad:432: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'

Main:55



This exception was logged in

C:\Users\Yero R. Kuethe\Saved Games/Shadows of the Past/errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------


How to fix that?

Nickalooose
October 14th, 2013, 10:39 AM
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.

Yero
October 14th, 2013, 11:23 AM
I have tried that too. Started a new game by deleting the previous saved file, got at least 2 new pokemon, saved the file again and restart. But I keep getting that same error.

Maruno
October 14th, 2013, 11:33 AM
Which version of Essentials are you putting this script into? This script only works for Essentials version 6 or later.

Yero
October 14th, 2013, 11:50 AM
If the version numbers are on the left of the Download page on the wiki, then version 10 or 11. I have replaced the script with the one given on the thread, deleted the old PokemonLoad file. Restarted over and over again, everytime saving a new file as it keeps saying that the safe file is Corrupted or incompatible save file.

---------------------------
Shadows of the Past
---------------------------
Exception: RuntimeError

Message: scss error - Corrupted or incompatible save file.

PokemonLoad:432:in `pbStartLoadScreen'

DebugIntro:6:in `main'

Main:37:in `mainFunctionDebug'

Mainin `mainFunction'

Mainin `pbCriticalCode'

Mainin `mainFunction'

Main:47

Main:46:in `loop'

Main:55

Nickalooose
October 14th, 2013, 12:26 PM
delete the save file... It's the only solution, sorry to say.

monkeyking
November 5th, 2013, 07:07 PM
Thanks. I want to say appreciate the details provided

dydd90
January 2nd, 2014, 10:27 AM
it's great!! i'll use it of course ;)