查看: 3993|回复: 3

[已经解决] 求教如何在游戏过程中增加人物特征

[复制链接]
梦石
0
星屑
1055
在线时间
247 小时
注册时间
2011-3-5
回帖
20
发表于 2016-5-10 15:44:53 | 显示全部楼层 |阅读模式

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

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

×
人物、职业等的特征只能在制作游戏时候固定下来,不能够改变吗?例如我想让一个角色在游戏中途学会“盾牌掌握”可以装备防具类型为盾牌的装备。有一种办法就是设置一个新的职业,然后改变角色职业。但是这种办法在改变特征次数多种类多的情况下就需要设置非常非常多职业了。求教各位大神,有没有神马简单的办法可以实现这个功能呢?
梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
发表于 2016-5-11 21:46:35 | 显示全部楼层
YEP的自动附加状态。

可以通过学会一个无法使用的技能来附加某状态来达到这个效果
回复

使用道具 举报

梦石
0
星屑
50
在线时间
370 小时
注册时间
2016-1-7
回帖
81
发表于 2016-5-15 21:16:43 | 显示全部楼层
以下假设玩家选用的是 5号角色
aaa1.PNG

新建事件(以下假设dataId : 5号 为允许装备小盾):
aaa.PNG

code 为装备类型的编号,
其中code : 51 是武器类型,code : 52 是防具类型。
dataId 为code的明细分类 id
详情请翻阅MV的 数据库 - 类型
QQ截图20160515210056.png
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2016-5-18 23:55:39 | 显示全部楼层
* 特徴を記述するデータベースのメモ欄に以下の通り入力してください。
*
* <TC1スイッチ:10>   // 開関[10]ON時、1番目特徴有効
* <TC1ステート:4>    // 状態[4]有効時、1番目特徴有効
* <TC1スクリプト:式> // [式]の評価結果が為true時、1番目特徴有効
* 例:<TC1スクリプト:\v[1] > 10> // 変数[1]大過10時、1番目特徴有効
*
* 2番目以後的特徴同様設定可能。


特徴の条件適用プラグイン[pre lang="javascript"]//=============================================================================
// TraitConditions.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.0.0 2016/05/18 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
* @plugindesc 特徴の条件適用プラグイン
* @author トリアコンタン
*
* @param パラメータ
* @desc パラメータ説明
* @default デフォルト値
*
* @help 特徴に条件を適用します。
* 特徴を記述するデータベースのメモ欄に以下の通り入力してください。
*
* <TC1スイッチ:10>   // スイッチ[10]がONの場合、1番目の特徴が有効になる
* <TC1ステート:4>    // ステート[4]が有効な場合、1番目の特徴が有効になる
* <TC1スクリプト:式> // [式]の評価結果がtrueの場合、1番目の特徴が有効になる
* 例:<TC1スクリプト:\v[1] > 10> // 変数[1]が10より大きい場合
*
* 2番目以降の特徴も同様に設定可能です。
*
* このプラグインにはプラグインコマンドはありません。
*
* 利用規約:
*  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
*  についても制限はありません。
*  このプラグインはもうあなたのものです。
*/

(function () {
    'use strict';
    var metaTagPrefix = 'TC';

    var getArgString = function (arg, upperFlg) {
        arg = convertEscapeCharacters(arg);
        return upperFlg ? arg.toUpperCase() : arg;
    };

    var getArgNumber = function (arg, min, max) {
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(convertEscapeCharacters(arg), 10) || 0).clamp(min, max);
    };

    var getMetaValue = function(object, name) {
        var metaTagName = metaTagPrefix + (name ? name : '');
        return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined;
    };

    var getMetaValues = function(object, names) {
        if (!Array.isArray(names)) return getMetaValue(object, names);
        for (var i = 0, n = names.length; i < n; i++) {
            var value = getMetaValue(object, names);
            if (value !== undefined) return value;
        }
        return undefined;
    };

    var convertEscapeCharacters = function(text) {
        if (text === null || text === undefined) {
            text = '';
        }
        text = text.replace(/\\/g, '\x1b');
        text = text.replace(/\x1b\x1b/g, '\\');
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
            var actor = parseInt(arguments[1]) >= 1 ? $gameActors.actor(parseInt(arguments[1])) : null;
            return actor ? actor.name() : '';
        }.bind(this));
        text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
            var actor = parseInt(arguments[1]) >= 1 ? $gameParty.members()[parseInt(arguments[1]) - 1] : null;
            return actor ? actor.name() : '';
        }.bind(this));
        text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
        return text;
    };
   
    //=============================================================================
    // Game_BattlerBase
    //  特徴に条件を設定します。
    //=============================================================================
    var _Game_BattlerBase_allTraits = Game_BattlerBase.prototype.allTraits;
    Game_BattlerBase.prototype.allTraits = function() {
        _Game_BattlerBase_allTraits.apply(this, arguments);
        return this.traitObjects().reduce(function(r, obj) {
            for (var i = 0, n = obj.traits.length; i < n; i++) {
                if (this.isValidTrait(i, obj)) r.push(obj.traits);
            }
            return r;
        }.bind(this), []);
    };

    Game_BattlerBase.prototype.isValidTrait = function(i, obj) {
        var id = String(i + 1);
        var result = true;
        if (!this.isValidTraitSwitch(id , obj)) result = false;
        if (!this.isValidTraitState (id , obj)) result = false;
        if (!this.isValidTraitScript(id , obj)) result = false;
        return result;
    };

    Game_BattlerBase.prototype.isValidTraitSwitch = function(id, obj) {
        var metaValue = getMetaValues(obj, [id + 'スイッチ', id + 'Switch']);
        if (!metaValue) return true;
        return $gameSwitches.value(getArgNumber(metaValue, 1));
    };

    Game_BattlerBase.prototype.isValidTraitState = function(id, obj) {
        var metaValue = getMetaValues(obj, [id + 'ステート', id + 'State']);
        if (!metaValue) return true;
        return this.isStateAffected(getArgNumber(metaValue, 1));
    };

    Game_BattlerBase.prototype.isValidTraitScript = function(id, obj) {
        var metaValue = getMetaValues(obj, [id + 'スクリプト', id + 'Script']);
        if (!metaValue) return true;
        return eval(getArgString(metaValue));
    };
})();

[/pre]
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部