查看: 2282|回复: 0

[已经过期] 请教各位帮忙改一个脚本

  [复制链接]

Mr.Gandum

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

贵宾

发表于 2011-6-26 13:43:16 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 feizhaodan 于 2011-6-26 14:04 编辑

Apart:[code]# ▽△▽ XRXSv9. BaST【バトルシステムテンプレート】VX. ▽△▽
#
# publish 2010/ 3/ 5
# update  - 11/ 2/16b
#
#==============================================================================
# カスタマイズポイント - BaST本体
#==============================================================================
module XRXSV9
  #
  # バトルコマンド設定
  #    0 : 攻撃
  #    1 : スキル
  #    2 : ぼうぎょ
  #    3 : アイテム
  #    4 : 装備
  #    5 : ステータス
  #    6 : クイックコマンド
  #    7 : パーティスキル
  #    8 : にげる
  #    9 : ターン終了
  #   10 : 個人マテリアルバッグ
  #   11 : パーティマテリアルバッグ
  #   12 : アイテムトラッシュ確認
  #
  CommandIDs = [0, 1, 2, 3, 13 ,8]
  #
  # バトルコマンドの表示サイズ (VX標準 : 4)
  #
  CommandRow = 4
  #
  # [用語]
  #
  S_QUICK   = "マジック "
  S_PSKILL  = "アタック "
  S_TURNEND = "ターンエンド"
  S_BAG     = "マイバッグ "
  S_PBAG    = "アイテム  "
  S_TRASH   = "トラッシュ "
  #
  # [クイックコマンド機能]
  #  ※メモ quick があるアイテム・スキルはクイックコマンドとして扱います。
  #
  # クイックコマンドを元のウインドウに表示しないようにする?
  #
  QuickListHiding = true
  #
  # 仲間のクイックコマンドを選択可能にする?
  #
  QuickFriendSupport = true
  #
  # クイックコマンド時の画面色調とBGM音量
  #
  QuickTone   = Tone.new(-32,-40,0,96)
  QuickVolume = 60
  #
  #
  # [「行動側アニメーション」機能 ]
  #
  # 「魔法」と判定されるスキルに自動設定される行動側アニメーションID[一括設定]
  #    ( 0 を指定するとアニメは再生されません)
  #  ( メモ preanime[n] でn番を指定しているスキルはその指定が優先されます )
  #
  MagicPreanimationID = 0
  #
  # 行動側アニメーション再生時のウェイト時間指定[単位:F]
  #    ( 0 を指定するとアニメ終了時まで待機します)
  #
  PreanimationWaitCount = 0
  #
  # 「勝利前バトルイベント」を有効にする?
  #
  NonJudgeBattleEvent = true
  #
  # 「アクションスパンイベント」を有効にする?
  #     (有効な行動の終了時にバトルイベントスパン[ターン]をクリアします)
  #
  BattleEventActionSpan = false
  #
  # 勝利演出スキップ - スイッチID
  #
  BattleEndSkipSwitchID = 0
  #
  # 勝利BGM/ME+マップBGM復帰処理スキップ - スイッチID
  #
  BattleEndMapBGMMESkipSwitchID = 0
  #
  # コマンドポップSE
  #
  CommandPopSE = RPG::SE.new("", 80, 150)
  #
  # コマンドセットウィンドウを表示する?
  #
  CommandSetVisible = true
  #
  # 戦闘背景ファイル名接頭語(Graphics/Parallaxes)
  #
  BBMap    = "Map"
  BBTrrain = "Terrain"
  #
  # 戦闘テストに使用する戦闘背景(Graphics/Parallaxes)
  #
  BBBTEST = "Map1"
  #
  # パトルステータスの内容更新をまとめて軽量化する?
  #
  BattleStatusRefreshAtEnd = true
  #
  # ターンコントローラー・トループインデックス
  #
  TCTI = 0
  #
  # 用語配列の作成
  #
  def self.command_names
    names = [
      Vocab::attack,
      Vocab::skill,
      Vocab::guard,
      Vocab::item,
      Vocab::equip,
      Vocab::status,
      XRXSV9::S_QUICK,
      XRXSV9::S_PSKILL,
      Vocab::escape,
      XRXSV9::S_TURNEND,
      XRXSV9::S_BAG,
      XRXSV9::S_PBAG,
      XRXSV9::S_TRASH,
      "队伍编辑"
    ]
    return names
  end
