查看: 2205|回复: 11

[有事请教] 如何在等级和经验值的位置按队友显示不同的自定义变量

[复制链接]
梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
回帖
80
发表于 2024-3-16 23:50:45 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 MichaelPolo 于 2024-3-16 23:57 编辑

我现在的游戏,用不到等级,改成了年龄,用不到经验值,改成了声望,我想按不同队友显示不同的年龄变量和声望变量,应该如何修改rmmz_objects.js文件?
在Game_Actor类里的哪里可以添加绑定actor的新的属性?
目前游戏的效果图如下(年龄我还没去改,今天把下一等级经验值给删掉了,声望这块目前做到了所有队员共用一个变量<修改了rmmz_windows.js文件>)

屏幕截图 2024-03-17 004901.png
《大理段素义游记》填坑中...
梦石
0
星屑
3264
在线时间
777 小时
注册时间
2023-5-18
回帖
154
发表于 2024-3-17 15:12:22 | 显示全部楼层
给每个actor绑定不同的变量不就好了,比如id为0的actor使用id为0的变量,然后在下面的方法中判断当前actor的id,返回对应id的变量值
[pre lang="JavaScript"]Window_Status.prototype.expTotalValue = function() {
    if (this._actor.isMaxLevel()) {
        return "-------";
    } else {
        return this._actor.currentExp();
    }
};[/pre]
B站:传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复

使用道具 举报

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
回帖
80
 楼主| 发表于 2024-3-17 20:31:04 | 显示全部楼层
Arrose 发表于 2024-3-17 15:12
给每个actor绑定不同的变量不就好了,比如id为0的actor使用id为0的变量,然后在下面的方法中判断当前actor ...

大佬,我改了一下脚本如下,但是好像不对,判断没有起作用,是不是语法写错了,我不太会写脚本。
我希望角色1显示变量13的数值作为声望,其他角色都返回"-------"

Window_Status.prototype.expTotalValue = function() {
if (this._actor._actorId=1) {
        return $gameVariables.value(13);
    } else {
        return "-------";
    }   
};

点评

已经搞定了,原来是if (this._actor.actorId()==1)  发表于 2024-3-17 20:48
《大理段素义游记》填坑中...
回复

使用道具 举报

梦石
0
星屑
3264
在线时间
777 小时
注册时间
2023-5-18
回帖
154
发表于 2024-3-17 21:11:12 | 显示全部楼层
本帖最后由 Arrose 于 2024-3-17 21:17 编辑
MichaelPolo 发表于 2024-3-17 20:31
大佬,我改了一下脚本如下,但是好像不对,判断没有起作用,是不是语法写错了,我不太会写脚本。
我希望 ...


=表示赋值,==会进行自动类型转换,然后才判断是否相等,===才是判断是否类型和值都相等,建议用===

还有你应该写成插件,而不是直接在MZ源码里修改,参考:https://rpgmakerofficial.com/product/mz/plugin/make/koushiki.html
B站:传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复

使用道具 举报

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
回帖
80
 楼主| 发表于 2024-3-17 23:35:41 | 显示全部楼层
Arrose 发表于 2024-3-17 21:11
=表示赋值,==会进行自动类型转换,然后才判断是否相等,===才是判断是否类型和值都相等,建议用===

还 ...

感谢指导,现在状态和技能详细里的年龄都可以分别用不同变量表示了,唯独menu界面还不行,找了半天没有头绪,应该改rmmz_windows.js里的哪一部分啊。。。

屏幕截图 2024-03-18 003233.png
《大理段素义游记》填坑中...
回复

使用道具 举报

梦石
0
星屑
3264
在线时间
777 小时
注册时间
2023-5-18
回帖
154
发表于 2024-3-18 11:29:02 | 显示全部楼层
本帖最后由 Arrose 于 2024-3-18 11:30 编辑
MichaelPolo 发表于 2024-3-17 23:35
感谢指导,现在状态和技能详细里的年龄都可以分别用不同变量表示了,唯独menu界面还不行,找了半天没有头 ...


