Project1

标题: 领队更换系统 [打印本页]

作者: SailCat    时间: 2005-11-7 07:53
标题: 领队更换系统
用法:插入脚本到Main之前

说明:之所以想到做这个系统是因为站上的按键更改领队教程不但无端增加一个全局并行的公共事件,更麻烦的是因为它改变了队伍的次序,在处理战斗事件的强制行动等情况时,会发生不可知的结果.因此做了这个不用改队伍次序就能换领队的插件脚本.领队的更迭会在地图的行走画面上反映出来,利用条件分歧的功能也可以方便的触发领队不同的不同事件

#==============================================================================
# 领队更换系统 by SailCat
#------------------------------------------------------------------------------
# 添加此脚本后,在地图画面按下X键更换当前的领队。
# 领队更改不会造成战斗队伍、菜单队伍次序的更改。
# 若要在条件分歧中调用领队,请用脚本:$game_party.leader == 序号
# 序号为0-3的值,最大不会超过队伍的角色数目减1。
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ● 追加实例变量
  #--------------------------------------------------------------------------
  attr_reader   :leader
  alias sailcat_initialize initialize
  alias sailcat_setup_starting_members setup_starting_members
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    # 生成领队
    @leader = 0
    sailcat_initialize
  end
  #--------------------------------------------------------------------------
  # ● 设置初期同伴
  #--------------------------------------------------------------------------
  def setup_starting_members
    sailcat_setup_starting_members
    # 生成领队
    @leader = 0
  end
  #--------------------------------------------------------------------------
  # ● 设置领队
  #--------------------------------------------------------------------------
  def switch_leader
    @leader += 1
    @leader %= @actors.size
  end
end
class Game_Player
  alias sailcat_update update
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    # 同伴人数为 0 的情况下
    if $game_party.actors.size == 0
      # 清除角色的文件名及对像
      @character_name = ""
      @character_hue = 0
      # 分支结束
      return
    end
    # 获取带头的角色
    actor = $game_party.actors[$game_party.leader]
    # 设置角色的文件名及对像
    @character_name = actor.character_name
    @character_hue = actor.character_hue
    # 初始化不透明度和合成方式
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 画面更新
  #--------------------------------------------------------------------------
  def update
    # 按下 X 键的情况下
    if Input.trigger?(Input::X)
      # 更换领队
      $game_party.switch_leader
      refresh
    end
    sailcat_update
  end
end


              [本贴由 叶舞枫 于 2008-1-24 21:07:37 进行了编辑]
作者: SailCat    时间: 2005-11-7 07:53
标题: 领队更换系统
用法:插入脚本到Main之前

说明:之所以想到做这个系统是因为站上的按键更改领队教程不但无端增加一个全局并行的公共事件,更麻烦的是因为它改变了队伍的次序,在处理战斗事件的强制行动等情况时,会发生不可知的结果.因此做了这个不用改队伍次序就能换领队的插件脚本.领队的更迭会在地图的行走画面上反映出来,利用条件分歧的功能也可以方便的触发领队不同的不同事件

#==============================================================================
# 领队更换系统 by SailCat
#------------------------------------------------------------------------------
# 添加此脚本后,在地图画面按下X键更换当前的领队。
# 领队更改不会造成战斗队伍、菜单队伍次序的更改。
# 若要在条件分歧中调用领队,请用脚本:$game_party.leader == 序号
# 序号为0-3的值,最大不会超过队伍的角色数目减1。
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ● 追加实例变量
  #--------------------------------------------------------------------------
  attr_reader   :leader
  alias sailcat_initialize initialize
  alias sailcat_setup_starting_members setup_starting_members
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    # 生成领队
    @leader = 0
    sailcat_initialize
  end
  #--------------------------------------------------------------------------
  # ● 设置初期同伴
  #--------------------------------------------------------------------------
  def setup_starting_members
    sailcat_setup_starting_members
    # 生成领队
    @leader = 0
  end
  #--------------------------------------------------------------------------
  # ● 设置领队
  #--------------------------------------------------------------------------
  def switch_leader
    @leader += 1
    @leader %= @actors.size
  end
end
class Game_Player
  alias sailcat_update update
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    # 同伴人数为 0 的情况下
    if $game_party.actors.size == 0
      # 清除角色的文件名及对像
      @character_name = ""
      @character_hue = 0
      # 分支结束
      return
    end
    # 获取带头的角色
    actor = $game_party.actors[$game_party.leader]
    # 设置角色的文件名及对像
    @character_name = actor.character_name
    @character_hue = actor.character_hue
    # 初始化不透明度和合成方式
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 画面更新
  #--------------------------------------------------------------------------
  def update
    # 按下 X 键的情况下
    if Input.trigger?(Input::X)
      # 更换领队
      $game_party.switch_leader
      refresh
    end
    sailcat_update
  end
end


              [本贴由 叶舞枫 于 2008-1-24 21:07:37 进行了编辑]
作者: 黑羽    时间: 2005-11-7 08:00
沙发,好东西啊{/se}
作者: 豫葛子    时间: 2009-1-17 01:15
下载学习

作者: 蒦們    时间: 2009-1-18 05:29
  虽然不知道是啥= =
  但好囧吖 发帖居然相差4年,没话说{/fd}
作者: OCTSJimmy    时间: 2009-1-18 05:47
哇……居然有人没死过……挖这么早的坟啊……{/gg}{/gg}
作者: 柳橙汁    时间: 2010-6-23 08:39
請問使用這腳本後,
在進行劇情對話時如果領隊為1 $game_party.leader == 1
要如何把領隊強制變回0? $game_party.leader == 0






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