RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Could any1 help me out with this script please?

Started by idahlo, November 24, 2006, 11:49:40 PM

0 Members and 1 Guest are viewing this topic.

idahlo

ok, could you add an obtained skill notifier on this script?
class Game_Actor < Game_Battler
def exp=(exp)
  @exp = [[exp, 9999999].min, 0].max
  while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
    @level += 1
   
    # NEW - David
    $d_new_skill = nil
   
    for j in $data_classes[@class_id].learnings
      if j.level == @level
        learn_skill(j.skill_id)
   
        # NEW - David
        skill = $data_skills[j.skill_id]
        $d_new_skill = skill.name
   
      end
    end
  end
  while @exp < @exp_list[@level]
    @level -= 1
  end
  @hp = [@hp, self.maxhp].min
  @sp = [@sp, self.maxsp].min
end

#--------------------------------------------------------------------------
# * Get the current EXP
#--------------------------------------------------------------------------
def now_exp
  return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get the next level's EXP
#--------------------------------------------------------------------------
def next_exp
  return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end

end

class Window_LevelUp < Window_Base

#----------------------------------------------------------------
def initialize(actor, pos)
  @actor = actor
  y = (pos * 120)
  super(280, y, 360, 120)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = $fontface
  self.back_opacity = 255   
  if $d_dum == false
    refresh
  end
end

#----------------------------------------------------------------
def dispose
  super
end

