设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1653|回复: 2
打印 上一主题 下一主题

[已经过期] 请教 学会特技的提示获得经验值问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
186 小时
注册时间
2010-6-24
帖子
111
跳转到指定楼层
1
发表于 2012-5-30 19:23:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
呃…就是用的学会特技的提示脚本,怎么让它能够实现敌人等级低于角色15级 或者高于角色15级就只能获得1点经验值呢?

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2012-5-30 19:44:44 | 只看该作者
在默认敌人没有等级这以概念。请先放上你用的等级脚本。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
186 小时
注册时间
2010-6-24
帖子
111
3
 楼主| 发表于 2012-5-31 14:46:54 | 只看该作者
不好意思,忘记了。
#===============================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#===============================================================


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

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

#——以下3个如果需要修改,直接输入文件名即可
$data_system_level_up_se = "Audio/ME/011-Item02" #升级时的音效设置
$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(240, 98, 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, "升级")
    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, 34, 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
        # 経験値取得の決定的瞬間(謎
        if $game_switches[1002]
          actor.exp += @exp_gained * 2
        else
          actor.exp += @exp_gained
        end

        # 判定
        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.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,使用和转载请保留此信息
#=============================================================
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-2 09:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表