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

Project1

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

[RMVA发布] 【VA】错误脚本详细提示和添加错误日志

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
跳转到指定楼层
1
发表于 2015-10-20 23:57:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 寒冷魔王 于 2017-1-14 23:10 编辑

XP时代一直使用柳大大的‘错误脚本详细提示和添加错误日志’脚本,非常好用。
刚刚用VA发现不能用,于是在柳大大的基础上稍作修改,让VA可以顺利通行。
VA和前版不同之处在于Scene和异常信息exp.backtrace的不同。
本人只是稍作修改,本体完全是柳大大的。
本人非常喜欢这段脚本。希望柳大大的这段脚本能够长久伴随我们。
不知道有没有人发过这个,在这里发布一下。
首先膜拜柳大大:
{:2_259:}
@柳之一  

柳大大的帖子地址:
https://rpg.blue/thread-78782-1-1.html

RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================
  4. # 本脚本原作者“柳之一”,用于XP与VX的‘错误脚本详细提示和添加错误日志’。
  5. # 本脚本由“寒冷魔王(Chill)”修改为VA版。标记## Chill的为修改处。
  6.  
  7. module ERRSettings
  8. #▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  9. #请设置以下东东
  10. # 游戏测试的时候,是否保存错误信息?(true是false不是)
  11. SaveErrorData = false
  12.  
  13. # 回溯跟踪错误的文件名
  14. BackTraceFileName = "Backtrace.txt"
  15.  
  16. # 触发系统错误
  17. CallSystemError = false
  18. #▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  19. end
  20.  
  21. module RPG
  22. module_function
  23. def version
  24.    3.0 ## Chill
  25. end
  26. def debug?
  27.    $TEST ## Chill
  28. end
  29. end
  30. class Reset < Exception
  31. end
  32. class ScriptInterpreter
  33.  
  34. include ERRSettings
  35. def run
  36.    SceneManager.run ## Chill
  37. rescue RGSSReset => exp ## Chill
  38.    raise
  39. rescue SystemExit => exp
  40.    raise
  41. rescue Exception => exp
  42.    exception(exp)
  43.    exit
  44. end
  45.  
  46. private
  47.  
  48. def exception(exp)
  49.    save_backtrace(exp) if SaveErrorData or RPG.debug?
  50.    msgbox(get_error_message(exp)) ## Chill
  51.    raise if CallSystemError and RPG.debug?
  52. end
  53.  
  54. def get_error_message(exp)
  55.    if RPG.debug?
  56.      bt = BackTrace.get_backtraces(exp.backtrace)
  57.  
  58.      if exp.class.to_s=="SyntaxError"
  59.        $outexp="语法错误"
  60.      elsif exp.class.to_s=="NameError"
  61.        $outexp="变量未定义"
  62.      elsif exp.class.to_s=="NoMethodError"
  63.        $outexp="方法未定义"
  64.      elsif exp.class.to_s=="NoMemoryError"
  65.        $outexp="内存占有过大"
  66.      elsif exp.class.to_s=="ArgumentError"
  67.        $outexp="参数错误"   #如果愿意此处可以自定义添加
  68.      else
  69.        $outexp=exp.class.to_s
  70.      end
  71.  
  72.      msg  = "◆ 发生错误\n"
  73.      msg += "\n66RPG提醒您:请养成备份游戏文件的习惯。\n \n"
  74.      msg += "错误类型 :\n\t#{$outexp}\n"
  75.      msg += "错误信息 :\n\t#{exp.message}\n" if exp.message
  76.      msg += "错误可能发生的相关位置 :"
  77.      bt.each do |i|
  78.        msg += " \n\t#{i.name} : 第 #{i.line_no} 行"
  79.        msg += " : #{i.method_name}" if i.method_name
  80.      end
  81.      msg += "  \n非常荣幸能为您发送错误报告\n"
  82.    else
  83.      msg  = "内部发生错误强制结束。\n"
  84.      msg += "66RPG提醒您:请养成备份游戏文件的习惯。\n"
  85.      msg += "▲错误报告文件「#{BackTraceFileName}」已经保存。\n\n"
  86.      msg += "  非常荣幸能为您发送错误报告\n"
  87.    end
  88.    msg
  89. end
  90.  
  91. def save_backtrace(exp)
  92.    bt = BackTrace.get_backtraces(exp.backtrace)
  93.      if exp.class.to_s=="SyntaxError"
  94.        $outexp="语法错误"
  95.      elsif exp.class.to_s=="NameError"
  96.        $outexp="变量未定义"
  97.      elsif exp.class.to_s=="NoMethodError"
  98.        $outexp="方法未定义"
  99.      elsif exp.class.to_s=="NoMemoryError"
  100.        $outexp="内存占有过大"
  101.      elsif exp.class.to_s=="ArgumentError"
  102.        $outexp="参数错误"   #如果愿意此处可以自定义添加
  103.      else
  104.        $outexp=exp.class.to_s
  105.      end
  106.  
  107.    msg  = "◆ #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}\n"
  108.    msg += "错误类型 :\n\t#{$outexp}\n"
  109.    msg += "错误信息 :\n\t#{exp.message}\n" if exp.message
  110.    msg += "错误可能发生的相关位置 :"
  111.    bt.each do |i|
  112.      msg += " \n\t#{i.name} : 第 #{i.line_no} 行"
  113.      msg += " : #{i.method_name}" if i.method_name
  114.    end
  115.    msg += "\n-------------66RPG-------------------\n"
  116.    File.open(BackTraceFileName, "a") do |file|
  117.      file.write(msg)
  118.    end
  119. end
  120. end
  121.  
  122. # 回溯跟踪错误的类
  123. class BackTrace  
  124.   BacktraceRegexp  = /^{([0-9]+)}:([0-9]+)(:in `(.+)')?$/  ## Chill
  125.   BacktraceRegexp2 = /^(\(eval\)):([0-9]+)(:in `(.+)')?$/  ## Chill
  126.   BacktraceRegexp3 = /^(.*):([0-9]+)(:in `(.+)')?$/        ## Chill
  127.   def self.get_backtraces(bt)
  128.     r = []
  129.     bt.each do |i|
  130.       r << self.new(i)
  131.     end
  132.     r
  133.   end  
  134.   def initialize(line)
  135.     ## Chill 以下
  136.     if ((mat = BacktraceRegexp.match(line)))
  137.       name, @line_no, @method_name = mat.to_a.values_at(1,2,4)
  138.       @name = get_section_name(name)
  139.     elsif ((mat = BacktraceRegexp2.match(line)))
  140.       name, @line_no, @method_name = mat.to_a.values_at(1,2,4)
  141.       @name = "eval"
  142.     elsif ((mat = BacktraceRegexp3.match(line)))
  143.       name, @line_no, @method_name = mat.to_a.values_at(1,2,4)
  144.       @name = name
  145.     end
  146.     ## Chill 以上
  147.   end
  148.   attr_accessor :name
  149.   attr_accessor :line_no
  150.   attr_accessor :method_name  
  151.   private
  152.   def get_section_name(index)
  153.     $RGSS_SCRIPTS[index.to_i][1]
  154.   end
  155. end
  156.  
  157. #==============================================================================
  158. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  159. #==============================================================================
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2015-10-25 10:27:06 | 只看该作者
看了一下。。。就是说以后弹错还会显示中文?

点评

我用的另外一个···有一段通用部分,然后根据版本放不同的后续部分···  发表于 2015-10-27 22:17
_(:зゝ∠)_你没用过前版??  发表于 2015-10-25 15:02
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2015-10-27 07:15:09 | 只看该作者
很棒。RM报错没有backtrace确实很蛋疼。
然而现在我在玩MV
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 08:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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