end
#==============================================================================
# カスタマイズポイント - バトルリザルト専用
#==============================================================================
module XRXSV9
  #
  # 勝利BGMの初期設定(Audio/BGM)
  #
  BattleEndBGM = "Win"
  #
  # 人数によるEXPレート[単位:%]
  #
  EXPRates = [120, 100, 80, 67, 50]
  #
  # EXP獲得不可ステートID配列 ([]と空にすると戦闘不能でもEXP獲得します)
  #
  EXPnStates = [1]
  #
  # ドロップアイテム獲得・最大数制限(0だと制限しない)
  #
  DropItemMax = 0
end
#==============================================================================
# 魔法?の判定
#==============================================================================
class Game_BattleAction
  def magic_skill?
    return (self.skill? and self.skill.magic?)
  end
end
class RPG::UsableItem
  def magic?
    return (self.spi_f >= 1 and not self.physical_attack)
  end
end
#==============================================================================
# 各種設定
#==============================================================================
class Game_Temp
  attr_accessor :preemptive
  attr_accessor :surprise
  attr_accessor :turn_shift
  attr_accessor :link_done
  attr_accessor :battle_phase
  attr_accessor :attacking_battler
  attr_accessor :battle_timing_type
  def used_skill_hash
    @used_skill_hash ||= {}
    return @used_skill_hash
  end
end
#==============================================================================
# BGM音量変化
#==============================================================================
module RPG
  class BGM < AudioFile
    @@last_volume = nil
    def self.volume_down
      @@last_volume = @@last.volume
      @@last.volume = XRXSV9::QuickVolume
      @@last.play
    end
    def self.volume_back
      if @@last_volume
        @@last.volume = @@last_volume
        @@last.play
        @@last_volume = nil
      end
    end
  end
end
#==============================================================================
# スキルの行動側アニメーションIDの取得
#==============================================================================
module XRXSV9_SkillPreanimaion
  def preanimation_id
    self.note.gsub(/preanime[([0-9]+?)]/) do
      return $1.to_i if $1.to_i > 0
    end
    return 0
  end
end
class RPG::UsableItem
  include XRXSV9_SkillPreanimaion
end
#==============================================================================
# アクターバトラーグラフィック
#==============================================================================
class Game_Battler
  def in_floor?
    return true
  end
end
class Game_Actor < Game_Battler
  def battler_name
    return ""
  end
  def battler_hue
    return 0
  end
  def in_floor?
    return false
  end
  def use_sprite?
    return true
  end
  def screen_x
    return self.battlestatus_x + self.battlestatus_offset
  end
  def screen_y
    return self.battlestatus_y
  end
  def screen_z
    return 101
  end
end
#==============================================================================
# バトルスプライトセット/バトルトーン2
#==============================================================================
class Spriteset_Battle
  def create_actors
    @actor_sprites = []
  end
  alias xrxsv9_update_actors update_actors
  def update_actors
    for i in @actor_sprites.size...[$game_party.members.size, 4].max
      @actor_sprites = Sprite_ActorBattler.new(@viewport1)
    end
    for i in 4...@actor_sprites.size
      @actor_sprites.battler = $game_party.members
    end
    xrxsv9_update_actors
  end
  alias xrxsv9_update_viewports update_viewports
  def update_viewports
    $game_temp.battle_tone2_update
    @viewport2.tone = $game_temp.battle_tone2
    xrxsv9_update_viewports
  end
