RPGVX.net

  RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: dauerzocer am Mai 17, 2008, 00:12:12

Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 17, 2008, 00:12:12
1. Beschreibung
Das Script erschafft nach dem Kampf ein Fenster, in dem Erfahrungsbalken hochlaufen.
Dieselben Erfahrungsbalken sind auch im Status Menu zu finden.
Bei einem LevelUp wir ein Fenster mit den Veränderungen der Werte eingefügt.
Die Farbe der Erfahrungsbalken kann selbst bestimmt werden.
Man kann die Levelbalken nach dem Kampf in einem Options Menu ein- und ausstellen.
Ausserhalb kann der selbe Vorgang wie nach dem Kampf mit dem Script-Befehl:
$scene.display_level_up(erfahrung) aufgerufen werden. Wobei erfahrung die
Erfahrungsmenge angibt. Die Erfahrung muss nicht über ein weiteres Event verteilt werden.
2.Screenshots
(http://download.lima-city.de/dauerzocer/LevelUp.jpg)
(http://download.lima-city.de/dauerzocer/LevelBalken.jpg)
3.Script
#
#LevelUp Script
#Author: dauerzocer
#Version: 2.5
#Datum: 14.6.2008
#-------------------------------------------------------------------------------------------------------------------------------
#Beschreibung:
# - Das Script erschafft nach dem Kampf ein Fenster, in dem Erfahrungsbalken hochlaufen.
# - Dieselben Erfahrungsbalken sind auch im Status Menu zu finden.
# - Bei einem LevelUp wir ein Fenster mit den Veränderungen der Werte eingefügt.
# - Die Farbe der Erfahrungsbalken kann selbst bestimmt werden.
# - Man kann die Levelbalken nach dem Kampf in einem Options Menu ein- und ausstellen.
# - Ausserhalb kann der selbe Vorgang wie nach dem Kampf mit dem Script-Befehl:
#   $scene.display_level_up(erfahrung) aufgerufen werden. Wobei erfahrung die
#   Erfahrungsmenge angibt. Die Erfahrung muss nicht über ein weiteres Event verteilt werden.
#--------------------------------------------------------------------------------------------------------------------------------
module LevelUp
  Fensterx = 544 #Breite des Spielfensters
  Fenstery = 416 #Höhe des Spielfensters
  Message =124 #Höhe des im Kampf verwendeten Message Windows
  Erfahrung = "Erf" #Abkürzung für Erfahrung
  Erfahrungs_Farbe = 3 #Farbe für den linken Teil des Erfahrungs Balkens
  Erfahrungs_Farbe2 = 4 #Farbe für den rechten Teil des Erfahrungs Balkens
  Einstellungen = "Optionen" #Vokabular für Einstellungen im Menu
end
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_Map < Scene_Base
 
  def update_erf(main = false)
    Graphics.update unless main     # ????????
    Input.update unless main        # ???????
    $game_system.update             # ???????
    @spriteset.update               # ???????????
    @message_window.update          # ?????????????
  end
 
  def display_level_up(erfahrung)
  @message_window = Window_BattleMessage.new
   exp = erfahrung
   if $erfahrungs_balken_verteilung == false
     for actor in $game_party.existing_members
      last_level = actor.level
      last_skills = actor.skills
      actor.gain_exp(exp, true)
      if (last_level != actor.level) then
      $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
      $lvlup.anzeigen(actor, last_level)
      Input.update
      until(Input.trigger?(Input::C))
        update_erf
      end
      $lvlup.dispose
      $lvlup = nil
    end
    end
   else
   verteilen = 0
   @message_window.visible = false
   $erfahrung = Window_Erfahrung.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery)
   $erfahrung.anzeigen
   while verteilen < exp
     Input.update
     if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /] then
       for actor in $game_party.existing_members
       last_level = actor.level
       last_skills = actor.skills
       actor.gain_exp(exp - verteilen -1, true)
       if (last_level != actor.level) then
         @message_window.visible = true
         $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
         $lvlup.anzeigen(actor, last_level)
         Input.update
         until(Input.trigger?(Input::C))
           update_erf
         end
         $lvlup.dispose
         $lvlup = nil
         @message_window.visible = false
     end
   end
   verteilen = exp
     end       
    for actor in $game_party.existing_members
       last_level = actor.level
       last_skills = actor.skills
       actor.gain_exp(1, true)
       if (last_level != actor.level) then
         @message_window.visible = true
         $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
         $lvlup.anzeigen(actor, last_level)
         Input.update
         until(Input.trigger?(Input::C))
           update_erf
         end
         $lvlup.dispose
         $lvlup = nil
         @message_window.visible = false
     end
   end
   verteilen += 1 
   Sound.play_cursor
   $erfahrung.update   
   end
    $erfahrung.dispose
    $erfahrung = nil
  end
end
 
end 
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_Battle < Scene_Base
 
 def display_level_up   
   exp = $game_troop.exp_total
   if $erfahrungs_balken_verteilung == false
     for actor in $game_party.existing_members
      last_level = actor.level
      last_skills = actor.skills
      actor.gain_exp(exp, true)
      if (last_level != actor.level) then
      $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
      $lvlup.anzeigen(actor, last_level)
      Input.update
      until(Input.trigger?(Input::C))
        update_basic
      end
      $lvlup.dispose
      $lvlup = nil
    end
    end
   else
   verteilen = 0
   @message_window.visible = false
   $erfahrung = Window_Erfahrung.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery)
   $erfahrung.anzeigen
   while verteilen < exp
     Input.update
     if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /] then
       for actor in $game_party.existing_members
       last_level = actor.level
       last_skills = actor.skills
       actor.gain_exp(exp - verteilen -1, true)
       if (last_level != actor.level) then
         @message_window.visible = true
         $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
         $lvlup.anzeigen(actor, last_level)
         Input.update
         until(Input.trigger?(Input::C))
           update_basic
         end
         $lvlup.dispose
         $lvlup = nil
         @message_window.visible = false
     end
   end
   verteilen = exp
     end       
    for actor in $game_party.existing_members
       last_level = actor.level
       last_skills = actor.skills
       actor.gain_exp(1, true)
       if (last_level != actor.level) then
         @message_window.visible = true
         $lvlup = Window_LevelUp.new(0,0,LevelUp::Fensterx,LevelUp::Fenstery-LevelUp::Message)
         $lvlup.anzeigen(actor, last_level)
         Input.update
         until(Input.trigger?(Input::C))
           update_basic
         end
         $lvlup.dispose
         $lvlup = nil
         @message_window.visible = false
     end
   end
   verteilen += 1 
   Sound.play_cursor
   $erfahrung.update   
   end
    $erfahrung.dispose
    $erfahrung = nil
  end
   wait_for_message
  end
 
