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

Project1

 找回密码
 注册会员
搜索
楼主: guoxiaomi
打印 上一主题 下一主题

[原创发布] 【RGM】RGModern 1.0.4 - RMXP新runtime

[复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

71
 楼主| 发表于 2023-5-30 21:51:04 | 只看该作者
本帖最后由 guoxiaomi 于 2023-5-30 22:34 编辑

1.0.3已更新,主要添加了鼠标功能。注意Graphics.set_title和Graphics.set_fullscreen已经移除,相关代码移动到RGM::Ext::Window模块下。
以下是本次更新日志:

## 1.0.3 - 2023-05-30
### 修复
- 在Bitmap#font_size函数的C++实现中,将两个未初始化的变量初始化为0。
- 在controller_buttonmap和key_map的各个函数中,显式指定作为函数参数的元素类型为std::pair类型。
- 添加了Viewport#rect=方法。

### 优化
- config.rb中的修改窗口标题、全屏和修改窗口分辨率改为调用RGM::Ext::Window的模块方法。
- Graphics中的update_fps方法改为调用RGM::Ext::Window的模块方法。
- 在读取config之前先等待所有的worker,原来是在rgss_main的开头,即读取scripts.rxdata之前。

### 新增
- 新增了mouse.rb,实现了RGM::Ext::Mouse模块,以提供鼠标功能。提供以下方法:
  - `position` 返回鼠标当前的位置,对全屏模式或者分辨率扩张的场合,此位置会自动映射到正确的坐标。
  - `raw_position` 返回鼠标的当前的位置,未经过坐标映射。
  - `press?` 检查鼠标某个按键是否被按下,目前支持LEFT/MIDDLE/RIGHT/X1/X2共5个按键。
  - `trigger?` 检查鼠标某个按键是否刚刚被按下。
  - `double_click?` 检查鼠标的某个按键是否被双击,默认是帧数的1/3,也就是1/3秒内按下被识别为双击。
  - `double_click_interval=` 设置双击的判定间隔,单位是帧数,范围只能在1~63帧之间。
  - `wheel_down?` 检查鼠标滚轮是否在向下滚动。
  - `wheel_up?` 检查鼠标滚轮是否在向上滚动。
- 新增了window.rb,实现了RGM::Ext::Window模块,用于管理窗口,包括修改分辨率、全屏和获取HWND等。部分原来在Graphics模块中功能被移动到此类中。提供以下方法:
  - `set_title` 设置窗口标题,原属于Graphics模块中的功能。
  - `set_fps` 设置 FPS 的值。设置为nil不显示FPS,设置为-1则显示 Sampling...
  - `set_fullscreen` 设置全屏模式,原属于Graphics模块中的功能。
  - `resize` 重设窗口大小。
  - `refresh_size` 在全屏模式下,获取窗口真实的大小。
  - `cast_to_screen` 在全屏模式下,将鼠标在窗口中的坐标映射到屏幕中的坐标。
  - `get_hwnd` 获取窗口的 HWND,此值只在Windows操作系统有效,其他操作系统始终返回0。

### 删除
- 移除Graphics的@@screen_width和@@screen_height,改为使用@@width和@@height。
- 移除Graphics#set_title和Graphics#set_fullscreen方法。相关功能在RGM::Ext::Window中实现。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14096
在线时间
2139 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

72
发表于 2023-5-31 17:09:40 | 只看该作者
guoxiaomi 发表于 2023-5-30 21:51
1.0.3已更新,主要添加了鼠标功能。注意Graphics.set_title和Graphics.set_fullscreen已经移除,相关代码移 ...

范例里面鼠标功能如何开启?

点评

对的,只是提供了鼠标的功能  发表于 2023-6-5 23:05
我怎么打开范例鼠标没反应操作游戏?还得需要写脚本吗?  发表于 2023-6-1 07:51
默认就是开启的,直接调用RGM::Ext::Mouse里的方法就行。  发表于 2023-5-31 22:09
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

73
 楼主| 发表于 2023-5-31 22:17:10 | 只看该作者
本帖最后由 guoxiaomi 于 2023-6-6 02:21 编辑
纯属小虫 发表于 2023-5-30 18:54
2023.05.30
试了试自己的工程,尝试能不能移植(抱紧大佬大腿死缠烂打)


第一种写法我也是第一次见到,似乎是为了避免使用alias,改用类继承类自身的clone。这个写法属实逆天,你这个脚本是完整的吗?如果是完整的我可以修改一下。下面那个调用了外部32位的tktk_bitmap.dll,而且还是操作Bitmap的dll,RGM是不兼容的。如果想实现那些效果,可以用RGM自带的Bitmap的功能,也可以等后续我有空了写一个类似的。

对比一下两者的区别:
1. 不需要进行对自身的clone和继承;
2. 对于函数skills中出现的super,改用alias来代替。首先alias此函数(24行)创建一个别名,然后把super换成此函数别名(27行)。
RUBY 代码复制
  1. #===============================================================================
  2. # ● 【简易坑爹系列】武器、装备与状态的附加特技
  3. #===============================================================================
  4. class Game_Actor
  5.   WEAPON_SKILLS = {}
  6.   ARMOR_SKILLS = {}
  7.   STATE_SKILLS = {}
  8.   #----------------------------------------------------#
  9.   # 设置区域
  10.   #
  11.   # 设置方法:STATE_SKILLS[状态id] = [特技id]
  12.   #           WEAPON_SKILLS 与 ARMOR_SKILLS 同理
  13.   #           当特技id为负值时则删减该技能
  14.   #           不论顺序,删减技能一并落后处理
  15.   #----------------------------------------------------#
  16.  
  17.   WEAPON_SKILLS[5] = [5] # 匕首 致命一击
  18.  
  19.   ARMOR_SKILLS[63] = [4] # 软木盾 盾防
  20.  
  21.   # STATE_SKILLS[74] = [23]#鱼人仿息  悬浮水膜
  22.  
  23.   #----------------------------------------------------#
  24.   alias _origin_skills skills
  25.  
  26.   def skills
  27.     output = _origin_skills | (WEAPON_SKILLS[@weapon_id] || [])
  28.     [@armor1_id, @armor2_id, @armor3_id, @armor4_id].each { |a| output |= ARMOR_SKILLS[a] || [] }
  29.     @states.each { |s| output |= STATE_SKILLS[s] || [] }
  30.     output.each do |s|
  31.       if s < 0
  32.         output.delete(s.abs)
  33.         output.delete(s)
  34.       end
  35.     end
  36.     output.sort
  37.   end
  38.  
  39.   def skill_learn?(skill_id)
  40.     skills.include?(skill_id)
  41.   end
  42. end

点评

蟹蟹加菲!!!!  发表于 2023-6-6 14:48
呼!谢谢大大~~第一个脚本是完整的,【简易坑爹系列】的好像都是这么写的,很短,但是O.o我改都改不来~~  发表于 2023-6-1 10:45

评分

参与人数 1+1 收起 理由
纯属小虫 + 1 塞糖

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4125
在线时间
1893 小时
注册时间
2010-8-16
帖子
811

短篇八RM组季军

74
发表于 2023-6-4 15:46:31 | 只看该作者
掌握了RGM就是掌握了毁灭宇宙的终极力量!但这一切都在一只可爱极致的加菲猫先生手上!!!
Steam页面:
http://store.steampowered.com/app/486850
https://store.steampowered.com/app/865180/
志同道合QQ&E-mail:[email protected]
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

75
 楼主| 发表于 2023-6-6 02:08:39 | 只看该作者
本帖最后由 guoxiaomi 于 2023-6-6 02:18 编辑
RTCanwind 发表于 2023-5-30 01:49
感谢~~
单独运行确实是到Animations.rxdata这步,不过在工程里运行时还有一些脚本报错,如
- 013_Pictur ...


做了大概13处修改了吧,大的bug没有了,可以正常进入到游戏里。


其实有很多功能是RGM自带的,Pokemon Essentials自己又实现了一遍,就很蛋疼,如果能请Pokemon Essentials的作者专门用RGM重制一遍就完美了,生态+1。

当然借此我也找到了RGM的几处bug,下个版本1.0.4会修复,附件里的Game.exe是已经修复的版本。

具体的改动可以查阅fix.log。然后建议你把PBS文件夹里的文本文件都用记事本重新保存一下,选择编码为utf-8。
附件(1个月后会删除):
https://7niu.gxmatmars.com/p1/RG ... %20-%20modified.zip

度盘链接: https://pan.baidu.com/s/1V75OpCKKX8KrBgeZyAEouw?pwd=3x59 提取码: 3x59 复制这段内容后打开百度网盘手机App,操作更方便哦

目前没搞定的地方是无法点击X关闭程序,以及无法正确修改窗口大小,这个我找机会再看看代码吧。

可能有人只关心fix.log

点评

好耶  发表于 2023-6-8 01:27
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
2
星屑
13088
在线时间
2273 小时
注册时间
2011-6-4
帖子
613
76
发表于 2023-6-6 07:26:17 | 只看该作者
移植的时候发现的,图块素材,文件名使用中文会报错。


ERROR档下附
RUBY 代码复制
  1. 2023-06-06 07:22:49 +0800
  2. Error occurs when load Data/Scripts.rxdata.
  3. incompatible character encodings: UTF-8 and ASCII-8BIT
  4. - eval:80:in `expand_path'
  5. - eval:80:in `block (2 levels) in find'
  6. - eval:79:in `each'
  7. - eval:79:in `block in find'
  8. - eval:78:in `each'
  9. - eval:78:in `find'
  10. - eval:42:in `initialize'
  11. - eval:74:in `new'
  12. - eval:74:in `make_tileset'
  13. - eval:66:in `tileset'
  14. - Spriteset_Map:21:in `initialize'
  15. - Scene_Map:13:in `new'
  16. - Scene_Map:13:in `main'
  17. - Main:16:in `block in rgss_main'
  18. - eval:31:in `eval'
  19. - eval:31:in `block in rgss_main'
  20. - eval:27:in `each'
  21. - eval:27:in `rgss_main'
  22. - eval:55:in `load_script'
  23. - eval:23:in `load_script'
  24. - eval:23:in `load_script'
  25. - eval:71:in `<main>'
  26. - ruby:in `load_script'

点评

问题已经解决了,感谢猫佬  发表于 2023-6-8 07:29
我试了一下必须工程路径也是中文才有这个报错,不过都修复了,你试一下最新的范例吧  发表于 2023-6-8 00:43
好的,那我顺便把所有素材的中文名都再测测  发表于 2023-6-6 20:05
BUG反馈请加QQ 529283039
水友群 917854767

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

77
 楼主| 发表于 2023-6-8 00:41:35 | 只看该作者
本帖最后由 guoxiaomi 于 2023-6-8 01:42 编辑

1.0.4已更新,以下是本次更新日志:

## 1.0.4 - 2023-06-07
### 修复
- Tone#new和Tone#set现在可以省略第4个参数gray,默认值是0。
- Finder#find现在会检查路径是否为文件夹,并且不会返回对应于文件夹的路径。
- 修复了Font#exist?未生效的BUG。

### 优化
- 允许Graphics#transition使用小于或等于0的duration。
- 现在可以在中文工程路径下读取中文文件名的素材。
- 现在可以读取加密包中的中文素材,不过加密包必须使用`7z a -tzip Graphics.zip Graphics -scsUTF-8 -p123`指令制作,否则文件名不会以UTF-8的格式保存。
- 范例里的箱子事件现在会读取加密包中的中文文件名素材“加菲猫.jpg”。

### 新增
- Graphics.zip已更新。如果使用RGM小助手,请删掉misc.7z然后更新RGModern。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
791
在线时间
85 小时
注册时间
2020-12-15
帖子
25
78
发表于 2023-6-8 02:42:35 | 只看该作者
本帖最后由 RTCanwind 于 2023-6-8 02:54 编辑
guoxiaomi 发表于 2023-6-6 02:08
做了大概13处修改了吧,大的bug没有了,可以正常进入到游戏里。


试了一下佬改的版本,记录一下遇到的问题
1.Message: undefined method `exists?' for File:Class
File似乎也需要exists?方法?
2.文本字体似乎会被强制缩放为撑满文本框。
3.部分操作Error occurs when load Data/Scripts.rxdata.怀疑与第五步修改有关系。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7007
在线时间
247 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

79
发表于 2023-6-8 13:17:40 | 只看该作者
本帖最后由 纯属小虫 于 2023-6-8 13:24 编辑

试了下窗口放大,特别完美!
应该能够完全平替之前用过的一个画面放大脚本了。
原画面放大脚本1
原画面放大脚本2


不过config里面的 System 中的各个值,能否当变量用呢?或者根据玩家的屏幕大小来做适应性的整数缩放。
如 WindowWidth 和 WindowHeight  我想做成游戏中按键操作后才会 * 2 的效果 (因为有些人的屏幕分辨率很小,或者很大)



再来就是烛光效果的移植,因为涉及了bitmap,无法兼容了~~
这个插件里面bitmap相关的内容还挺多的,虽然自己没有用过,不过看上去好酷炫的样子!
如果RGM能统统合并过去最好不过了(啥也不干还要求贼多的伸手党先自罚一巴掌)


Bitmap 追加 for 烛光

烛光


【tktk_bitmap.dll】烛光效果相关的插件
tktk_bitmap.zip (88.68 KB, 下载次数: 5)

点评

↓估计不行,看上去得做分辨率适配。87楼的脚本估计是做了适配的,到时候我会移植此脚本到rgm的范例中。  发表于 2023-6-12 10:25
是能更改1024X576不出现黑边了吗  发表于 2023-6-12 00:38
ヾ(◍°∇°◍)ノ゙!!!  发表于 2023-6-9 11:04
你可以参照范例里扩展窗口的事件,用脚本修改窗口大小。在运行时修改config.ini,或者让用户自己改config.ini,重启游戏窗口就扩大了。  发表于 2023-6-8 22:20
tktk_bitmap.dll已经加入到todo,不过我近期有新的计划,这个等1.1.0发布后再做  发表于 2023-6-8 22:18
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
21045
在线时间
1036 小时
注册时间
2016-1-6
帖子
3362
80
发表于 2023-6-8 15:53:05 | 只看该作者
我想问一下,最低配置是多少,比如说:CPU?内存?显卡?操作系统?等等。

点评

好的,谢谢。  发表于 2023-6-8 22:21
操作系统建议Win10,但是目前还是能支持Win7的。近期的电脑应该都够用,内存消耗比较高,一般得预留1G。  发表于 2023-6-8 22:11
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 09:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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