PDA

View Full Version : [Essentials script] D/P/Pt Load Screen


Crazyninjaguy
August 10th, 2010, 11:15 AM
Well i've decided to post this here, as my members have had this for a few weeks now.

This is a loading screen similar to Diamond/Pearl/Platinum.

Original Thread: http://www.planetdev.net/index.php?showtopic=414

Here's a screenie to show what i mean:

http://img709.imageshack.us/img709/9250/dpptload.png

For those of you wondering where the options errr, option is, it's below new game.

When you move the cursor below new game, it scrolls smoothly down to options and back up when selecting continue.

Ok, here are the instructions.

1. Create a new script section above main and call it something like "PokemonLoad"

2. Paste the following script into the new section you just created:

#===============================================================================
# * Single Screen D/P/Pt Load Screen
# * By Crazyninjaguy
# * http://www.planetdev.net
#===============================================================================

class Window_Base < Window
#--------------------------------------------------------------------------
# * Object Initialization
# x : window x-coordinate
# y : window y-coordinate
# width : window width
# height : window height
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super()
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)
self.x = x
self.y = y
self.width = width
self.height = height
self.z = 100
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
# Dispose if window contents bit map is set
if self.contents != nil
self.contents.dispose
end
super
end
#--------------------------------------------------------------------------
# * Get Text Color
# n : text color number (0-7)
#--------------------------------------------------------------------------
def text_color(n)
case n
when 0
return Color.new(255, 255, 255, 255)
when 1
return Color.new(128, 128, 255, 255)
when 2
return Color.new(255, 128, 128, 255)
when 3
return Color.new(128, 255, 128, 255)
when 4
return Color.new(128, 255, 255, 255)
when 5
return Color.new(255, 128, 255, 255)
when 6
return Color.new(255, 255, 128, 255)
when 7
return Color.new(192, 192, 192, 255)
else
normal_color
end
end
#--------------------------------------------------------------------------
# * Get Normal Text Color
#--------------------------------------------------------------------------
def normal_color
return Color.new(255, 255, 255, 255)
end
#--------------------------------------------------------------------------
# * Get Disabled Text Color
#--------------------------------------------------------------------------
def disabled_color
return Color.new(255, 255, 255, 128)
end
#--------------------------------------------------------------------------
# * Get System Text Color
#--------------------------------------------------------------------------
def system_color
return Color.new(192, 224, 255, 255)
end
#--------------------------------------------------------------------------
# * Get Crisis Text Color
#--------------------------------------------------------------------------
def crisis_color
return Color.new(255, 255, 64, 255)
end
#--------------------------------------------------------------------------
# * Get Knockout Text Color
#--------------------------------------------------------------------------
def knockout_color
return Color.new(255, 64, 0)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# Reset if windowskin was changed
if $game_system.windowskin_name != @windowskin_name
@windowskin_name = $game_system.windowskin_name
self.windowskin = RPG::Cache.windowskin(@windowskin_name)
end
end
#--------------------------------------------------------------------------
# * Draw Graphic
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_graphic(actor, x, y)
bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Draw Name
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# * Draw Class
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_class(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 236, 32, actor.class_name)
end
#--------------------------------------------------------------------------
# * Draw Level
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "Lv")
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
end
#--------------------------------------------------------------------------
# * Make State Text String for Drawing
# actor : actor
# width : draw spot width
# need_normal : Whether or not [normal] is needed (true / false)
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
# Get width of brackets
brackets_width = self.contents.text_size("[]").width
# Make text string for state names
text = ""
for i in battler.states
if $data_states[i].rating >= 1
if text == ""
text = $data_states[i].name
else
new_text = text + "/" + $data_states[i].name
text_width = self.contents.text_size(new_text).width
if text_width > width - brackets_width
break
end
text = new_text
end
end
end
# If text string for state names is empty, make it [normal]
if text == ""
if need_normal
text = "[Normal]"
end
else
# Attach brackets
text = "[" + text + "]"
end
# Return completed text string
return text
end
#--------------------------------------------------------------------------
# * Draw State
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_state(actor, x, y, width = 120)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
self.contents.draw_text(x, y, width, 32, text)
end
#--------------------------------------------------------------------------
# * Draw EXP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_exp(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 24, 32, "E")
self.contents.font.color = normal_color
self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 144)
# Draw "HP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
# Calculate if there is draw space for MaxHP
if width - 32 >= 108
hp_x = x + width - 108
flag = true
elsif width - 32 >= 48
hp_x = x + width - 48
flag = false
end
# Draw HP
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
# Draw MaxHP
if flag
self.contents.font.color = normal_color
self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
end
end
#--------------------------------------------------------------------------
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_sp(actor, x, y, width = 144)
# Draw "SP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
# Calculate if there is draw space for MaxHP
if width - 32 >= 108
sp_x = x + width - 108
flag = true
elsif width - 32 >= 48
sp_x = x + width - 48
flag = false
end
# Draw SP
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
# Draw MaxSP
if flag
self.contents.font.color = normal_color
self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
end
end
#--------------------------------------------------------------------------
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
end
#--------------------------------------------------------------------------
# * Draw Item Name
# item : item
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_item_name(item, x, y)
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name)
end
end