end 
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_Menu < Scene_Base
 
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    s7 = LevelUp::Einstellungen
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # ??????? 0 ????
      @command_window.draw_item(0, false)     # ????????
      @command_window.draw_item(1, false)     # ???????
      @command_window.draw_item(2, false)     # ??????
      @command_window.draw_item(3, false)     # ?????????
    end
    if $game_system.save_disabled             # ????????
      @command_window.draw_item(4, false)     # ???????
    end
  end
 
    def update_command_selection
    if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # ????
        $scene = Scene_Item.new
      when 1,2,3  # ????????????
        start_actor_selection
      when 4      # ???
        $scene = Scene_File.new(true, false, false)
      when 5
        $scene = Scene_Optionen.new
      when 6      # ?????
        $scene = Scene_End.new
      end
    end
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_Optionen_Erfahrung < Scene_Base

  def start
    super
    create_menu_background
    check_levelbalken
    create_command_window
    @help_window = Window_Help.new
    @help_window.set_text("Levelbalken")
  end
 
  def check_levelbalken
    if $erfahrungs_balken_verteilung == false
    @check = false
  else
    @check = true
  end
   
  def post_start
    super
    open_command_window
  end

  def pre_terminate
    super
    @help_window.dispose
    close_command_window
  end

  def terminate
    super
    dispose_command_window
    dispose_menu_background
  end

  def return_scene
    $scene = Scene_Optionen.new
  end

  def update
    super
    update_menu_background
    @command_window.update
    if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0 
        if @check == false
        $erfahrungs_balken_verteilung = true
        Sound.play_decision
        return_scene
      else
        Sound.play_buzzer
      end
      when 1 
        if @check == true
        $erfahrungs_balken_verteilung = false
        Sound.play_decision
       $scene = Scene_Optionen.new
     else
       Sound.play_buzzer
       end
       end
      end
    end
  end
 
  def update_menu_background
    super
    @menuback_sprite.tone.set(0, 0, 0, 128)
  end

  def create_command_window
    s1 = "An"
    s2 = "Aus"
    @command_window = Window_Command.new(172, [s1, s2])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = (416 - @command_window.height) / 2
      if @check == false
      @command_window.draw_item(1, false)
    elsif @check == true
       @command_window.draw_item(0, false)
    end
    @command_window.openness = 0
  end

  def dispose_command_window
    @command_window.dispose
  end

  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end

  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end

end
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_End < Scene_Base
 
  def return_scene
    $scene = Scene_Menu.new(6)
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Scene_Optionen < Scene_Base

  def start
    super
    create_menu_background
    create_command_window
    @help_window = Window_Help.new
    @command_window.help_window = @help_window
    @help_window.set_text("Levelbalken nach dem Kampf ein oder ausstellen.")
  end
 
  def post_start
    super
    open_command_window
  end

  def pre_terminate
    super
    close_command_window
  end

  def terminate
    super
    @help_window.dispose
    dispose_command_window
    dispose_menu_background
  end

  def return_scene
    $scene = Scene_Menu.new(5)
  end

  def update
    super
    @help_window.update
    update_menu_background
    @command_window.update
    if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0 
        Sound.play_decision
        $scene = Scene_Optionen_Erfahrung.new
      end
    end
  end
 
  def update_menu_background
    super
    @menuback_sprite.tone.set(0, 0, 0, 128)
  end

  def create_command_window
    s1 = "Erf Verteilung"
    @command_window = Window_Command.new(250, [s1])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = (416 - @command_window.height) / 2
    @command_window.openness = 0
  end

  def dispose_command_window
    @command_window.dispose
  end

  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end

  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end

end

class Scene_End < Scene_Base
  def return_scene
    $scene = Scene_Menu.new(6)
  end
end
#--------------------------------------------------------------------------------------------------------------------------------
class Window_LevelUp < Window_Base
 
  def anzeigen(charakter, altes_level)
    neue_level = charakter.level-altes_level
    draw_actor_face(charakter, 25, 25, size = 96)
    draw_actor_name(charakter, 150, 25)
    draw_actor_class(charakter, 250, 25)
    draw_actor_level(charakter, 350,75)
    draw_actor_level_edit(charakter, 150,75,neue_level)
    draw_differenz(300,75,charakter.level, altes_level)
    draw_actor_hp(charakter, 350,100 , width = 120)
    draw_actor_hp_edit(charakter, 150, 100, altes_level, width = 120)
    draw_differenz(300,100, charakter.maxhp_level(charakter.level), charakter.maxhp_level(altes_level))
    draw_actor_mp_edit(charakter, 150, 125, altes_level, width = 120)
    draw_actor_mp(charakter, 350,125, width = 120)
    draw_differenz(300,125, charakter.maxmp_level(charakter.level), charakter.maxmp_level(altes_level))
    draw_actor_atk_edit(charakter, 150, 150, altes_level)
    draw_actor_atk_edit(charakter, 350, 150, charakter.level)
    draw_differenz(300,150, charakter.atk_level(charakter.level), charakter.atk_level(altes_level))
    draw_actor_def_edit(charakter, 150, 175, altes_level)
    draw_actor_def_edit(charakter, 350, 175, charakter.level)
    draw_differenz(300,175, charakter.def_level(charakter.level), charakter.def_level(altes_level))
    draw_actor_spi_edit(charakter, 150 , 200 , altes_level)
    draw_actor_spi_edit(charakter, 350 , 200 , charakter.level)
    draw_differenz(300,200, charakter.spi_level(charakter.level), charakter.spi_level(altes_level))
    draw_actor_agi_edit(charakter, 150 , 225 , altes_level)
    draw_actor_agi_edit(charakter, 350 , 225 , charakter.level)
    draw_differenz(300,225, charakter.agi_level(charakter.level), charakter.agi_level(altes_level))
    draw_pfeile
  end
 
  def draw_pfeile
    draw_pfeil(300,235)
    draw_pfeil(300,85)
    draw_pfeil(300,110)
    draw_pfeil(300,135)
    draw_pfeil(300,160)
    draw_pfeil(300,185)
    draw_pfeil(300,210)
  end
   
  def draw_differenz(x, y, wert1, wert2)
    differenz = wert1-wert2
    meine_farbe = Color.new(0,255,255)
    self.contents.font.color = meine_farbe
    self.contents.draw_text(x, y, 32, WLH, "+")
    self.contents.draw_text(x+15,y, 32, WLH, differenz)
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Window_Erfahrung < Window_Base
 
  def anzeigen
     @gruppen_größe = $game_party.existing_members.size
    durchgang = 0
    loop do
     charakter_anzeigen(durchgang)
     durchgang +=1
     break if durchgang >= @gruppen_größe
    end   
  end
 
  def charakter_anzeigen(char_nummer)
    if LevelUp::Fenstery/@gruppen_größe > 80 then
    draw_actor_face($game_party.existing_members[char_nummer], 25, char_nummer*(LevelUp::Fenstery/@gruppen_größe-5), size = 80)
    end
    draw_actor_name($game_party.existing_members[char_nummer], 150, char_nummer*(LevelUp::Fenstery/@gruppen_größe))
    draw_actor_class($game_party.existing_members[char_nummer], 150, (char_nummer*(LevelUp::Fenstery/@gruppen_größe))+25)
    draw_actor_level($game_party.existing_members[char_nummer], 150, (char_nummer*(LevelUp::Fenstery/@gruppen_größe))+50)
    draw_actor_erfahrung($game_party.existing_members[char_nummer], 300, (char_nummer*(LevelUp::Fenstery/@gruppen_größe))+25)
  end     
 
  def update
    super
    erneuern
  end
 
  def erneuern
    Graphics.update
    self.contents.clear
    anzeigen
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Window_Base
 
  def draw_actor_erfahrung(actor, x , y, width =120)
    draw_actor_erfahrung_gauge(actor, x, y, width = 120)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, LevelUp::Erfahrung)
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.aktuelle_erfahrung, 2)
    else
      self.contents.draw_text(xr - 90, y, 40, WLH,actor. aktuelle_erfahrung, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.erfahrung_für_level, 2)
    end
  end
 
  def draw_actor_erfahrung_gauge(actor, x, y, width = 120)
    gw = width * actor.aktuelle_erfahrung / actor.erfahrung_für_level
    gc1 = text_color(LevelUp::Erfahrungs_Farbe)
    gc2 = text_color(LevelUp::Erfahrungs_Farbe2)
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
   
   def draw_actor_level_edit(actor, x, y, z)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, WLH, actor.level - z, 2)
  end
 
  def draw_pfeil(x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, "-->") 
  end
   
  def draw_actor_hp_edit(actor, x, y, level, width = 120)
    draw_actor_hp_gauge_edit(actor, x, y, level, width = 120)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
    self.contents.font.color = hp_color(actor)
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
    else
      self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp_level(level), 2)
    end
  end
   
  def draw_actor_hp_gauge_edit(actor, x, y, level, width = 120)
    gw = width * actor.hp / actor.maxhp_level(level)
    gc1 = hp_gauge_color1
    gc2 = hp_gauge_color2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
     
    def draw_actor_mp_edit(actor, x, y, level, width = 120)
    draw_actor_mp_gauge_edit(actor, x, y, level, width)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
    self.contents.font.color = mp_color(actor)
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
    else
      self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp_level(level), 2)
    end
  end

  def draw_actor_mp_gauge_edit(actor, x, y, level, width = 120)
    gw = width * actor.mp / [actor.maxmp_level(level), 1].max
    gc1 = mp_gauge_color1
    gc2 = mp_gauge_color2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
 
  def draw_actor_atk_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::atk)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.atk_level(level), 2)
  end
 
  def draw_actor_def_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::def)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.def_level(level), 2)
  end
 
  def draw_actor_spi_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::spi)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.spi_level(level), 2)
  end
 
  def draw_actor_agi_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::agi)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.agi_level(level), 2)
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Window_Status < Window_Base
 
   def draw_basic_info(x, y)
    draw_actor_level(@actor, x, y + WLH * 0)
    draw_actor_state(@actor, x, y + WLH * 1)
    draw_actor_hp(@actor, x, y + WLH * 2)
    draw_actor_mp(@actor, x, y + WLH * 3)
    draw_actor_erfahrung(@actor, x , y + WLH * 4)
  end
 
