Por: hyuuga
Janela de lv up avançada
Introdução
Esse script fas com que uma janela de lv up avançada, ceja mostrada quando seu personagen passa de lv...
ela mostra o quanto subiu os atributos do seu personagen (ataque,defesa,inteligencia,agilidade,HP e MP)
e esse script é totalmente compativel, pórem se vocês descobriren alguma incompatibilidade me avisem para eu resolver ou pelo menos tentar...
Caracteristicas
*Cria uma janela de lv up que mostra o quanto subiu os atributos do seu personagen
*mostra tambén as abilidades que ele aprendeu...
Screenshots
Como usar
Basta copiar o script e cola-lo acima do main no seu projeto.
copie tambén o arquivo que está na demo na pasta graphcis/picturis e cole nessa respectiva pasta do seu projeto.
Mais informaçoes você encomtra no script...
Script
Demo
Para baixar clique aqui!
Creditos
Uma pessoa chamada BigEd781 me deu esse script e ele ainda estava incompleto então eu terminei ele...
então os creditos vão pra min e para ele
POR FAVOR COMENTEM
Janela de lv up avançada
Introdução
Esse script fas com que uma janela de lv up avançada, ceja mostrada quando seu personagen passa de lv...
ela mostra o quanto subiu os atributos do seu personagen (ataque,defesa,inteligencia,agilidade,HP e MP)
e esse script é totalmente compativel, pórem se vocês descobriren alguma incompatibilidade me avisem para eu resolver ou pelo menos tentar...
Caracteristicas
*Cria uma janela de lv up que mostra o quanto subiu os atributos do seu personagen
*mostra tambén as abilidades que ele aprendeu...
Screenshots
- Spoiler:
Como usar
Basta copiar o script e cola-lo acima do main no seu projeto.
copie tambén o arquivo que está na demo na pasta graphcis/picturis e cole nessa respectiva pasta do seu projeto.
Mais informaçoes você encomtra no script...
Script
- Código:
module LevelUpDisplayConfig
#--------------------------------------------------------------------------
# * General Configuration Options
#--------------------------------------------------------------------------
#The windowskin file name, minus the extension
WINDOWSKIN_NAME = 'Window'
#The sound effect name that is played when the window is displayed
LEVEL_UP_SE = 'Recovery'
#The sound effect volume
LEVEL_UP_SE_VOLUME = 80
#Display the skill window?
USE_SKILL_WINDOW = true
#The title text used in the "New Skills" window (if not nil)
#For example, NEW_SKILL_TITLE_TEXT = 'Abilities'
NEW_SKILL_TITLE_TEXT = nil
#Show the actor's sprite?
USE_SPRITE_GRAPHIC = true
#Opacity of the main window
WINDOW_OPACITY = 255
#--------------------------------------------------------------------------
# * Stat Window Configuration
#--------------------------------------------------------------------------
#The color of the actor's name in the window (gold by default)
NAME_COLOR = Color.new(255,235,0)
#The color of the actor's level in the window (gold by default)
LEVEL_COLOR = Color.new(255,235,0)
#The color of the actor's stat names in the window (gold by default)
STAT_COLOR = Color.new(255,235,0)
#The color of the actor's old stat values (white by default)
OLD_STAT_COLOR = Color.new(255,255,255)
#The color of the actor's new stat values, if a net gain (green by default)
NEW_STAT_VAL_COLOR = Color.new(0,250,154)
#The color of the actor's new stat values, if a net loss (red by default)
STAT_VAL_LOSS_COLOR = Color.new(255, 0, 0)
#--------------------------------------------------------------------------
# * Skill Window Configuration
#--------------------------------------------------------------------------
#The color of the text in the skills title window
SKILL_TITLE_COLOR = Color.new(255,215,0)
#The color of the new skills text in the skills window
SKILL_WINDOW_FONT_COLOR = Color.new(240,248,255)
#--------------------------------------------------------------------------
# * There is no need to modify the constants below
#--------------------------------------------------------------------------
STAT_WINDOW_WIDTH = 320
SKILL_WINDOW_WIDTH = 165
WINDOW_HEIGHT = 220
SUB_WINDOW_HEIGHT = 45
end
include LevelUpDisplayConfig
#==========================================================================
# * Window_LevelUpdate
#--------------------------------------------------------------------------
# The main window that appears in battle when a level is gained.
# Displays stat info, faceset, and (optionally) the actor sprite.
#==========================================================================
class Window_LevelUpdate < Window_Base
def initialize(actor)
w = STAT_WINDOW_WIDTH
h = WINDOW_HEIGHT
if USE_SKILL_WINDOW
super(272 - (w / 2) - (SKILL_WINDOW_WIDTH / 2), 50, w, h)
else
super(272 - (w / 2), 50, w, h)
end
self.windowskin = Cache.system(WINDOWSKIN_NAME)
self.back_opacity = WINDOW_OPACITY
@actor = actor
@animation_index = 0
@arrow = Cache.picture('level_up_arrow')
@y_offset = 12 #give some room under level display
#begin drawing new level and old stat text
@col_one_offset = 0
#Draw old stats
@col_two_offset = @col_one_offset + 60
#begin drawing Faceset/sprite and skills gained
@col_four_offset = 0
#begin drawing Faceset/sprite graphics
@col_five_offset = 190
#play the sound effect
se = RPG::SE.new(LEVEL_UP_SE, LEVEL_UP_SE_VOLUME)
se.play
#calculates the offet for drawing level info
calc_level_offsets
setup_name_window
draw_stat_names
draw_old_stat_values
draw_arrows
draw_new_stat_values
draw_actor_rep
update
end
#--------------------------------------------------------------------------
# * Create and display the name window
#--------------------------------------------------------------------------
def setup_name_window
@name_window = Window_Base.new(self.x + 20, self.y - 30 , fit_to_text(@actor.name), SUB_WINDOW_HEIGHT)
@name_window.windowskin = Cache.system(WINDOWSKIN_NAME)
@name_window.back_opacity = 255
@name_sprite = Sprite.new
@name_sprite.bitmap = Bitmap.new(@name_window.width, @name_window.height)
@name_sprite.bitmap.font.color = NAME_COLOR
@name_sprite.x = @name_window.x + 15
@name_sprite.y = @name_window.y - 10
@name_sprite.z = 300
@name_sprite.bitmap.draw_text(0, 0, @name_sprite.bitmap.width, 60, @actor.name)
end
#--------------------------------------------------------------------------
# * Draws the level and stat text (not the values themselves)
#--------------------------------------------------------------------------
def draw_stat_names
self.contents.font.color = LEVEL_COLOR
self.contents.draw_text(@col_one_offset, 0, 60, WLH, "Lv.")
self.contents.font.color = STAT_COLOR
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.hp)
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.mp)
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.atk)
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.def)
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.spi)
self.contents.draw_text(@col_one_offset, y_incr, 60, WLH, Vocab.agi)
#reset the font color
self.contents.font.color = Font.default_color
#reset the y_offset to 12
y_incr_reset
end
#--------------------------------------------------------------------------
# * Draws the old level and stat values
#--------------------------------------------------------------------------
def draw_old_stat_values
self.contents.font.color = OLD_STAT_COLOR
self.contents.draw_text(@col_level_old_offset, 0, 60, WLH, @actor.last_level)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_hp)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_mp)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_atk)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_def)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_spi)
self.contents.draw_text(@col_two_offset, y_incr, 60, WLH, @actor.last_agi)
#reset the font color
self.contents.font.color = Font.default_color
#reset the y_offset to 12
y_incr_reset
end
#--------------------------------------------------------------------------
# * Draws the arrows
#--------------------------------------------------------------------------
def draw_arrows
if @actor.last_hp - 100 < 0
@col_three_offset = @col_two_offset + 30
elsif @actor.last_hp - 1000 < 0
@col_three_offset = @col_two_offset + 40
else
@col_three_offset = @col_two_offset + 50
end
draw_arrow(@col_level_arrow_offset, 6) #level
draw_arrow(@col_three_offset, y_incr + 6) #hp
draw_arrow(@col_three_offset, y_incr + 6) #mp
draw_arrow(@col_three_offset, y_incr + 6) #atk
draw_arrow(@col_three_offset, y_incr + 6) #def
draw_arrow(@col_three_offset, y_incr + 6) #spi
draw_arrow(@col_three_offset, y_incr + 6) #agi
calc_col_four_offset(@col_three_offset)
#reset the y_offset to 12
y_incr_reset
end
#--------------------------------------------------------------------------
# * Draws the new level and stat values
#--------------------------------------------------------------------------
def draw_new_stat_values
draw_new_stat(@col_level_new_offset, 0, 60, WLH, @actor.last_level, @actor.level)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_hp, @actor.maxhp)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_mp, @actor.maxmp)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_atk, @actor.base_atk)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_def, @actor.base_def)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_spi, @actor.base_spi)
draw_new_stat(@col_four_offset, y_incr, 60, WLH, @actor.last_agi, @actor.base_agi)
self.contents.font.color = Font.default_color
#reset the y_offset to 12
y_incr_reset
end
def draw_new_stat(x, y, w, h, prev_val, val)
if val > prev_val #gain
self.contents.font.color = NEW_STAT_VAL_COLOR
elsif val == prev_val #no change
self.contents.font.color = OLD_STAT_COLOR
else #loss
self.contents.font.color = STAT_VAL_LOSS_COLOR
end
self.contents.draw_text(x, y, w, h, val)
end
#--------------------------------------------------------------------------
# * Draws the faceset and optionally the actor sprite
#--------------------------------------------------------------------------
def draw_actor_rep
draw_actor_face(@actor, @col_five_offset, 0)
if (USE_SPRITE_GRAPHIC)
x_pos = @col_five_offset + ((self.width - @col_five_offset) / 2) - 18
draw_character(@actor.character_name, @actor.character_index, x_pos, 160)
end
end
#--------------------------------------------------------------------------
# * Draws an arrow
#--------------------------------------------------------------------------
def draw_arrow(x, y)
src_rect = Rect.new(0, 0, @arrow.width, @arrow.height)
self.contents.blt(x, y, @arrow, src_rect)
end
#--------------------------------------------------------------------------
# * figures out the spacing for the level text display
#--------------------------------------------------------------------------
def calc_level_offsets
@col_level_old_offset = @col_one_offset + 30
if @actor.last_level < 10
@col_level_arrow_offset = @col_level_old_offset + 20
else
@col_level_arrow_offset = @col_level_old_offset + 30
end
@col_level_new_offset = @col_level_arrow_offset + 26
end
#--------------------------------------------------------------------------
# * Increments the y counter
#--------------------------------------------------------------------------
def y_incr
@y_offset += WLH
return @y_offset
end
#--------------------------------------------------------------------------
# * Resets the y counter
#--------------------------------------------------------------------------
def y_incr_reset
@y_offset = 12
end
#--------------------------------------------------------------------------
# * calculate where to draw col four text (new stat values)
#--------------------------------------------------------------------------
def calc_col_four_offset(col_three)
@col_four_offset = col_three + 22
end
#--------------------------------------------------------------------------
# * Fit the window width to the text
#--------------------------------------------------------------------------
def fit_to_text(text)
w = self.contents.text_size(text).width + 32
return w > 90 ? w : 90
end
#--------------------------------------------------------------------------
# * Update the child window position
#--------------------------------------------------------------------------
def update_child_window_pos
@name_window.x = self.x + 20
@name_window.y = self.y - 30
@name_sprite.x = @name_window.x + 15
@name_sprite.y = @name_window.y - 10
end
#--------------------------------------------------------------------------
# * Destroy the sprite!
#--------------------------------------------------------------------------
def dispose
super
@name_window.dispose
@name_sprite.dispose
end
end
#============================================================================
# * Window_SkillUpdate
#----------------------------------------------------------------------------
# The learned skill window
#============================================================================
class Window_SkillUpdate < Window_Base
def initialize(actor, parent_x, parent_y, parent_width)
x = parent_x + parent_width
h = WINDOW_HEIGHT
w = SKILL_WINDOW_WIDTH
super(x, parent_y, w, h)
self.windowskin = Cache.system(WINDOWSKIN_NAME)
self.back_opacity = WINDOW_OPACITY
self.contents.font.color = SKILL_WINDOW_FONT_COLOR
@actor = actor
@skills = []
setup_title_window
populate_skill_list
end
#--------------------------------------------------------------------------
# * create the title window
#--------------------------------------------------------------------------
def setup_title_window
#check to see if custom text is defined
if NEW_SKILL_TITLE_TEXT == nil
skill_title_text = sprintf("New %ss", Vocab.skill)
else
skill_title_text = NEW_SKILL_TITLE_TEXT
end
middle_parent = self.x + (self.width / 2)
w = fit_to_text(skill_title_text)
h = SUB_WINDOW_HEIGHT
x = middle_parent - (w / 2)
y = self.y - 30
@title_window = Window_Base.new(x, y, w, h)
@title_window.windowskin = Cache.system(WINDOWSKIN_NAME)
@title_window.back_opacity = 255
@title_sprite = Sprite.new
@title_sprite.bitmap = Bitmap.new(@title_window.width, @title_window.height)
@title_sprite.bitmap.font.color = SKILL_TITLE_COLOR
@title_sprite.x = @title_window.x + 15
@title_sprite.y = @title_window.y + 4
@title_sprite.z = 300
@title_sprite.bitmap.draw_text(0, 0, @title_sprite.bitmap.width, 32, skill_title_text)
end
#--------------------------------------------------------------------------
# * My edit of draw_item_name.
# Necessary because the default one changes the font color.
#--------------------------------------------------------------------------
def draw_my_item_name(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 172, WLH, item.name)
end
end
#--------------------------------------------------------------------------
# * draw all of the skills that were learned
#--------------------------------------------------------------------------
def populate_skill_list
skills = @actor.last_learned_skills
y = 0
for skill in skills
draw_my_item_name(skill, 0, y)
y += 32
end
end
#--------------------------------------------------------------------------
# * Fit the window width to the text
#--------------------------------------------------------------------------
def fit_to_text(text)
return self.contents.text_size(text).width + 32
end
#--------------------------------------------------------------------------
# * Kill the sprite!
#--------------------------------------------------------------------------
alias :eds_old_dispose :dispose
def dispose
eds_old_dispose
@title_window.dispose
@title_sprite.dispose
end
end
#==========================================================================
# * Game_Actor
#--------------------------------------------------------------------------
# overrides -
# * display_level_up (if DISPLAY_DEF_MESSAGE is set to false in config)
#==========================================================================
class Game_Actor < Game_Battler
attr_reader :last_level
attr_reader :last_hp
attr_reader :last_mp
attr_reader :last_atk
attr_reader :last_def
attr_reader :last_spi
attr_reader :last_agi
attr_reader :last_learned_skills
#--------------------------------------------------------------------------
# * Change Experience
# exp : New experience
# show : Level up display flag
#--------------------------------------------------------------------------
alias :eds_old_change_exp :change_exp
def change_exp(exp, show)
#save off the old paramters
prev_skills = skills
@last_level = @level
@last_hp = self.maxhp
@last_mp = self.maxmp
@last_atk = self.atk
@last_def = self.def
@last_spi = self.spi
@last_agi = self.agi
eds_old_change_exp(exp, show)
@last_learned_skills = skills - prev_skills
end
if USE_SKILL_WINDOW #below method is only used if we are using the skill window
#--------------------------------------------------------------------------
# * Show Level Up Message
# new_skills : Array of newly learned skills
#--------------------------------------------------------------------------
# If we are not displaying the standard message when
# gaining a level, simply remove the loop that creates
# the learned skills message. Continue to display
# the skills that were learned if we are not in battle.
#--------------------------------------------------------------------------
alias :eds_old_display_level_up :display_level_up
def display_level_up(new_skills)
if $game_temp.in_battle
$game_message.new_page
text = sprintf(Vocab::LevelUp, @name, Vocab::level, @level)
$game_message.texts.push(text)
else
eds_old_display_level_up(new_skills)
end
end
end #skill window check
end
#============================================================================
# * Scene_Battle
#----------------------------------------------------------------------------
# overrides -
# * display_level_up
#============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Display Level Up
#--------------------------------------------------------------------------
def display_level_up
#patch for KGC Equip Learn Skill script
if $imported != nil and $imported["EquipLearnSkill"]
display_master_equipment_skill
end
exp = $game_troop.exp_total
for actor in $game_party.existing_members
last_level = actor.level
last_skills = actor.skills
actor.gain_exp(exp, true)
if actor.level > last_level
win = Window_LevelUpdate.new(actor)
#if we are using the skill window and the skills have changed...
if USE_SKILL_WINDOW && last_skills.length != actor.skills.length
s_win = Window_SkillUpdate.new(actor, win.x, win.y, win.width)
wait_for_message
s_win.dispose if USE_SKILL_WINDOW
else
#move the window back to center screen and update the name window
win.x = 272 - (win.width / 2)
win.update_child_window_pos
wait_for_message
end
win.dispose
end
end
end
end
Demo
Para baixar clique aqui!
Creditos
Uma pessoa chamada BigEd781 me deu esse script e ele ainda estava incompleto então eu terminei ele...
então os creditos vão pra min e para ele
POR FAVOR COMENTEM