module Colors
Black = Color.new(0,0,0)
Blue = Color.new(0,0,255)
end

class PokemonLoadScene # :doc:
def pbStartScene
@move_adv_up = false
@move_new_up = false
@move_opt_up = false
@move_adv_down = false
@move_new_down = false
@move_opt_down = false
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
addBackgroundOrColoredPlane(@sprites,"clrvp","loadbg",
Color.new(17<<3,18<<3,31<<3),@viewport)
@sprites["locwindow"]=Window_AdvancedTextPokemon.new("")
@sprites["locwindow"].visible=false
@sprites["cmdwindow"]=Window_CommandPokemon.new([])
@sprites["cmdwindow"].x=480
@sprites["cmdwindow"].y=0
@sprites["cmdwindow"].visible=false
if FileTest.exist?("Game.rxdata")
@sprites["adventure"]=Window_AdventureData.new
@sprites["adventure"].opacity = 255
@sprites["newgame"]=Window_NewGame.new(224)
@sprites["newgame"].opacity = 200
@sprites["options"]=Window_Options.new((224 + 56) + 16)
@sprites["options"].opacity = 200
else
@sprites["newgame"]=Window_NewGame.new(16)
@sprites["newgame"].opacity = 255
@sprites["options"]=Window_Options.new((56 + 16) + 16)
@sprites["options"].opacity = 200
end
pbFadeInAndShow(@sprites) { pbUpdate }
end
alias cng_load_auxillary pbSetAuxiliaryWindow
def pbSetAuxiliaryWindow(loctext)
cng_load_auxillary(loctext)
@sprites["locwindow"].x = 480
end
def pbChoose(commands)
@sprites["cmdwindow"].resizeToFit(commands)
@sprites["cmdwindow"].commands=commands
@sprites["cmdwindow"].x=480
@sprites["cmdwindow"].y=0
@sprites["cmdwindow"].visible=true
loop do
Graphics.update
Input.update
pbUpdate
if @move_adv_up
if @sprites["adventure"].y >= -192
@sprites["adventure"].y -= 8
end
if @sprites["adventure"].y == -192
@move_adv_up = false
end
end
if @move_new_up
if @sprites["newgame"].y >= 16
@sprites["newgame"].y -= 8
end
if @sprites["newgame"].y == 16
@move_new_up = false
end
end
if @move_opt_up
if @sprites["options"].y >= 88
@sprites["options"].y -= 8
end
if @sprites["options"].y == 88
@move_opt_up = false
end
end
if @move_adv_down
if @sprites["adventure"].y <= 16
@sprites["adventure"].y += 8
end
if @sprites["adventure"].y == 16
@move_adv_down = false
end
end
if @move_new_down
if @sprites["newgame"].y <= 224
@sprites["newgame"].y += 8
end
if @sprites["newgame"].y == 224
@move_new_down = false
end
end
if @move_opt_down
if @sprites["options"].y <= 296
@sprites["options"].y += 8
end
if @sprites["options"].y == 296
@move_opt_down = false
end
end
if FileTest.exist?("Game.rxdata")
case @sprites["cmdwindow"].index
when 0
@sprites["adventure"].opacity = 255
@sprites["newgame"].opacity = 200
@sprites["options"].opacity = 200
when 1
@sprites["adventure"].opacity = 200
@sprites["newgame"].opacity = 255
@sprites["options"].opacity = 200
when 2
@sprites["adventure"].opacity = 200
@sprites["newgame"].opacity = 200
@sprites["options"].opacity = 255
end
else
case @sprites["cmdwindow"].index
when 0
@sprites["newgame"].opacity = 255
@sprites["options"].opacity = 200
when 1
@sprites["newgame"].opacity = 200
@sprites["options"].opacity = 255
end
end
if FileTest.exist?("Game.rxdata")
if Input.trigger?(Input::DOWN) && @sprites["cmdwindow"].index == 2
@move_adv_up = true
@move_new_up = true
@move_opt_up = true
elsif Input.trigger?(Input::UP) && @sprites["cmdwindow"].index == 0
@move_adv_down = true
@move_new_down = true
@move_opt_down = true
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