end
class Game_Temp
  def battle_tone2
    @battle_tone2 ||= Tone.new(0,0,0)
    return @battle_tone2
  end
  def battle_tone2_update
    @battle_tone2_duration ||= 0
    if @battle_tone2_duration >= 1
      d = @battle_tone2_duration
      @battle_tone2.red   = (@battle_tone2.red   * (d - 1) + @battle_tone2_target.red  ) / d
      @battle_tone2.green = (@battle_tone2.green * (d - 1) + @battle_tone2_target.green) / d
      @battle_tone2.blue  = (@battle_tone2.blue  * (d - 1) + @battle_tone2_target.blue ) / d
      @battle_tone2.gray  = (@battle_tone2.gray  * (d - 1) + @battle_tone2_target.gray ) / d
      @battle_tone2_duration -= 1
    end
  end
  def start_battle_tone2_change(tone, duration)
    @battle_tone2_target = tone.clone
    @battle_tone2_duration = duration
    if @battle_tone2_duration == 0
      @battle_tone2 = @battle_tone2_target.clone
    end
  end
  def bluestop_battle_tone2
    start_battle_tone2_change(XRXSV9::QuickTone, 6)
  end
  def clear_battle_tone2
    start_battle_tone2_change(Tone.new(0,0,0), 6)
  end
end
#==============================================================================
# アニメーションホールド/バトルメッセージホールド機能
#==============================================================================
class Sprite_Base < Sprite
  def animation_hold!
    @held_animation_set ||= []
    if self.animation?
      @held_animation_set.push([@animation, @animation_sprites, @animation_duration, @animation_bitmap1, @animation_bitmap2])
      @animation = nil
      @animation_sprites = nil
      @animation_duration = 0
      @animation_bitmap1 = nil
      @animation_bitmap2 = nil
    end
  end
  def animation_unhold!
    @held_animation_set ||= []
    set = @held_animation_set.shift
    if set
      dispose_animation
      @animation          = set[0]
      @animation_sprites  = set[1]
      @animation_duration = set[2]
      @animation_bitmap1  = set[3]
      @animation_bitmap2  = set[4]
    end
  end
end
class Spriteset_Battle
  def animation_hold!
    for sprite in @enemy_sprites + @actor_sprites do sprite.animation_hold! end
  end
  def animation_unhold!
    for sprite in @enemy_sprites + @actor_sprites do sprite.animation_unhold! end
  end
end
class Window_BattleMessage < Window_Message
  def message_hold!
    @held_lines ||= []
    @held_lines.push(@lines)
    @lines = []
    refresh
  end
  def message_unhold!
    @held_lines ||= []
    lines = @held_lines.shift
    if lines
      @lines = lines
      refresh
    end
  end
end
#==============================================================================
# バトルカメラ対応
#==============================================================================
class XRXSV_BattleCam3D
  attr_accessor :lock
  def reverse?
    return false
  end
  def direction_angle
    return 2
  end
  def set_horize(active_battler, targets)
  end
  def watch(active_battler, targets)
  end
  def go_reset
  end
end
class Game_Temp
  def xcam
    @xcam ||= XRXSV_BattleCam3D.new
    return @xcam
  end
end
#==============================================================================
# バトルカメラへの対応
#==============================================================================
class Sprite_Base < Sprite
  def update_battler_xcam
  end
end
module XRXSV9SceneBattleExForCam
  def update_battle_cam
  end
  def xcam_reset
  end
  def xcam_turn_refresh
  end
  def xcam_win
  end
  def xcam_animation_start(targets)
  end
  def xcam_preanimation
  end
  def xcam_animation(targets)
  end
end
class Scene_Battle < Scene_Base
  include XRXSV9SceneBattleExForCam
end
#==============================================================================
# ダメージシェイクへの対応
#==============================================================================
class Sprite_Base
  def update_damageshake
  end
