查看: 1780|回复: 5

[有事请教] 关于替换地图显示名称的插件代码问题

[复制链接]
梦石
0
星屑
77
在线时间
9 小时
注册时间
2020-10-23
回帖
2
发表于 2021-9-3 09:43:24 | 显示全部楼层 |阅读模式

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

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

×
最近几天在学习编写插件,我找到“切换地图时,左上角显示地图名称”功能的相关代码,并复制粘贴进行了修改。达到了在屏幕中央提示地图名称的效果。

很奇怪的是,如果我把插件命名成NewMapName.js,这个插件就会正确生效,如果我把插件命名成cfw_MapName.js,这个插件就没法正常实现效果,(直接就不显示地图名称了)但是并没有报错。
我觉得跟Sence_Map那几行代码有关,但是不知道原因以及解决方法,还希望大佬解答。


[pre lang="javascript" line="1"]/*:
@author cfw
@plugindesc 切换地图时,居中显示地图名称
@help
        切换地图时,在屏幕中央使用窗口显示当前地图名称。
        默认显示150帧。
        但是不会劫持用户操作,在显示窗口的时候可以乱跑,所以需要优化。

@param conTime
@desc 控制地图名窗口显示时间,默认150
@default 150
*/

//获取变量
Window_NewMapName.params = PluginManager.parameters('NewMapName');
Window_NewMapName.conTime = +Window_NewMapName.params['conTime']

//定义函数
function Window_NewMapName() {
    this.initialize.apply(this, arguments);
}

Window_NewMapName.prototype = Object.create(Window_Base.prototype);
Window_NewMapName.prototype.constructor = Window_NewMapName;

Window_NewMapName.prototype.initialize = function () {
    var wight = this.windowWidth();
    var height = this.windowHeight();
    var x = this.windowX();
    var y = this.windowY();
    Window_Base.prototype.initialize.call(this, x, y, wight, height);
    this.opacity = 0;
    this.contentsOpacity = 0;
    this._showCount = 0;
    this.refresh();
};

Window_NewMapName.prototype.windowX = function () {
    var width = this.windowWidth();
    x = (816 - width) / 2
    return x;
}

Window_NewMapName.prototype.windowY = function () {
    var height = this.windowHeight();
    y = (624 - height) / 2
    return y;
}

Window_NewMapName.prototype.windowWidth = function () {
    return 360;
};

Window_NewMapName.prototype.windowHeight = function () {
    return this.fittingHeight(1);
};

Window_NewMapName.prototype.update = function () {
    Window_Base.prototype.update.call(this);
    if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) {
        this.updateFadeIn();
        this._showCount--;
    } else {
        this.updateFadeOut();
    }
};

Window_NewMapName.prototype.updateFadeIn = function () {
    this.contentsOpacity += 16;
    this.opacity += 16;
};

Window_NewMapName.prototype.updateFadeOut = function () {
    this.contentsOpacity -= 16;
    this.opacity -= 16;
};

Window_NewMapName.prototype.open = function () {
    this.refresh();
    this._showCount = Window_NewMapName.conTime;
};

Window_NewMapName.prototype.close = function () {
    this._showCount = 0;
};

Window_NewMapName.prototype.refresh = function () {
    this.contents.clear();
    if ($gameMap.displayName()) {
        var width = this.contentsWidth();
        this.drawText($gameMap.displayName(), 0, 0, width, 'center');
    }
};
//对rpg_scenes.js中Scene_Map进行修改,启用cfw_MapName
Scene_Map.prototype.createDisplayObjects = function () {
    this.createSpriteset();
    this.createNewMapNameWindow();
    this.createWindowLayer();
    this.createAllWindows();
};

Scene_Map.prototype.createNewMapNameWindow = function () {
    this._mapNameWindow = new Window_NewMapName();
    this.addChild(this._mapNameWindow);
};[/pre]
梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-9-3 09:56:57 | 显示全部楼层
跟这一行有关:
Window_NewMapName.params = PluginManager.parameters('NewMapName');

楼主如果修改插件文件名,一定要同步修改这个参数才行的
回复

使用道具 举报

梦石
0
星屑
77
在线时间
9 小时
注册时间
2020-10-23
回帖
2
 楼主| 发表于 2021-9-3 10:05:49 | 显示全部楼层
RyanYe 发表于 2021-9-3 09:56
跟这一行有关:
Window_NewMapName.params = PluginManager.parameters('NewMapName');

我淦,原来是这个原因,谢谢老哥!
还想请教下,,如果在显示窗口的时候劫持用户操作呢。。我想达到等待地图名提示消失后才能操作人物的效果
回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-9-3 22:27:00 | 显示全部楼层
caofan2020 发表于 2021-9-3 10:05
我淦,原来是这个原因,谢谢老哥!
还想请教下,,如果在显示窗口的时候劫持用户操作呢。。我想 ...

那样玩家不得烦死你啊
你确定要这样设计吗?
回复

使用道具 举报

梦石
0
星屑
77
在线时间
9 小时
注册时间
2020-10-23
回帖
2
 楼主| 发表于 2021-9-3 23:18:43 | 显示全部楼层
RyanYe 发表于 2021-9-3 22:27
那样玩家不得烦死你啊
你确定要这样设计吗?

没事的,做个怀旧向游戏。。问题不大。。
就想类似于文本窗口,只对回车键生效。
我想让这个窗口会缓慢淡出,然后按回车键的话会提前消失。。
回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-9-4 11:09:00 | 显示全部楼层
caofan2020 发表于 2021-9-3 23:18
没事的,做个怀旧向游戏。。问题不大。。
就想类似于文本窗口,只对回车键生效。
我想让这个窗口 ...

如果你要使用回车键的话,那就不能用这个插件了
可以使用yep的YEP_ButtonCommonEvents和SRD的SRD_HUDMaker

我先默认楼主听说过这2个插件,就不做过多解释了哈
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部