end
#--------------------------------------------------------------------------------------------------------------------------------
class Game_Actor
 
  def maxhp_level(level)
    return actor.parameters[0, level]
  end
 
  def maxmp_level(level)
    return actor.parameters[1,level]
  end
 
  def atk_level(level)
    n = actor.parameters[2, level]
    for item in equips.compact do n += item.atk end
    return n
  end
 
  def def_level(level)
    n = actor.parameters[3, level]
    for item in equips.compact do n += item.def end
    return n
  end
 
  def spi_level(level)
    n = actor.parameters[4, level]
    for item in equips.compact do n += item.spi end
    return n
  end
 
  def agi_level(level)
    n = actor.parameters[5, level]
    for item in equips.compact do n += item.agi end
    return n
  end
 
  def erfahrung_für_level
    return @exp_list[@level+1] - @exp_list[@level]
  end
 
  def aktuelle_erfahrung
    return exp_s - @exp_list[@level]
  end
       
end
4. Demo
Demo Download (http://download.lima-city.de/dauerzocer/Script.exe)
Titel: LevelUp Window
Beitrag von: CornFlower am Mai 17, 2008, 00:50:28
hört sich nicht schlecht an, bin aber jetzt zu müde, werds mir mal morgen anschaun^^

CornFlower
Titel: LevelUp Window
Beitrag von: ERZENGEL am Mai 17, 2008, 01:02:36
Wow.. guckt nett aus und jetzt fällt mir glattein, dass sowas beim VX gefehlt hat. Schöne Arbeit (^^) bis auf die beiden globalen Variablen, die man durch Konstanten außerhalb der Klasse Window_LevelUp platzieren sollte. Aber beides is unnötig, da wenn man beide Werte verkleinert nicht mehr alles angezeigt wird ;)
Titel: LevelUp Window
Beitrag von: woratana am Mai 17, 2008, 05:21:31
Sounds good. :)
Very useful script, definitely.

Anyway, can you provide some screenshot please? :)
Titel: LevelUp Window
Beitrag von: woratana am Mai 17, 2008, 05:22:03
Sounds good. :)
Very useful script, definitely.

Anyway, can you provide some screenshot please? :)
Titel: LevelUp Window
Beitrag von: Agito Ace am Mai 17, 2008, 10:24:21
nicht schlecht^^ könnte nützlich sein, aufjedenfall erst mal Danke^^.
Titel: LevelUp Window
Beitrag von: eugene222 am Mai 17, 2008, 11:44:44
Jo, ist echt gut, werds nachher ausprobieren
Titel: LevelUp Window
Beitrag von: Dainreth am Mai 17, 2008, 11:48:10
Werden diese Statusfenster dann im Standard-Kampfsystem eingeblendet oder wie kann man sich das vorstellen? Wäre schön, wenn du noch 'nen kleinen Screenshot zeigst, klingt aber interessant!
Titel: LevelUp Window
Beitrag von: $@$uk€ am Mai 17, 2008, 14:14:20
Zitat von: Dainreth
Werden diese Statusfenster dann im Standard-Kampfsystem eingeblendet oder wie kann man sich das vorstellen? Wäre schön, wenn du noch 'nen kleinen Screenshot zeigst, klingt aber interessant!

Genau die selbe Frage hab ich auch^^
Also, könntest du oder vllt jemand anderes hier mal Screenshots reinsetzen?

edit:
Ok habs ausprobiert, bin aba nich so begeistert davon:
1. Nach jedem Kampf kann man dieses Fenster kurz sehen
2. Beim lvl up bleibt das fenster länger da, bis man Enter drückt,
ABER:
Nur von einem Helden, bei mir war das der 2. Also der 1. wurde gar nicht erwähnt da.
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 17, 2008, 14:36:29
Zitat von: $@$uk€
Werden diese Statusfenster dann im Standard-Kampfsystem eingeblendet oder wie kann man sich das vorstellen? Wäre schön, wenn du noch 'nen kleinen Screenshot zeigst, klingt aber interessant!

Genau die selbe Frage hab ich auch^^
Also, könntest du oder vllt jemand anderes hier mal Screenshots reinsetzen?

edit:
Ok habs ausprobiert, bin aba nich so begeistert davon:
1. Nach jedem Kampf kann man dieses Fenster kurz sehen
2. Beim lvl up bleibt das fenster länger da, bis man Enter drückt,
ABER:
Nur von einem Helden, bei mir war das der 2. Also der 1. wurde gar nicht erwähnt da.

Kann es sein, dass du Veränderungen an deinem Kampfsystem vorgenommen hast?
Titel: LevelUp Window
Beitrag von: $@$uk€ am Mai 17, 2008, 14:43:21
nein hab ich nich, ich hab das standard kampfsystem und hab nix dran manipuliert
Titel: LevelUp Window
Beitrag von: Dib am Mai 17, 2008, 15:30:04
jop das ist bei mir auch ich hab in mein spiel zwei charaktere und bei mir zeigt er nur den zweiten charakter
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 18, 2008, 12:06:25
So ich hab das Script nochmal überarbeitet nach den Kampf erscheint es nur noch, wenn es einen LevelUp gab und bei 2 Charakteren mit LevelUP zeigt es die Fenster nacheinander an.

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
# Script erstellt ein Fenster mit den Status veränderungen einen Charas bei einem Level Up
class Scene_Battle < Scene_Base
 
  def display_level_up
   
    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 (last_level != actor.level) then
        lvlup = Window_LevelUp.new(0,0,$fensterx,$fenstery-124) # Das Fenster wir erschaffen
        lvlup.anzeigen(actor, last_level)
        Input.update
        until(Input.trigger?(Input::C))
          update_basic
        end
        lvlup.dispose
    end
   end      
    wait_for_message
  end
 
