Project1

标题: 尝试突破次元壁 ver0.01 [打印本页]

作者: J_G_Mike    时间: 2020-5-24 19:51
标题: 尝试突破次元壁 ver0.01
接触RPG Maker XP不久,简单的实现了几个效果。

ver0.01      Play_Window.zip (214.83 KB, 下载次数: 63)

效果说明:
1. title界面640x480,进入游戏后,自动变成244x244分辨率
2.通过 主键盘的 加减号 可以 随时控制显示窗口大小
3.通过主键盘数字0,控制角色是否在地图上运动
4.通过主键盘数字9,控制窗口是否在桌面上运动
5.通过主键盘数字8,控制外围窗口的显示。

目前的问题:
1. 由于游戏显示范围是直接定义在Tilemap中的,也就是每一次更新分辨率后,需要重新刷新整个屏幕才能完成设置。
    目前的方法,直接用开始新游戏进行刷新,所以每次更改分辨率后会回到初始位置。
    之后会通过:改变分辨率->保存游戏->读取游戏->刷新界面 来解决。

2. 目前还没有办法让控件走出窗口,现在只是隐藏了外围窗口。
    正在研究如何窗口透明化的同时,控件进行正常显示。
    如果大家有更好的Win32API方案,或者更好的思路欢迎讨论。

3. 目前 win7 32位系统 可以正常运行,其他系统 尚不可知。

4. 因为要一开始导入窗口信息,所以加载稍微有点慢...

关于程序:
1. 因为原版程序的Tilemap是完全隐藏掉的,所以,需要重写这一部分。
   目前这一部分程序来自于:真·RMXP分辨率拓展 By 紫英晓狼工作室
   原版下载地址: https://rpg.blue/thread-362553-1-1.html

2. 写了一个Win32API的类

3. 程序中带★的脚本用于控制分辨率,●的脚本控功能实现。

关于感谢:
之前的帖子:https://rpg.blue/thread-481867-1-1.html

感谢 “紫英晓狼1130” 和 "shmily0725" 提供的思路

接下来,关于窗口隐藏与控件提取,如果大家有更好的思路,欢迎分享。
同时,如果大家还有其他的思路,也欢迎一起讨论。

谢谢大家了...



作者: SixRC    时间: 2020-5-25 03:14
报两个bug
1.GetKeyState 返回值类型是 short 16位 而Win32API中 不论是 i I n N l L 都是返回 int 型 32位
举个例子 api返回 0xFFFF          ruby收到 65535  但这对于 short来说是-1
              api返回 0xFFFFFFFF   ruby收到 -1  对于 short来说也是 -1
你是无法确定操作系统到底返回哪种的 你只知道 按官方文档 返回值是 short 所以高16位需要人工抛掉  或者按位来判定返回值
需要返回   [status].pack("l").unpack("s")[0]
发现这个bug是因为在我这里 系统已经抛掉了高16位 导致ruby端收到的值永远非负
2.SetWindowRgn 在我这里 导致了窗口样式的变化 不过好像是rm自带bug 我不能确定 也不会修..



其他没啥了
我好吃懒做 就只会报报bug了

作者: enghao_lim    时间: 2020-5-25 13:31
这玩意大概就是烧破脑也不一定要得上的功能,不过很值的鼓励。




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