楼主: 55808888

[有事请教] (已解决)能力成长果实,怎么做上限?

[复制链接]
梦石
0
星屑
5483
在线时间
712 小时
注册时间
2022-11-26
回帖
296
发表于 2023-4-17 20:13:55 | 显示全部楼层
本帖最后由 余杭 于 2023-4-17 20:37 编辑
55808888 发表于 2023-4-17 19:43
大神,在这个基础上我扩展了下设计,攻击、法攻、幸运归为一类攻击类果实,生命、防御,法防归为防御类种 ...


你需要把   .usednumber   换掉,可以把攻击类改成     .攻击果实     ,
                                                     把防御类改成     .防御果实     。
.     后面可以用中文,而且随便设定,不和其他角色函数冲突就行。
这个    角色变量     和后两行设置了什么   变量ID  没关系,你那一行    变量操作+=1    可以删掉,
一共两个   变量ID   就够用了
回复

使用道具 举报

梦石
0
星屑
1065
在线时间
103 小时
注册时间
2013-12-22
回帖
42
 楼主| 发表于 2023-4-17 22:15:06 | 显示全部楼层
余杭 发表于 2023-4-17 20:13
你需要把   .usednumber   换掉,可以把攻击类改成     .攻击果实     ,
                              ...

搞定了! 多谢!
回复

使用道具 举报

梦石
0
星屑
1728
在线时间
139 小时
注册时间
2021-5-12
回帖
34
发表于 2023-4-18 09:14:45 | 显示全部楼层
厉害厉害????。。
回复

使用道具 举报

梦石
0
星屑
4649
在线时间
570 小时
注册时间
2018-11-12
回帖
120
发表于 2023-4-18 18:36:41 | 显示全部楼层
[pre lang="javascript"]//【使用说明】
//满足下列条件的道具,在使用时受限制次数影响:
//1.道具备注栏备注<角色使用限制:x>
//2.道具范围是[我方单体];
//3.使用场合是城镇地图(战斗时会自动禁用,不用担心)。
//4.成员入队初始化时,重置该角色所有道具的使用次数。
//【举例子】
//1号道具备注:<角色使用限制:10>
//该道具对任何角色的次数限制均为10,所有角色单独计算。
//可以随时在数据库修改备注栏的限制次数,会自动同步。



var _XZScene_ItemBase_canUse = Scene_ItemBase.prototype.canUse;
Scene_ItemBase.prototype.canUse = function() {
        if (this._actorWindow && this._actorWindow.active) {
                var actor = $gameParty.members()[this._actorWindow.index()];
                var TJ = !actor.isItemXZ(this.item());
                return _XZScene_ItemBase_canUse && TJ;
        } else {
                return _XZScene_ItemBase_canUse;
        }
};

var _XZScene_Item_onItemOk = Scene_Item.prototype.onItemOk;
Scene_Item.prototype.onItemOk = function() {
        _XZScene_Item_onItemOk.call(this);
        if (this._actorWindow && this._actorWindow.active) this._actorWindow.refresh();
};

var _XZScene_Item_useItem = Scene_Item.prototype.useItem;
Scene_Item.prototype.useItem = function() {
        _XZScene_Item_useItem.call(this);
        if (this._actorWindow && this._actorWindow.active) {
                var actor = $gameParty.members()[this._actorWindow.index()];
                actor.BgItemXZ(this.item());
                this._actorWindow.refresh();
        }
};

var _XZWindow_Base_drawActorSimpleStatus = Window_Base.prototype.drawActorSimpleStatus;
Window_Base.prototype.drawActorSimpleStatus = function(actor, x, y, width) {
        _XZWindow_Base_drawActorSimpleStatus.call(this, actor, x, y, width);
        if (SceneManager._scene.constructor.name == "Scene_Item") {
                var item = SceneManager._scene.item();
                if (item && item.meta.角色使用限制) {
                        var se = actor.isItemXZ(item)?'\\c[18]':'\\c[24]';
                        var text = '\\c[16]限制使用次数:'+se+actor.ItemXZs(item)+'/'+item.meta.角色使用限制;
                        var yy = y+this.itemHeight()-this.standardFontSize()-this.spacing()*2;
                        this.drawTextEx(text, this.textPadding(), yy);
                }
        }
};

var _XZWindow_ItemList_isCurrentItemEnabled = Window_ItemList.prototype.isCurrentItemEnabled;
Window_ItemList.prototype.isCurrentItemEnabled = function() {
        if ($gameParty.inBattle() && this.item() && this.item().meta.角色使用限制) return false;
    return _XZWindow_ItemList_isCurrentItemEnabled.call(this);
};

//成员入队初始化时,重置该角色所有道具的使用次数
//不想要这个功能就删除这段代码
var _XZGame_Actor_setup = Game_Actor.prototype.setup;
Game_Actor.prototype.setup = function(actorId) {
        _XZGame_Actor_setup.call(this,actorId);
        if (this._ItemXZ) this._ItemXZ = null;
};//

Game_Actor.prototype.isItemXZ = function(item) {
        var kg = false;
        if (!item) return kg;
        if (!item.meta.角色使用限制) return kg;
        if (!this._ItemXZ) this._ItemXZ = [];
        var s = Number(item.meta.角色使用限制);
        for (var i=0;i<this._ItemXZ.length;i++) {
                var sz = this._ItemXZ;
                if (sz[0]==item.id && sz[1]>=s) kg = true;
        }
        return kg;
};

Game_Actor.prototype.ItemXZs = function(item) {
        if (item && item.meta.角色使用限制 && this._ItemXZ) {
                var bh = -1;
                for (var i=0;i<this._ItemXZ.length;i++) {
                        var sz = this._ItemXZ;
                        if (sz[0]==item.id) bh = i;
                }
                if (bh!=-1) return this._ItemXZ[bh][1];
        }
        return 0;
};

Game_Actor.prototype.BgItemXZ = function(item) {
        if (item && item.meta.角色使用限制 && !this.isItemXZ(item)) {
                var bh = -1;
                for (var i=0;i<this._ItemXZ.length;i++) {
                        var sz = this._ItemXZ;
                        if (sz[0]==item.id) bh = i;
                }
                if (bh!=-1) {
                        this._ItemXZ[bh][1]++;
                } else {
                        this._ItemXZ.push([item.id,1]);
                }
        }
};[/pre]

【使用说明】
将上述代码复制粘贴到任意插件最下面。

【效果速览】
GIF.gif

随手写的,希望对楼主有所帮助。

点评

发现个小问题,连续使用时,即使物品数量不够仍然会继续生效,比如我只有一个药品可以一直不返回一直点击使用到上限  发表于 2023-12-31 14:51
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部