Project1

标题: 升级提示出了毛病 [打印本页]

作者: 阿尔帝梅斯    时间: 2008-8-1 02:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 灯笼菜刀王    时间: 2008-8-1 02:41
把出错的脚本都帖出来,62行是哪个也指出来看看~~

还有,自己有没有添加别的有关战斗窗口类的脚本呢?
作者: 阿尔帝梅斯    时间: 2008-8-1 02:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 阿尔帝梅斯    时间: 2008-8-1 02:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 灯笼菜刀王    时间: 2008-8-1 02:47
以下引用阿尔帝梅斯于2008-7-31 18:43:46的发言:

这就是第62行:
level_up_window = Window_LevelUpWindow_A.new self,last_level,last_maxhp,


= =这一句就有问题....什么self,?

楼主还是把那脚本全帖出来看看。
作者: 阿尔帝梅斯    时间: 2008-8-1 02:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水镜风生    时间: 2008-8-1 03:00
你确定你已经把全部脚本贴出来了?

原RGSS中没有Window_LevelUpWindow_A这个类,而且你贴出的脚本中也没有相关定义……

而且我没有见过像
level_up_window = Window_LevelUpWindow_A.new self,last_level,last_maxhp,last_maxsp,last_str,last_dex,last_agi,last_int
这样生成对象的语句,后面那些self,last_level那些完全不知道是什么东西(难道是参数?)

我觉得是楼主抄脚本抄漏了……脚本中用到的相关窗口类都没有定义。

作者: linruyin    时间: 2008-8-1 03:02


#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

# ————————————————————————————————————

# ▼▲▼ XRXS_BP10. LEVEL UP!能力上昇表示ウィンドウ plus ▼▲▼
# by 桜雅 在土

#——以下3个如果需要修改,直接输入文件名即可
$data_system_level_up_se = "" #升级时的音效设置
$data_system_level_up_me = "Audio/ME/007-Fanfare01" # 升级时播放的ME
$data_system_skilllearn_se = "Audio/SE/106-Heal02" # 学会特技时播放的声效。

