查看: 5520|回复: 7

[已经解决] 关于状态窗口改造(依据角色不同自定义不同背景)的问题

[复制链接]
梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
发表于 2016-1-18 22:34:11 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 负零 于 2016-1-18 22:35 编辑

经过@夏末渐离的提示(准确说是枪手),已经解决了插入问题,但现在另外一个问题难住了,就是依据角色不同自定义不同背景。在VA上是实现的,也请各位大神指导指导。
首先以下第一段已经获取到actor(应该已经含了id,个人理解),this.draw_backg(this._actor)已经描绘背景并把this._actor传入函数。
[pre lang="javascript"]Window_Status.prototype.setActor = function(actor) {
    if (this._actor !== actor) {
        this._actor = actor;
        this.refresh();
    }
};

Window_Status.prototype.refresh = function() {
    this.contents.clear();
    if (this._actor) {
        var lineHeight = this.lineHeight();
        // this.drawBlock1(lineHeight * 0);
        this.drawHorzLine(lineHeight * 1);
        // this.drawBlock2(lineHeight * 2);
        this.drawHorzLine(lineHeight * 6);
        this.drawBlock3(lineHeight * 7);
        this.drawHorzLine(lineHeight * 13);
        this.drawBlock4(lineHeight * 14);
                this.draw_backg(this._actor);
    }
};[/pre]
绘制背景的函数,我觉得,问题应该存在于嵌入式表达this.back_sprite.bitmap=ImageManager.loadBattleback1("Status_+#{id}"); 上,但怎么试都不对,同时对应的文件夹里是有个文件的,命名为Status_2,即进入2号ID的角色的状态查看窗口,则背景自动替换成Status_2,类推,1号则Status_1,5号则Status_5。
[pre lang="javascript"]Window_Status.prototype.draw_backg = function(id)
{
    //this.contents.clear();
        this.back_sprite=new Sprite();
    this.back_sprite.bitmap=ImageManager.loadBattleback1("Status_+#{id}");
        this.addChild(this.back_sprite);
    this.addChildToBack(this.back_sprite); //or this.addChildAt(child,index);
};[/pre]
问题截图,那几串百分号是什么鬼?求教。

问题截图

问题截图
梦石
0
星屑
50
在线时间
491 小时
注册时间
2015-1-7
回帖
110
发表于 2016-1-18 22:45:06 | 显示全部楼层
有个插件可以换立绘,但它根据的是队伍位置,我也想改成根据数据库ID的

[fold]//=============================================================================
// MrTS_LuminusStatus.js
//=============================================================================

/*:
* @plugindesc Luminus Status Screen. Changes how data is displayed there.
* @author Mr. Trivel
*
* @param Short Attack
* @desc Short text for Attack
* Default: ATK
* @default ATK
*
* @param Short Defense
* @desc Short text for Defense
* Default: DEF
* @default DEF
*
* @param Short MAttack
* @desc Short text for Magical Attack
* Default: MAT
* @default MAT
*
* @param Short MDefense
* @desc Short text for MDefense
* Default: MDF
* @default MDF
*
* @param Short Agility
* @desc Short text for Agility
* Default: AGI
* @default AGI
*
* @param Short Luck
* @desc Short text for Luck
* Default: LUK
* @default LUK
*
* @help
* --------------------------------------------------------------------------------
* Free for non commercial use.
* Version 1.0
* --------------------------------------------------------------------------------
*
* --------------------------------------------------------------------------------
* Required Files
* --------------------------------------------------------------------------------
* "img\system\LuminusBackground.png" - At least as big as screen. Background.
* "img\system\LuminusStatus.png" - 348x539 - Background for stats and equipment.
* "img\system\LuminusBar.png" - 324x48 - background for equipment.
* "img\system\LuminusSeparator.png" - 327x9 - separator bar between blocks.
* "img\system\LuminusStatusName.png" - 264x70 - Status Scene name in top right.
* "img\system\LuminusActor#.png" - any preferred size. # - Actor ID
*    E.g. LuminusActor5.png would be actor's with ID 5 image.
* "img\system\LuminusBottomBar.png" - 40height, width - as big as screen.
*    Is at the very bottom of status screen. Can be used to display controls.
*
*
* --------------------------------------------------------------------------------
* Map Tags
* --------------------------------------------------------------------------------
* <LuminusBackground: [FILENAME]>
* Luminus Status Scene background is set depending on the map you're in.
* If no tag set it uses default background - "LuminusBackground".
* --------------------------------------------------------------------------------
* Version History
* --------------------------------------------------------------------------------
* 1.0 - Release
*/

