Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Level Up Window script with ENU Active Battle SBS System?

So I'm using the Enu Side View Battle System for XP (the XP version of the SBS created for VX), and I'm attempting to use the Level Up Window script that's posted in the Script archives on this forum.

I think there's a clash between the two, because while testing, the Level up Window script acts like it begins to work (it's supposed to play one of the victory MEs when it begins). I hear the ME begin, but then it abruptly exits the battle screen and returns to the map.

Both scripts incorporated the start_phase_5 and update_phase_5 of Scene_Battle, so I'm thinking there's a clash somewhere in there.

Below I will post both scripts, maybe someone who knows a bit more than I can maybe point out what needs to done so that they both work together?

(since the battle system script is....long...I'll just paste the portion of the code I think is relevant)

Code:
alias start_phase5_atb_n01 start_phase5

def start_phase5

    if @input_battler != nil

      @help_window.visible = false if @help_window != nil

      windows_dispose

      @input_battler.blink = false if @input_battler != nil

    end

    @atb_meters.opacity = 0 if METER_POS_TYPE == 3

    update_meters

    start_phase5_atb_n01

  end

  #--------------------------------------------------------------------------

  alias update_phase5_atb_n01 update_phase5

  def update_phase5

    windows_dispose

    update_phase5_atb_n01

  end

and

Code:
alias xrxs_bp10_start_phase5 start_phase5

def start_phase5

xrxs_bp10_start_phase5

@exp_gained = battle_exp

for i in 0...$game_party.actors.size

actor = $game_party.actors[i]

if actor.cant_get_exp? == false

last_level = actor.level

actor.exp -= @exp_gained

if actor.level < last_level

@status_window.level_up_flags[i] = false

end

end

end

@exp_gain_actor = -1

@result_window.visible = true

end

#--------------------------------------------------------------------------

alias xrxs_bp10_update_phase5 update_phase5

def update_phase5

@level_up_phase_done = false if @level_up_phase_done != true

if Input.trigger?(Input::C)

@levelup_window.visible = false if @levelup_window != nil

@status_window.level_up_flags[@exp_gain_actor] = false

@level_up_phase_done = phase5_next_levelup

end

if @level_up_phase_done

if @phase5_wait_count < 2

@result_window.opacity = 0

@result_window.back_opacity = 0

@result_window.contents_opacity = 0

end

xrxs_bp10_update_phase5

battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0

end

end

and....before anyone makes this suggestion:

I've already thought of removing the windows_dispose of the ATB Scene_Battle. That did not work.

Thanks in advance to anyone who takes the time with this
 
I apologize for not having a solution to the exact problem, but I use a level up script with the same battle system and it works without a hitch.

Here is the script:

Code:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

# Easy LvlUp Notifier by Blizzard

# Version: 2.0

# Type: Battle Report Display

# Date: 27.8.2006

# Date v1.2b: 3.11.2006

# Date v1.3b: 11.3.2007

# Date v1.4b: 22.8.2007

# Date v2.0: 25.9.2007

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#

# Compatibility:

#

# 98% compatible with SDK v1.x. 80% compatible with SDK 2.x. WILL corrupt old

# savegames. May cause slight problems with following systems and would need

# therefore slight recalibration:

# - exotic CBS-es

# - exotic skill systems

# - exotic stat systems (additional stats like Wisdom, Luck etc.)

#

#

# Features:

#

# - shows increased stats and learned skills at level up

# - animated

# - shows EXP gain for each actor (!) only after gaining EXP after a battle

# - more simple and less laggy than other Level Up Notifiers

# - you can set up any sound to be played when a higher level is reached or a

# new skill is learned (LVLUP_SE and LEARN_SE further below)

#

# new in v1.2b:

# - better window movement

# - higher compatibility

# - fixed a few "eventual" bugs

#

# new in v1.3b:

# - fully compatible with Tons of Add-ons

#

# new in v1.4b:

# - improved coding

# - rewritten conditions using classic syntax to avoid RGSS conditioning bug

#

# new in v2.0:

# - completely overworked and improved

# - now MUCH more simple than other Level Up Notifiers

# - halved the number of lines of code

# - much more compatible: can show increase of any stats after the battle in

# combination with any script, just put this script below those attribute

# modifying scripts

#

#

# Instructions:

#

# - Explanation:

#

# This script will notify you when any character is leveled up after a

# battle. It will show any stats that were increased and any skills that were

# learned. The windows are animated, the code is less complex than any other

# so far and it is most efficient as well as highly optimized and detailed

# worked out.

#

# - Configuration:

# 

# There are a few options you can set up below.

# 

# LVLUP_SE - sound effect played when a new level was reached

# LEARN_SE - sound effect played when a new skill was learned,

# keep in mind that the script takes into account that

# skills can only be learned after a level up

# WINDOW_BACK_OPACITY - set this value to the window's back opacity (0-255)

# NO_EXP_DISPLAY - set this value to true if you want to disable the EXP

# gaining display in the level up windows

# OLD_EXP_DISPLAY - set this value to true if you want to display the EXP

# in the normal result window again

#

#

# If you find any bugs, please report them here:

# [url=http://www.chaosproject.co.nr]http://www.chaosproject.co.nr[/url]

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

 

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# START Configuration

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

# RPG::AudioFile.new('FILENAME', VOLUME, PITCH)

LVLUP_SE = RPG::AudioFile.new('087-Action02', 80, 100)

LEARN_SE = RPG::AudioFile.new('106-Heal02', 80, 100)

WINDOW_BACK_OPACITY = 160

NO_EXP_DISPLAY = true

OLD_EXP_DISPLAY = true

 

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# END Configuration

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

$easy_lvlup_notifier = true

 

#==============================================================================

# Game_Actor

#==============================================================================

 

class Game_Actor < Game_Battler

 

def all_exp

return @exp

end

 

def all_exp=(exp)

@exp = exp

end

 

end

 

#==============================================================================

# Window_BattleResult

#==============================================================================

 

class Window_BattleResult < Window_Base

 

alias easy_lvlup_notfier_refresh refresh

def refresh

if $tons_version != nil && $tons_version >= 4.02 &&

$game_system.WINDOW_BATTLERESULT || OLD_EXP_DISPLAY

easy_lvlup_notfier_refresh

else

self.contents.clear

x = 4

self.contents.font.color = system_color

cx = contents.text_size('Gained').width

self.contents.draw_text(x, 0, cx+4, 32, 'Gained')

x += cx + 4

self.contents.font.color = normal_color

cx = contents.text_size(@gold.to_s).width

self.contents.draw_text(x, 0, cx+4, 32, @gold.to_s)

x += cx + 4

self.contents.font.color = system_color

self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)

