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

Project1

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

[已经过期] 系统自带的脚本报错

[复制链接]

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
跳转到指定楼层
1
发表于 2012-7-20 21:09:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本“Window_Message”第347行:发生NoMethodError。undefined method“upcase”for nil:NilClass


求解答求大神解答!!!!!!大神们解答一下我会感激你们的!!!!!!!!!嘿嘿嘿黑喂狗!

Lv1.梦旅人

梦石
0
星屑
67
在线时间
29 小时
注册时间
2009-7-24
帖子
69
2
 楼主| 发表于 2012-7-20 21:20:41 | 只看该作者
测试时进行一场战斗,战斗胜利结束时出错!!!!!!!!!!!!!!!!!!!!!!!!!!

点评

我把以前自己做的一款VA游戏借用的三个脚本放入库中并且正常运行,但是MESSAGE那个没有动过没有改变。  发表于 2012-7-20 22:58
你插了什么脚本?  发表于 2012-7-20 21:34
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2011-8-1
帖子
188
3
发表于 2012-7-20 22:11:17 | 只看该作者
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Message
  4. #------------------------------------------------------------------------------
  5. #  显示文字信息的窗口。
  6. #==============================================================================
  7.  
  8. class Window_Message < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对象
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(0, 0, window_width, window_height)
  14.     self.z = 200
  15.     self.openness = 0
  16.     create_all_windows
  17.     create_back_bitmap
  18.     create_back_sprite
  19.     clear_instance_variables
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 获取窗口的宽度
  23.   #--------------------------------------------------------------------------
  24.   def window_width
  25.     Graphics.width
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 获取窗口的高度
  29.   #--------------------------------------------------------------------------
  30.   def window_height
  31.     fitting_height(visible_line_number)
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 清除实例变量
  35.   #--------------------------------------------------------------------------
  36.   def clear_instance_variables
  37.     @fiber = nil                # 纤程
  38.     @background = 0             # 背景类型
  39.     @position = 2               # 显示位置
  40.     clear_flags
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 清除的标志
  44.   #--------------------------------------------------------------------------
  45.   def clear_flags
  46.     @show_fast = false          # 快进的标志
  47.     @line_show_fast = false     # 行单位快进的标志
  48.     @pause_skip = false         # “不等待输入”的标志
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 获取显示行数
  52.   #--------------------------------------------------------------------------
  53.   def visible_line_number
  54.     return 4
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 释放
  58.   #--------------------------------------------------------------------------
  59.   def dispose
  60.     super
  61.     dispose_all_windows
  62.     dispose_back_bitmap
  63.     dispose_back_sprite
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 更新画面
  67.   #--------------------------------------------------------------------------
  68.   def update
  69.     super
  70.     update_all_windows
  71.     update_back_sprite
  72.     update_fiber
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 更新纤程
  76.   #--------------------------------------------------------------------------
  77.   def update_fiber
  78.     if @fiber
  79.       @fiber.resume
  80.     elsif $game_message.busy? && !$game_message.scroll_mode
  81.       @fiber = Fiber.new { fiber_main }
  82.       @fiber.resume
  83.     else
  84.       $game_message.visible = false
  85.     end
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 生成所有窗口
  89.   #--------------------------------------------------------------------------
  90.   def create_all_windows
  91.     @gold_window = Window_Gold.new
  92.     @gold_window.x = Graphics.width - @gold_window.width
  93.     @gold_window.y = 0
  94.     @gold_window.openness = 0
  95.     @choice_window = Window_ChoiceList.new(self)
  96.     @number_window = Window_NumberInput.new(self)
  97.     @item_window = Window_KeyItem.new(self)
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 生成背景位图
  101.   #--------------------------------------------------------------------------
  102.   def create_back_bitmap
  103.     @back_bitmap = Bitmap.new(width, height)
  104.     rect1 = Rect.new(0, 0, width, 12)
  105.     rect2 = Rect.new(0, 12, width, height - 24)
  106.     rect3 = Rect.new(0, height - 12, width, 12)
  107.     @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
  108.     @back_bitmap.fill_rect(rect2, back_color1)
  109.     @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 获取背景色 1
  113.   #--------------------------------------------------------------------------
  114.   def back_color1
  115.     Color.new(0, 0, 0, 160)
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 获取背景色 2
  119.   #--------------------------------------------------------------------------
  120.   def back_color2
  121.     Color.new(0, 0, 0, 0)
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 生成背景精灵
  125.   #--------------------------------------------------------------------------
  126.   def create_back_sprite
  127.     @back_sprite = Sprite.new
  128.     @back_sprite.bitmap = @back_bitmap
  129.     @back_sprite.visible = false
  130.     @back_sprite.z = z - 1
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 释放所有窗口
  134.   #--------------------------------------------------------------------------
  135.   def dispose_all_windows
  136.     @gold_window.dispose
  137.     @choice_window.dispose
  138.     @number_window.dispose
  139.     @item_window.dispose
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 释放背景位图
  143.   #--------------------------------------------------------------------------
  144.   def dispose_back_bitmap
  145.     @back_bitmap.dispose
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 释放背景精灵
  149.   #--------------------------------------------------------------------------
  150.   def dispose_back_sprite
  151.     @back_sprite.dispose
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 更新所有窗口
  155.   #--------------------------------------------------------------------------
  156.   def update_all_windows
  157.     @gold_window.update
  158.     @choice_window.update
  159.     @number_window.update
  160.     @item_window.update
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 更新背景精灵
  164.   #--------------------------------------------------------------------------
  165.   def update_back_sprite
  166.     @back_sprite.visible = (@background == 1)
  167.     @back_sprite.y = y
  168.     @back_sprite.opacity = openness
  169.     @back_sprite.update
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 处理纤程的主逻辑
  173.   #--------------------------------------------------------------------------
  174.   def fiber_main
  175.     $game_message.visible = true
  176.     update_background
  177.     update_placement
  178.     loop do
  179.       process_all_text if $game_message.has_text?
  180.       process_input
  181.       $game_message.clear
  182.       @gold_window.close
  183.       Fiber.yield
  184.       break unless text_continue?
  185.     end
  186.     close_and_wait
  187.     $game_message.visible = false
  188.     @fiber = nil
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 更新窗口背景
  192.   #--------------------------------------------------------------------------
  193.   def update_background
  194.     @background = $game_message.background
  195.     self.opacity = @background == 0 ? 255 : 0
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 更新窗口的位置
  199.   #--------------------------------------------------------------------------
  200.   def update_placement
  201.     @position = $game_message.position
  202.     self.y = @position * (Graphics.height - height) / 2
  203.     @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 处理所有内容
  207.   #--------------------------------------------------------------------------
  208.   def process_all_text
  209.     open_and_wait
  210.     text = convert_escape_characters($game_message.all_text)
  211.     pos = {}
  212.     new_page(text, pos)
  213.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 输入处理
  217.   #--------------------------------------------------------------------------
  218.   def process_input
  219.     if $game_message.choice?
  220.       input_choice
  221.     elsif $game_message.num_input?
  222.       input_number
  223.     elsif $game_message.item_choice?
  224.       input_item
  225.     else
  226.       input_pause unless @pause_skip
  227.     end
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 打开窗口并等待窗口开启完成
  231.   #--------------------------------------------------------------------------
  232.   def open_and_wait
  233.     open
  234.     Fiber.yield until open?
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 关闭窗口并等待窗口关闭完成
  238.   #--------------------------------------------------------------------------
  239.   def close_and_wait
  240.     close
  241.     Fiber.yield until all_close?
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● 判定是否所有窗口已全部关闭
  245.   #--------------------------------------------------------------------------
  246.   def all_close?
  247.     close? && @choice_window.close? &&
  248.     @number_window.close? && @item_window.close?
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 判定文字是否继续显示
  252.   #--------------------------------------------------------------------------
  253.   def text_continue?
  254.     $game_message.has_text? && !settings_changed?
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 判定背景和位置是否被更改
  258.   #--------------------------------------------------------------------------
  259.   def settings_changed?
  260.     @background != $game_message.background ||
  261.     @position != $game_message.position
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 等待
  265.   #--------------------------------------------------------------------------
  266.   def wait(duration)
  267.     duration.times { Fiber.yield }
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 监听“确定”键的按下,更新快进的标志
  271.   #--------------------------------------------------------------------------
  272.   def update_show_fast
  273.     @show_fast = true if Input.trigger?(:C)
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 输出一个字符后的等待
  277.   #--------------------------------------------------------------------------
  278.   def wait_for_one_character
  279.     update_show_fast
  280.     Fiber.yield unless @show_fast || @line_show_fast
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 翻页处理
  284.   #--------------------------------------------------------------------------
  285.   def new_page(text, pos)
  286.     contents.clear
  287.     draw_face($game_message.face_name, $game_message.face_index, 0, 0)
  288.     reset_font_settings
  289.     pos[:x] = new_line_x
  290.     pos[:y] = 0
  291.     pos[:new_x] = new_line_x
  292.     pos[:height] = calc_line_height(text)
  293.     clear_flags
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ● 获取换行位置
  297.   #--------------------------------------------------------------------------
  298.   def new_line_x
  299.     $game_message.face_name.empty? ? 0 : 112
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 普通文字的处理
  303.   #--------------------------------------------------------------------------
  304.   def process_normal_character(c, pos)
  305.     super
  306.     wait_for_one_character
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 换行文字的处理
  310.   #--------------------------------------------------------------------------
  311.   def process_new_line(text, pos)
  312.     @line_show_fast = false
  313.     super
  314.     if need_new_page?(text, pos)
  315.       input_pause
  316.       new_page(text, pos)
  317.     end
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 判定是否需要翻页
  321.   #--------------------------------------------------------------------------
  322.   def need_new_page?(text, pos)
  323.     pos[:y] + pos[:height] > contents.height && !text.empty?
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● 翻页文字的处理
  327.   #--------------------------------------------------------------------------
  328.   def process_new_page(text, pos)
  329.     text.slice!(/^\n/)
  330.     input_pause
  331.     new_page(text, pos)
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 处理控制符指定的图标绘制
  335.   #--------------------------------------------------------------------------
  336.   def process_draw_icon(icon_index, pos)
  337.     super
  338.     wait_for_one_character
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 控制符的处理
  342.   #     code : 控制符的实际形式(比如“\C[1]”是“C”)
  343.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  344.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  345.   #--------------------------------------------------------------------------
  346.   def process_escape_character(code, text, pos)
  347.     case code.upcase
  348.     when '$'
  349.       @gold_window.open
  350.     when '.'
  351.       wait(15)
  352.     when '|'
  353.       wait(60)
  354.     when '!'
  355.       input_pause
  356.     when '>'
  357.       @line_show_fast = true
  358.     when '<'
  359.       @line_show_fast = false
  360.     when '^'
  361.       @pause_skip = true
  362.     else
  363.       super
  364.     end
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 处理输入等待
  368.   #--------------------------------------------------------------------------
  369.   def input_pause
  370.     self.pause = true
  371.     wait(10)
  372.     Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
  373.     Input.update
  374.     self.pause = false
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 处理选项的输入
  378.   #--------------------------------------------------------------------------
  379.   def input_choice
  380.     @choice_window.start
  381.     Fiber.yield while @choice_window.active
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 处理数值的输入
  385.   #--------------------------------------------------------------------------
  386.   def input_number
  387.     @number_window.start
  388.     Fiber.yield while @number_window.active
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 处理物品的选择
  392.   #--------------------------------------------------------------------------
  393.   def input_item
  394.     @item_window.start
  395.     Fiber.yield while @item_window.active
  396.   end
  397. end