end
#==============================================================================
# 各種対応 : スプライト+バトルジャンプ / バトラーモーション/自動回復
#==============================================================================
class Sprite_ActorBattler < Sprite_Battler
  def update_jumping
  end
end
module XRXSV9_inGameBattler
  def battlermotion_reset
  end
  def do_auto_recovery
  end
  def battlejjump_at_post?
    return true
  end
  def battler_initialize
  end
end
class Game_Battler
  include XRXSV9_inGameBattler
end
class Scene_Base
  def create_extra_windows
  end
  def dispose_extra_windows
  end
end
#==============================================================================
# BaSTバトルシーン各種対応
#==============================================================================
module XRXSV9_inSceneBattle
  def cp_initialize
  end
  def wait_for_xcam
  end
  def open_timing_command(timing_type, targets)
  end
  def battlermotion_action
  end
  def battlermotion_reset
  end
  def battlejump_back
  end
  def battlejump_escape
  end
  def battlejump_for_targets(targets)
  end
  def battlejump_action_end
  end
  def wait_for_jump(battlers = self.members)
  end
  def allclear_power
  end
  def process_additional_effects(target, obj)
  end
end
class Scene_Battle < Scene_Base
  include XRXSV9_inSceneBattle
end
#==============================================================================
# バトルステータス位置
#==============================================================================
class Window_BattleStatus < Window_Selectable
  def initialize
    super(128, 288, 416, 128)
    refresh
    self.active = false
  end
  def refresh_lite
  end
end
class Game_Battler
  def battlestatus_x(window_width = 416)
    return 0
  end
  def battlestatus_y
    return Graphics.height - 32
  end
  def battlestatus_offset
    return 0
  end
  def battlestatus_cp_x
    return self.battlestatus_x + self.battlestatus_offset
  end
  def battlestatus_cp_y
    return 400
  end
end
class Game_Actor < Game_Battler
  def battlestatus_x(window_width = 416)
    w  = (window_width * Graphics.width / 544 - 32) / $game_party.members.size
    x  = w * self.index
    x += w / 2
    return x
  end
  def battlestatus_offset
    return (128 * Graphics.width / 544) + 16
  end
end
class Scene_Battle < Scene_Base
  def battlestatus_offset
    return (128 * Graphics.width / 544) + 16
  end
end
#==============================================================================
# バトル用ウィンドウ
#==============================================================================
class Window_TargetActor < Window_Command
  def initialize
    commands = []
    for actor in $game_party.members
      commands.push(actor.name)
    end
    super(416, commands, 2, 4)
  end
end
class Window_BattleSkill < Window_Skill
  def initialize(battler)
    super(0, 288, 544, 104, battler)
    self.z += 501
  end
end
class Window_BattleItem < Window_Item
  def initialize
    super(0, 288, 544, 104)
    self.z += 501
  end
end
class Window_BattleHelp < Window_Help
  def initialize
    super
    self.y = Graphics.height - self.height + 16
    self.z += 500
  end
end
if XRXSV9::QuickListHiding
  class Window_BattleSkill < Window_Skill
    def refresh
      @data = []
      for skill in @actor.skills
        next unless include?(skill)
        @data.push(skill)
        if skill.id == @actor.last_skill_id
          self.index = @data.size - 1
        end
      end
      @item_max = @data.size
      create_contents
      for i in 0...@item_max
        draw_item(i)
      end
    end
    def include?(skill)
      return false if skill and skill.quick?
      return true
    end
  end
  class Window_BattleItem < Window_Item
    def include?(item)
      return false if item and item.quick?
      return super(item)
    end
  end
end
class Window_BattleTrash < Window_BattleItem
  def refresh
    @data = []
    for material in $game_party.trash
      @data.push(material.item)
    end
    @data.push(nil) if include?(nil)
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      rect.width -= 20
      draw_item_name(item, rect.x + 8, rect.y, false)
    end
  end
