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

Project1

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

[已经解决] 【新人求助】领队脚本"类型"的错误

[复制链接]

Lv1.梦旅人

梦石
0
星屑
744
在线时间
3 小时
注册时间
2016-8-21
帖子
2
跳转到指定楼层
1
发表于 2017-2-10 20:04:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
新人菜鸟学习了几天脚本, 目前只会看懂一下简略的脚本,但实战欠缺,所以找了一些脚本来锻炼锻炼.
如下例图,好像是nil搞的鬼. 但本人研究了半小时,实在是看不出什么. 代码如下.



特请各位6R大神不吝赐教如何解决该问题.

PS: 本人并非伸手党,是问题党.


  1. #==============================================================================
  2. # 领队更换系统 by SailCat
  3. #------------------------------------------------------------------------------
  4. # 添加此脚本后,在地图画面按下Z键更换当前的领队。
  5. # 领队更改不会造成战斗队伍、菜单队伍次序的更改。
  6. # 若要在条件分歧中调用领队,请用脚本:$game_party.leader == 序号
  7. # 序号为0-3的值,最大不会超过队伍的角色数目减1。
  8. #==============================================================================
  9. class Game_Party
  10.   #--------------------------------------------------------------------------
  11.   # ● 追加实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :leader
  14.   alias sailcat_initialize initialize
  15.   alias sailcat_setup_starting_members setup_starting_members
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化对像
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     # 生成领队
  21.     @leader = 0
  22.     sailcat_initialize
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 设置初期同伴
  26.   #--------------------------------------------------------------------------
  27.   def setup_starting_members
  28.     sailcat_setup_starting_members
  29.     # 生成领队
  30.     @leader = 0
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置领队
  34.   #--------------------------------------------------------------------------
  35.   def switch_leader
  36.     @leader += 1
  37.     @leader %= @actors.size
  38.     end
  39. end
  40. class Game_Player
  41.   alias sailcat_update update
  42.   #--------------------------------------------------------------------------
  43.   # ● 刷新
  44.   #--------------------------------------------------------------------------
  45.   def refresh
  46.     # 同伴人数为 0 的情况下
  47.     if $game_party.actors.size == 0
  48.       # 清除角色的文件名及对像
  49.       @character_name = ""
  50.       @character_hue = 0
  51.       # 分支结束
  52.       return
  53.     end
  54.     # 获取带头的角色
  55.     actor = $game_party.actors[$game_party.leader]
  56.     # 设置角色的文件名及对像
  57.     @character_name = actor.character_name if actor.character_name != nil
  58.     @character_hue = actor.character_hue if actor.character_hue != nil
  59.     # 初始化不透明度和合成方式
  60.     @opacity = 255
  61.     @blend_type = 0
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 画面更新
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     # 按下 TAB 键的情况下   
  68.     unless $game_temp.menu_calling or
  69.       $game_system.menu_disabled or
  70.       $game_system.map_interpreter.running? or
  71.       if Input.repeat?($R_Key_Z)
  72.         # 更换领队
  73.         $game_party.switch_leader
  74.         refresh
  75.       end
  76.       sailcat_update
  77.     end
  78.   end
  79. end
复制代码



Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2017-2-10 22:50:40 | 只看该作者
请使用新存档进行测试,如果使用旧档那么@leader 变量未赋初值。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
744
在线时间
3 小时
注册时间
2016-8-21
帖子
2
3
 楼主| 发表于 2017-2-10 23:02:37 | 只看该作者
RyanBern 发表于 2017-2-10 22:50
请使用新存档进行测试,如果使用旧档那么@leader 变量未赋初值。

原来如此, 多谢大神,
但是为什么一定要新的开始才行呢? 有没有什么办法能让它赋值.

点评

见楼下解答  发表于 2017-2-11 17:56
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

4
发表于 2017-2-11 01:05:01 | 只看该作者
本帖最后由 guoxiaomi 于 2017-2-11 01:10 编辑
尊小爷 发表于 2017-2-10 23:02
原来如此, 多谢大神,
但是为什么一定要新的开始才行呢? 有没有什么办法能让它赋值. ...


因为Game_Party的实例$game_party是在Scene_Title的新游戏里生成的,选择继续的话,会读取存档中的$game_party。
然而之前的Game_Party#initialize方法中没有@leader = 0这一句,所以$game_party.leader = nil
然后55行就报错了,nil不能作为数组的索引值

在Game_Party里加上一句:

  1. def leader
  2.   @leader ||= 0
  3.   return @leader
  4. end
复制代码


并且删掉第13行的:
RUBY 代码复制
  1. attr_reader :leader

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-20 00:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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