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

Project1

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

[有事请教] 想请教一下如何制作二周目或者多周目要素

[复制链接]

Lv1.梦旅人

梦石
0
星屑
146
在线时间
22 小时
注册时间
2023-6-23
帖子
3
跳转到指定楼层
1
发表于 2023-7-1 14:57:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想在二周目加入新的NPC或者对话,或者说要二周目才能打开的房间等等与一周目区别。想请教各位想在MZ做到这样的效果可以通过什么方式实现吗?是否有相关的插件或者脚本可以直接做到二周目效果?

Lv2.观梦者

梦石
0
星屑
664
在线时间
100 小时
注册时间
2022-1-3
帖子
66
2
发表于 2023-7-1 18:11:43 | 只看该作者
我听说有二周目脚本,但是我自己没用过。

我是这么做二周目的,我在论坛下载了一个插件, 叫做全局变量(还是全局开关来着?),你可以在论坛搜索一下。就是说,这个变量\开关,一旦打开,在任何情况下都会生效,哪怕你重启游戏也是一样。所以我在结局的时候,给变量赋值。然后每次游戏开局判定,这个变量是否大于1.这样还可以做出来,让玩家知道自己打了几周目2333
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7289
在线时间
475 小时
注册时间
2021-12-4
帖子
514
3
发表于 2023-7-1 18:57:38 | 只看该作者
https://rpg.blue/forum.php?mod=r ... amp;fromuid=2731820
可以参考我曾经的一个回答,核心思路就是利用ConfigManager相关代码来追加【第五音量】这样的全局量。
  1. //-----------------------------------------------------------------------------
  2. // ConfigManager
  3. //
  4. // The static class that manages the configuration data.

  5. function ConfigManager() {
  6.     throw new Error("This is a static class");
  7. }

  8. ConfigManager.alwaysDash = false;
  9. ConfigManager.commandRemember = false;
  10. ConfigManager.touchUI = true;
  11. ConfigManager._isLoaded = false;

  12. Object.defineProperty(ConfigManager, "bgmVolume", {
  13.     get: function() {
  14.         return AudioManager._bgmVolume;
  15.     },
  16.     set: function(value) {
  17.         AudioManager.bgmVolume = value;
  18.     },
  19.     configurable: true
  20. });

  21. Object.defineProperty(ConfigManager, "bgsVolume", {
  22.     get: function() {
  23.         return AudioManager.bgsVolume;
  24.     },
  25.     set: function(value) {
  26.         AudioManager.bgsVolume = value;
  27.     },
  28.     configurable: true
  29. });

  30. Object.defineProperty(ConfigManager, "meVolume", {
  31.     get: function() {
  32.         return AudioManager.meVolume;
  33.     },
  34.     set: function(value) {
  35.         AudioManager.meVolume = value;
  36.     },
  37.     configurable: true
  38. });

  39. Object.defineProperty(ConfigManager, "seVolume", {
  40.     get: function() {
  41.         return AudioManager.seVolume;
  42.     },
  43.     set: function(value) {
  44.         AudioManager.seVolume = value;
  45.     },
  46.     configurable: true
  47. });

  48. ConfigManager.load = function() {
  49.     StorageManager.loadObject("config")
  50.         .then(config => this.applyData(config || {}))
  51.         .catch(() => 0)
  52.         .then(() => {
  53.             this._isLoaded = true;
  54.             return 0;
  55.         })
  56.         .catch(() => 0);
  57. };

  58. ConfigManager.save = function() {
  59.     StorageManager.saveObject("config", this.makeData());
  60. };

  61. ConfigManager.isLoaded = function() {
  62.     return this._isLoaded;
  63. };

  64. ConfigManager.makeData = function() {
  65.     const config = {};
  66.     config.alwaysDash = this.alwaysDash;
  67.     config.commandRemember = this.commandRemember;
  68.     config.touchUI = this.touchUI;
  69.     config.bgmVolume = this.bgmVolume;
  70.     config.bgsVolume = this.bgsVolume;
  71.     config.meVolume = this.meVolume;
  72.     config.seVolume = this.seVolume;
  73.     return config;
  74. };

  75. ConfigManager.applyData = function(config) {
  76.     this.alwaysDash = this.readFlag(config, "alwaysDash", false);
  77.     this.commandRemember = this.readFlag(config, "commandRemember", false);
  78.     this.touchUI = this.readFlag(config, "touchUI", true);
  79.     this.bgmVolume = this.readVolume(config, "bgmVolume");
  80.     this.bgsVolume = this.readVolume(config, "bgsVolume");
  81.     this.meVolume = this.readVolume(config, "meVolume");
  82.     this.seVolume = this.readVolume(config, "seVolume");
  83. };

  84. ConfigManager.readFlag = function(config, name, defaultValue) {
  85.     if (name in config) {
  86.         return !!config[name];
  87.     } else {
  88.         return defaultValue;
  89.     }
  90. };

  91. ConfigManager.readVolume = function(config, name) {
  92.     if (name in config) {
  93.         return Number(config[name]).clamp(0, 100);
  94.     } else {
  95.         return 100;
  96.     }
  97. };
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
146
在线时间
22 小时
注册时间
2023-6-23
帖子
3
4
 楼主| 发表于 2023-7-1 19:21:40 | 只看该作者
ex悠米桑 发表于 2023-7-1 18:11
我听说有二周目脚本,但是我自己没用过。

我是这么做二周目的,我在论坛下载了一个插件, 叫做全局变量( ...

原来如此,很感谢您的经验分享!学习到了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
146
在线时间
22 小时
注册时间
2023-6-23
帖子
3
5
 楼主| 发表于 2023-7-1 19:24:16 | 只看该作者
小秋橙 发表于 2023-7-1 18:57
https://rpg.blue/forum.php?mod=redirect&goto=findpost&ptid=491557&pid=2962625&fromuid=2731820
可以参 ...

!非常感谢您!我试试!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 21:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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