#==============================================================================
# ■ Window_LevelUpWindow
#------------------------------------------------------------------------------
#  バトル終了時、レベルアップした場合にステータスを表示するウィンドウです。
#==============================================================================
class Window_LevelUpWindow < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
    super(0, 128, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.back_opacity = 160
    refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.font.size = 14
    self.contents.draw_text( 0, 0, 160, 24, "LEVEL UP!!")
    self.contents.font.size = 18
    self.contents.draw_text( 0, 28, 160, 24, $data_system.words.hp)
    self.contents.draw_text( 0, 50, 160, 24, $data_system.words.sp)
    self.contents.font.size = 14
    self.contents.draw_text( 0, 72, 80, 24, $data_system.words.str)
    self.contents.draw_text( 0, 94, 80, 24, $data_system.words.dex)
    self.contents.draw_text( 0, 116, 80, 24, $data_system.words.agi)
    self.contents.draw_text( 0, 138, 80, 24, $data_system.words.int)
    self.contents.draw_text(92, 0, 128, 24, "→")
    self.contents.draw_text(76, 28, 128, 24, "=")
    self.contents.draw_text(76, 50, 128, 24, "=")
    self.contents.draw_text(76, 72, 128, 24, "=")
    self.contents.draw_text(76, 94, 128, 24, "=")
    self.contents.draw_text(76, 116, 128, 24, "=")
    self.contents.draw_text(76, 138, 128, 24, "=")
    self.contents.font.color = normal_color
    self.contents.draw_text( 0, 0, 88, 24, last_lv.to_s, 2)
    self.contents.draw_text( 0, 28, 72, 24, "+" + up_hp.to_s, 2)
    self.contents.draw_text( 0, 50, 72, 24, "+" + up_sp.to_s, 2)
    self.contents.draw_text( 0, 72, 72, 24, "+" + up_str.to_s, 2)
    self.contents.draw_text( 0, 94, 72, 24, "+" + up_dex.to_s, 2)
    self.contents.draw_text( 0, 116, 72, 24, "+" + up_agi.to_s, 2)
    self.contents.draw_text( 0, 138, 72, 24, "+" + up_int.to_s, 2)
    self.contents.font.size = 20
    self.contents.draw_text( 0, 0, 128, 24, actor.level.to_s, 2)
    self.contents.draw_text( 0, 26, 128, 24, actor.maxhp.to_s, 2)
    self.contents.draw_text( 0, 48, 128, 24, actor.maxsp.to_s, 2)
    self.contents.draw_text( 0, 70, 128, 24, actor.str.to_s, 2)
    self.contents.draw_text( 0, 92, 128, 24, actor.dex.to_s, 2)
    self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
    self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
  end
end
#==============================================================================
# ■ Window_SkillLearning
#------------------------------------------------------------------------------
#  レベルアップ時などにスキルを習得した場合にそれを表示するウィンドウです。
#==============================================================================
class Window_SkillLearning < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader :learned # スキルを習得したかどうか
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(class_id, last_lv, now_lv)
    super(160, 64, 320, 64)
    self.contents = Bitmap.new(width - 32, height - 28) # わざと▽を表示
    self.visible = false
    self.back_opacity = 160
    @learned = false
    refresh(class_id, last_lv, now_lv)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(class_id, last_lv, now_lv)
    for i in 0...$data_classes[class_id].learnings.size
      learn_lv = $data_classes[class_id].learnings.level
      # 今回のレベルアップ範囲で習得するスキルの場合
      if learn_lv > last_lv and learn_lv <= now_lv
        @learned = true
        # SEの再生
        if $data_system_skilllearn_se != ""
          Audio.se_play($data_system_skilllearn_se)
        end
        # 各描写
        skill_name = $data_skills[$data_classes[class_id].learnings.skill_id].name
        self.contents.clear
        self.contents.font.color = text_color(0)
        self.contents.draw_text(0,0,448,32, "学会特技:"+skill_name)
        self.contents.font.color = text_color(6)
        self.contents.draw_text(0,0,448,32, "          "+skill_name)
        self.contents.font.color = text_color(0)
        self.visible = true
        # メインループ
        loop do
          # ゲーム画面を更新
          Graphics.update
          # 入力情報を更新
          Input.update
          # フレーム更新
          update
          # 画面が切り替わったらループを中断
          if @learned == false
            break
          end
        end
      # メインループここまで
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      @learned = false
      self.visible = false
    end
  end
end
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 追加?公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :level_up_flags # LEVEL UP!表示
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 追加?公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :exp_gain_ban # EXP取得一時禁止
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp10_initialize initialize
  def initialize
    @exp_gain_ban = false
    xrxs_bp10_initialize
  end
  #--------------------------------------------------------------------------
  # ● ステート [EXP を獲得できない] 判定
  #--------------------------------------------------------------------------
  alias xrxs_bp10_cant_get_exp? cant_get_exp?
  def cant_get_exp?
    if @exp_gain_ban == true
      return true
    else
      return xrxs_bp10_cant_get_exp?
    end
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● アフターバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp10_start_phase5 start_phase5
  def start_phase5
    # EXP 獲得禁止
    for i in 0...$game_party.actors.size
      $game_party.actors.exp_gain_ban = true
    end
    xrxs_bp10_start_phase5
    # EXP 獲得禁止の解除
    for i in 0...$game_party.actors.size
      $game_party.actors.exp_gain_ban = false
    end
    # EXPを初期化
    @exp_gained = 0
    for enemy in $game_troop.enemies
      # 獲得 EXPを追加 # エネミーが隠れ状態でない場合
      @exp_gained += enemy.exp if not enemy.hidden
    end
    # 設定
    @phase5_step = 1
    @exp_gain_actor = -1
    # リザルトウィンドウを表示
    @result_window.visible = true
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アフターバトルフェーズ)
  #--------------------------------------------------------------------------
  #alias xrxs_bp10_update_phase5 update_phase5
  def update_phase5
    case @phase5_step
    when 1
      update_phase5_step1
    else
    # ウェイトカウントが 0 より大きい場合
      if @phase5_wait_count > 0
        # ウェイトカウントを減らす
        @phase5_wait_count -= 1
        # ウェイトカウントが 0 になった場合
        if @phase5_wait_count == 0
          # リザルトウィンドウを表示
          #@result_window.visible = true
          # メインフェーズフラグをクリア
          $game_temp.battle_main_phase = false
          # ステータスウィンドウをリフレッシュ
          @status_window.refresh
        end
      return
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # バトル終了
        battle_end(0)
      end
    # レベルアップしている場合は強制バトル終了
    battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アフターバトルフェーズ 1 : レベルアップ)
  #--------------------------------------------------------------------------
  def update_phase5_step1
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # ウィンドウを閉じて次のアクターへ
      @levelup_window.visible = false if @levelup_window != nil
      @status_window.level_up_flags[@exp_gain_actor] = false
      phase5_next_levelup
    end
  end
  #--------------------------------------------------------------------------
  # ● 次のアクターのレベルアップ表示へ
  #--------------------------------------------------------------------------
  def phase5_next_levelup
    begin
      # 次のアクターへ
      @exp_gain_actor += 1
      # 最後のアクターの場合
      if @exp_gain_actor >= $game_party.actors.size
        # アフターバトルフェーズ開始
        @phase5_step = 0
        return
      end
      actor = $game_party.actors[@exp_gain_actor]
      if actor.cant_get_exp? == false
        # 現在の能力値を保持
        last_level = actor.level
        last_maxhp = actor.maxhp
        last_maxsp = actor.maxsp
        last_str = actor.str
        last_dex = actor.dex
        last_agi = actor.agi
        last_int = actor.int
        # 経験値取得の決定的瞬間(謎
        actor.exp += @exp_gained
        # 判定
        if actor.level > last_level
          # レベルアップした場合
          @status_window.level_up(@exp_gain_actor)
          # リザルトウィンドウを消す
          @result_window.visible = false
          # SEの再生
          if $data_system_level_up_se != ""
            Audio.se_play($data_system_level_up_se)
          end
          # MEの再生
          if $data_system_level_up_me != ""
            Audio.me_stop
            Audio.me_play($data_system_level_up_me)
          end
          # LEVEL-UPウィンドウの設定
          @levelup_window = Window_LevelUpWindow.new(actor, last_level,
          actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
          actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
          @levelup_window.x = 160 * @exp_gain_actor
          @levelup_window.visible = true
          # ステータスウィンドウをリフレッシュ
          @status_window.refresh
          # スキル習得ウィンドウの設定
          @skilllearning_window = Window_SkillLearning.new(actor.class_id, last_level, actor.level)
          # ウェイトカウントを設定
          @phase5_wait_count = 40
          @phase5_step = 1
          return
        end
      end
    end until false
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

作者: 阿尔帝梅斯    时间: 2008-8-1 03:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2008-8-1 03:03
是不是冲突了……
作者: 灯笼菜刀王    时间: 2008-8-1 03:07
不是冲突,楼主说他没使用任何战斗窗口类脚本

- -100%的确定这个脚本是他从人家的工程里挖出来的~~

楼主还是直接使用楼上上上的那个脚本好了。
作者: 水镜风生    时间: 2008-8-1 03:08


完整脚本的贴出来了……换吧。

作者: 阿尔帝梅斯    时间: 2008-8-1 03:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 阿尔帝梅斯    时间: 2008-8-1 03:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-8-1 15:31
以下引用阿尔帝梅斯于2008-7-31 19:09:17的发言:

linruyin你给我的那个行是行,但是用事件增减等级时不显示

好像显示的,只是要增加后要等待5帧吧




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1