end
#==============================================================================
# マテリアルバッグウィンドウ
#==============================================================================
class Window_BattleMaterial < Window_BattleItem
  def initialize(holder)
    @holder = holder
    super()
  end
  def refresh
    @data = []
    for material in @holder.bag
      @data.push(material.item)
    end
    @data.push(nil) if @data.size == 0
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
end
#==============================================================================
# アイテムマテリアル機能への対応
#==============================================================================
class Material
end
class RPG::BaseItem
  attr_accessor :material
  def materialized?
    return self.material.is_a?(Material)
  end
end
#==============================================================================
# マテリアルバッグ/トラッシュ機能
#==============================================================================
class Game_Party < Game_Unit
  def bag
    @bag ||= []
    return @bag
  end
  def trash
    @trash ||= []
    return @trash
  end
end
class Game_Actor < Game_Battler
  def bag
    @bag ||= []
    return @bag
  end
end
#==============================================================================
# アイテム・スキルのクイックコマンド判別
#==============================================================================
module RPG
  class BaseItem
    def quick?
      return (self.note.include?("quick"))
    end
  end
end
class Game_BattleAction
  def quick?
    return ((self.skill and self.skill.quick?) or
            (self.item  and self.item.quick?))
  end
end
#==============================================================================
# ナンバー描画への対応
#==============================================================================
module XRXSVForDNX
  def draw_number(x, y, width, height, number, align, skin, opacity = 224)
    self.draw_text(x, y, width, height, number, align)
  end
  def draw_number_l(x, y, width, height, number, align = 0)
    skin = Cache.system(XRXSVDsIn::NumberL) rescue nil
    self.draw_number(x, y, width, height, number, align, skin)
  end
  def draw_number_s(x, y, width, height, number, align = 0)
    skin = Cache.system(XRXSVDsIn::NumberS) rescue nil
    self.draw_number(x, y, width, height, number, align, skin)
  end
end
class Bitmap
  include XRXSVForDNX
end
#==============================================================================
# 属性アイコンの描画への対応
#==============================================================================
class Window_Base < Window
  def draw_element_icon(element_id, x, y, enabled = true)
    icon_index = (XRXSV52::Icons rescue [])[element_id]
    draw_icon(icon_index, x, y, enabled) if icon_index
  end
end
#==============================================================================
# バトル用ウィンドウ - クイック/パーティスキル/ガード 共通項目
#==============================================================================
class Window_BattlePartyAction < Window_BattleSkill
  def initialize(battler = nil)
    @battler = battler
    super(battler)
    @spacing = 12
    refresh
  end
  def setup(actor)
    @battler = actor
    refresh
  end
  def refresh
    refresh_data
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  def user
    return @user[self.index]
  end
  def draw_item(index)
    item  = @data[index]
    actor = @user[index]
    rect = item_rect(index)
    rect.x += 50
    rect.width -= 50
    self.contents.clear_rect(rect)
    en_costs = (item.en_costs rescue [])
    if item
      self.contents.blt(rect.x - 46, rect.y, actor.miniface, actor.miniface.rect) rescue nil
      self.contents.clear_rect(rect.x - 46, rect.y,      48, 1)
      self.contents.clear_rect(rect.x - 46, rect.y + 23, 48, 1)
    end
    if item.is_a?(RPG::Item)
      number = $game_party.item_number(item)
      enabled = enable?(item)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enabled)
      self.contents.draw_text(rect, sprintf(":%2d", number), 2)
    else
      skill = item
      rect.width -= 4
      if skill
        self.contents.font.size = 19
        enabled = enable_skill?(actor, skill)
        draw_item_name(skill, rect.x, rect.y, enabled)
        mp_cost = actor.calc_mp_cost(skill)
        if en_costs.empty? and mp_cost >= 1
          self.contents.draw_text(rect, mp_cost, 2)
        end
      else
        self.contents.draw_text(rect, nil_text())
      end
    end
    if en_costs.size >= 1
      x = rect.x + rect.width - 24 * en_costs.size
      for element_id in en_costs
        draw_element_icon(element_id, x, rect.y)
        x += 24
      end
    end
  end
  def nil_text()
    return "---"
  end
  #--------------------------------------------------------------------------
  # ○ アイテムの取得
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # enable状態
  #--------------------------------------------------------------------------
  def enable?(item)
    return $game_party.item_can_use?(item)
  end
  def enable_skill?(actor, skill)
    return (actor.skill_can_use?(skill))
  end
  def item_enable?
    if self.item.is_a?(RPG::Skill)
      return self.user.skill_can_use?(item)
    elsif self.item.is_a?(RPG::Item)
      return $game_party.item_can_use?(item)
    end
    return true
  end