end

class Window_LevelUp < Window_Base # Einstellungen des Fensters
 
  $fensterx = 544 # Maße des Spiel Fensters
  $fenstery = 416
 
  def anzeigen(charakter, altes_level) # erzeugt Elemente des Fensters
    neue_level = charakter.level-altes_level
    draw_actor_face(charakter, 25, 25, size = 96)
    draw_actor_name(charakter, 150, 25)
    draw_actor_class(charakter, 250, 25)
    draw_actor_level(charakter, 350,75)
    draw_actor_level_edit(charakter, 150,75,neue_level)
    draw_differenz(300,75,charakter.level, altes_level)
    draw_actor_hp(charakter, 350,100 , width = 120)
    draw_actor_hp_edit(charakter, 150, 100, altes_level, width = 120)
    draw_differenz(300,100, charakter.maxhp_level(charakter.level), charakter.maxhp_level(altes_level))
    draw_actor_mp_edit(charakter, 150, 125, altes_level, width = 120)
    draw_actor_mp(charakter, 350,125, width = 120)
    draw_differenz(300,125, charakter.maxmp_level(charakter.level), charakter.maxmp_level(altes_level))
    draw_actor_atk_edit(charakter, 150, 150, altes_level)
    draw_actor_atk_edit(charakter, 350, 150, charakter.level)
    draw_differenz(300,150, charakter.atk_level(charakter.level), charakter.atk_level(altes_level))
    draw_actor_def_edit(charakter, 150, 175, altes_level)
    draw_actor_def_edit(charakter, 350, 175, charakter.level)
    draw_differenz(300,175, charakter.def_level(charakter.level), charakter.def_level(altes_level))
    draw_actor_spi_edit(charakter, 150 , 200 , altes_level)
    draw_actor_spi_edit(charakter, 350 , 200 , charakter.level)
    draw_differenz(300,200, charakter.spi_level(charakter.level), charakter.spi_level(altes_level))
    draw_actor_agi_edit(charakter, 150 , 225 , altes_level)
    draw_actor_agi_edit(charakter, 350 , 225 , charakter.level)
    draw_differenz(300,225, charakter.agi_level(charakter.level), charakter.agi_level(altes_level))
    draw_pfeile
  end
 
  def draw_pfeile #erschafft alle zuweisungd Pfeile
    draw_pfeil(300,235)
    draw_pfeil(300,85)
    draw_pfeil(300,110)
    draw_pfeil(300,135)
    draw_pfeil(300,160)
    draw_pfeil(300,185)
    draw_pfeil(300,210)
  end
   
  def draw_differenz(x, y, wert1, wert2) #erschaft die Anzeige des Atributts zuwachses
    differenz = wert1-wert2
    meine_farbe = Color.new(0,255,255)
    self.contents.font.color = meine_farbe
    self.contents.draw_text(x, y, 32, WLH, "+")
    self.contents.draw_text(x+15,y, 32, WLH, differenz)
  end
 
end

class Window_Base
 
   def draw_actor_level_edit(actor, x, y, z)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, WLH, actor.level - z, 2)
  end
 
  def draw_pfeil(x, y)
    self.contents.font.color = system_color #ermöglicht es einen Zuweisungspfeil abzubilden
    self.contents.draw_text(x, y, 32, WLH, "-->")  
  end
 
  def draw_actor_hp_edit(actor, x, y, level, width = 120)
    draw_actor_hp_gauge_edit(actor, x, y, level, width = 120)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
    self.contents.font.color = hp_color(actor)
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
    else
      self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp_level(level), 2)
    end
  end
   
  def draw_actor_hp_gauge_edit(actor, x, y, level, width = 120)
    gw = width * actor.hp / actor.maxhp_level(level)
    gc1 = hp_gauge_color1
    gc2 = hp_gauge_color2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
     
    def draw_actor_mp_edit(actor, x, y, level, width = 120)
    draw_actor_mp_gauge_edit(actor, x, y, level, width)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
    self.contents.font.color = mp_color(actor)
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
    else
      self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
      self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp_level(level), 2)
    end
  end

  def draw_actor_mp_gauge_edit(actor, x, y, level, width = 120)
    gw = width * actor.mp / [actor.maxmp_level(level), 1].max
    gc1 = mp_gauge_color1
    gc2 = mp_gauge_color2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
 
  def draw_actor_atk_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::atk)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.atk_level(level), 2)
  end
 
  def draw_actor_def_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::def)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.def_level(level), 2)
  end
 
  def draw_actor_spi_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::spi)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.spi_level(level), 2)
  end
 
  def draw_actor_agi_edit(actor, x , y , level)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, WLH, Vocab::agi)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 64, y, 24, WLH, actor.agi_level(level), 2)
  end
 
end

class Game_Actor #erweitert Game_Actor um Methoden mit welchem man die Stats eines Actors auf beliebigem Level abrufe nkann
 
  def maxhp_level(level)
    return actor.parameters[0, level]
  end
 
  def maxmp_level(level)
    return actor.parameters[1,level]
  end
 
  def atk_level(level)
    n = actor.parameters[2, level]
    for item in equips.compact do n += item.atk end
    return n
  end
 
  def def_level(level)
    n = actor.parameters[3, level]
    for item in equips.compact do n += item.def end
    return n
  end
 
  def spi_level(level)
    n = actor.parameters[4, level]
    for item in equips.compact do n += item.spi end
    return n
  end
 
  def agi_level(level)
    n = actor.parameters[5, level]
    for item in equips.compact do n += item.agi end
    return n
  end
   
end

Titel: LevelUp Window
Beitrag von: CornFlower am Mai 18, 2008, 12:16:05
funktioniert dass dann auch bei 4 und mehr charkteren? XD

CornFlower
Titel: LevelUp Window
Beitrag von: Dib am Mai 18, 2008, 12:51:03
das ist auf jedenfall besser dank dir
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 18, 2008, 13:57:30
Zitat von: CornFlower
funktioniert dass dann auch bei 4 und mehr charkteren? XD

CornFlower

Ja das sollte bei jeder Charakteranzahl einwandfrei funktionieren,
Titel: LevelUp Window
Beitrag von: Pippolo am Mai 18, 2008, 21:54:12
wenn ich machen will dass ich auserhalb des kampfes exp bekomme oder ein lvl steige dann funktioniert das nicht. wenn ich diesem code einfüg kommt immer ein syntax error. kann mir bitte jemand helfen?
Titel: LevelUp Window
Beitrag von: Andre am Mai 18, 2008, 22:12:19
Zitat von: Pippolo
wenn ich machen will dass ich auserhalb des kampfes exp bekomme oder ein lvl steige dann funktioniert das nicht. wenn ich diesem code einfüg kommt immer ein syntax error. kann mir bitte jemand helfen?
habe genau das selbe problem....
oben steht das mit dem code eingeben aber das funkt nicht Q_Q
Bitte ebenfalls um hilfe!
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 18, 2008, 23:07:56
Könnt ihr vielleicht mal zeigen, wie ihr ausserhalb des Kampfes eure exp verteilt dann kann ich mal schau, was man machen muss um des Window anzuzeigen.
Titel: LevelUp Window
Beitrag von: Afenishakur am Mai 18, 2008, 23:11:01
Du willst also ausserhalb eines Kampfes EXP vergeben und dadurch auch lvl aufsteigen?
Titel: LevelUp Window
Beitrag von: CornFlower am Mai 18, 2008, 23:12:08
es gibt die Befehle "Change EXP..." oder "Change Level..."