#----------------------------------------------------------------
def refresh
  self.contents.clear
  self.contents.font.size = 18
  draw_actor_face(@actor, 4, 0)
  draw_actor_name(@actor, 111, 0)
  draw_actor_level(@actor, 186, 0)
  show_next_exp = @actor.level == 99 ? "---" : "#{@actor.next_exp}"
  min_bar = @actor.level == 99 ? 1 : @actor.now_exp
  max_bar = @actor.level == 99 ? 1 : @actor.next_exp
  draw_slant_bar(115, 80, min_bar, max_bar, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
  self.contents.draw_text(115, 24, 300, 32, "Exp:#{@actor.now_exp}")
  self.contents.draw_text(115, 48, 300, 32, "Level Up:" + show_next_exp)
end


#----------------------------------------------------------------
def level_up
  self.contents.font.color = system_color
  self.contents.draw_text(230, 48, 80, 32, "LEVEL UP!")
end

#----------------------------------------------------------------
def update
  super
end

end # of Window_LevelUp

#=================================
#Window_EXP
# Written by: David Schooley
#=================================

class Window_EXP < Window_Base

#----------------------------------------------------------------
def initialize(exp)
  super(0, 0, 280, 60)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = $fontface
  self.back_opacity = 255
  refresh(exp)
end

#----------------------------------------------------------------
def dispose
  super
end

#----------------------------------------------------------------
def refresh(exp)
  self.contents.clear
  self.contents.font.color = system_color
  self.contents.draw_text(0, 0, 150, 32, "Exp Earned:")
  self.contents.font.color = normal_color
  self.contents.draw_text(180, 0, 54, 32, exp.to_s, 2)
end

#----------------------------------------------------------------
def update
  super
end

end # of Window_EXP

#=================================
#Window_Money_Items
# Written by: David Schooley
#=================================

class Window_Money_Items < Window_Base

#----------------------------------------------------------------
def initialize(money, treasures)
  @treasures = treasures
  super(0, 60, 280, 420)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = $fontface
  self.back_opacity = 255
  refresh(money)
end

#----------------------------------------------------------------
def dispose
  super
end

#----------------------------------------------------------------
def refresh(money)
  @money = money
  self.contents.clear
 
  self.contents.font.color = system_color
  self.contents.draw_text(4, 4, 100, 32, "Items Found:")
  self.contents.font.color = normal_color
 
  y = 32
  for item in @treasures
    draw_item_name(item, 4, y)
    y += 32
  end
 
  cx = contents.text_size($data_system.words.gold).width
  self.contents.font.color = normal_color
  self.contents.draw_text(4, 340, 220-cx-2, 32, $game_party.gold.to_s, 2)
  self.contents.font.color = normal_color
  self.contents.draw_text(4, 300, 220-cx-2, 32, "+ " + @money.to_s, 2)
  self.contents.font.color = system_color
  self.contents.draw_text(124-cx, 340, cx + 100, 32, $data_system.words.gold, 2)
end

def update
  super
end

end # of Window_Money_Items


class Scene_Battle
alias raz_battle_report_main main
alias raz_battle_report_be battle_end

def main
  # NEW - David
  #$battle_end = false
  @lvup_window = []
  @show_dummies = true # Show dummy windows or not?
  raz_battle_report_main
  # NEW - David
  @lvup_window = nil
  @level_up = nil
  @ch_stats = nil
  @ch_compare_stats = nil
end

def battle_end(result)
  raz_battle_report_be(result)
  # NEW - David
  @status_window.visible = false
  @spriteset.dispose
  Graphics.transition
  if result == 0
    display_lv_up(@exp, @gold, @treasures)
    loop do
      Graphics.update
      Input.update
      if Input.trigger?(Input::C)
        break
      end
    end
    trash_lv_up
  end

end
 
def start_phase5
  @phase = 5
  $game_system.me_play($game_system.battle_end_me)
  $game_system.bgm_play($game_temp.map_bgm)
  exp = 0
  gold = 0
  treasures = []
  for enemy in $game_troop.enemies
    unless enemy.hidden
      exp += enemy.exp
      gold += enemy.gold
      if rand(100) < enemy.treasure_prob
        if enemy.item_id > 0
          treasures.push($data_items[enemy.item_id])
        end
        if enemy.weapon_id > 0
          treasures.push($data_weapons[enemy.weapon_id])
        end
        if enemy.armor_id > 0
          treasures.push($data_armors[enemy.armor_id])
        end
      end
    end
  end
  treasures = treasures[0..5]

  # NEW - David
  @treasures = treasures
  @exp  = exp
  @gold = gold

 
  for item in treasures
    case item
    when RPG::Item
      $game_party.gain_item(item.id, 1)
    when RPG::Weapon
      $game_party.gain_weapon(item.id, 1)
    when RPG::Armor
      $game_party.gain_armor(item.id, 1)
    end
  end
  @phase5_wait_count = 10
end

def update_phase5
  if @phase5_wait_count > 0
    @phase5_wait_count -= 1
    if @phase5_wait_count == 0
     
      # NEW - David
      $game_temp.battle_main_phase = false       
    end
    return
  end

  # NEW - David
    battle_end(0)

end

def display_lv_up(exp, gold, treasures)
 
  $d_dum = false
  d_extra = 0
  i = 0
  for actor in $game_party.actors
      # Fill up the Lv up windows
      @lvup_window[i] = Window_LevelUp.new($game_party.actors[i], i)
      i += 1
  end

  # Make Dummies
  if @show_dummies == true
    $d_dum = true
    for m in i..3
      @lvup_window[m] = Window_LevelUp.new(m, m)
    end
  end
 
  @exp_window = Window_EXP.new(exp)
  @m_i_window = Window_Money_Items.new(gold, treasures)
  @press_enter = nil
  gainedexp = exp
  @level_up = [0, 0, 0, 0]
  @d_new_skill = ["", "", "", ""]
  @d_breakout = false
  @m_i_window.refresh(gold)
  wait_for_OK

  @d_remember = $game_system.bgs_memorize
  Audio.bgs_play("Audio/SE/032-Switch01", 100, 300)
 
  # NEW - David
  max_exp = exp
  value = 28
  for n in 0..gainedexp - (max_exp / value)
    exp -= (max_exp / value)
    if @d_breakout == false
      Input.update
    end
   
    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 += (max_exp / value)
        # Fill up the Lv up windows
        if @d_breakout == false
          @lvup_window[i].refresh
          @exp_window.refresh(exp)
        end
       
        if actor.level > last_level
          @level_up[i] = 5
          Audio.se_play("Audio/SE/056-Right02.ogg", 70, 150)
          if $d_new_skill
            @d_new_skill[i] = $d_new_skill
          end
        end
       
        if @level_up[i] == 0
          @d_new_skill[i] = ""
        end
       
        if @level_up[i] > 0
          @lvup_window[i].level_up
        end
       
        if Input.trigger?(Input::C) or exp <= 0
          @d_breakout = true
        end
      end
     
      if @d_breakout == false
        if @level_up[i] >0
          @level_up[i] -= 1
        end
        Graphics.update
      end
    end
   
    if @d_breakout == true
      for i in 0...$game_party.actors.size
        actor = $game_party.actors[i]
        if actor.cant_get_exp? == false
          actor.exp += exp
        end
      end
      exp = 0
      break
    end
  end
  Audio.bgs_stop
  @d_remember = $game_system.bgs_restore
 
  for i in 0...$game_party.actors.size
    @lvup_window[i].refresh
  end
  @exp_window.refresh(exp)
  Audio.se_play("Audio/SE/006-System06.ogg", 70, 150)
  $game_party.gain_gold(gold)
  @m_i_window.refresh(0)
  Graphics.update
end

def trash_lv_up
  # NEW - David
  i=0
 
  for i in 0 ... 4
    @lvup_window[i].visible = false
  end
  @exp_window.visible = false
  @m_i_window.visible = false
  @lvup_window = nil
  @exp_window = nil
  @m_i_window = nil
end

# Wait until OK key is pressed
def wait_for_OK
  loop do
    Input.update
    Graphics.update
    if Input.trigger?(Input::C)
      break
    end
  end
end

end

class Window_Base < Window
def draw_actor_face(actor, x, y)
  bitmap = RPG::Cache.picture("Faces/" + actor.character_name)
  self.contents.blt(x, y, bitmap, Rect.new(0,0,96,96))
end

#--------------------------------------------------------------------------
# * Draw Slant Bar(by SephirothSpawn)
#--------------------------------------------------------------------------
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
    bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
  # Draw Border
  for i in 0..height
    self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
  end
  # Draw Background
  for i in 1..(height - 1)
    r = 100 * (height - i) / height + 0 * i / height
    g = 100 * (height - i) / height + 0 * i / height
    b = 100 * (height - i) / height + 0 * i / height
    a = 255 * (height - i) / height + 255 * i / height
    self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
  end
  # Draws Bar
  for i in 1..( (min / max.to_f) * width - 1)
    for j in 1..(height - 1)
      r = bar_color.red * (width - i) / width + end_color.red * i / width
      g = bar_color.green * (width - i) / width + end_color.green * i / width
      b = bar_color.blue * (width - i) / width + end_color.blue * i / width
      a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
      self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
    end
  end
end

end



Screenies