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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
帖子
85
跳转到指定楼层
1
发表于 2024-3-16 23:50:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

《大理段素义游记》填坑中...

Lv3.寻梦者

梦石
0
星屑
1021
在线时间
201 小时
注册时间
2023-5-18
帖子
104
2
发表于 2024-3-17 15:12:22 | 只看该作者
给每个actor绑定不同的变量不就好了,比如id为0的actor使用id为0的变量,然后在下面的方法中判断当前actor的id,返回对应id的变量值
JAVASCRIPT 代码复制
  1. Window_Status.prototype.expTotalValue = function() {
  2.     if (this._actor.isMaxLevel()) {
  3.         return "-------";
  4.     } else {
  5.         return this._actor.currentExp();
  6.     }
  7. };
我的B站传送门
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
帖子
85
3
 楼主| 发表于 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
《大理段素义游记》填坑中...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1021
在线时间
201 小时
注册时间
2023-5-18
帖子
104
4
发表于 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站传送门
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

还 ...

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

《大理段素义游记》填坑中...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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


JAVASCRIPT 代码复制
  1. Window_StatusBase.prototype.drawActorLevel = function(actor, x, y) {
  2.     this.changeTextColor(ColorManager.systemColor());
  3.     this.drawText(TextManager.levelA, x, y, 48);
  4.     this.resetTextColor();
  5.     this.drawText(actor.level, x + 84, y, 36, "right");
  6. };
我的B站传送门
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
222 小时
注册时间
2018-8-27
帖子
85
7
 楼主| 发表于 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");
    }
};
《大理段素义游记》填坑中...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1021
在线时间
201 小时
注册时间
2023-5-18
帖子
104
8
发表于 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站传送门
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

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


  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');
    }
  };
《大理段素义游记》填坑中...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1021
在线时间
201 小时
注册时间
2023-5-18
帖子
104
10
发表于 2024-3-18 21:36:49 | 只看该作者
MichaelPolo 发表于 2024-3-18 21:10
感谢,我折腾了半天终于搞定了。
问题主要是出在我用了AltMenuScreen2MZ.js插件,这个插件管着主菜单界面 ...

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

JAVASCRIPT 代码复制
  1. Game_Actor.prototype.index = function() {
  2.     return $gameParty.members().indexOf(this);
  3. };


你写的actor.index()获得是队列位置,如果你的角色的id是10,你怎么判断
我的B站传送门
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 00:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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