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

Project1

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

[有事请教] 关于Mog_Chain Commands连携技触发问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1256
在线时间
153 小时
注册时间
2006-2-12
帖子
226
跳转到指定楼层
1
发表于 2018-2-26 15:53:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 douqunbo 于 2018-2-27 14:57 编辑

1、能否设置触发几率,如技能1发动后可以触发连携技,但不是每次使用都能触发连携技,而是有50%几率这样。
2、能否限定连续按键的次数而不是只要能按住就能无限按下去?

谢谢各位大佬
在这里贴上插件js:
JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // MOG_ChainCommands.js
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @plugindesc (v1.3) Sistema de link de ações.
  7.  * @author Moghunter
  8.  *
  9.  * @param X-Axis
  10.  * @desc Definição X-axis geral.
  11.  * @default 0
  12.  *
  13.  * @param Y-Axis
  14.  * @desc Definição Y-axis geral.
  15.  * @default 0
  16.  *
  17.  * @param Key X-Axis
  18.  * @desc Definição X-axis do botão.
  19.  * @default 16
  20.  *
  21.  * @param Key Y-Axis
  22.  * @desc Definição Y-axis do botão.
  23.  * @default -32
  24.  *
  25.  * @param Gauge X-Axis
  26.  * @desc Definição X-axis do medidor de tempo.
  27.  * @default 17
  28.  *
  29.  * @param Gauge Y-Axis
  30.  * @desc Definição Y-axis do medidor de tempo.
  31.  * @default 1  
  32.  *
  33.  * @param Name X-Axis
  34.  * @desc Definição X-axis do nome da habilidade.
  35.  * @default 15
  36.  *
  37.  * @param Name Y-Axis
  38.  * @desc Definição Y-axis do nome da habilidade.
  39.  * @default 18
  40.  *
  41.  * @help  
  42.  * =============================================================================
  43.  * +++ MOG - Chain Commands (v1.3) +++
  44.  * By Moghunter
  45.  * https://atelierrgss.wordpress.com/
  46.  * =============================================================================
  47.  * O sistema permite executar combos através da execução da sequência de botões.
  48.  *
  49.  * Serão necessários os arquivos. (img/system/)
  50.  *
  51.  * Chain_A.png
  52.  * Chain_B.png
  53.  * Chain_B.png
  54.  *
  55.  * =============================================================================
  56.  * UTILIZAÇÃO
  57.  * =============================================================================
  58.  * Utilize o comentário abaixo na caixa de notas da habilidade.
  59.  *
  60.  * Chain Action: SKILL_ID : NUMBER_OF_INPUTS : INPUT_TIME
  61.  *
  62.  * SKILL_ID         - ID da habilidade.
  63.  * NUMBER_OF_INPUTS - Numero de vezes para apertar o botão.
  64.  * INPUT_TIME       - Tempo para apertar os botões.
  65.  *
  66.  * (Exemplo)
  67.  *
  68.  * Chain Action: 10:5:60
  69.  * =============================================================================
  70.  *  HITÓRICO
  71.  * =============================================================================
  72.  * (1.3) - Corrigido o erro de ativar o comando no fim da batalha.  
  73.  * (1.2) - Corrigido o código de compatibilidade.
  74.  * (1.1) - Corrigido o erro de permitir o input durante o collapso do inimigo.
  75.  *
  76.  */
  77.  
  78. //=============================================================================
  79. // ** PLUGIN PARAMETERS
  80. //=============================================================================
  81.   var Imported = Imported || {};
  82.   Imported.MOG_ChainCommands = true;
  83.   var Moghunter = Moghunter || {};
  84.  
  85.    Moghunter.parameters = PluginManager.parameters('MOG_ChainCommands');
  86.         Moghunter.chainCom_x = Number(Moghunter.parameters['X-Axis'] || 0);
  87.         Moghunter.chainCom_y = Number(Moghunter.parameters['Y-Axis'] || 0);
  88.         Moghunter.chainCom_Key_x = Number(Moghunter.parameters['Key X-Axis'] || 16);
  89.         Moghunter.chainCom_Key_y = Number(Moghunter.parameters['Key Y-Axis'] || -32);
  90.         Moghunter.chainCom_Meter_x = Number(Moghunter.parameters['Gauge X-Axis'] || 17);
  91.         Moghunter.chainCom_Meter_y = Number(Moghunter.parameters['Gauge Y-Axis'] || 1);
  92.         Moghunter.chainCom_Name_x = Number(Moghunter.parameters['Name X-Axis'] || 15);
  93.         Moghunter.chainCom_Name_y = Number(Moghunter.parameters['Name Y-Axis'] || 18);
  94.  
  95. //=============================================================================
  96. // ** Game Temp
  97. //=============================================================================
  98.  
  99. //==============================
  100. // * Initialize
  101. //==============================
  102. var _alias_mog_bchain_gtemp_initialize = Game_Temp.prototype.initialize;
  103. Game_Temp.prototype.initialize = function() {
  104.         _alias_mog_bchain_gtemp_initialize.call(this);
  105.         this._bchainTemp = false;
  106.         this.clearBchain();
  107. };
  108.  
  109. //==============================
  110. // * Clear Bchain
  111. //==============================
  112. Game_Temp.prototype.clearBchain = function() {
  113.     this._bchainData = [false,null,null,null,null,0,0,null,false,false,false,false];
  114. };
  115.  
  116. //=============================================================================
  117. // ** Game Action
  118. //=============================================================================
  119.  
  120. //==============================
  121. // * applyItemUserEffect
  122. //==============================
  123. var _mog_bchain_gaction_applyItemUserEffect = Game_Action.prototype.applyItemUserEffect;
  124. Game_Action.prototype.applyItemUserEffect = function(target) {
  125.         $gameTemp._bchainData[11] = true;
  126.         _mog_bchain_gaction_applyItemUserEffect.call(this,target)
  127. };
  128.  
  129. //=============================================================================
  130. // ** Battle Manager
  131. //=============================================================================
  132.  
  133. //==============================
  134. // * Start Action
  135. //==============================
  136. var _mog_bchain_bmngr_startAction = BattleManager.startAction;
  137. BattleManager.startAction = function() {
  138.          $gameTemp.clearBchain();
  139.          if (this.canCheckChainCommands()) {this.checkChainAction()};
  140.         _mog_bchain_bmngr_startAction.call(this);
  141. };
  142.  
  143. //==============================
  144. // * Can Check Chain Commands
  145. //==============================
  146. BattleManager.canCheckChainCommands = function() {
  147.         if (this._subject.isEnemy()) {return false};
  148.     if (!this._subject.currentAction()) {return false};
  149.         if (!this._subject.currentAction().item()) {return false};
  150.         return true;
  151. };
  152.  
  153. //==============================
  154. // * Check Chain Action
  155. //==============================
  156. BattleManager.checkChainAction = function() {        
  157.         var item = this._subject.currentAction().item();
  158.         var item_notes = item.note.split(/[\r\n]+/);
  159.     item_notes.forEach(function(note) {
  160.          var note_data = note.split(': ')
  161.                  if (note_data[0].toLowerCase() == "chain action"){                        
  162.                          var par = note_data[1].split(':');
  163.                          var action = $dataSkills[Number(par[0])];
  164.                       var times = Math.min(Math.max(Number(par[1]),1),999);
  165.                          var duration = Math.min(Math.max(Number(par[2]),10),999);                        
  166.                          if (action) {
  167.                             $gameTemp._bchainData[1] = action;
  168.                                 $gameTemp._bchainData[6] = times;
  169.                                 $gameTemp._bchainData[7] = duration;
  170.                          };
  171.          };
  172.         },this);
  173. };
  174.  
  175. //==============================
  176. // * Invoke Action
  177. //==============================
  178. var _mog_bchain_bmngr_invokeAction = BattleManager.invokeAction;
  179. BattleManager.invokeAction = function(subject, target) {
  180.     if ($gameTemp._bchainData[1]) {BattleManager.setBchainPosition(subject, target)};
  181.         _mog_bchain_bmngr_invokeAction.call(this,subject, target);        
  182. };
  183.  
  184. //==============================
  185. // * set Bchain Position
  186. //==============================
  187. BattleManager.setBchainPosition = function(subject, target) {
  188.         if (this._subject.isActor()) {
  189.                 $gameTemp._bchainData[8] = target;
  190.                 if ($gameTemp._bchainData[1].scope === 1 ||
  191.                     $gameTemp._bchainData[1].scope === 7 ||
  192.                         $gameTemp._bchainData[1].scope === 9) {
  193.                         $gameTemp._bchainData[4] = target;
  194.                 } else {
  195.                 if ($gameSystem.isSideView()) {
  196.                             $gameTemp._bchainData[4] = this._subject;
  197.                         } else {
  198.                                 $gameTemp._bchainData[2] = Graphics.boxWidth / 2;
  199.                                 $gameTemp._bchainData[3] = Graphics.boxHeight / 2;               
  200.                         };        
  201.                 };
  202.         };
  203. };        
  204.  
  205. //==============================
  206. // * End Action
  207. //==============================
  208. var _mog_bchain_bmngr_endAction = BattleManager.endAction;
  209. BattleManager.endAction = function() {
  210.         if (BattleManager.canUseChainAction()) {
  211.                 $gameTemp._bchainData[0] = true;
  212.                 $gameTemp._bchainTemp = true;
  213.                 if ($gameTemp._bchainData[9]) {this.executeChainAction()};
  214.                 return;
  215.           };
  216.          _mog_bchain_bmngr_endAction.call(this);
  217.          $gameTemp.clearBchain();
  218.          $gameTemp._bchainTemp = false;
  219. };
  220.  
  221. //==============================
  222. // * can Use Chain Action
  223. //==============================
  224. BattleManager.canUseChainAction = function() {
  225.         if (!$gameTemp._bchainData[1]) {return false};
  226.         if (!$gameTemp._bchainData[11]) {return false};
  227.         if (!this._subject) {return false};
  228.         if (!this._subject.canInput()) {return false};
  229.         if (this._subject.isDead()) {return false};
  230.         if ($gameParty.isAllDead()) {return false};
  231.         if ($gameTroop.isAllDead()) {return false};
  232.         if (!this._subject.canUse($gameTemp._bchainData[1])) {return false};
  233.         if ($gameTemp._bchainData[1].scope === 1 ||
  234.                  $gameTemp._bchainData[1].scope === 7 ||
  235.                  $gameTemp._bchainData[1].scope === 9) {
  236.              if (!$gameTemp._bchainData[8]) {return false};
  237.                  if ($gameTemp._bchainData[8].isDead()) {return false};
  238.     }
  239.         return true;
  240. };
  241.  
  242. //==============================
  243. // * execute Chain Action
  244. //==============================
  245. BattleManager.executeChainAction = function() {
  246.         if ($gameTemp._bchainData[10]) {
  247.             this._subject.forceAction($gameTemp._bchainData[1].id, -2);               
  248.                 $gameTemp.clearBchain();
  249.             BattleManager.processTurn();
  250.         } else {
  251.                 $gameTemp.clearBchain();
  252.         };
  253. };
  254.  
  255. //=============================================================================
  256. // ** Sprite Battler
  257. //=============================================================================
  258.  
  259. //==============================
  260. // * update Main
  261. //==============================
  262. var _mog_bchain_sprbattler_updateMain = Sprite_Battler.prototype.updateMain;
  263. Sprite_Battler.prototype.updateMain = function() {
  264.         _mog_bchain_sprbattler_updateMain.call(this);
  265.         if (this.needUpdateBchainPosition()) {this.updateBchainPosition()};
  266. };
  267.  
  268. //==============================
  269. // * need Update Bchain Pos
  270. //==============================
  271. Sprite_Battler.prototype.needUpdateBchainPosition = function() {
  272.    if (!$gameTemp._bchainData[4]) {return false};
  273.    if ($gameTemp._bchainData[4] != this._battler) {return false};
  274.    return true;        
  275. };
  276.  
  277. //==============================
  278. // * update B Chain Position
  279. //==============================
  280. Sprite_Battler.prototype.updateBchainPosition = function() {
  281.         $gameTemp._bchainData[2] = this.x;
  282.         $gameTemp._bchainData[3] = this.y;
  283.         if (this._mainSprite) {
  284.         $gameTemp._bchainData[3] -= this._mainSprite.height;
  285.         } else if (this._bitmap) {        
  286.             $gameTemp._bchainData[3] -= this._bitmap.height / 2;
  287.         };
  288. };
  289.  
  290. //=============================================================================
  291. // ** Spriteset Battle
  292. //=============================================================================
  293.  
  294. //==============================
  295. // * create Upper Layer
  296. //==============================
  297. var _mog_bchain_sprset_createUpperLayer = Spriteset_Battle.prototype.createUpperLayer;
  298. Spriteset_Battle.prototype.createUpperLayer = function() {
  299.         _mog_bchain_sprset_createUpperLayer.call(this);
  300.     this.createBchain();        
  301. };
  302.  
  303. //==============================
  304. // * create B Chain
  305. //==============================
  306. Spriteset_Battle.prototype.createBchain = function() {
  307.     this._bchain = new BattleChainSprite();
  308.         this._bchain.z = 25;
  309.         this.addChild(this._bchain);
  310. };
  311.  
  312. //==============================
  313. // * Update
  314. //==============================
  315. var _mog_bchain_sprtbat_update = Spriteset_Battle.prototype.update;
  316. Spriteset_Battle.prototype.update = function() {
  317.     _mog_bchain_sprtbat_update.call(this)
  318.         if (this._bchain && Imported.MOG_BattleCamera) {
  319.            this._bchain.x = this._battleField.x;
  320.            this._bchain.y = this._battleField.y;
  321.         };
  322. };
  323.  
  324. if (Imported.MOG_BattleCamera) {
  325.         //==============================
  326.         // * Update Focus
  327.         //==============================
  328.         var _mog_bchaincom_sprbat_updateFocus = Spriteset_Battle.prototype.updateFocus;
  329.         Spriteset_Battle.prototype.updateFocus = function() {
  330.                 if ($gameTemp._bchainTemp) {$gameTemp._bcam_user[2] = 0};
  331.                 _mog_bchaincom_sprbat_updateFocus.call(this);
  332.         };
  333. };
  334.  
  335. //=============================================================================
  336. // * Battle Chain Sprite
  337. //=============================================================================
  338. function BattleChainSprite() {
  339.     this.initialize.apply(this, arguments);
  340. };
  341.  
  342. BattleChainSprite.prototype = Object.create(Sprite.prototype);
  343. BattleChainSprite.prototype.constructor = BattleChainSprite;
  344.  
  345. //==============================
  346. // * Initialize
  347. //==============================
  348. BattleChainSprite.prototype.initialize = function() {
  349.     Sprite.prototype.initialize.call(this);        
  350.         this.z = 25;
  351.         this._data = [-1,-1,false];
  352.         this._keyIndex = 0;
  353.         this._duration = 0;
  354.     this.loadImages();
  355.         this.createLayout();
  356.         this.createMeter();        
  357.         this.createKeys();
  358.         this.createName();
  359. };
  360.  
  361. //==============================
  362. // * Load Images
  363. //==============================
  364. BattleChainSprite.prototype.loadImages = function() {
  365.         this._keysImg = ImageManager.loadSystem("Chain_A");
  366.         this._layoutImg = ImageManager.loadSystem("Chain_B");
  367.         this._meterImg = ImageManager.loadSystem("Chain_C");
  368. };
  369.  
  370. //==============================
  371. // * getData
  372. //==============================
  373. BattleChainSprite.prototype.getData = function() {        
  374.     this._data[0] = Math.floor(this._keysImg.width / 6);
  375.         this._data[1] = this._keysImg.height;
  376. };
  377.  
  378. //==============================
  379. // * create Layout
  380. //==============================
  381. BattleChainSprite.prototype.createLayout = function() {        
  382.         this._layout = new Sprite(this._layoutImg);
  383.         this._layout.opacity = 0;
  384.         this._layout.anchor.x = 0.5;
  385.         this._layout.anchor.y = 0.5;
  386.         this.addChild(this._layout);
  387. };
  388.  
  389. //==============================
  390. // * create Name
  391. //==============================
  392. BattleChainSprite.prototype.createName = function() {
  393.         this._name = new Sprite(new Bitmap(100,32));
  394.         this._name.opacity = 0;
  395.         this._name.anchor.x = 0.5;
  396.         this._name.anchor.y = 0.5;
  397.         this._name.bitmap.fontSize = 20;
  398.         this.addChild(this._name);
  399. };
  400.  
  401. //==============================
  402. // * create Keys
  403. //==============================
  404. BattleChainSprite.prototype.createKeys = function() {
  405.         this._keys = new Sprite(this._keysImg);
  406.         this._keys.opacity = 0;
  407.         this._keys.anchor.x = 0.5;
  408.         this._keys.anchor.y = 0.5;        
  409.         this.addChild(this._keys);
  410. };
  411.  
  412. //==============================
  413. // * create Meter
  414. //==============================
  415. BattleChainSprite.prototype.createMeter = function() {
  416.         this._meter = new Sprite(this._meterImg);
  417.         this._meter.opacity = 0;
  418.         this._meter.anchor.x = 0;
  419.         this._meter.anchor.y = 0.5;        
  420.         this.addChild(this._meter);        
  421. };
  422.  
  423. //==============================
  424. // * Need Refresh
  425. //==============================
  426. BattleChainSprite.prototype.needRefresh = function() {
  427.         if ($gameTemp._bchainData[0] == this._data[2]) {return false};
  428.         if (!this.item()) {return false};
  429.         if (!this.posX()) {return false};
  430.         return true;
  431. };
  432.  
  433. //==============================
  434. // * Item
  435. //==============================
  436. BattleChainSprite.prototype.item = function() {
  437.    return $gameTemp._bchainData[1];
  438. };
  439.  
  440. //==============================
  441. // * posX
  442. //==============================
  443. BattleChainSprite.prototype.posX = function() {
  444.    return $gameTemp._bchainData[2] + Moghunter.chainCom_x;
  445. };
  446.  
  447. //==============================
  448. // * posY
  449. //==============================
  450. BattleChainSprite.prototype.posY = function() {
  451.    return $gameTemp._bchainData[3] + Moghunter.chainCom_y;
  452. };
  453.  
  454. //==============================
  455. // * Times
  456. //==============================
  457. BattleChainSprite.prototype.times = function() {
  458.    return $gameTemp._bchainData[6];
  459. };
  460.  
  461. //==============================
  462. // * Duration
  463. //==============================
  464. BattleChainSprite.prototype.duration = function() {
  465.    return $gameTemp._bchainData[7];
  466. };
  467.  
  468. //==============================
  469. // * Refresh
  470. //==============================
  471. BattleChainSprite.prototype.refresh = function() {        
  472.          this._data[2] = $gameTemp._bchainData[0];
  473.         this._duration = this.duration();
  474.         this._layout.opacity = 255;
  475.         this._keys.opacity = 255;
  476.         this._keys.scale.x = 2.0;
  477.         this._keys.scale.y = 2.0;
  478.         this._meter.opacity = 255;
  479.         this._name.opacity = 255;
  480.         this._name.bitmap.clear();
  481.         this._name.bitmap.drawText(this.item().name,0,0,100,32,"center");
  482.         this._keys.setFrame(this._data[0] * this._keyIndex,0,this._data[0],this._data[1]);
  483. };
  484.  
  485. //==============================
  486. // * need Update Action
  487. //==============================
  488. BattleChainSprite.prototype.needUpdateAction = function() {
  489.         if (!this.item()) {return false};
  490.         if (!this.posX()) {return false};
  491.         if (this._layout.opacity == 0) {return false};
  492.         return true;
  493. };
  494.  
  495. //==============================
  496. // * Update Action
  497. //==============================
  498. BattleChainSprite.prototype.updateAction = function() {
  499.      this.updatePosition();
  500.          this.updateCommands();
  501.          if (this._duration > 0) {this.updateTime()};
  502. };
  503.  
  504. //==============================
  505. // * Update Action
  506. //==============================
  507. BattleChainSprite.prototype.updateTime = function() {
  508.       this._duration --
  509.       this.updateMeter();
  510.           if (this._duration <= 0) {this.setWrong();};
  511. };
  512.  
  513. //==============================
  514. // * Update Meter
  515. //==============================
  516. BattleChainSprite.prototype.updateMeter = function() {
  517.           var rate = this._duration * this._meterImg.width / this.duration();
  518.           this._meter.setFrame(0,0,rate,this._meterImg.height)
  519. };
  520.  
  521. //==============================
  522. // * Update Action
  523. //==============================
  524. BattleChainSprite.prototype.check_key = function(value) {
  525.     if (value == this._keyIndex) {               
  526.             this.nextKey();
  527.         } else {
  528.         this.setWrong();
  529.         };
  530. };
  531.  
  532. //==============================
  533. // * set Wrong
  534. //==============================
  535. BattleChainSprite.prototype.setWrong = function(value) {
  536.         SoundManager.playBuzzer();
  537.         this.clearCommands();
  538. };
  539.  
  540. //==============================
  541. // * Next Key
  542. //==============================
  543. BattleChainSprite.prototype.nextKey = function(value) {
  544.         if (this.times() <= 0) {this.enableAction();return};        
  545.         SoundManager.playCursor();
  546.     this._keyIndex = Math.randomInt(6);
  547.         $gameTemp._bchainData[6] -= 1;
  548.         this.refresh();
  549. };
  550.  
  551. //==============================
  552. // * enable Action
  553. //==============================
  554. BattleChainSprite.prototype.enableAction = function(value) {
  555.         SoundManager.playUseSkill();
  556.         $gameTemp._bchainData[10] = true;
  557.         this.clearCommands();
  558. };
  559.  
  560. //==============================
  561. // * Set Wrong
  562. //==============================
  563. BattleChainSprite.prototype.clearCommands = function() {
  564.         this._layout.opacity = 0;
  565.         this._keys.opacity = 0;
  566.         this._meter.opacity = 0;
  567.         this._name.opacity = 0;        
  568.         this._duration = 0;
  569.         this._data[2] = false;
  570.         $gameTemp._bchainData[9] = true;
  571. };
  572.  
  573. //==============================
  574. // * Update Commands
  575. //==============================
  576. BattleChainSprite.prototype.updateCommands = function() {
  577.         if (Input.isTriggered("right")) {this.check_key(0)}
  578.         else if (Input.isTriggered("left")) {this.check_key(1)}
  579.         else if (Input.isTriggered("down")) {this.check_key(2)}
  580.         else if (Input.isTriggered("up")) {this.check_key(3)}
  581.         else if (Input.isTriggered("ok")) {this.check_key(4)}
  582.         else if (Input.isTriggered("cancel")) {this.check_key(5)}        ;
  583. };
  584.  
  585. //==============================
  586. // * Update Position
  587. //==============================
  588. BattleChainSprite.prototype.updatePosition = function() {
  589.         this._layout.x = this.posX();
  590.         this._layout.y = this.posY();
  591.         this._keys.x = this.posX() + Moghunter.chainCom_Key_x;
  592.         this._keys.y = this.posY() + Moghunter.chainCom_Key_y;        
  593.         this._meter.x = this.posX() - (this._meterImg.width / 2) + Moghunter.chainCom_Meter_x;
  594.         this._meter.y = this.posY() + Moghunter.chainCom_Meter_y;                 
  595.     this._name.x = this.posX() + Moghunter.chainCom_Name_x;
  596.     this._name.y = this.posY() + Moghunter.chainCom_Name_y;
  597. };
  598.  
  599. //==============================
  600. // * Update
  601. //==============================
  602. BattleChainSprite.prototype.update = function() {
  603.     Sprite.prototype.update.call(this);        
  604.         if (this._data[0] === -1) {
  605.            if (this._keysImg.isReady() && this._meterImg.isReady()) {this.getData()};
  606.            return;
  607.     };
  608.         if (this.needRefresh()) {this.nextKey()};
  609.         if (this.needUpdateAction()) {this.updateAction()};
  610.         if (this._keys.scale.x > 1.00) {this._keys.scale.x -= 0.1};
  611.         this._keys.scale.y = this._keys.scale.x
  612. };

Lv3.寻梦者

梦石
0
星屑
1256
在线时间
153 小时
注册时间
2006-2-12
帖子
226
2
 楼主| 发表于 2018-2-27 14:59:28 | 只看该作者
请问有大佬在吗 谢谢啦~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-8 13:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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