Project1

标题: RMVA使用其他编辑器编辑脚本 [打印本页]

作者: 喵呜喵5    时间: 2018-4-11 14:02
标题: RMVA使用其他编辑器编辑脚本
本帖最后由 喵呜喵5 于 2020-2-16 22:29 编辑

这个东西对于不会写脚本的人来说基本上完全没用






因为 RMVA 自带的脚本编辑器功能比较鸡肋,加上不方便进行代码的版本控制等、比对检查等,所以之前一直都是在用 sublime text 或者 vscode 写代码最后打包进游戏中
想了想这东西也没必要藏着掖着,就公开出来了,具体的范例见工程:

https://pan.miaowm5.com/index.php/s/Et3EopkeKKGc9qa

一些注意事项:
在脚本中使用
  1. m5_require '文件相对当前脚本的路径'
复制代码

加载其他脚本文件,加载时会在顶层作用域执行脚本文件
脚本文件的编码要求使用 utf-8

范例工程中的 RMVA 脚本编辑器中的脚本便是打包的完整代码,代码最下方就是要干的具体事情,根据实际需要改完这里之后就再也不用管脚本编辑器了

大概的格式是这样:

  1. builder = Builder.new("./Src/Main.rb")
  2. #读取脚本,脚本的入口文件为 ./Src/Main.rb,返回一个 Builder 实例

  3. builder.dev
  4. #直接读取脚本运行游戏,仅建议在游戏开发时使用

  5. builder.build_data('./Release/BuildScripts.rvdata2', './Release/Scripts.rvdata2')
  6. #将脚本打包到 Release/BuildScripts.rvdata2 中并自动生成 Release/Scripts.rvdata2 文件,游戏发布时,将这两个文件覆盖 Data 文件夹下的同名文件即可发布游戏
  7. #Release目录不会自动创建

  8. builder.build_rvdata2('./Release/Scripts.rvdata2')
  9. #将脚本打包到 Release/Scripts.rvdata2 中,游戏发布时,将这个文件覆盖 Data 文件夹下的同名文件即可发布游戏

  10. builder.build_single('./Release/Scripts.txt')
  11. #将脚本打包到 Release/Scripts.txt 中,游戏发布时,可以将这个文件中的内容插入到脚本编辑器里来使用
  12. #这个功能主要在制作插件脚本时会使用到,例如下面这种创建多个 builder 实例的使用方式
  13. #Builder.new("./Battle/turn.rb").build_single('./Plugin/turn.txt').dev
  14. #Builder.new("./Map/weather.rb").build_single('./Plugin/weather.txt').dev
  15. #Builder.new("./Map/enemy.rb").build_single('./Plugin/mapEnemy.txt').dev

  16. builder.build_single('./Release/Scripts.txt', true)
  17. #build_single 的第二个参数用来控制打包出来的脚本是否还具备可读性,默认 false 为无可读性版本

  18. builder.build_single('./Release/Scripts.rvdata2')
  19. #将脚本打包到 Release/Scripts.rvdata2 中,游戏发布时,将这个文件覆盖 Data 文件夹下的同名文件即可发布游戏
  20. #和 build_rvdata2 不同,打包时所有的脚本会被打包到同一个代码页中
  21. #同样可以使用第二个参数用来控制打包出来的脚本是否具备可读性
复制代码


PS.其实我还有支持在不同作用域执行代码的 include require inject 的加强版,但想了想好像没啥没必要所以就不公开了
PS2.vscode真好用





更新日志:

V1.4
修正工程漏掉的 Window_NameInput

V1.3
不再使用 Dir.pwd 定位根目录,现在工程路径可以包含中文了
注释了打包脚本时忽略空行和 # 号开头行的代码,打包出来的文件体积增加,但错误定位的行数更精确
打包单个脚本文件时,支持设置打包结果是否有可读性
删除了打包脚本执行结束后直接 exit,让本脚本的用途更加广泛

V1.2
修正 Dev 模式下无法定位报错的问题

V1.1
移除为了调试加上去的 rgss_stop

snipaste_20190605_110143.png (15.57 KB, 下载次数: 17)

snipaste_20190605_110143.png

作者: shitake    时间: 2018-4-11 14:39
本帖最后由 shitake 于 2018-4-11 14:42 编辑

早知道你在造轮子的话 我他妈就不写了 囧囧囧

顺便 你的build_rvdata2 我就偷走了 【逃
作者: 灯笼菜刀王    时间: 2018-4-11 16:03
好东西啊,想当初放弃VA的其中一个原因就是脚本编辑器字体看不顺眼......

无耻的收了
作者: shitake    时间: 2018-4-11 16:41
本帖最后由 shitake 于 2018-4-11 16:47 编辑


付一个我自己的实现 不过我的需要由外部的ruby环境
脚本id 目前只能填index了 囧
这可能小黄鸡会知道如何生成 @fux2
这篇帖子里他讲到了如何用哪个id来生成 exit_code
https://rpg.blue/forum.php?mod=v ... ght=Scripts.rvdata2
作者: fux2    时间: 2018-4-11 17:16
很久很久以前……囧叔也糊过类似的东西,不过当时是考虑到加密脚本才拆开放的,原理也就是read+eval

作者: chd114    时间: 2018-4-11 18:03
下一次改数据库吗···
作者: 坏数据    时间: 2020-2-16 14:01
本帖最后由 坏数据 于 2020-2-16 16:43 编辑

饭粒里面的main.rb 漏了 Window_NameInput这个原生的window



用着习惯的sublime 漂亮的语法高亮 犹如搭乐高积木一般
感谢m5




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1