wird oft benutzt um erfahrung für erledigte aufgaben zu verteilen : )

CornFlower
Titel: LevelUp Window
Beitrag von: Andre am Mai 18, 2008, 23:13:24
also, bei mir im game gibt es quests, und für manche quests bekommt man EXP und kann somit auch level steigen und nach dem man mit dem Quest typi gesprochen hat soll sich das fenster öffnen und zeigen was hoch gegangen ist.
Titel: LevelUp Window
Beitrag von: Afenishakur am Mai 18, 2008, 23:15:47
So hab hier mal auf die schnelle was gemacht, ein simples event, wo du jemanden ansprichst ne quest abschließt und dafür exp erhälst und auch lvl aufsteigen kannst

http://www.file-upload.net/download-859753...up-EXP.rar.html (http://www.file-upload.net/download-859753/lvl-up-EXP.rar.html)
(zuspät gelesen das du das bereits hast)
viel spaß

edit: das mit dem zeigen was hochgegangen ist, geht einmal auf eventbasis, hat dann was
mit variablen zu tun, sollte aber nicht allzu schwer sein oder per Script, aber da kenn ich keins.
Titel: LevelUp Window
Beitrag von: Andre am Mai 18, 2008, 23:18:10
ja super das kann ich ja auch aber nachdem man das lvl gestiegen ist soll das fenster aufgehen wo steht was für stats hochgegangen sind! Also dieses Script soll sich ausführen...
Titel: LevelUp Window
Beitrag von: ERZENGEL am Mai 19, 2008, 01:21:36
Das hier wird in den Event Command "Script..." eingetragen:
$levelup = Window_LevelUp.new($game_party.members[n], level_alt)
$levelup.anzeigen
Das n in den eckigen Klammern durch eine Zahl von 0 bis 3 ersetzen. Reihenfolge ist die der Party. Also Ralph ist 0, Ulrika ist 1 usw.
level_alt durch das Level, das der Actor vorher hatte ersetzen. Wenn du vorher es in ne variable, z.B. in die mit der ID 8 speicherst, dann ersetze es durch $game_variables[8]. DIe 8 ist dabei die ID und so auch austauschbar.
Um es wider wegzubekommen:$levelup.dispose
$levelup = nil
Titel: LevelUp Window
Beitrag von: Pippolo am Mai 19, 2008, 09:52:28
Das funktioniert immer noch nicht.
Da kommt dann ein No Method Error.....
Titel: LevelUp Window
Beitrag von: ERZENGEL am Mai 19, 2008, 10:08:29
Auf ein neues ^^:$levelup = Window_LevelUp.new(0, 0, $fensterx, $fenstery-124)
$levelup.anzeigen($game_party.members[n], altes_level)
Titel: LevelUp Window
Beitrag von: Pippolo am Mai 19, 2008, 10:19:46
Gut jez funktioniert es wenn man das alte level eingibt.
Aber das mit der Variable geht immer noch nich.
Weil wenn man das jez z.B. mit quests macht, jeder spieler lvlt anderes und deswwegen weis man ja nicht welches lvl er zu diesem zeitpunkt hat.
Titel: LevelUp Window
Beitrag von: ERZENGEL am Mai 19, 2008, 10:34:34
$levelup = Window_LevelUp.new(0, 0, $fensterx, $fenstery-124)
$levelup.anzeigen($game_party.members[n], $game_variables[ID])
ID durch die germerkte ID ersetzen.
Titel: LevelUp Window
Beitrag von: Pippolo am Mai 19, 2008, 10:43:15
Kommt wieder ein Fehler =(
Diesmal ein Zero Division Fehler.
Titel: LevelUp Window
Beitrag von: ERZENGEL am Mai 19, 2008, 10:50:28
Unter Game _Interpreter das hier einfügen, da Enterbrain immer noch nicht die Bugs aus dem VX behoben hat. Näheres steht in der FAQ unter Allgemein. Such dort dann nach Control Variables.
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Control Variables [FIX]
  #--------------------------------------------------------------------------
  def command_122
    value = 0
    case @params[3]  # Operand
    when 0  # Constant
      value = @params[4]
    when 1  # Variable
      value = $game_variables[@params[4]]
    when 2  # Random
      value = @params[4] + rand(@params[5] - @params[4] + 1)
    when 3  # Item
      value = $game_party.item_number($data_items[@params[4]])
    when 4  # Actor
      actor = $game_actors[@params[4]]
      if actor != nil
        case @params[5]
        when 0  # Level
          value = actor.level
        when 1  # Experience
          value = actor.exp
        when 2  # HP
          value = actor.hp
        when 3  # MP
          value = actor.mp
        when 4  # Maximum HP
          value = actor.maxhp
        when 5  # Maximum MP
          value = actor.maxmp
        when 6  # Attack
          value = actor.atk
        when 7  # Defense
          value = actor.def
        when 8  # Spirit
          value = actor.spi
        when 9  # Agility
          value = actor.agi
        end
      end
    when 5  # Enemy
      enemy = $game_troop.members[@params[4]]
      if enemy != nil
        case @params[5]
        when 0  # HP
          value = enemy.hp
        when 1  # MP
          value = enemy.mp
        when 2  # Maximum HP
          value = enemy.maxhp
        when 3  # Maximum MP
          value = enemy.maxmp
        when 4  # Attack
          value = enemy.atk
        when 5  # Defense
          value = enemy.def
        when 6  # Spirit
          value = enemy.spi
        when 7  # Agility
          value = enemy.agi
        end
      end
    when 6  # Character
      character = get_character(@params[4])
      if character != nil
        case @params[5]
        when 0  # x-coordinate
          value = character.x
        when 1  # y-coordinate
          value = character.y
        when 2  # direction
          value = character.direction
        when 3  # screen x-coordinate
          value = character.screen_x
        when 4  # screen y-coordinate
          value = character.screen_y
        end
      end
    when 7  # Other
      case @params[4]
      when 0  # map ID
        value = $game_map.map_id
      when 1  # number of party members
        value = $game_party.members.size
      when 2  # gold
        value = $game_party.gold
      when 3  # steps
        value = $game_party.steps
      when 4  # play time
        value = Graphics.frame_count / Graphics.frame_rate
      when 5  # timer
        value = $game_system.timer / Graphics.frame_rate
      when 6  # save count
        value = $game_system.save_count
      end
    end
    for i in @params[0] .. @params[1]   # Batch control
      case @params[2]  # Operation
      when 0  # Set
        $game_variables[i] = value
      when 1  # Add
        $game_variables[i] += value
      when 2  # Sub
        $game_variables[i] -= value
      when 3  # Mul
        $game_variables[i] = value
      when 4  # Div
        $game_variables[i] /= value if value != 0
      when 5  # Mod
        $game_variables[i] %= value if value != 0
      end
      if $game_variables[i] > 99999999    # Maximum limit check
        $game_variables[i] = 99999999
      end
      if $game_variables[i] < -99999999   # Minimum limit check
        $game_variables[i] = -99999999
      end
    end
    $game_map.need_refresh = true
    return true
  end
end
Titel: LevelUp Window
Beitrag von: Pippolo am Mai 19, 2008, 10:55:24
Jetzt funktioniert es ganz^^
Danke für die Hilfe  happy.gif\" style=\"vertical-align:middle\" emoid=\"^_^\" border=\"0\" alt=\"happy.gif\" /]
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 25, 2008, 15:31:38
Ich hab mein Script nochmal erweitert : Jetzt laufen nach dem Kampf LevelUP Balken hoch ähnlich wie in Final Fantasy 7 etc. Und ich hab noch einen Screenshoot und eine Demo in meinen ersten Beitrag geuppt.
Titel: LevelUp Window
Beitrag von: Kenshin am Mai 25, 2008, 15:39:17
bohr dein Script ist hamma genial danke man ;)
Titel: LevelUp Window
Beitrag von: Claine am Mai 25, 2008, 15:46:10
Script 'Level-UP Window' Line 32: SyntaxError occurred. Das kommt jetzt bei mir... Voher kam das nicht.. sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /]

