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

Project1

 找回密码
 注册会员
搜索
查看: 5816|回复: 8
打印 上一主题 下一主题

[原创发布] 现在我们来看看如何在MV中开启控制台

[复制链接]

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
跳转到指定楼层
1
发表于 2017-10-23 06:04:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
嗯众所周知,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游戏(
)的启动选项设置为
--url=file:///www/index.html?test
然后运行
你就可以按F8呼出控制台了。
然后你就可以为所欲为为所欲为了。
嘛那就来个最简单实惠的应用吧
控制台输入
$gameParty._gold = 99999999;
然后你发现你很多钱
就是这样。
顺带,那个呼出控制台的代码,是rmmv官方自带的没错啦,但是那些开发游戏的人是真的不会去翻源码诶。
反正如果我开游戏坑的话是不会乐意让玩家改改命令行参数就能开控制台debug啦XD




不行了我得去找只猫吸一吸,你们先聊着别等我了

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39602
在线时间
7482 小时
注册时间
2009-7-6
帖子
13482

开拓者贵宾

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


命令行就能获得参数
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
3
 楼主| 发表于 2017-10-23 09:10:43 | 只看该作者
fux2 发表于 2017-10-23 07:47
这倒是很早就被发现的一个问题,在库文件里把这段呼出代码去掉可以初步避免。
另外windows上

先膜鸡巨。。嘛库里留个测试功能倒是没什么,但是库里留个测试功能并且调调命令行参数就能进去就有点说不太过去了。
另外wmic似乎是检索了所有运行时的进程然后比对程序文件名,然后加载命令行?看起来好厉害啊,完全没想过还有这种东西。。。

点评

推荐 System Essentials 系列的 Process Explorer ~ 对付进程的很好用的一个小工具。  发表于 2017-10-23 18:28
起初我也不知道wmic的存在,还是靠spy++获得运行中进程的运行参数,后来某天想查实现方法的时候发现了wmic。  发表于 2017-10-23 17:06
不行了我得去找只猫吸一吸,你们先聊着别等我了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
116
在线时间
8 小时
注册时间
2017-10-21
帖子
22
4
发表于 2017-10-23 12:18:41 | 只看该作者
想起了以前的游戏可以用命令行参数进入开挂模式……有无敌的,有开坐标的(对我其实在说幻世录)
也有单纯的用参数来控制是否窗口化。

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

不过这样一看,不知前几作的exe是否也是这么操作的?

点评

MV和前几代好像用的是不同的东西?  发表于 2017-10-23 12:37
言语是谎言与混乱的温床,那么,你听到我的低语了吗。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
11937
在线时间
2758 小时
注册时间
2008-11-23
帖子
2577

开拓者贵宾

5
发表于 2017-10-23 21:19:36 | 只看该作者
前几作也是给Game.exe直接加运行参数进测试模式啊,这个是传统,是传统啦,不能丢的
另外好好做游戏比想方设法怼玩家重要啦
I'm the bone of my Second Grade.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
7
在线时间
0 小时
注册时间
2023-11-28
帖子
1
6
发表于 2023-11-28 11:49:28 | 只看该作者
我的MV/MZ好像用不了这招,--url没用,换chrome-extension url也没用,我直接改了main.js往里在const main=new Main();前写了一句location.href="chrome-extension://xxxxxxxx/index.html?test"
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-19 19:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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