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

Project1

 找回密码
 注册会员
搜索
楼主: 玻璃柿子
打印 上一主题 下一主题

[原创发布] RMXP魔改计划及发布贴

[复制链接]

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
21
发表于 2023-4-4 17:24:00 | 只看该作者
本帖最后由 soulsaga 于 2023-4-4 17:47 编辑

像VA那样保存工程关闭后下次打开会是自动打开上次保存的工程
脚本编辑器搜索关键词也会自动保留上一次的
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
22
发表于 2023-4-4 17:31:47 | 只看该作者
本帖最后由 灯笼菜刀王 于 2023-4-4 17:37 编辑

我想要脚本全局查找(ctrl+shift+f)的结果窗口能保留, 不会点击一条, 跳转到对应位置后, 搜索结果窗口就消失了, 想找下一条还要再次按ctrl+shift+f, 然后ctrl+V, enter, 麻烦死了

窗口跳转后不消失, 要排错就方便多了

还有, XP的脚本编辑器只能一页一页复制, 或者直接替换scripts.rxdata,  想要能批量复制的功能

点评

$: << Dir.getwd,然后就可以读外部的rb文件了,只是最终发布的时候多一个导入的步骤  发表于 2023-4-14 02:49
如果能外接rb文件,岂不是一劳永逸  发表于 2023-4-10 22:07
推荐再加一个Ctrl + Q快捷注释功能  发表于 2023-4-5 17:02
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
23
 楼主| 发表于 2023-4-5 05:49:32 | 只看该作者
玻璃柿子 发表于 2023-4-4 06:02
这个问题,我之前测试过是没有的,要不你加我qq讨论吧。
qq:1541803232

你这是通宵了吗?这么早上

点评

什么鬼?自己问自己通宵了吗?  发表于 2023-4-5 09:38
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

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

开拓者

24
发表于 2023-4-5 17:18:22 | 只看该作者
本帖最后由 guoxiaomi 于 2023-4-5 18:59 编辑

提点想法。我先用画图说明我对“插件”的理解。

“插件”特指在程序特定的入口添加新的对话框,然后在新的对话框里进行操作,保存后能修改Data文件夹里的部分数据。

目前至少有3种不同类型的入口,图上标注的1和2是进入对话框的顺序:
1. 在插件菜单里,添加一个按钮跳转到新的对话框。


2. 事件选项里添加一个按钮,增加新的条目,点击对应条目打开对话框。
这里的条目,在编辑结束后要能显示对应的新指令。


3. 数据库编辑的部分多一些入口。如果尽可能兼容旧版本,可以在“系统”的右边多一栏,点击后打开新的对话框。
这里的条目,对应于Data文件夹里额外的.rxdata文件。在编辑结束后要修改那个.rxdata文件。


而对话框,指的是可以修改数值的那种东西,比如,下面这个是变量处理的事件:


对话框里包含了各种小组件(widget),组件按照特定的规律排布。

如果能适当做好封装,提供一个友好的dsl,那么插件的作者,完全不需要懂win32的知识,只需要会写一点脚本,完成插件对应的逻辑即可。

举个例子,以下代码描述了在插件菜单里添加一个选项,以打开变量处理的事件,我使用ruby的格式来写。当然用标记语言写layout也很合适。

大体思路就是
1. 继承自 Plugin_Menu 说明入口是上面的第一种情况,在插件列表里。
2. layout里定义widget的位置和内容,以及如何操作data变量。这部分可以对照上图来看。
3. on_xxx函数表示此插件在打开、关闭、应用、取消四个时机时该如何处理data与外部数据(一般是Data文件夹里的数据)。