(function() {

        var parameters = PluginManager.parameters('MrTS_LuminusStatus');
        var paramATK  = String(parameters['Short Attack']         || "ATK")
        var paramDEF  = String(parameters['Short Defense']         || "DEF")
        var paramMATK = String(parameters['Short MAttack']         || "MAT")
        var paramMDEF = String(parameters['Short MDefense'] || "MDF")
        var paramAGI  = String(parameters['Short Agility']         || "AGI")
        var paramLUK  = String(parameters['Short Luck']         || "LUK")

        Scene_Status.prototype.create = function() {
            Scene_MenuBase.prototype.create.call(this);
            this._statusWindow = new Window_Status();
            this._statusWindow.setHandler('cancel',   this.popScene.bind(this));
            this._statusWindow.setHandler('pagedown', this.nextActor.bind(this));
            this._statusWindow.setHandler('pageup',   this.previousActor.bind(this));
            this.addWindow(this._statusWindow);
            this.refreshActor();
        };

        Scene_Status.prototype.createBackground = function() {
            this._backgroundSprite = new Sprite();
            if ($dataMap.meta.LuminusBackground)
            {
                    var fileName = String($dataMap.meta.LuminusBackground);
                    if (fileName[0] == " ") fileName = fileName.substring(1);
                    this._backgroundSprite.bitmap = ImageManager.loadSystem(fileName);
            }
            else
                    this._backgroundSprite.bitmap = ImageManager.loadSystem("LuminusBackground");
            this.addChild(this._backgroundSprite);

            this._statusBackground = new Sprite();
            this._statusBackground.bitmap = ImageManager.loadSystem("LuminusStatus");
            this._statusBackground.x = 30;
            this._statusBackground.y = Graphics.boxHeight/2 - 540/2;
            this.addChild(this._statusBackground);

            this._actorSprite = new Sprite()
            this.addChild(this._actorSprite);

            this._barSprites = [];
            var equips = $gameActors.actor(1).equips();
            for (var i = 0; i < equips.length; i++) {
                    var sprite = new Sprite();
                    sprite.bitmap = ImageManager.loadSystem("LuminusBar");
                    sprite.x = this._statusBackground.x + 9;
                    sprite.y = this._statusBackground.y + 250 + 48*i;
                        this.addChild(sprite);
            };

            this._bottomBarSprite = new Sprite();
            this._bottomBarSprite.bitmap = ImageManager.loadSystem("LuminusBottomBar");
            this._bottomBarSprite.y = Graphics.boxHeight - 40;
            this.addChild(this._bottomBarSprite);

            this._statusName = new Sprite();
            this._statusName.bitmap = ImageManager.loadSystem("LuminusStatusName");
            var sprite = this._statusName;
            sprite.bitmap.addLoadListener(function() {
                    sprite.x = Graphics.width - sprite.width;
            });
            this.addChild(this._statusName);
        };

        Scene_Status.prototype.refreshActor = function() {
            var actor = this.actor();
            this._statusWindow.setActor(actor);
            var actorSprite = this._actorSprite;
            var statusSprite = this._statusBackground;
            
            actorSprite.bitmap = ImageManager.loadSystem("LuminusActor" + actor.actorId());
            actorSprite.bitmap.addLoadListener(function() {
                    var w = Graphics.boxWidth - statusSprite.x - statusSprite.width;
                    var x = statusSprite.x + statusSprite.width;
                    var y = Graphics.boxHeight - actorSprite.height;
                    if (y < 0) y = 0;
                    actorSprite.x = x + w/2 - actorSprite.width/2;
                    actorSprite.y = y;
            });
        };

        Window_Status.prototype.initialize = function() {
            var width = Graphics.boxWidth;
            var height = Graphics.boxHeight;
            Window_Selectable.prototype.initialize.call(this, 0, 0, width, height);
            this.refresh();
            this.activate();
            this.opacity = 0;
        };

        Window_Status.prototype.refresh = function() {
            this.contents.clear();

            var positions = [];
            var x = 30 - this.standardPadding();

            if (this._actor) {
                    var actor = this._actor;
                var lineHeight = this.lineHeight();
                
                var y = Graphics.boxHeight/2 - 540/2 - this.standardPadding() + 8;
                var mw = 348/2;
                this.drawText(TextManager.levelA, x + 9, y);
                this.drawText(actor.level, x, y, mw - 6, 'right');
                this.drawText(actor.name(), x + mw, y, mw, 'center');

                y += lineHeight;
                this.drawText(TextManager.exp, x + 9, y, mw - 6);
                var exp = (actor.currentExp()-actor.currentLevelExp()) + "/" + (actor.nextLevelExp()-actor.currentLevelExp());
                this.drawText(exp, x, y, mw*2-12, 'right');

                y += lineHeight;
                this.drawText(TextManager.hpA, x + 9, y);
                var hp = actor.hp + "/" + actor.mhp;
                var whp = this.textWidth(hp);
                this.drawText(hp, x, y, mw - 6, 'right');
                this.drawText(TextManager.mpA, x + mw + 6, y);
                var mp = actor.mp + "/" + actor.mmp;
                this.drawText(mp, mw, y, mw, 'right');

                y += lineHeight;
                positions.push(y)
                
                y += lineHeight/3;
                var sw = mw  - this.textWidth(paramATK);
                var swx = this.textWidth(paramATK);
                this.drawText(paramATK, x + 9, y);
                this.drawText(actor.atk, x + swx, y, sw, 'center');
                this.drawText(paramDEF, x + mw + 6, y);
                this.drawText(actor.def, mw + swx, y, sw, 'center');

                y += lineHeight;
                this.drawText(paramMATK, x + 9, y);
                this.drawText(actor.mat, x + swx, y, sw, 'center');
                this.drawText(paramMDEF, x + mw + 6, y);
                this.drawText(actor.mdf, mw + swx, y, sw, 'center');

                y += lineHeight;
                this.drawText(paramAGI, x + 9, y);
                this.drawText(actor.agi, x + swx, y, sw, 'center');
                this.drawText(paramLUK, x + mw + 6, y);
                this.drawText(actor.luk, mw + swx, y, sw, 'center');

                y += lineHeight;
                positions.push(y);

                y += lineHeight/3+2;
                var equips = this._actor.equips();
                    var count = Math.min(equips.length, this.maxEquipmentLines());
                    for (var i = 0; i < count; i++) {
                            this.drawItemName(equips, x + 18, y + 48 * i + 6);
                    }
            }

            var bitmapSeparator = ImageManager.loadSystem("LuminusSeparator");
            var c = this.contents;
            bitmapSeparator.addLoadListener(function() {
                    for (var i = 0; i < positions.length; i ++)
                            c.blt(bitmapSeparator, 0, 0, bitmapSeparator.width, bitmapSeparator.height, x + 9, positions);
            });
        };

        Window_Status.prototype.drawVertLine = function(x) {
            this.contents.paintOpacity = 48;
            this.contents.fillRect(x, 0, 2, this.contentsHeight(), this.lineColor());
            this.contents.paintOpacity = 255;
        };
})();[/fold]
回复

