查看: 5249|回复: 2

[搬运汉化] taroxd的ULDS脚本机翻汉化

[复制链接]
梦石
0
星屑
78
在线时间
602 小时
注册时间
2012-4-20
回帖
572
发表于 2015-12-27 11:04:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 星月铃音 于 2015-12-27 14:46 编辑

首先,@taroxd 艾特原作者。希望您对我的机械翻译不会感到反感。如果有意见的话,我会撤掉这些内容Orz。
另外,这里的程序是按照原程序直接机械翻译,我只是进行了一定的顺序修改,只用作参考。如果有啥错误我不负责。
如果使用就说明你同意我不负责这点了哦。以下是插件
插件[pre lang="javascript" line="0" file="ULDS.js"]//=============================================================================
// ULDS.js
//=============================================================================

/*:
* @plugindesc 无限图层显示系统
* @author Taroxd
*
* @param Default Path
* @desc 默认的路径在图像存储。
* @default parallaxes
*
* @param Default Z
* @desc 精灵 Z 的默认坐标。
* @default 0.5
*
* @help This plugin does not provide plugin commands.
*
* Map Note: <ulds> JSON </ulds>
* "name": 图片文件名
* "path": 图片路径 (一般是默认路径)
* "loop": true/false
*    图片是不是循环。
* "hue"/"smooth": 位图属性。
* <attribute>: 精灵的属性。
*
* 一些字符串会被当作一个值,按照公式解释。
* 在公式中, 't' 是按照帧计算。
*           's' 指 $gameSwitches.
*           'v' 指 $gameVaribles.
*
* 另外,各种辅助器可以辅助性的下定义
*
* 如果一个字符串被属性公式使用,
* 将会更新每一个帧。
*
* 另外,例如 "anchor.x"也是可以的.
*
*
* 例子:
*
* <ulds> {
*   "name": "BlueSky",
*   "x": "this.rx(t)",
*   "y": 50,
*   "loop": true
* } </ulds>
*
*/


void function() {

    var assign = Object.assign || function(target) {
        for (var i = 1; i < arguments.length; i++) {
            var source = arguments;
            for (var key in source) {
                target[key] = source[key];
            }
        }
        return target;
    };

    var SAFE_UPDATE_NAME = '__update_ulds__';
    var RE = /<ulds>([^]*?)<\/ulds>/ig;
    var parameters = PluginManager.parameters('ULDS');
    var DEFAULT_SETTINGS = {
        z: parseFloat(parameters['Default Z']),
        path: parameters['Default Path'],
        smooth: true
    };

    // Feel free to add your own helper.
    var Helper = {
        t: 0,

        // Converts a coordinate on the map to the corresponding coordinate on the screen.
        rx: function(x, scrollRate) {
            if (scrollRate == null) {
                scrollRate = $gameMap.tileWidth();
            }

            if (scrollRate === 0) {
                return x;
            } else {
                return $gameMap.adjustX(x / scrollRate) * scrollRate;
            }
        },

        ry: function(y, scrollRate) {
            if (scrollRate == null) {
                scrollRate = $gameMap.tileHeight();
            }

            if (scrollRate === 0) {
                return y;
            } else {
                return $gameMap.adjustY(y / scrollRate) * scrollRate;
            }
        },

        update: function() {
            ++this.t;
            for (var key in this) {
                if (key.startsWith(SAFE_UPDATE_NAME)) {
                    this[key](this.t, $gameSwitches, $gameVariables);
                }
            }
        }
    };

    // NOT a class constructor
    function ULDS(settings) {
        settings = assign({}, DEFAULT_SETTINGS, settings);
        var spriteClass = settings.loop ? ULDS.TilingSprite : ULDS.Sprite;
        var bitmap = ImageManager.loadBitmap('img/' + settings.path + '/',
            settings.name, settings.hue, settings.smooth);
        var sprite = new spriteClass(bitmap);

        delete settings.path;
        delete settings.name;
        delete settings.loop;
        delete settings.hue;
        delete settings.smooth;

        for (var key in settings) {
            var value = settings[key];

            if (typeof(value) === 'string') {
                // this.x = (formula)
                var code = "this." + key + "=(" + value + ")";
                sprite[SAFE_UPDATE_NAME + key] = new Function("t", "s", "v", code);
            } else {
                sprite[key] = value;
            }
        }

        return sprite;
    }

    ULDS.Sprite = function(bitmap) {
        Sprite.call(this, bitmap);
    };

    ULDS.Sprite.prototype = Object.create(Sprite.prototype);
    ULDS.Sprite.prototype.constructor = ULDS.Sprite;
    assign(ULDS.Sprite.prototype, Helper);

    ULDS.TilingSprite = function(bitmap) {
        TilingSprite.call(this, bitmap);
        bitmap.addLoadListener(function() {
            this.move(0, 0, bitmap.width, bitmap.height);
        }.bind(this));
    };

    ULDS.TilingSprite.prototype = Object.create(TilingSprite.prototype);
    ULDS.TilingSprite.prototype.constructor = ULDS.TilingSprite;
    assign(ULDS.TilingSprite.prototype, Helper);

    Object.defineProperties(ULDS.TilingSprite.prototype, {
        x: {
            get: function() { return -this.origin.x; },
            set: function(x) { this.origin.x = -x; }
        },
        y: {
            get: function() { return -this.origin.y; },
            set: function(y) { this.origin.y = -y; }
        }
    });

    var ct = Spriteset_Map.prototype.createTilemap;
    Spriteset_Map.prototype.createTilemap = function() {
        ct.call(this);
        var match;
        while ((match = RE.exec($dataMap.note)) !== null) {
            var settings = null;
            try {
                settings = JSON.parse(match[1]);
            } catch (e) {
                console.error(e);
                console.log(match[1]);
            }
            if (settings !== null) {
                this._tilemap.addChild(ULDS(settings));
            }
        }
    };
}();[/pre]

已经在程序里测试,至少能显示中文没啥问题了。。

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
铅笔描绘的思念 + 10 嗯嗯?黑人问号↓奸情?
余烬之中 + 1 既然男票不反对我就发卡了=w=

查看全部评分

https://rpg.blue/https://rpg.blue/data/attachment/album/201407/20/204500gw201w4tveh224td.png
梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-12-27 14:38:16 | 显示全部楼层
@param 后面的东西不建议翻译,它是参数名,在脚本中可能会调用到.

点评

soga。。第一次翻译有点不熟悉呢(挠头。我马上去改  发表于 2015-12-27 14:44
回复

使用道具 举报

梦石
0
星屑
65
在线时间
69 小时
注册时间
2017-1-28
回帖
55
发表于 2017-7-22 04:12:44 | 显示全部楼层
亲  在 RMMV 中 可以用 开关控制 无限图层的显示吗 ?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部