RUBY 代码复制
  1. class MyPlugin < Plugin_Menu
  2.   def initialize
  3.     super('变量处理')
  4.   end
  5.  
  6.   # 处理 data 和外部数据
  7.   def on_open; end
  8.  
  9.   def on_close; end
  10.  
  11.   def on_save; end
  12.  
  13.   def on_cancel; end
  14.  
  15.   def layout
  16.     title '操作变量'
  17.     align :vertical
  18.  
  19.     form '变量' do
  20.       data[0] << 0
  21.       radio do
  22.         align :vertical
  23.         option do
  24.           label '单独'
  25.           data[1] << select_variables
  26.         end
  27.         option do
  28.           align :horizontal
  29.           label '统一'
  30.           data[1] << integer(0, $game_variables.size)
  31.           label '~'
  32.           data[2] << integer(0, $game_variables.size)
  33.         end
  34.       end
  35.     end
  36.  
  37.     form '操作' do
  38.       radio do
  39.         align :horizontal
  40.         option do
  41.           label '代入'
  42.           data[3] << 0
  43.         end
  44.         option do
  45.           label '加法'
  46.           data[3] << 1
  47.         end
  48.         option do
  49.           label '减法'
  50.           data[3] << 2
  51.         end
  52.         option do
  53.           label '乘法'
  54.           data[3] << 3
  55.         end
  56.         option do
  57.           label '除法'
  58.           data[3] << 4
  59.         end
  60.         option do
  61.           label '取余'
  62.           data[3] << 5
  63.         end
  64.       end
  65.     end
  66.  
  67.     form '操作数' do
  68.       radio do
  69.         align :horizontal
  70.         option do
  71.           label '常量'
  72.           data[4] << interger(-99_999, 99_999)
  73.         end
  74.         # ... 中间省略 ...
  75.         option '其它' do
  76.           listbox do
  77.             option do
  78.               label '地图ID'
  79.               data[4] << 0
  80.             end
  81.             # ... 中间省略 ...
  82.             option do
  83.               label '存档次数'
  84.               data[4] << 6
  85.             end
  86.           end
  87.         end
  88.       end
  89.     end
  90.   end
  91. end

这样做应该会方便插件作者许多,但是维护插件生态比开发一个DSL要难多了,我们还有很长的路要走。

个人看法,如果我来做这个,就会直接全部重写,当DSL设计好,widget整理好之后,剩下的对话框全部都是写上面这种DSL写就行。地图的处理可能会稍微麻烦一点,但是也不算特别难。当然我现在的重点维护RGM这个runtime,编辑器的事情,我泉水指挥总是轻松的……

点评

其实我们都在runtime群里  发表于 2023-4-11 00:14
两位RMXP的大天使会面了,见证历史,膜拜TAT  发表于 2023-4-10 22:47
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

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

开拓者

25
发表于 2023-4-5 18:11:22 | 只看该作者
从回复楼层中也能看出来,大家特别关心的是能否解除原版编辑器的一些限制,或者优化使用体验。插件生态倒是其次了。。。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
26
 楼主| 发表于 2023-4-6 06:31:01 | 只看该作者
guoxiaomi 发表于 2023-4-5 18:11
从回复楼层中也能看出来,大家特别关心的是能否解除原版编辑器的一些限制,或者优化使用体验。插件生态倒是 ...

感谢建议,写的那么多,又那么详细,应该花了不少时间去想这个事情。我正愁没有一个方向呢,这下也省了很多事情。加油。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
27
 楼主| 发表于 2023-4-8 21:09:21 | 只看该作者
本来想这周发个新版本,但是因为改数值上限这个事情,耽误了很多时间,只能退后几天了。
数值上限的修改,没有想的那么容易,其牵扯到很多细节,稍微动一下,原生的脚本就容易崩。
这一个版本,打算放一些实际的功能:
1.所有数值上限都增加一位数,如原来999的,现在变成9999
2.数据库个窗口增加注释功能
3.增加事件搜索功能
以上这些功能,将全部基于新增的插件实现。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
28
 楼主| 发表于 2023-4-10 20:32:50 | 只看该作者
发布的新版本中,武器,防具以及敌人的一些战斗力属性,已经成功突破了999上限,最高可达9999.
另外,对于角色的力量,智力这些,修改突破了会引起一些奇怪的bug,可能需要同时修改脚本。
后面我会把修改这些属性的接口封装了发布出来,到时候需要的自行修改。
我因为暂时还要兼顾兼容性,不能全部推翻。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
29
发表于 2023-4-11 15:07:50 | 只看该作者
可以复制数据库敌人的元素属性和状态
批量贴上
省了一个个点

点评

这个可以有!相当于对应某个项的格式刷!  发表于 2023-4-11 16:52
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
30
 楼主| 发表于 2023-4-13 07:36:36 | 只看该作者
soulsaga 发表于 2023-4-11 15:07
可以复制数据库敌人的元素属性和状态
批量贴上
省了一个个点

后面会加的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 20:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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