查看: 2054|回复: 1

[已经解决] 「队友不在菜单显示」脚本出错

[复制链接]
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2015-7-30 02:28:55 | 显示全部楼层 |阅读模式

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

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

×
  @三途亚梦
「队友不在菜单显示」脚本[pre lang="ruby"]#==============================================================================
# +++ 追加不战斗的跟随队友 +++
#==============================================================================
# 提问区应求小脚本 by 三途亚梦
#==============================================================================
# 给根据人物的别名判断这个人物是否会在以及在菜单栏显示战斗中登场。
# 使用本脚本,如果在地图上有队伍随机乱序的操作话会出现bug。
#==============================================================================
module AMU
  module NPC

    NPC_NAME ="不在菜单中显示"     #"NPC"
    #这里设置别名(角色称号)为引号内文字的人物不会显示
    # ※ 注意保留引号

  end
end
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  菜单画面中,显示队伍成员状态的窗口
#==============================================================================
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 获取项目数
  #--------------------------------------------------------------------------
  def item_max
    a = 0
    $game_party.members.each do |actor|
      a += 1 if actor.nickname != AMU::NPC::NPC_NAME
    end
    return a
  end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  管理队伍的类。保存有金钱及物品的信息。本类的实例请参考 $game_party 。
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 获取参战角色
  #--------------------------------------------------------------------------
  def battle_members
    all_members[0, max_battle_members].select {|actor| actor.exist? && actor.nickname != AMU::NPC::NPC_NAME}
  end
end
#==============================================================================
# ■ Game_Follower
#------------------------------------------------------------------------------
#  管理跟随角色的类。处理跟随角色的显示、跟随的行为等。
#   请在 Game_Followers 类中查看具体的应用。
#==============================================================================
class Game_Follower < Game_Character
  #--------------------------------------------------------------------------
  # ● 获取对应的角色
  #--------------------------------------------------------------------------
  def actor
    $game_party.members[@member_index]
  end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  事件指令的解释器。
#   本类在 Game_Map、Game_Troop、Game_Event 类的内部使用。
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 队伍管理
  #--------------------------------------------------------------------------
  alias amu_20150125_command_129 command_129
  def command_129
   amu_20150125_command_129
   if $game_actors[@params[0]].nickname == AMU::NPC::NPC_NAME
     party = $game_party.members
     npc = nil
     party.each do |actor|
       npc = actor if actor.nickname == AMU::NPC::NPC_NAME
       break if npc != nil
     end
     $game_party.swap_order(npc.index, party[party.size - 1].index)     
    end
  end
end[/pre]


测试时,我让一个nickname为“不在菜单中显示”的队友离队了,结果立刻弹出这样的弹窗:
QQ截图20150730022647.png

nickname不是“不在菜单中显示”的队友离队就不会出错,那么问题是出在哪里呢?



点评

这个脚本看来写的挺次的,我去修一下好了。  发表于 2015-7-30 13:39
用头画头像,用脚写脚本

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2015-7-30 13:42:50 | 显示全部楼层
目前实测倒是可行了,你再多测试看看有没有问题。

[pre lang="ruby"]#==============================================================================
# +++ 追加不战斗的跟随队友 +++
#==============================================================================
# 提问区应求小脚本 by 三途亚梦
#==============================================================================
# 给根据人物的别名判断这个人物是否会在以及在菜单栏显示战斗中登场。
# 使用本脚本,如果在地图上有队伍随机乱序的操作话会出现bug。
#==============================================================================
module AMU
  module NPC

    NPC_NAME = "NPC"
    #这里设置别名为引号内文字的人物不会显示
    # ※ 注意保留引号

  end
end
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  菜单画面中,显示队伍成员状态的窗口
#==============================================================================
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 获取项目数
  #--------------------------------------------------------------------------
  def item_max
    a = 0
    $game_party.members.each do |actor|
      a += 1 if actor.nickname != AMU::NPC::NPC_NAME
    end
    return a
  end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  管理队伍的类。保存有金钱及物品的信息。本类的实例请参考 $game_party 。
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 获取参战角色
  #--------------------------------------------------------------------------
  def battle_members
    all_members[0, max_battle_members].select {|actor| actor.exist? && actor.nickname != AMU::NPC::NPC_NAME}
  end
end
#==============================================================================
# ■ Game_Follower
#------------------------------------------------------------------------------
#  管理跟随角色的类。处理跟随角色的显示、跟随的行为等。
#   请在 Game_Followers 类中查看具体的应用。
#==============================================================================
class Game_Follower < Game_Character
  #--------------------------------------------------------------------------
  # ● 获取对应的角色
  #--------------------------------------------------------------------------
  def actor
    $game_party.members[@member_index]
  end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  事件指令的解释器。
#   本类在 Game_Map、Game_Troop、Game_Event 类的内部使用。
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 队伍管理
  #--------------------------------------------------------------------------
  alias amu_20150125_command_129 command_129
  def command_129
   amu_20150125_command_129
   party = $game_party.members; npc = nil
   if ($game_actors[@params[0]].nickname == AMU::NPC::NPC_NAME ||
     party.any?{|a| a.nickname == AMU::NPC::NPC_NAME}) && @params[1] == 0
     party.each do |actor|
       npc = actor if actor.nickname == AMU::NPC::NPC_NAME
       break if npc != nil
     end
     $game_party.swap_order(npc.index, party[party.size - 1].index)
    end
  end
end
[/pre]

点评

好的,我去测试看看  发表于 2015-7-30 14:35

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
VIPArcher + 1 认可答案
KB.Driver + 10 没有问题了,谢谢~

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部