完全复制覆盖···

点评

347行和上面的完全吻合。。不知为什么报错。。  发表于 2012-7-21 10:54

세상은 너무 미쳐있다
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小黑

梦石
0
星屑
50
在线时间
140 小时
注册时间
2011-8-23
帖子
536
4
发表于 2012-7-20 23:18:12 | 只看该作者
本帖最后由 咚小黑 于 2012-7-20 23:18 编辑

后面带来的那些脚本有问题

点评

那为什么放在以前那个VA游戏里面没有受到影响呢?  发表于 2012-7-21 10:24
起码对得起自己。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小黑

梦石
0
星屑
50
在线时间
140 小时
注册时间
2011-8-23
帖子
536
5
发表于 2012-7-21 10:46:07 | 只看该作者
你以前的是VX吧

点评

不是。。真的是VA  发表于 2012-7-21 10:53
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小黑

梦石
0
星屑
50
在线时间
140 小时
注册时间
2011-8-23
帖子
536
6
发表于 2012-7-21 10:59:12 | 只看该作者
如果完全符合,那就不是原来的脚本错误,而是因为那三个脚本使Window_Message产生错误。
你把那三个脚本,找到有关于Window_Message的,贴上来

点评

是“装备颜色”“带图存档”“开始菜单增加作者网站按钮”  发表于 2012-7-21 15:53
起码对得起自己。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2012-7-21 14:40:36 | 只看该作者
你出的这个错不在Window_Message里,而是在于Window_Message的实例在调用process_escape_character方法时的第一个参数是nil~

点评

能加我QQ远程协助吗…… 我QQ是498807677  发表于 2012-7-21 19:55
最好传工程上来一看究竟。  发表于 2012-7-21 16:13
啊。。。能否详细说明一下。。这么多年的RM只是偶尔做做所以水平还是不怎么高  发表于 2012-7-21 15:52
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
125
在线时间
0 小时
注册时间
2013-4-12
帖子
1
8
发表于 2013-4-13 11:15:10 | 只看该作者
我碰到了同样的问题。
弹出窗口。

脚本。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
44
在线时间
5 小时
注册时间
2023-2-3
帖子
2
9
发表于 2023-2-3 13:57:54 | 只看该作者
我也遇到过,后来发现对话文本中有特殊字符(类似\(^o^)/~之类的),或者\n[]打成n\[]都会触发这个错误
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 01:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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