MFG
Claine

EDIT:

Hie rmal die line:

if Input.trigger?(Input::cool.gif then
Titel: LevelUp Window
Beitrag von: Evil95 am Mai 25, 2008, 16:39:24
änder es mal in das hier um:
if Input.trigger?(Input::B) then
Titel: LevelUp Window
Beitrag von: Claine am Mai 25, 2008, 16:55:35
THX!! ^^. Jetzt funktionierts!

MFG
Claine
Titel: LevelUp Window
Beitrag von: Evil95 am Mai 25, 2008, 18:32:46
währe es möglich das script so zu verändern, dass nur das levelup window angezeigt wird? wenn ja, könnte es jemand machen?
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 25, 2008, 19:42:01
Du meinst also so wie es vorher war?
Titel: LevelUp Window
Beitrag von: Evil95 am Mai 25, 2008, 21:30:38
jop. weil es nervt nachm kampf ne minute zu warten bis die exp verteilt ist bzw das jedes mal per esc zu beenden nervt auch nach ner weile.
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 25, 2008, 22:20:28
Ok das es anfangen kann zu nerven hab ich jetzt nicht bedacht ich denke ich bau eine Funktion ein bei der man die LevelUp balken ein und ausstellen kann.
Titel: LevelUp Window
Beitrag von: Evil95 am Mai 25, 2008, 22:46:52
isn geiles script ehrlich. aba wenn man so den 10. kampf hinter sich hat fängt es an zu nerven. das is nich böse gemeint oder so. :)
Titel: LevelUp Window
Beitrag von: dauerzocer am Mai 27, 2008, 14:43:10
Jetzt kann man in einem Options Menu die Levelbalken nach dem Kampf ein und ausstellen.
Titel: LevelUp Window
Beitrag von: Evil95 am Mai 27, 2008, 16:55:42
thx dauerzocer :)
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 12, 2008, 16:50:02
also ausserhalb eines kampfes exp bekommen ist doch einfach xD
wenn man zum beispiel eine quest erfüllt hat^^
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 12, 2008, 22:50:44
Zitat von: SatansRightHand
also ausserhalb eines kampfes exp bekommen ist doch einfach xD
wenn man zum beispiel eine quest erfüllt hat^^

Ich weiss nicht ganz, was du damit sagen willst aber wenn du denkst, dass das Script eine Möglichkeit bietet ausserhalb des Kampfes Erfahrung zu erhalten muss ich dir leider sagen, dass du falsch liegst.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 13, 2008, 14:18:04
kann man das nicht einbauen?
weil dann könnte ich das skript auch gebrauchen^^
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 13, 2008, 16:11:22
Zitat von: SatansRightHand
kann man das nicht einbauen?
weil dann könnte ich das skript auch gebrauchen^^

Ich weiss immer noch nciht genau was du willst^^
Dieses Script ist nicht um Erfahrungspunkte ausserhald des Kampfes zu verteilen das kann der RPG Maker ja schon selbst. Es ist aber möglich wenn man Erfahrung verteilt dann ein LevelUp Window anzuzeigen.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 13, 2008, 17:47:45
ja genau
ich war ein bisschen neben der rolle also was ich wollte:
ich verstehe deine anmerkung nicht, um das fenster zu üffnen, wenn man ausserhalb eines kampfes ein level aufsteigt nicht.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 13, 2008, 21:09:59
kann mir das jemand erklären?
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 13, 2008, 23:46:21
Zitat von: SatansRightHand
kann mir das jemand erklären?

Bitte erklär du doch erstmal was du willst.
Titel: LevelUp Window
Beitrag von: Afenishakur am Juni 14, 2008, 00:16:45
Ich glaub er meint das mit dem Level Up Window, wie man das anzeigt ausserhalb eines Kampfes, oder?
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 14, 2008, 09:32:35
ja genau
kann mir das jemand genau erklären was ich wo hinmachen muss, damit das fenster ausserhalb des kampfes angezeigt wird.
die codes sind ja auf der ersten seite
ich verstehe das aber nicht
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 14, 2008, 12:08:59
Ok dann erkläre ich das halt nochmal genauer wobei das schon fast nicht mehr möglich ist.
Also der Code um das Fenster aufzurufen steht auf der ersten Seite weisst du wie du den einfügst nachdem du ausserhalb des Kampfes Erfahrung verteilt hast?
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 14, 2008, 15:46:42
ich weis wie ich den normalen code einfüge, aber nicht wie ich den 2. code einfüge (den für das ausserhalb des kampfes)
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 14, 2008, 16:48:43
Also wenn du Efahrung ausserhalb des Kampfes verteilst benutzt du ja ein Event. In dem du den Event Command Erfahrungspunkte in der Gruppe Helden auf der ersten Seite benutzt richtig?
Titel: LevelUp Window
Beitrag von: Afenishakur am Juni 14, 2008, 17:09:38
Mach ihm doch einfach ne kurze Demo, mit sonem Event wo alles drin ist =)
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 14, 2008, 18:26:08
ja genau
wenn man die quest erfüllt hat, bekommt jeder von den helden erfahrung
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 14, 2008, 20:08:21
Eine neue Funktion mit der man einfach Erfahrung ausserhalb des Kampfes verteilen kann wie im Kampf ist schon in Arbeit.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 14, 2008, 20:24:33
nein ich meinte, wenn man ausserhalb eines kampfes ein level aufsteigt.
wie macht man das fentser dann auf
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 14, 2008, 20:32:06
Zitat von: SatansRightHand
nein ich meinte, wenn man ausserhalb eines kampfes ein level aufsteigt.
wie macht man das fentser dann auf

Ja ich habe festgestellt, dass das nicht so einfach ist und wenn man das immer machen muss sehr kompliziert ist deshalb werde ich eine einfach zu bedinende Funktion machen, die sowohl die Erfahrung verteilt als auch die LevelUp Balken anzeigt und bei einem LevelUp das LevelUp Fenster anzeigt.

So ist fertig ich hab das Script auf der ersten Seite geändert und eine neue Demo zur Verfügung gestellt in der auch ausserhalb des Kampfes Erfahrung verteilt wird.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 14, 2008, 22:32:31
das ist jetzt schonmal ganz gut aber könntest du das noch so machen, dass man nicht so wie vorgegeben die punkte dazugeben muss, sondern sich selber aussuchen kann, wo man selbst im spiel punkte dazu gibt