([email=0...@treasures.size]0...@treasures.size[/email]).each {|i| draw_item_name(@treasures[i], 4, (i+1)*32)}

end

end

 

end

 

#==============================================================================

# Window_LevelUp

#==============================================================================

 

class Window_LevelUp < Window_Base

 

attr_reader :limit

 

def initialize(a, d)

if $tons_version != nil && $tons_version >= 4.98 &&

$game_system.CENTER_BATTLER

x = case $game_party.actors.size

when 1 then 240

when 2 then a.index * 320 + 80

when 3 then a.index * 160 + 80

when 4 then a.index * 160

end

else

x = a.index * 160

end

text = []

text.push(['Level:', d[0], a.level]) if d[0] != a.level

text.push([$data_system.words.hp[0, 3], d[1], a.maxhp]) if d[1] != a.maxhp

text.push([$data_system.words.sp[0, 3], d[2], a.maxsp]) if d[2] != a.maxsp

text.push([$data_system.words.str[0, 3], d[3], a.str]) if d[3] != a.str

text.push([$data_system.words.dex[0, 3], d[4], a.dex]) if d[4] != a.dex

text.push([$data_system.words.agi[0, 3], d[5], a.agi]) if d[5] != a.agi

text.push([$data_system.words.int[0, 3], d[6], a.int]) if d[6] != a.int