end
#==============================================================================
# バトル用ウィンドウ - クイックコマンド
#==============================================================================
class Window_BattleQuick < Window_BattlePartyAction
  def refresh_data
    @data = []
    @user = []
    enable_set  = []
    disable_set = []
    for actor in $game_party.members
      for material in (actor.bag rescue []) #for item in $game_party.items
        item = material.item
        if item.is_a?(RPG::Item) and item.occasion <= 1 and item.quick?
          enable_set.push([actor, item])
        end
      end
    end
    for actor in (XRXSV9::QuickFriendSupport ? $game_party.members : [@battler])
      for skill in actor.skills
        if skill.quick?
          if enable_skill?(actor, skill)
            enable_set.push([actor, skill])
          else
            disable_set.push([actor, skill])
          end
        end
      end
    end
    for set in enable_set + disable_set
      @user.push(set[0])
      @data.push(set[1])
    end
  end
end
#==============================================================================
# バトル用ウィンドウ - パーティスキル
#==============================================================================
class Window_BattlePartySkill < Window_BattlePartyAction
  def refresh_data
    @data = []
    @user = []
    enable_set  = []
    disable_set = []
    for actor in $game_party.members
      set1 = []
      set2 = []
      for skill in actor.skills
        if not skill.quick?
          if enable_skill?(actor, skill)
            set1.push(skill)
          else
            set2.push(skill)
          end
        end
      end
      if set1.empty? and set2.empty?
        set1.push(nil)
      end
      for skill in set1
        enable_set.push([actor, skill])
      end
      for skill in set2
        disable_set.push([actor, skill])
      end
    end
    for set in enable_set + disable_set
      @user.push(set[0])
      @data.push(set[1])
    end
  end
  def enable_skill?(actor, skill)
    return false if skill.for_guard?
    return (not actor.commanded and
            (skill == nil or actor.skill_can_use?(skill)))
  end
end
#==============================================================================
# 戦闘背景の取得 (背景をビットマップで取得する)
#==============================================================================
class Game_Map
  def battleback
    $data_mapinfos = load_data("Data/MapInfos.rvdata") if $data_mapinfos.nil?
    id = self.map_id
    bitmap = nil
    while id >= 1
      name = XRXSV9::BBMap + id.to_s
      begin
        bitmap = Cache.parallax(name)
        break
      rescue
        nil
      end
      id = $data_mapinfos[id].parent_id
    end
    if bitmap == nil
      id = ($game_player.terrain_id rescue 0)
      if id >= 1
        name = XRXSV9::BBTrrain + id.to_s
        bitmap = Cache.parallax(name) rescue nil
      end
    end
    return bitmap
  end
end
#==============================================================================
# バトラー設定 / 魔法の「詠唱セット」
#==============================================================================
class Game_Temp
  def commanded_battlers
    @commanded_battlers = [] if @commanded_battlers == nil
    return @commanded_battlers
  end
end
class Game_Battler
  attr_accessor :power_increase_turn
  attr_accessor :action
  def commanded
    return $game_temp.commanded_battlers.include?(self)
  end
  def commanded=(b)
    if b
      $game_temp.commanded_battlers.push(self)
    else
      $game_temp.commanded_battlers.delete(self)
    end
  end
  alias xrxsv9_skill_effective? skill_effective?
  def skill_effective?(user, skill)
    return false if user.action.blocked
    return xrxsv9_skill_effective?(user, skill)
  end
