Project1

标题: 防F12 [打印本页]

作者: SixRC    时间: 2015-8-27 11:21
标题: 防F12
本帖最后由 SixRC 于 2017-9-12 12:39 编辑

插到随便什么地方 只要是在正式调用Graphics.update  前即可

RUBY 代码复制
  1. class << Graphics
  2.   alias update2 update
  3.   RGSSEval=Win32API.new('RGSS103J','RGSSEval','p','v')
  4.   def update
  5.     RGSSEval.call("Graphics.update2")
  6.   end
  7. end


虽然简单 不过是有bug的 第一就是按红叉叉不能关闭游戏,只能用任务管理器和exit… 所以让游戏正常地从菜单退出也好嘛 我不管了
第二个是假如按着F12的话 Graphics.update 的时间不能维持到(1/秒帧数)秒
所以会有这么一个问题:按着F12的时候 游戏刷新速度会极快
不过应该没谁这么蛋疼吧 大概 所以我也不管了...
其余的未知 有问题再说

另外
调用RGSSEval的话 不存在十秒限制 即不会出现脚本已被备份的问题 只要在脚本最后面加上Graphics.update就好了
比如
RUBY 代码复制
  1. RGSSEval=Win32API.new('RGSS103J','RGSSEval','p','v')
  2. code=<<EOF
  3. sleep 11
  4. Graphics.update
  5. EOF
  6. RGSSEval.call(code)

是不会弹错的


8.21 更新
RGSS103J.zip (539.69 KB, 下载次数: 47)
修改版dll
除了按F12无效
其余没变
在脚本里可以自定义F12的功能

8.22 接上
RGSS103J.zip (539.7 KB, 下载次数: 47)
按F12会执行模块SixRC中的f12
可以自定义其作用
不定义就不会发生什么


作者: chd114    时间: 2015-8-27 11:54
插入以后右上角的红X无效了···
目前没发现其它问题
作者: 天地有正气    时间: 2015-8-27 12:02
能否解释一下原理……
作者: SixRC    时间: 2015-8-27 12:22
天地有正气 发表于 2015-8-27 12:02
能否解释一下原理……

自己调用RGSSEval和它调用 是不一样的
这个自己做实验可以知道 自己调用的和它调用的假如分别称为区域a和区域b的话
a的变量和b的不通用
但是全局变量和类是连着的
它在调用RGSSEval的同时做了别的什么处理 额 我现在不知道
不过那些处理在自己调用的时候不会发生 所以可以避开
而F12每次检测都是在Graphics.update的时候(?我猜测)
所以让区域a去撞F12这条线 然后区域a会弹出转到区域b
大概就是这样
突然又想到一个bug 蛋疼了




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