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

Project1

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

[有事请教] 如何在运行游戏的过程中生成新文件(如txt等)

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
160 小时
注册时间
2022-9-17
帖子
101
跳转到指定楼层
1
发表于 2022-10-9 22:28:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
例如,在触发NPC之后,会在Save文件夹中生成一个以1号变量数值为名称的txt文件,或者是其他后缀名的文件。

请问在事件的脚本命令中,如何去实现?

Lv3.寻梦者

梦石
0
星屑
1598
在线时间
220 小时
注册时间
2022-2-3
帖子
160
2
发表于 2022-10-10 11:39:16 | 只看该作者
你好,这个区域第一次回答,可能有很多问题。我在 rmmz_managers.js文件中有看到你需要的功能。

  1. StorageManager.fsWriteFile(StorageManager.fileDirectoryPath()+'文件名.txt','文件内容');
复制代码


目前测试能实现生成txt文件,跟txt文件的内容。
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
160 小时
注册时间
2022-9-17
帖子
101
3
 楼主| 发表于 2022-10-10 17:12:40 | 只看该作者
apple5740 发表于 2022-10-10 11:39
你好,这个区域第一次回答,可能有很多问题。我在 rmmz_managers.js文件中有看到你需要的功能。

非常感谢,经过测试,可以实现。
而且可以使用随机变量+生成txt文件的形式实现一个二周目奖励的机制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1188
在线时间
87 小时
注册时间
2022-2-5
帖子
194
4
发表于 2022-10-10 19:02:14 | 只看该作者
apple5740 发表于 2022-10-10 11:39
你好,这个区域第一次回答,可能有很多问题。我在 rmmz_managers.js文件中有看到你需要的功能。

学会了 谢谢大佬
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
160 小时
注册时间
2022-9-17
帖子
101
5
 楼主| 发表于 2022-10-10 20:59:57 | 只看该作者
apple5740 发表于 2022-10-10 11:39
你好,这个区域第一次回答,可能有很多问题。我在 rmmz_managers.js文件中有看到你需要的功能。

在rmmz_manager.js的基础上,已经实现了任意生成文件。

我想在这个帖子的基础功能上进行拓展,通过脚本命令判断是否生成了指定名称的文件。
于是我在rmmz_manager.js的找到了这一段代码。

  1. /** //检测是否存在存档文件* @param {*} saveName 保存名称*/
  2. StorageManager.exists = function(saveName) {
  3.     if (this.isLocalMode()) { //是本地单机模式(而非联网模式)?
  4.         return this.localFileExists(saveName); //检测是否已经在(有)本地(单机)文件
  5.     } else {
  6.         return this.forageExists(saveName); //检测是否已经在(有)forage(服务器里的??)文件
  7.     }
  8. };
复制代码


例如我使用下面脚本命令,在save文件夹中生成了一个finish.txt的文件。
  1. StorageManager.fsWriteFile(StorageManager.fileDirectoryPath()+'finish.txt','youFinish')
复制代码


之后我使用下面的脚本命令时,输出结果却一直是false。可以确定save文件夹中有finish.txt文件
  1. StorageManager.exists(StorageManager.fileDirectoryPath()+ 'finish.txt')
复制代码


回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1598
在线时间
220 小时
注册时间
2022-2-3
帖子
160
6
发表于 2022-10-11 06:58:37 | 只看该作者
因为这个方法,被rm包装成查找存档了。。。

  1. StorageManager.exists(StorageManager.fileDirectoryPath()+ 'finish.txt')
复制代码


/* 是否存在该存档 */
  1. StorageManager.exists = function(saveName) {
  2.     if (this.isLocalMode()) {
  3.         return this.localFileExists(saveName);
  4.     } else {
  5.         return this.forageExists(saveName);
  6.     }
  7. };
复制代码


具体可以一步一步来查看它实现的方式

  1. StorageManager.localFileExists = function(saveName) {
  2.     const fs = require("fs");
  3.     return fs.existsSync(this.filePath(saveName));
  4. };
复制代码


问题在于这里的
  1. return fs.existsSync(this.filePath(saveName));
复制代码

的 this.filePath 也就是 StorageManager.filePath,它做成必须是.rmmzsave的文件啦。

  1. StorageManager.filePath = function(saveName) {
  2.     const dir = this.fileDirectoryPath();
  3.     return dir + saveName + ".rmmzsave";
  4. };
复制代码


可以不用它的方法,自己使用node.js的fs模块

  1.     var fs = require("fs");
  2.     fs.existsSync(StorageManager.fileDirectoryPath()+ 'finish.txt');
复制代码


如果遇到rm本身的方法无法满足时,可以查询node.js的相关方法来完成它。
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
160 小时
注册时间
2022-9-17
帖子
101
7
 楼主| 发表于 2022-10-11 10:13:40 | 只看该作者
apple5740 发表于 2022-10-11 06:58
因为这个方法,被rm包装成查找存档了。。。

一语中的。
  1.     var fs = require("fs");fs.existsSync(StorageManager.fileDirectoryPath()+ 'finish.txt');
复制代码


将这个放在事件页面中的【分支条件】的脚本中,就可以得到想要的判断了。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 01:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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