h = text.size * 24 + (NO_EXP_DISPLAY ? 32 : 56)

@limit, y = 320 - h, 480 - h + (h/64+1)*64

super(x, y, 160, h)

self.z, self.back_opacity = 100, WINDOW_BACK_OPACITY

self.contents = Bitmap.new(self.width - 32, self.height - 32)

if $fontface != nil

self.contents.font.name = $fontface

elsif $defaultfonttype != nil

self.contents.font.name = $defaultfonttype

end

self.contents.font.size, self.contents.font.bold = 20, true

unless NO_EXP_DISPLAY

self.contents.font.color = normal_color

self.contents.draw_text(0, 0, 128, 24, "#{a.exp - d[7]} EXP", 1)

end

text.each_index {|i|

index = NO_EXP_DISPLAY ? i : i + 1

self.contents.font.color = system_color

self.contents.draw_text(0, index*24, 128, 24, text[i][0])

self.contents.draw_text(80, index*24, 32, 24, '»')

self.contents.font.color = normal_color

self.contents.draw_text(0, index*24, 76, 24, text[i][1].to_s, 2)

if text[i][1] > text[i][2]

self.contents.font.color = Color.new(255, 64, 0)

else

self.contents.font.color = Color.new(0, 255, 64)

end

self.contents.draw_text(0, index*24, 128, 24, text[i][2].to_s, 2)}

end

 

end

 

#==============================================================================

# Scene_Battle

#==============================================================================

 

class Scene_Battle

 

alias main_lvlup_later main

def main

@lvlup_data = {}

@moving_windows, @pending_windows = [], []

(1...$data_actors.size).each {|i|

actor = $game_actors[i]

@lvlup_data[actor] = [actor.level, actor.maxhp, actor.maxsp, actor.str,

actor.dex, actor.agi, actor.int, actor.exp, actor.skills.clone]}

main_lvlup_later

(@moving_windows + @pending_windows).each {|win| win.dispose if win != nil}

end

 

alias start_phase5_lvlup_later start_phase5

def start_phase5

start_phase5_lvlup_later

@skill_texts = []

$game_party.actors.each {|actor|

actor.remove_states_battle

if @lvlup_data[actor][0, 7] != [actor.level, actor.maxhp, actor.maxsp,

actor.str, actor.dex, actor.agi, actor.int]

@pending_windows.push(Window_LevelUp.new(actor, @lvlup_data[actor]))

@skill_texts.push('')

new_skills = actor.skills - @lvlup_data[actor][8]

if new_skills.size > 0

new_skills.each {|id|

@skill_texts.push("#{actor.name} learned #{$data_skills[id].name}!")}

end

elsif @lvlup_data[actor][7] != actor.exp && !NO_EXP_DISPLAY

@moving_windows.push(Window_LevelUp.new(actor, @lvlup_data[actor]))

end}

end

 

def update_phase5

if @phase5_wait_count > 0

@phase5_wait_count -= 1

if @phase5_wait_count == 0

@result_window.visible, $game_temp.battle_main_phase = true, false

@status_window.refresh

end

return

end

@moving_windows.each {|win|

win.y -= [((win.y - win.limit) / 2.0).ceil, 64].min if win.y > win.limit}

if Input.trigger?(Input::C)

@result_window.visible = false

if @skill_texts.size > 0

text = @skill_texts.shift

if text == ''

$game_system.se_play(LVLUP_SE)

@moving_windows.push(@pending_windows.shift)

@help_window.visible = false

else

$game_system.se_play(LEARN_SE)

@help_window.set_text(text, 1)

end

else

battle_end(0)

end

end

end

 

end

I hope that helps!
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top