end
#==============================================================================
# バトルアクション設定
#==============================================================================
class Game_BattleAction
  attr_accessor :counter
  attr_accessor :material
  attr_accessor :orderer
  attr_accessor :blocked
  attr_accessor :target_spirit
  #--------------------------------------------------------------------------
  # ● スキルオブジェクト取得
  #--------------------------------------------------------------------------
  alias xrxsv9_skill skill
  def skill
    return (@skill_obj ? @skill_obj : xrxsv9_skill)
  end
  #--------------------------------------------------------------------------
  # マテリアル機能ほか各種への対応
  #--------------------------------------------------------------------------
  alias xrxsv9_clear clear
  def clear
    xrxsv9_clear
    @material = nil
    @orderer = nil
    @skill_obj = nil
    @blocked = false
    @target_spirit = nil
  end
  def set_skill_obj(skill)
    @kind = 1
    @skill_obj = skill
  end
  def set_material(material)
    @kind = 2
    @material = material
  end
  def set_spell(material)
    @kind = 4
    @material = material
  end
  alias xrxsv9_item item
  def item
    return @material.item if @material
    return xrxsv9_item
  end
  #--------------------------------------------------------------------------
  # ○ 逃走を設定
  #--------------------------------------------------------------------------
  def set_escape
    @kind = 0
    @basic = 2
  end
  def escape?
    return (@kind == 0 and @basic == 2)
  end
end
#==============================================================================
# CP機能 - 表示セットの基本形
#==============================================================================
class Spriteset_CP
  def initialize(members, info_viewport = nil)
  end
  def refresh(reserve_actions = nil)
  end
  def update
  end
  def visible=(b)
  end
  def opacity
    return 255
  end
  def opacity=(n)
  end
  def dispose
  end
  def reset_members(member)
  end
end
#==============================================================================
# CP機能 - 対応
#==============================================================================
class Game_Battler
  def cp_per48
    return cp_per96/2
  end
  def cp_per96
    return  0 if self.dead?
    return 96
  end
  def cp_max?
    return true
  end
  def cp_reset
  end
  def cp_nillize
  end
end
#==============================================================================
# ATB対応方式 - ガード/入力可能?
#==============================================================================
module XRXSV9BattlerATBNeeds
  attr_accessor :guarding
  def guarding?
    return self.guarding
  end
  def inputable?
    return (self.cp_max? and super)
  end
end
class Game_Actor < Game_Battler
  include XRXSV9BattlerATBNeeds
end
class Game_Enemy < Game_Battler
  include XRXSV9BattlerATBNeeds
end
#==============================================================================
# バトルリザルト - データ
#==============================================================================
class Game_Temp
  attr_accessor :battle_result_gold
  attr_accessor :battle_result_tresures
  attr_accessor :battle_result_ap
end
class Game_Battler
  attr_accessor :battle_result_exp
end
#==============================================================================
# バトルリザルト - EXP権利
#==============================================================================
class Game_Enemy < Game_Battler
  def exp_rights
    @exp_rights = [] if @exp_rights == nil
    return @exp_rights
  end
  attr_accessor :exp_mvp
end
#==============================================================================
# バトルリザルト - BGMの取得と設定
#==============================================================================
class Game_System
  def battle_end_bgm=(battle_end_bgm)
    @battle_end_bgm = battle_end_bgm
  end
  def battle_end_bgm
    if @battle_end_bgm == nil
      return RPG::BGM.new(XRXSV9::BattleEndBGM) rescue nil
    else
      return @battle_end_bgm
    end
  end
end
#==============================================================================
# バトルリザルト - 対応
#==============================================================================
module XRXSV9_SceneBattleTemplates
  def battle_result_enabled?
    return false
  end
  def actor_battler_initialize
  end