also man hat am anfang 1 stärke und wenn man dann in dem fenster darauf drückt hat man 2 stärke
und man bekommt halt mit jedem aufgestiegenem level ein paar punkte, die man auf die statuswerte verteilen kann.
dann währe es PERFEKT
Titel: LevelUp Window
Beitrag von: dauerzocer am Juni 14, 2008, 22:45:05
Das System das du jetzt beschrieben hast ist kompliziert, weil es nicht mehr auf die vorgegebenen Status Werte für einen Charakter zugreift. Ich denke es ist umsetztbar, aber erfordert einen größeren Eingriff in das Spiel ich denke nicht, dass das noch viel mit meinem Script zu tun hat. Mein Script liest nur die Punkte aus auf einem Level und auf dem nächsten, deine Idee erfordert aber, dass man die Punkte verändert. Vielleicht probiere ich bei Gelegenheit sowas zu Scripten, aber ich kann nichts versprechen. Aber diese Funktion wird es auf keinen Fall als Erweiterung für das LevelUp Window geben.
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 15, 2008, 11:19:32
ja das habe ich bemerkt
ich hatte mir das so vorgestellt, wie ich das gesagt hab...
naja egal
Titel: LevelUp Window
Beitrag von: ERZENGEL am Juni 15, 2008, 11:26:02
@SatansRightHand: Das hier (http://sabakan.cc/rpg/manual_status_up.html) dürfte so etwas sein, dass du suchst. Falls du ne Erklärung/Übersetzung dafür suchst mach besser nen neuen Thread in VX Technik auf ;)
Titel: LevelUp Window
Beitrag von: SatansRightHand am Juni 15, 2008, 12:10:36
ja so ungefähr.
ich hatte schonmal soeins
das war allerdings für den xp
ich habs im vx probiert aber da öffnet sich das fenster nicht.
kann dass vielleicht jemand für den vx umbauen???

#=================================
# Syn's Upgrade Customization V4.8.61 (3/28/07)
# Created by Synthesize
# Help from Raziel, Trickster, Icedmetal57
#=================================
module Upgrade_Points
  Points_Gained = 4 # Amount of points gained upon leveling.
  Hp_rise = 20 # The amount of HP to raise per point
  Sp_rise = 15 # The amount of SP to raise per point
  Str_rise = 1 # The amount of STR to raise
  Dex_rise = 1 # The amount of DEX to raise
  Agi_rise = 1 # The amount of AGI to raise  
  Int_rise = 1 # The amount of INT to raise    
  Error_sound = '057-Wrong01' # Change the sound effect when Upgrade Points equals zero.
end
#=================================
# *Begin Script*
#=================================
#=================================
# *Create Points*
#=================================
  class Game_Actor < Game_Battler                  
  attr_accessor :upgrade_points
  alias stat_point_lvlup_game_actor_setup setup
  def setup(actor_id)
 stat_point_lvlup_game_actor_setup(actor_id)
 @upgrade_points = 0
  end
  def exp=(exp)
 @exp = [[exp, 9999999].min, 0].max
 # Level up
 while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
   @level += 1
   @upgrade_points += Upgrade_Points::Points_Gained
    $scene = Scene_Upgrade.new
   # Learn skill
   for j in $data_classes[@class_id].learnings
  if j.level == @level
    learn_skill(j.skill_id)
  end
   end
 end
 while @exp < @exp_list[@level]
   @level -= 1
 end
 @hp = [@hp, self.maxhp].min
 @sp = [@sp, self.maxsp].min
  end
end
#=================================
# Begin Upgrade Code
#=================================
class Scene_Upgrade
  #--------------------------------------------------------------------------
  # Object Initalize
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
  
  def main
    @spriteset = Spriteset_Map.new
    s1 = "Erhöht die MaxHP um #{Upgrade_Points::Hp_rise} "
    s2 = "Erhöht die MaxMP um #{Upgrade_Points::Sp_rise} "
    s3 = "Erhöht die Stärke um #{Upgrade_Points::Str_rise} "
    s4 = "Erhöht das Geschick um #{Upgrade_Points::Dex_rise} "
    s5 = "Erhöht die Agilität um #{Upgrade_Points::Agi_rise} "
    s6 = "Erhöht die Intelligenz um #{Upgrade_Points::Int_rise} "
    # Set Command Window Data
    @command_window = Window_Command.new(260, [s1, s2, s3, s4, s5, s6])
    @command_window.x = 46
    @command_window.y = 112
    @command_window.z = 9999
    @command_window.opacity = 200
    @command_window.active = true
    @command_window.update
    # Set Player Data
    @actor = $game_party.actors[@actor_index]
    @status_window = Window_Upgrade.new(@actor)
    @status_window.opacity= 200
    @status_window.x = 304
    @status_window.y = 56
    @status_window.z = 9999
    # Set Raise Window Data
    @raise_window = Window_Raise.new
    @raise_window.x = 46
    @raise_window.y = 56
    @raise_window.z = 9999
    @raise_window.opacity = 200
    @raise_window.visible = false
    # Set Actor Tab Window Data
    @actor_window = Window_ActorTab.new(@actor)
    @actor_window.x = 304
    @actor_window.y = 0
    @actor_window.z = 9999
    @actor_window.opacity = 200
    @actor_window.visible = true
    # Set Controls Window
    @controls_window = Window_Controls.new
    @controls_window.opacity= 200
    @controls_window.x = 46
    @controls_window.y = 333
    @controls_window.z = 9999
    @controls_window.visible = true
     # Graphics Transition
    Graphics.transition
    # Main Loop
    loop do
    # Update Graphics
      Graphics.update
    # Update Input
      Input.update
    # Renew
      update
    # Discontinue Loop
      if $scene != self
        break
      end
    end
    # Prepare Transition
    Graphics.freeze
    # Dispose Windows
    @command_window.dispose
    @status_window.dispose
    @raise_window.dispose
    @controls_window.dispose
    @spriteset.dispose
    @actor_window.dispose
  end
  #--------------------------------------------------------------------------
  # Update
  #--------------------------------------------------------------------------
  def update
    @command_window.update
   @raise_window.update
   if Input.trigger?(Input::R)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Upgrade.new(@actor_index)
     return
   end
   if Input.trigger?(Input::L)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += $game_party.actors.size - 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Upgrade.new(@actor_index)
     return
   end
 # If command window is active: call update_command
   if @command_window.active
     update_command
     return
   # End IF
    end
 # End Def
  end
#=================================
# *Update Command*
#=================================
  def update_command
  #@raise_window.update
  if Input.trigger?(Input::B)
      # Play Cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Load Map
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
   # Branch by command window cursor position
      case @command_window.index
      when 0
        if @actor.upgrade_points > 0 and @actor.maxhp < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.maxhp += Upgrade_Points::Hp_rise
          @actor.hp += Upgrade_Points::Hp_rise
          @actor.upgrade_points -= 1
          @status_window.refresh
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      when 1
        if @actor.upgrade_points > 0 and @actor.maxsp < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.maxsp += Upgrade_Points::Sp_rise
          @actor.sp += Upgrade_Points::Sp_rise
          @actor.upgrade_points -= 1
          @status_window.refresh        
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      when 2
        if @actor.upgrade_points > 0 and @actor.str < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.str += Upgrade_Points::Str_rise
          @actor.upgrade_points -= 1
          @status_window.refresh        
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      when 3
        if @actor.upgrade_points > 0 and @actor.dex < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.dex += Upgrade_Points::Dex_rise
          @actor.upgrade_points -= 1
          @status_window.refresh        
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      when 4
        if @actor.upgrade_points > 0 and @actor.agi < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.agi += Upgrade_Points::Agi_rise
          @actor.upgrade_points -= 1
          @status_window.refresh        
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      when 5
        if @actor.upgrade_points > 0 and @actor.int < 9999
          $game_system.se_play($data_system.decision_se)
          @actor.int += Upgrade_Points::Int_rise
          @actor.upgrade_points -= 1
          @status_window.refresh        
          @raise_window.visible = true    
        else
          @raise_window.visible = false
          $game_system.se_play(RPG::AudioFile.new(Upgrade_Points::Error_sound))
        end
      end
    end
 end
end
#============================================================
# Begin Windows
#============================================================

#=================================
# *Status Window*
#=================================
  class Window_Upgrade < Window_Base
  def initialize(actor)
 super(32, 32, 315, 416)
 self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = "Arial" # Font used in Raise Window
 self.contents.font.size = 18 # Font Size in Raise Window
 @actor = actor
 self.opacity = 200
 refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
 self.contents.clear
 draw_actor_graphic(@actor, 122, 60)
 draw_actor_class(@actor, 176, 3)
 draw_actor_level(@actor, 6, 3)
 draw_actor_state(@actor, 95, 48)
  if @actor.upgrade_points >= 1
   self.contents.font.color = system_color
     if @actor.hp < 9999
    self.contents.draw_text(170, 70, 100, 100, "=>")
  end
    if @actor.sp < 9999  
    self.contents.draw_text(170, 94, 100, 100, "=>")  
  end
    if @actor.str < 999
    self.contents.draw_text(170, 158, 100, 100, "=>")  
  end
    if @actor.dex < 999
    self.contents.draw_text(170, 182, 100, 100, "=>")  
  end  
    if @actor.agi < 999
    self.contents.draw_text(170, 206, 100, 100, "=>")  
  end    
    if @actor.int < 999
    self.contents.draw_text(170, 230, 100, 100, "=>")  
    end      
   self.contents.font.color = normal_color    
  @hp_preview = @actor.hp + Upgrade_Points::Hp_rise
  @mhp_preview = @actor.maxhp +  Upgrade_Points::Hp_rise  
  if @actor.hp < 9999
  self.contents.draw_text(200, 70, 100, 100, "#{@hp_preview}/#{@mhp_preview}")
end
  @sp_preview = @actor.sp + Upgrade_Points::Sp_rise  
  @msp_preview = @actor.maxsp + Upgrade_Points::Sp_rise
  if @actor.sp < 9999  
    self.contents.draw_text(200, 94, 100, 100, "#{@sp_preview}/#{@msp_preview}")    
  end
  @str_preview = @actor.str + Upgrade_Points::Str_rise  
  if @actor.str < 999  
    self.contents.draw_text(200, 158, 100, 100, "#{@str_preview}")    
  end  
  @dex_preview = @actor.dex + Upgrade_Points::Dex_rise  
  if @actor.dex < 999  
    self.contents.draw_text(200, 182, 100, 100, "#{@dex_preview}")    
  end    
  @agi_preview = @actor.agi + Upgrade_Points::Agi_rise  
  if @actor.agi < 999  
    self.contents.draw_text(200, 206, 100, 100, "#{@agi_preview}")    
  end    
  @int_preview = @actor.int + Upgrade_Points::Int_rise    
  if @actor.int < 999  
    self.contents.draw_text(200, 230, 100, 100, "#{@int_preview}")    
  end      
end
 draw_actor_hp(@actor, 4, 104, 172)
 draw_actor_sp(@actor, 4, 128, 172)
  draw_actor_exp(@actor, 4, 152)    
 draw_actor_parameter(@actor, 4, 192, 3)
 draw_actor_parameter(@actor, 4, 216, 4)
 draw_actor_parameter(@actor, 4, 240, 5)
 draw_actor_parameter(@actor, 4, 264, 6)
 x = contents.text_size("Points:").width
 text = "Punkte:"
 text2 = "#{@actor.upgrade_points}"
 self.contents.font.color = system_color
 self.contents.draw_text(190, 360, x, 32, text)
 self.contents.font.color = normal_color
 self.contents.draw_text(200+x, 360, (self.width/2), 32, text2.to_s)
  end
end
#--------------------------------------------------------------------------
# Raise Window
#--------------------------------------------------------------------------
class Window_Raise< Window_Base
  def initialize
    super(0, 0, 260, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial" # Font used in Raise Window
    self.contents.font.size = 21 # Font Size in Raise Window
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 180, 30, "Attribut erhöht.")
  end
end
#=================================
#--------------------------------------------------------------------------
# ActorTab Window
#--------------------------------------------------------------------------
class Window_ActorTab< Window_Base
  def initialize(actor)
 super(0, 0, 120, 60)
  @actor = actor
 self.contents = Bitmap.new(width - 32, height - 32)
 self.contents.font.name = "Arial" # Font used in Raise Window
 self.contents.font.size = 21 # Font Size in Raise Window
 refresh
  end
  def refresh
 self.contents.clear
 draw_actor_name(@actor, 4, 3)
end
end
#=================================

#--------------------------------------------------------------------------
# Controls Window
#--------------------------------------------------------------------------
class Window_Controls < Window_Base
  def initialize
 super(0, 0, 260, 60)
 self.contents = Bitmap.new(width - 32, height - 32)
 self.contents.font.name = "Arial" # Font used in Raise Window
 self.contents.font.size = 20 # Font Size in Raise Window
 refresh
  end
  def refresh
 self.contents.clear
 self.contents.font.color = system_color
 self.contents.draw_text(4, 0, 200, 30, "Q: Taste <-   W: Taste->  ")
  end
end
#=================================
Titel: LevelUp Window
Beitrag von: Claine am Juni 15, 2008, 17:47:23
Hm... bei mir gibts irgendwie nen Bug:

Wenn ein Charakter Level 99 ist, gibts nen Fehler, ist mir bei nen Kampf passiert, wo man bei Broken Worlds mit Aslan gegen Bowser kämpft. Nach dm Kampf gabs nen Fehler. Hatte erst gedachgt, es läge daran, das ich keine EXP für Bowser eingetragen hatte, aber auch nicht. Nachdem ich Aslan auf Level 98 gestellt hatte und Bowser 999999 EXP gegeben hatte, stieg Aslan auf Level 99. Dann gabs nen Error.

Hier:

(http://img170.imageshack.us/img170/5221/aufzeichnenkh4.th.jpg) (http://img170.imageshack.us/my.php?image=aufzeichnenkh4.jpg)

Hoffe, mir kann einer helfen...

MFG
Claine
Titel: Re: LevelUp Window
Beitrag von: Master Chain am Januar 11, 2010, 20:24:07
Im Script ist irgent wo ein feheler ab Zeile 63 fängt es an
Titel: Re: LevelUp Window
Beitrag von: Vizard am Januar 13, 2010, 12:58:04
kann man das eigentlich auch sinnvoll in nen ABS verwenden? also ich meine dass dann das game kurz freezt und man die punkte verteilen soll. oder sollte ich da lieber auf ein punkteverteilungssystem zurückgreifen was unten im menü dann ist? ^^
SimplePortal 2.3.3 © 2008-2010, SimplePortal