Project1

标题: 现在我们来看看如何在MV中开启控制台 [打印本页]

作者: a386881    时间: 2017-10-23 06:04
标题: 现在我们来看看如何在MV中开启控制台
嗯众所周知,MV的Game.exe本质上是一个包了一层厚厚的套子的nwjs.exe今天翻阅MV源码的时候偶然看到这么几行


大体上意思就是如果环境是nwjs,并且运行参数中有test,那么就可以按F8开控制台。
那么如何判断命令参数中有test呢


答案是简单粗暴地把location.search去掉第一个字符,然后按照&做分割切开,依次判断是否有一项是test。
十分粗暴,可以优化。不过想想命令行一般也不会太长所以也不是很要紧。但这不是我们今天讲的内容。

我们很轻易地就能知道浏览器环境中,只要你index.html?test就可以了(虽然因为浏览器环境并不是nwjs所以无法呼出控制台。不过如果你浏览器还不自带控制台,赶紧换Firefox吧)
但是如果用Game.exe该怎么办呢。

我们很自然地知道,RMMV的编辑器的测试游戏肯定是test模式的,并且试了试确实是。
那么我写一个程序,伪装成Game.exe,然后读取一切能读取的输入(包括命令行和stdin),不就知道是编辑器是怎么操控了么。
逻辑很简单。


然后塞进来,别忘了备份原来的。



然后随便开个工程,按测试


结果如上
什么意思呢
就是说,其实可以用--url作为命令行参数去操Game.exe,从而强行指定url。
理想很丰满,事实呢?我们可以实验一下
将你steam库中的某个RMMV游戏([line]比方说material girl[/line])的启动选项设置为
--url=file:///www/index.html?test
然后运行
你就可以按F8呼出控制台了。
然后你就可以为所欲为为所欲为了。
嘛那就来个最简单实惠的应用吧
控制台输入
$gameParty._gold = 99999999;
然后你发现你很多钱
就是这样。
顺带,那个呼出控制台的代码,是rmmv官方自带的没错啦,但是那些开发游戏的人是真的不会去翻源码诶。
反正如果我开游戏坑的话是不会乐意让玩家改改命令行参数就能开控制台debug啦XD





作者: fux2    时间: 2017-10-23 07:47
这倒是很早就被发现的一个问题,在库文件里把这段呼出代码去掉可以初步避免。
另外windows上
  1. wmic process where caption="Game.exe" get caption,commandline /value
复制代码


命令行就能获得参数
作者: a386881    时间: 2017-10-23 09:10
fux2 发表于 2017-10-23 07:47
这倒是很早就被发现的一个问题,在库文件里把这段呼出代码去掉可以初步避免。
另外windows上

先膜鸡巨。。嘛库里留个测试功能倒是没什么,但是库里留个测试功能并且调调命令行参数就能进去就有点说不太过去了。
另外wmic似乎是检索了所有运行时的进程然后比对程序文件名,然后加载命令行?看起来好厉害啊,完全没想过还有这种东西。。。
作者: Sheoldred    时间: 2017-10-23 12:18
想起了以前的游戏可以用命令行参数进入开挂模式……有无敌的,有开坐标的(对我其实在说幻世录)
也有单纯的用参数来控制是否窗口化。

毕竟也是方便调试了吧。
至于会不会有玩家如此这般摆弄,好像关系不是很大。
就连很多3A大作都是一个~号直接开启控制台……

不过这样一看,不知前几作的exe是否也是这么操作的?
作者: 死伤殆尽    时间: 2017-10-23 21:19
前几作也是给Game.exe直接加运行参数进测试模式啊,这个是传统,是传统啦,不能丢的
另外好好做游戏比想方设法怼玩家重要啦
作者: tuanzi_awa    时间: 2023-11-28 11:49
我的MV/MZ好像用不了这招,--url没用,换chrome-extension url也没用,我直接改了main.js往里在const main=new Main();前写了一句location.href="chrome-extension://xxxxxxxx/index.html?test"




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