class Window_AdventureData < Window_Base
def initialize
super(16, 16, (480 - 32), 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 9999998
refresh
end
def refresh
self.contents.clear
trainer, framecount, $game_system, $PokemonSystem=loadfile("Game.rxdata")
self.contents.font.color = Colors::Black
self.contents.draw_text(0, 0, width - 32, 32, "CONTINUE")
self.contents.font.color = Colors::Blue
self.contents.draw_text(32, 32, width - 32, 32, "PLAYER")
self.contents.draw_text(32, 64, width - 32, 32, "TIME")
if trainer.numbadges>0
self.contents.draw_text(32, 96, width - 32, 32, "BADGES")
end
if trainer.pokedex
self.contents.draw_text(32, 128, width - 32, 32, "POKEDEX")
end
self.contents.draw_text(0, 32, width - 32, 32, trainer.name, 2)
totalsec = framecount / Graphics.frame_rate
hour = totalsec / 60 / 60
min = totalsec / 60 % 60
self.contents.draw_text(0, 64, width - 32, 32, sprintf("%02d:%02d", hour, min), 2)
if trainer.pokedex
self.contents.draw_text(0, 128, width - 32, 32, trainer.pokedexOwned.to_s, 2)
end
if trainer.numbadges>0
self.contents.draw_text(0, 96, width - 32, 32, trainer.numbadges.to_s, 2)
end
end
def loadfile(savefile)
trainer=nil
framecount=nil
game_system=nil
pokemonSystem=nil
File.open(savefile){|f|
trainer=Marshal.load(f)
framecount=Marshal.load(f)
game_system=Marshal.load(f)
pokemonSystem=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)
return [trainer,framecount,game_system,pokemonSystem]
end
end

class Window_NewGame < Window_Base
def initialize(y)
super(16, y, (480 - 32), 56)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 9999998
refresh
end
def refresh
self.contents.clear
self.contents.font.color = Colors::Black
self.contents.draw_text(0, 0, width - 32, 24, "NEW GAME")
end
end

class Window_Options < Window_Base
def initialize(y)
super(16, y, (480 - 32), 56)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 9999998
refresh
end
def refresh
self.contents.clear
self.contents.font.color = Colors::Black
self.contents.draw_text(0, 0, width - 32, 24, "OPTIONS")
end
end

3. Give credit if you use this!

Thanks, and I hope you like it :)

nmorr
August 10th, 2010, 11:56 AM
Hey CNG, I thought you left..Anyways, I hope u don't mind, I posted your Dual Screen Battle System, but gave you full credit.

Crazyninjaguy
August 10th, 2010, 01:11 PM
I did leave, but i guess i'm back for now lol.
Just thought people might benefit from this.

Yuoaman
August 12th, 2010, 12:11 PM
This probably will fit better in Resources, so I'll move it over there.

Rise
August 12th, 2010, 09:23 PM
I tried the script to see how it went, but it was practically impossible to show a continue screen. New game took over the spot for continue, still showing the same text, and options became new game, with the same problem.

triggerhappymonk
August 14th, 2010, 03:41 PM
I tried the script to see how it went, but it was practically impossible to show a continue screen. New game took over the spot for continue, still showing the same text, and options became new game, with the same problem.

Just use version 1, it works for me. the only thing is, when you select "OPTIONS" The menu stays while the option screen is in the background.

pokemad
August 15th, 2010, 04:45 AM
Great script.
A few problems but great overall