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

Project1

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

[已经过期] 用脚本时出现undefined method "size" for nil:NilClass

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2012-8-26
帖子
15
跳转到指定楼层
1
发表于 2012-9-20 14:39:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
再用某个和风竖版菜单的脚本时
在存档界面报错
NoMthodError occurred  undefined method "size" for nil:NilClass  

但是同样的脚本在我另一个工程中就没有出问题
报错的是这行
RUBY 代码复制
  1. # ● 項目数の取得
  2.   #--------------------------------------------------------------------------
  3.   def item_max
  4.     return [@actors.size, 4].min
  5.   end


求哪位大神帮我看看
脚本全文
RUBY 代码复制
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-31 和風レイアウト <file>          by Claimh
  3. #------------------------------------------------------------------------------
  4. # ファイル画面変更
  5. #==============================================================================
  6.  
  7. #==============================================================================
  8. # ■ SaveActor  : セーブファイル用のダミーアクター
  9. #==============================================================================
  10. class SaveActor
  11.   #--------------------------------------------------------------------------
  12.   # ● 公開インスタンス変数
  13.   #--------------------------------------------------------------------------
  14.   attr_reader :name
  15.   attr_reader :level
  16.   attr_reader :hp
  17.   attr_reader :mp
  18.   attr_reader :mhp
  19.   attr_reader :mmp
  20.   attr_reader :face_name
  21.   attr_reader :face_index
  22.   #--------------------------------------------------------------------------
  23.   # ● オブジェクト初期化
  24.   #--------------------------------------------------------------------------
  25.   def initialize(actor)
  26.     @name = actor.name
  27.     @level = actor.level
  28.     @hp = actor.hp; @mhp = actor.mhp
  29.     @mp = actor.mp; @mmp = actor.mmp
  30.     @face_name = actor.face_name
  31.     @face_index = actor.face_index
  32.     @dead = actor.dead?
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 戦闘不能判定
  36.   #--------------------------------------------------------------------------
  37.   def dead?
  38.     @dead
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● HP の割合を取得
  42.   #--------------------------------------------------------------------------
  43.   def hp_rate
  44.     @hp.to_f / @mhp
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● MP の割合を取得
  48.   #--------------------------------------------------------------------------
  49.   def mp_rate
  50.     @mmp > 0 ? @mp.to_f / @mmp : 0
  51.   end
  52. end
  53.  
  54. #==============================================================================
  55. # ■ Game_Party
  56. #==============================================================================
  57. class Game_Party < Game_Unit
  58.   #--------------------------------------------------------------------------
  59.   # ● セーブファイル表示用の顔グラフィック画像情報
  60.   #--------------------------------------------------------------------------
  61.   def member_for_savefile
  62.     members.collect { |actor| SaveActor.new(actor) }
  63.   end
  64. end
  65.  
  66. #==============================================================================
  67. # ■ DataManager
  68. #==============================================================================
  69. class << DataManager
  70.   #--------------------------------------------------------------------------
  71.   # ● セーブヘッダの作成
  72.   #--------------------------------------------------------------------------
  73.   alias make_save_header_faces make_save_header
  74.   def make_save_header
  75.     header = make_save_header_faces
  76.     header[:actors] = $game_party.member_for_savefile
  77.     header
  78.   end
  79. end
  80.  
  81.  
  82. #==============================================================================
  83. # ■ Window_J_SaveFile
  84. #------------------------------------------------------------------------------
  85. #  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
  86. #==============================================================================
  87.  
  88. class Window_J_SaveFile < Window_J_Base
  89.   #--------------------------------------------------------------------------
  90.   # ● 公開インスタンス変数
  91.   #--------------------------------------------------------------------------
  92.   attr_reader   :selected                 # 選択状態
  93.   #--------------------------------------------------------------------------
  94.   # ● オブジェクト初期化
  95.   #     index : セーブファイルのインデックス
  96.   #--------------------------------------------------------------------------
  97.   def initialize(index)
  98.     lw = fitting_width(1)
  99.     dx = Graphics.width - lw
  100.     super(dx - index * lw - lw, 0, lw, window_height)
  101.     @file_index = index
  102.     refresh
  103.     @selected = false
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● ウィンドウ高さ
  107.   #--------------------------------------------------------------------------
  108.   def window_height
  109.     return 200
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● リフレッシュ
  113.   #--------------------------------------------------------------------------
  114.   def refresh
  115.     contents.clear
  116.     change_color(normal_color)
  117.     name = Vocab::File + " " + ConvJnum.conv(@file_index + 1)
  118.     draw_text(0, 4, line_width, contents_height, name)
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 選択状態の設定
  122.   #--------------------------------------------------------------------------
  123.   def selected=(selected)
  124.     @selected = selected
  125.     update_cursor
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● カーソルの更新
  129.   #--------------------------------------------------------------------------
  130.   def update_cursor
  131.     if @selected
  132.       cursor_rect.set(0, 0, line_width, contents_height)
  133.     else
  134.       cursor_rect.empty
  135.     end
  136.   end
  137. end
  138.  
  139.  
  140. #==============================================================================
  141. # ■ Window_J_SaveInfo
  142. #==============================================================================
  143. class Window_J_SaveInfo < Window_J_Selectable
  144.   #--------------------------------------------------------------------------
  145.   # ● オブジェクト初期化
  146.   #--------------------------------------------------------------------------
  147.   def initialize(dw, dh)
  148.     @actors = []
  149.     super(0, dh, Graphics.width - dw, Graphics.height - dh)
  150.     self.file_index = index
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 行の幅を取得
  154.   #--------------------------------------------------------------------------
  155.   def line_width
  156.     110
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 項目の高さを取得
  160.   #--------------------------------------------------------------------------
  161.   def item_height
  162.     contents_height
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● ウィンドウ内容の高さを計算
  166.   #--------------------------------------------------------------------------
  167.   def contents_height
  168.     height - standard_padding * 2
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 項目数の取得
  172.   #--------------------------------------------------------------------------
  173.   def item_max
  174.     return [@actors.size, 4].min
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● ファイル変更
  178.   #--------------------------------------------------------------------------
  179.   def file_index=(index)
  180.     return if @file_index == index
  181.     @file_index = index
  182.     header = DataManager.load_header(@file_index)
  183.     @actors   = !header.nil? ? header[:actors] : []
  184.     create_contents
  185.     refresh
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 項目の描画
  189.   #--------------------------------------------------------------------------
  190.   def draw_item(index)
  191.     return if @actors.empty? or @actors.nil?
  192.     actor = @actors[index]
  193.     rect = item_rect(index)
  194.     draw_actor_name_l(actor, rect.x+4, rect.y, line_width)
  195.     draw_actor_face(actor, rect.x+(line_width-96)/2, rect.y+line_height*1, !actor.dead?)
  196.     draw_actor_level_l(actor, rect.x+4, rect.y+96+line_height*1)
  197.     draw_actor_hp_l(actor, rect.x+4, rect.y+96+line_height*2, line_width-8)
  198.     draw_actor_mp_l(actor, rect.x+4, rect.y+96+line_height*3, line_width-8)
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● レベルの描画
  202.   #--------------------------------------------------------------------------
  203.   def draw_actor_level(actor, x, y)
  204.     change_color(system_color)
  205.     contents.draw_text(x, y, 32, line_height, Vocab::level_a)
  206.     change_color(normal_color)
  207.     contents.draw_text(x + 32, y, 24, line_height, actor.level, 2)
  208.   end
  209. end
  210.  
  211.  
  212. #==============================================================================
  213. # ■ Scene_File
  214. #------------------------------------------------------------------------------
  215. #  セーブ画面とロード画面の共通処理を行うクラスです。
  216. #==============================================================================
  217.  
  218. class Scene_File < Scene_MenuBase
  219.   #--------------------------------------------------------------------------
  220.   # ● ヘルプウィンドウの作成
  221.   #--------------------------------------------------------------------------
  222.   def create_help_window
  223.     @help_window = Window_J_Help.new(1)
  224.     @help_window.x = Graphics.width - @help_window.width
  225.     @help_window.set_text(help_window_text)
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● セーブファイルビューポートの作成
  229.   #--------------------------------------------------------------------------
  230.   def create_savefile_viewport
  231.     @savefile_viewport = Viewport.new
  232.     @savefile_viewport.rect.width -= @help_window.width
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● セーブファイルウィンドウの作成
  236.   #--------------------------------------------------------------------------
  237.   def create_savefile_windows
  238.     @savefile_windows = Array.new(item_max) do |i|
  239.       Window_J_SaveFile.new(i)
  240.     end
  241.     @savefile_windows.each {|window| window.viewport = @savefile_viewport }
  242.  
  243.     @info_window = Window_J_SaveInfo.new(@help_window.width, @savefile_windows[0].height)
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 選択状態の初期化
  247.   #--------------------------------------------------------------------------
  248.   def init_selection
  249.     @index = first_savefile_index
  250.     @savefile_windows[@index].selected = true
  251.     self.top_index = @index - visible_max / 2
  252.     ensure_cursor_visible
  253.     @info_window.file_index = @index
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 項目数の取得
  257.   #--------------------------------------------------------------------------
  258.   def item_max
  259.     DataManager.savefile_max
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 画面内に表示するセーブファイル数を取得
  263.   #--------------------------------------------------------------------------
  264.   def visible_max
  265.     @savefile_viewport.rect.width / @help_window.width
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● セーブファイルウィンドウの幅を取得
  269.   #--------------------------------------------------------------------------
  270.   def savefile_width
  271.     @savefile_windows[0].width
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 最初に選択状態にするファイルインデックスを取得
  275.   #--------------------------------------------------------------------------
  276.   def first_savefile_index
  277.     return 0
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 現在のインデックスの取得
  281.   #--------------------------------------------------------------------------
  282.   def index
  283.     @index
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 先頭のインデックスの取得
  287.   #--------------------------------------------------------------------------
  288.   def top_index
  289.     (@savefile_viewport.ox - @savefile_viewport.rect.width) / savefile_width
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 先頭のインデックスの設定
  293.   #--------------------------------------------------------------------------
  294.   def top_index=(index)
  295.     index = 0 if index < 0
  296.     index = item_max - visible_max if index > item_max - visible_max
  297.     @savefile_viewport.ox = @help_window.width - (index+1) * savefile_width
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 末尾のインデックスの取得
  301.   #--------------------------------------------------------------------------
  302.   def bottom_index
  303.     top_index + visible_max - 1
  304.   end
  305.   #--------------------------------------------------------------------------
  306.   # ● 末尾のインデックスの設定
  307.   #--------------------------------------------------------------------------
  308.   def bottom_index=(index)
  309.     self.top_index = index - (visible_max - 1)
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● セーブファイル選択の更新
  313.   #--------------------------------------------------------------------------
  314.   def update_savefile_selection
  315.     return on_savefile_ok     if Input.trigger?(:C)
  316.     return on_savefile_cancel if Input.trigger?(:B)
  317.     update_cursor
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● セーブファイル[決定]
  321.   #--------------------------------------------------------------------------
  322.   def on_savefile_ok
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● セーブファイル[キャンセル]
  326.   #--------------------------------------------------------------------------
  327.   def on_savefile_cancel
  328.     Sound.play_cancel
  329.     return_scene
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● カーソルの更新
  333.   #--------------------------------------------------------------------------
  334.   def update_cursor
  335.     last_index = @index
  336.     cursor_l(Input.trigger?(:LEFT))   if Input.repeat?(:LEFT)
  337.     cursor_r(Input.trigger?(:RIGHT))  if Input.repeat?(:RIGHT)
  338.     cursor_pagedown   if Input.trigger?(:L)
  339.     cursor_pageup     if Input.trigger?(:R)
  340.     if @index != last_index
  341.       Sound.play_cursor
  342.       @savefile_windows[last_index].selected = false
  343.       @savefile_windows[@index].selected = true
  344.     end
  345.     @info_window.file_index = @index
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ● カーソルを左に移動
  349.   #--------------------------------------------------------------------------
  350.   def cursor_l(wrap)
  351.     @index = (@index + 1) % item_max if @index < item_max - 1 || wrap
  352.     ensure_cursor_visible
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● カーソルを右に移動
  356.   #--------------------------------------------------------------------------
  357.   def cursor_r(wrap)
  358.     @index = (@index - 1 + item_max) % item_max if @index > 0 || wrap
  359.     ensure_cursor_visible
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● カーソルを 1 ページ後ろに移動
  363.   #--------------------------------------------------------------------------
  364.   def cursor_pagedown
  365.     if top_index + visible_max < item_max
  366.       self.top_index += visible_max
  367.       @index = [@index + visible_max, item_max - 1].min
  368.     end
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● カーソルを 1 ページ前に移動
  372.   #--------------------------------------------------------------------------
  373.   def cursor_pageup
  374.     if top_index > 0
  375.       self.top_index -= visible_max
  376.       @index = [@index - visible_max, 0].max
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● カーソル位置が画面内になるようにスクロール
  381.   #--------------------------------------------------------------------------
  382.   def ensure_cursor_visible
  383.     self.top_index = index if index < top_index
  384.     self.bottom_index = index if index > bottom_index
  385.   end
  386. end

Lv2.观梦者

梦石
0
星屑
626
在线时间
282 小时
注册时间
2006-4-9
帖子
203
2
发表于 2012-9-22 12:32:15 | 只看该作者
  def hp_rate
    @hp.to_f / @mhp
  end
  #--------------------------------------------------------------------------
  # ● MP の割合を取得
  #--------------------------------------------------------------------------
  def mp_rate
    @mmp > 0 ? @mp.to_f / @mmp : 0
  end

角色没有size属性,添加以下:
def size
  size???(不知道你的size具体是指什么?)
end
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2012-9-22 17:12:20 | 只看该作者
既然另一个工程没有出现问题,那么脚本本身就没问题。是因为你使用了其他脚本导致的不兼容
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 16:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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