[pre lang="JavaScript"]Window_StatusBase.prototype.drawActorLevel = function(actor, x, y) {
    this.changeTextColor(ColorManager.systemColor());
    this.drawText(TextManager.levelA, x, y, 48);
    this.resetTextColor();
    this.drawText(actor.level, x + 84, y, 36, "right");
};[/pre]
B站:传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复

使用道具 举报

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
回帖
80
 楼主| 发表于 2024-3-18 13:49:55 | 显示全部楼层
Arrose 发表于 2024-3-18 11:29
Window_StatusBase.prototype.drawActorLevel = function(actor, x, y) {
    this.changeTextColor(Colo ...

我改的就是这里,但是只能让点状态选角色后或点技能选角色后的界面里的年龄改成不同变量,刚按esc出来的那个主菜单里没法变,我现在的脚本如下:

Window_StatusBase.prototype.drawActorLevel = function(actor, x, y) {
    this.changeTextColor(ColorManager.systemColor());
    this.drawText(TextManager.levelA, x, y, 48);
    this.resetTextColor();
    if (this._actor._actorId===1) {
        this.drawText($gameVariables.value(14), x + 84, y, 36, "right");
    }
    if (this._actor._actorId===2) {
        this.drawText($gameVariables.value(15), x + 84, y, 36, "right");
    }
    if (this._actor._actorId===3) {
        this.drawText($gameVariables.value(16), x + 84, y, 36, "right");
    }
};
《大理段素义游记》填坑中...
回复

使用道具 举报

梦石
0
星屑
3264
在线时间
777 小时
注册时间
2023-5-18
回帖
154
发表于 2024-3-18 14:32:00 | 显示全部楼层
本帖最后由 Arrose 于 2024-3-18 14:38 编辑
MichaelPolo 发表于 2024-3-18 13:49
我改的就是这里,但是只能让点状态选角色后或点技能选角色后的界面里的年龄改成不同变量,刚按esc出来的 ...


你别用this._actor啊,this._actor是不存在,你的if里的条件都是false,你这个函数不是自己传了actor参数进去了,你直接用actor,

我建议你应该先去看下js的基础语法再来改插件,特别是作用域及this对象指向。
B站:传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复

使用道具 举报

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
回帖
80
 楼主| 发表于 2024-3-18 21:10:33 | 显示全部楼层
Arrose 发表于 2024-3-18 14:32
你别用this._actor啊,this._actor是不存在,你的if里的条件都是false,你这个函数不是自己传了actor参数 ...

感谢,我折腾了半天终于搞定了。
问题主要是出在我用了AltMenuScreen2MZ.js插件,这个插件管着主菜单界面的显示。
然后问题就是AltMenuScreen2MZ.js里主菜单判断角色是用index,改完现在效果和代码如下:
屏幕截图 2024-03-18 215758.png

  Window_StatusBase.prototype.drawActorLvlMV = function(actor, x, y, width) {
    this.changeTextColor(ColorManager.systemColor());
    this.drawText(TextManager.levelA, x, y, 48);
    this.resetTextColor();
    if (actor.index()===0) {
        this.drawText($gameVariables.value(14), x + 84, y, width, 'left');
    }
    if (actor.index()===1) {
        this.drawText($gameVariables.value(15), x + 84, y, width, 'left');
    }
    if (actor.index()===2) {
        this.drawText($gameVariables.value(16), x + 84, y, width, 'left');
    }
  };
《大理段素义游记》填坑中...
回复

使用道具 举报

梦石
0
星屑
3264
在线时间
777 小时
注册时间
2023-5-18
回帖
154
发表于 2024-3-18 21:36:49 | 显示全部楼层
MichaelPolo 发表于 2024-3-18 21:10
感谢,我折腾了半天终于搞定了。
问题主要是出在我用了AltMenuScreen2MZ.js插件,这个插件管着主菜单界面 ...

用actor._actorId,actorId才是数据库的角色id,

[pre lang="JavaScript"]Game_Actor.prototype.index = function() {
    return $gameParty.members().indexOf(this);
};[/pre]

你写的actor.index()获得是队列位置,如果你的角色的id是10,你怎么判断
B站:传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部