使用道具 举报

梦石
0
星屑
80
在线时间
386 小时
注册时间
2007-7-27
回帖
4075

开拓者

发表于 2016-1-19 03:25:05 | 显示全部楼层
转义符啊
比如空格就是%20
为了防止麻烦,保持文件名里面只有大小写英文和数字和下划线就没有这种烦恼了……
吸吸
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-1-19 04:26:42 | 显示全部楼层
[pre lang="javascript"]/*:
*@plugindesc        给角色简单的增加自己的背景。
@author        - -
@param       
@desc       
@default       
*@help        例如一号角色叫’哈罗德‘,则在img\battlebacks1文件下放一张命名为
*Status_哈罗德.png的图片作为角色背景图 ,默认透明度140
*/



(function() {



Window_Status.prototype = Object.create(Window_Selectable.prototype);
Window_Status.prototype.constructor = Window_Status;

Window_Status.prototype.initialize = function() {
    var width = Graphics.boxWidth;
    var height = Graphics.boxHeight;
    Window_Selectable.prototype.initialize.call(this, 0, 0, width, height);
    this.refresh();
    this.activate();
};



Window_Status.prototype.setActor = function(actor) {
    if (this._actor !== actor) {
        this._actor = actor;
//=====================================================
                this.removeChild(this.backSprite2);
//=====================================================
        this.refresh();
    }
};


               
Window_Status.prototype.refresh = function() {
    this.contents.clear();
    if (this._actor) {
        var lineHeight = this.lineHeight();
        this.drawBlock1(lineHeight * 0);
        this.drawHorzLine(lineHeight * 1);
        this.drawBlock2(lineHeight * 2);
        this.drawHorzLine(lineHeight * 6);
        this.drawBlock3(lineHeight * 7);
        this.drawHorzLine(lineHeight * 13);
        this.drawBlock4(lineHeight * 14);
//=========================================================================
                var bitm='Status_'+this._actor.name();//读取 Status_角色名 图片
                this.backSprite2 = new Sprite(ImageManager.loadBattleback1(bitm));
            this.backSprite2.opacity=140;//透明度设置
            this.addChild(this.backSprite2);
//=========================================================================
    };
};

Window_Status.prototype.drawBlock1 = function(y) {
    this.drawActorName(this._actor, 6, y);
    this.drawActorClass(this._actor, 192, y);
    this.drawActorNickname(this._actor, 432, y);
};

Window_Status.prototype.drawBlock2 = function(y) {
    this.drawActorFace(this._actor, 12, y);
    this.drawBasicInfo(204, y);
    this.drawExpInfo(456, y);
};

Window_Status.prototype.drawBlock3 = function(y) {
    this.drawParameters(48, y);
    this.drawEquipments(432, y);
};

Window_Status.prototype.drawBlock4 = function(y) {
    this.drawProfile(6, y);
};

Window_Status.prototype.drawHorzLine = function(y) {
    var lineY = y + this.lineHeight() / 2 - 1;
    this.contents.paintOpacity = 48;
    this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor());
    this.contents.paintOpacity = 255;
};

Window_Status.prototype.lineColor = function() {
    return this.normalColor();
};

Window_Status.prototype.drawBasicInfo = function(x, y) {
    var lineHeight = this.lineHeight();
    this.drawActorLevel(this._actor, x, y + lineHeight * 0);
    this.drawActorIcons(this._actor, x, y + lineHeight * 1);
    this.drawActorHp(this._actor, x, y + lineHeight * 2);
    this.drawActorMp(this._actor, x, y + lineHeight * 3);
};

Window_Status.prototype.drawParameters = function(x, y) {
    var lineHeight = this.lineHeight();
    for (var i = 0; i < 6; i++) {
        var paramId = i + 2;
        var y2 = y + lineHeight * i;
        this.changeTextColor(this.systemColor());
        this.drawText(TextManager.param(paramId), x, y2, 160);
        this.resetTextColor();
        this.drawText(this._actor.param(paramId), x + 160, y2, 60, 'right');
    }
};

Window_Status.prototype.drawExpInfo = function(x, y) {
    var lineHeight = this.lineHeight();
    var expTotal = TextManager.expTotal.format(TextManager.exp);
    var expNext = TextManager.expNext.format(TextManager.level);
    var value1 = this._actor.currentExp();
    var value2 = this._actor.nextRequiredExp();
    if (this._actor.isMaxLevel()) {
        value1 = '-------';
        value2 = '-------';
    }
    this.changeTextColor(this.systemColor());
    this.drawText(expTotal, x, y + lineHeight * 0, 270);
    this.drawText(expNext, x, y + lineHeight * 2, 270);
    this.resetTextColor();
    this.drawText(value1, x, y + lineHeight * 1, 270, 'right');
    this.drawText(value2, x, y + lineHeight * 3, 270, 'right');
};

Window_Status.prototype.drawEquipments = function(x, y) {
    var equips = this._actor.equips();
    var count = Math.min(equips.length, this.maxEquipmentLines());
    for (var i = 0; i < count; i++) {
        this.drawItemName(equips, x, y + this.lineHeight() * i);
    }
};

Window_Status.prototype.drawProfile = function(x, y) {
    this.drawTextEx(this._actor.profile(), x, y);
};

Window_Status.prototype.maxEquipmentLines = function() {
    return 6;
};

})();[/pre]