end
class Scene_Battle < Scene_Base
  include XRXSV9_SceneBattleTemplates
end
#==============================================================================
# エネミーインフォウィンドウ
#==============================================================================
class Window_EnemyInfo < Window_Base
  def initialize
    super(0,0,36,36)
    self.opacity = 0
  end
  def refresh
  end
end
#==============================================================================
# ■ バトルメッセージ
#==============================================================================
class Window_BattleMessage < Window_Message
  def last_instant_text
    return @lines[-1].to_s
  end
  def set(object)
  end
  def close_force
    @closing = true if self.openness > 0
    @opening = false
  end
end
#==============================================================================
# ■ アクターコマンド [再定義]
#==============================================================================
class Window_ActorCommand < Window_Command
  def initialize
    @quick_one_mode = false
    @command_ids = XRXSV9::CommandIDs
    super(128, [], 1, XRXSV9::CommandRow)
    self.active = false
    self.openness = 0
    self.x = 0
    self.y = Graphics.height - self.height
    self.z = 204
  end
  def setup(actor)
    @command_ids = XRXSV9::CommandIDs
    names = XRXSV9.command_names
    if actor.class.skill_name_valid     # スキルのコマンド名が有効?
      names[1] = actor.class.skill_name       # コマンド名を置き換える
    end
    @commands = []
    for id in XRXSV9::CommandIDs
      @commands.push(names[id])
    end
    @item_max = @commands.size
    refresh
    escape_index = names.index(Vocab::escape)
    escape_index = XRXSV9::CommandIDs.index(escape_index.to_i)
    if escape_index
      draw_item(escape_index, ($game_troop.can_escape and not $game_temp.battle_phase))
    end
    self.index = 0
    @quick_one_mode = false
  end
  def command_id
    return @command_ids[self.index].to_i
  end
  def row_max
    return XRXSV9::CommandIDs.size
  end
end
#==============================================================================
# コマンド確認ウィンドウ
#==============================================================================
class Window_ActorCommandSet < Window_Base
  if XRXSV9::CommandSetVisible
    def initialize
      x =   0
      y = 252
      w = 128
      h =  36
      @original_y = y
      @back_window = Window_Base.new(x, y, w, h)
      @back_window.contents.dispose
      super(x-16, y-16, w+32, h+32)
      self.visible = false
      self.opacity = 0
      self.z = 208
      @back_window.z = 105
    end
    def y=(n)
      @back_window.y = n
      super(n - 16)
    end
    def dispose
      @back_window.dispose
      super
    end
    def set(object)
      self.visible = true
      case object
      when RPG::Item, RPG::Skill
        draw_line(object.name)
        self.y = @original_y
      when Game_Battler
        draw_actor(object)
      else
        draw_line(object.to_s)
        self.y = @original_y
      end
    end
    def draw_actor(actor)
      self.contents.clear
      rect = self.contents.rect.dup
      rect.x += 8
      rect.width -= 16
      begin
        self.contents.blt(rect.x, 6, actor.miniface, actor.miniface.rect)
        rect.x += 48
        rect.width -= 48
      rescue
        nil
      end
      self.contents.draw_text(rect, actor.name, 1)
    end
    def draw_line(text)
      self.contents.clear
      rect = self.contents.rect
      self.contents.draw_text(rect.x + 8, rect.y, rect.width - 16, rect.height, text, 1)
    end
    def visible=(b)
      @back_window.visible = b
      super
    end
  else
    def initialize
      super(0, 0, 36, 36)
      self.visible = false
    end
    def set(object)
    end
  end
  def clear
    self.visible = false
  end
end
#==============================================================================
# スパン[ターン]バトルベントのクリア
#==============================================================================
class Game_Troop < Game_Unit
  def clear_turn_battle_event
    for page in troop.pages
      if page.span == 1
        @event_flags

点评

代码没复制上来  发表于 2011-6-26 13:45
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部