查看: 2027|回复: 2

[已经解决] 「追加不战斗的跟随队友」脚本出错

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

R考场第七期纪念奖

发表于 2015-5-24 03:03:05 | 显示全部楼层 |阅读模式

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

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

×
一旦有队友加入就会显示:
QQ截图20150524030140.png

脚本[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
   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
[/pre]


报错是为什么呢?应该怎么解决呢?
    @三途亚梦   
用头画头像,用脚写脚本

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-5-24 07:01:30 | 显示全部楼层
有可能是因为不存在别名为 "不在菜单中显示" 的角色

点评

测试的时候的确忘记测试非NPC加入的情况了,我改下吧。  发表于 2015-5-24 12:24
不好意思麻烦一下……能解释一下73行~83行的意思(最好是每一步做了什么)吗?  发表于 2015-5-24 12:11
不清楚呢,没看出这脚本为什么会导致这个问题  发表于 2015-5-24 12:00
这样修改以后人物是可以加入了……但是加入以后职业不对而且头像也没了,等级也只有1级,名字也没了……为什么呢?要怎么办?  发表于 2015-5-24 11:48
82行最后加上 if npc  发表于 2015-5-24 11:35
回复

使用道具 举报

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2015-5-24 12:29:24 | 显示全部楼层
本帖最后由 三途亚梦 于 2015-5-24 12:45 编辑

把71行往下改成下面这样。
  1. class Game_Interpreter
  2.   #--------------------------------------------------------------------------
  3.   # ● 队伍管理
  4.   #--------------------------------------------------------------------------
  5.   alias amu_20150125_command_129 command_129
  6.   def command_129
  7.    amu_20150125_command_129
  8.   party = $game_party.members
  9.    if $game_actors[@params[0]].nickname == AMU::NPC::NPC_NAME || party.any?{|a| a.nickname == AMU::NPC::NPC_NAME}
  10.      npc = nil
  11.      party.each do |actor|
  12.        npc = actor if actor.nickname == AMU::NPC::NPC_NAME
  13.        break if npc != nil
  14.      end
  15.      $game_party.swap_order(npc.index, party[party.size - 1].index)
  16.     end
  17.   end
  18. end
复制代码

点评

_(:з」∠)_ to.TD触:不是我敢不敢,是我懂不懂你说的那倆东西的问题呢。  发表于 2015-5-24 18:09
做游戏的过程中不要用存档来进行测试,会跟不上脚本和数据库的改动。  发表于 2015-5-24 18:08
用新游戏测试了一下,没有问题了。不过旧存档就不能用了吗囧……  发表于 2015-5-24 15:10
话说你敢不敢直接用 count(item_max 里)和 find(这里)…… 这个 each 看得好蛋疼  发表于 2015-5-24 14:00
你是用旧存档进行的测试?如果不是可以在新建工程中再试一下。  发表于 2015-5-24 12:47
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部