1.png 2.png

点评

额,我已经尽力了,脑洞不行  发表于 2016-1-19 22:22
马蛋,自己看这句式和问句都不太舒服,不好意思。就是求指导的意思。  发表于 2016-1-19 18:11
求指导。  发表于 2016-1-19 17:37
设置255不透明的时候,还有一点透明?另外,数值描绘的Z轴小于背景?  发表于 2016-1-19 17:37

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
 楼主| 发表于 2016-1-19 17:22:32 | 显示全部楼层
感谢楼上,我先试试。

点评

你弄好教教我  发表于 2016-1-19 22:21
回复

使用道具 举报

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
 楼主| 发表于 2016-1-24 12:19:17 | 显示全部楼层
夜狠简单 发表于 2016-1-19 04:26
/*:
*@plugindesc        给角色简单的增加自己的背景。
@author        - -

已经弄好
  1. //-----------------------------------------------------------------------------
  2. // Window_Status
  3. //
  4. // The window for displaying full status on the status screen.

  5. function Window_Status() {
  6.     this.initialize.apply(this, arguments);
  7. }

  8. Window_Status.prototype = Object.create(Window_Selectable.prototype);
  9. Window_Status.prototype.constructor = Window_Status;

  10. Window_Status.prototype.initialize = function() {
  11.     var width = Graphics.boxWidth;
  12.     var height = Graphics.boxHeight;
  13.     Window_Selectable.prototype.initialize.call(this, 0, 0, width, height);
  14.         this.opacity = 0;
  15.     this.refresh();
  16.     this.activate();
  17. };

  18. Window_Status.prototype.setActor = function(actor) {
  19.     if (this._actor !== actor) {
  20.         this._actor = actor;
  21.                 this.removeChild(this.backSprite2);
  22.         this.refresh();
  23.     }
  24. };

  25. Window_Status.prototype.refresh = function() {
  26.     this.contents.clear();
  27.     if (this._actor) {
  28.         var lineHeight = this.lineHeight();
  29.         // this.drawBlock1(lineHeight * 0);
  30.         this.drawHorzLine(lineHeight * 1);
  31.         // this.drawBlock2(lineHeight * 2);
  32.         this.drawHorzLine(lineHeight * 6);
  33.         this.drawBlock3(lineHeight * 7);
  34.         this.drawHorzLine(lineHeight * 13);
  35.         this.drawBlock4(lineHeight * 14);
  36.                 this.draw_backg();
  37.                 // =========================================
  38.                                 // var bitm='Status_'+this._actor.name();//读取 Status_角色名 图片
  39.                 // this.backSprite2 = new Sprite(ImageManager.loadBattleback1(bitm));
  40.             // this.backSprite2.opacity=255;//透明度设置
  41.             // this.addChild(this.backSprite2);
  42.                         // =========================================
  43.     }
  44. };

  45. Window_Status.prototype.drawBlock1 = function(y) {
  46.     this.drawActorName(this._actor, 6, y);
  47.     this.drawActorClass(this._actor, 192, y);
  48.     this.drawActorNickname(this._actor, 432, y);
  49. };

  50. Window_Status.prototype.drawBlock2 = function(y) {
  51.     this.drawActorFace(this._actor, 12, y);
  52.     this.drawBasicInfo(204, y);
  53.     this.drawExpInfo(456, y);
  54. };

  55. Window_Status.prototype.drawBlock3 = function(y) {
  56.     this.drawParameters(48, y);
  57.     // this.drawEquipments(432, y);
  58. };

  59. Window_Status.prototype.drawBlock4 = function(y) {
  60.     this.drawProfile(6, y);
  61. };

  62. Window_Status.prototype.drawHorzLine = function(y) {
  63.     var lineY = y + this.lineHeight() / 2 - 1;
  64.     this.contents.paintOpacity = 48;
  65.     this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor());
  66.     this.contents.paintOpacity = 255;
  67. };

  68. Window_Status.prototype.lineColor = function() {
  69.     return this.normalColor();
  70. };

  71. Window_Status.prototype.drawBasicInfo = function(x, y) {
  72.     var lineHeight = this.lineHeight();
  73.     this.drawActorLevel(this._actor, x, y + lineHeight * 0);
  74.     this.drawActorIcons(this._actor, x, y + lineHeight * 1);
  75.     this.drawActorHp(this._actor, x, y + lineHeight * 2);
  76.     this.drawActorMp(this._actor, x, y + lineHeight * 3);
  77. };

  78. Window_Status.prototype.drawParameters = function(x, y) {
  79.     var lineHeight = this.lineHeight();
  80.     for (var i = 0; i < 6; i++) {
  81.         var paramId = i + 2;
  82.         var y2 = y + lineHeight * i;
  83.         this.changeTextColor(this.systemColor());
  84.         this.drawText(TextManager.param(paramId), x, y2, 160);
  85.         this.resetTextColor();
  86.         this.drawText(this._actor.param(paramId), x + 160, y2, 60, 'right');
  87.     }
  88. };

  89. Window_Status.prototype.drawExpInfo = function(x, y) {
  90.     var lineHeight = this.lineHeight();
  91.     var expTotal = TextManager.expTotal.format(TextManager.exp);
  92.     var expNext = TextManager.expNext.format(TextManager.level);
  93.     var value1 = this._actor.currentExp();
  94.     var value2 = this._actor.nextRequiredExp();
  95.     if (this._actor.isMaxLevel()) {
  96.         value1 = '-------';
  97.         value2 = '-------';
  98.     }
  99.     this.changeTextColor(this.systemColor());
  100.     this.drawText(expTotal, x, y + lineHeight * 0, 270);
  101.     this.drawText(expNext, x, y + lineHeight * 2, 270);
  102.     this.resetTextColor();
  103.     this.drawText(value1, x, y + lineHeight * 1, 270, 'right');
  104.     this.drawText(value2, x, y + lineHeight * 3, 270, 'right');
  105. };

  106. Window_Status.prototype.drawEquipments = function(x, y) {
  107.     var equips = this._actor.equips();
  108.     var count = Math.min(equips.length, this.maxEquipmentLines());
  109.     for (var i = 0; i < count; i++) {
  110.         this.drawItemName(equips[i], x, y + this.lineHeight() * i);
  111.     }
  112. };

  113. Window_Status.prototype.drawProfile = function(x, y) {
  114.     this.drawTextEx(this._actor.profile(), x, y);
  115. };

  116. Window_Status.prototype.maxEquipmentLines = function() {
  117.     return 6;
  118. };

  119. Window_Status.prototype.draw_backg = function()
  120. {
  121.     var bitm='Status_'+this._actor.name();//读取 Status_角色名 图片
  122.         //this.contents.clear();
  123.         this.back_sprite=new Sprite();
  124.     this.back_sprite.bitmap=ImageManager.loadBattleback1(bitm);
  125.         this.back_sprite.opacity=255
  126.         this.addChild(this.back_sprite);
  127.     this.addChildToBack(this.back_sprite); //or this.addChildAt(child,index);
  128. };
复制代码
帮忙看看,有哪个地方不妥的。

点评

~~!  发表于 2016-1-24 21:17
你居然让我等了好几天  发表于 2016-1-24 13:14
回复

使用道具 举报

梦石
0
星屑
121
在线时间
66 小时
注册时间
2011-10-8
回帖
15
发表于 2016-3-25 18:01:59 | 显示全部楼层
请问您是如何用谷歌的这个Developer Tools 来调试MV程序的,方便告知一下吗?十分感谢
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部