设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 90|回复: 0

[转载发布] Gender Plugin PG_Gender.js

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    7948

    主题

    864

    回帖

    3万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    29903
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    38745

    灌水之王

    发表于 12 小时前 | 显示全部楼层 |阅读模式
    PG_Gender.js  (Version 1)

    Version 1.1 - Corrected an error in the 'Help' section.  Code 3 for plugin commands etc is for female, and 2 for male.

    Authors are Piyan Glupak, Trihan and Mr. Bubbles

    Terms and Conditions:  Free for use in commercial and non-commercial games. No liability accepted.  Credit Piyan Glupak, Trihan and Mr. Bubbles.

    About
    I cannot claim to be the sole author of this plugin.  Any bugs or errors are mine though.   Mr. Bubbles made a script for RPG Maker VX Ace.  Trihan ported the script into a plugin for RPG Maker MV "GenderFunctions.js". That plugin inspired this one. Much of the code for script calls, for instance, was taken from Trihan's plugin.

    For some games, it is useful to have actors and enemies defined by gender.  This could be for NPC reaction to the party leader, restricted party composition ("Sorry, only ladies to visit the unpopular town governor after dark"),  use of gender specific equipment, party friendship systems, adjusting traits by gender.  As well as recording gender, it will be useful to check the gender of individual party members, actors and  enemies.  It might also be useful to check whether the party or enemy troop is composed of all one gender, or to be able to count the numbers of each gender.

    This plugin is written with games that have a lot of potential party members in mind.

    Features

    • 4 "genders" - female, male, neuter, unknown
    • Set genders of actors either by notetag or by plugin command
    • Set genders of enemies by notetag
    • May assign a separate state by parameter to female actors, male actors, neutral actors, female enemies, male enemies, neutral enemies.  (It is suggested that  Yami's  YED_RetainStateOnDeath is used for the states used for actors)
    • Script calls for conditional branches to check whether individual party members, actors or members of enemy troops are female, male, neuter or unknown
    • Script calls for conditional branches to check whether the party is all female, male, neuter or unknown
    • Script calls for control variables to return the number of female, male, neuter or unknown members of the party or enemy troop
    New Version 1.3 - Now includes "hornCnt" data for actors, and plugin calls and script to be able to use it.
    Newer Version 1.3.1 - also has a couple of plugin commands to read "hornCnt". Whoops!


                    JavaScript:       
    1. //=============================================================================
    2. // PG_Gender.js
    3. //=============================================================================
    4. /*:
    5. * @plugindesc Allows you to assign gender to actors and enemies, and apply states
    6. *
    7. * @author Piyan Glupak, Trihan, Mr. Bubbles, see "Help" for details
    8. *
    9. * @param Female Actor State
    10. * @desc Database number of state to be applied to female actors
    11. * @default
    12. *
    13. * @param Male Actor State
    14. * @desc Database number of state to be applied to male actors
    15. * @default
    16. *
    17. * @param Neuter Actor State
    18. * @desc Database number of state to be applied to neuter actors
    19. * @default
    20. * @param Female Enemy State
    21. * @desc Database number of state to be applied to female enemies
    22. * @default
    23. *
    24. * @param Male Enemy State
    25. * @desc Database number of state to be applied to male enemies
    26. * @default
    27. * @param Neuter Enemy State
    28. * @desc Database number of state to be applied to neuter enemies
    29. * @default
    30. *
    31. * @help
    32. * Parameters are used to apply a state to male and female actors, male and
    33. * female enemies, if required. States are set whether notetags set gender
    34. * in the database, or whether gender is  set during the game. Use of a
    35. * plugin to such as Yami's YED_RetainStateOnDeath is suggested for states
    36. * for actors.
    37. **************************************************************************
    38. * Notetags
    39. **************************************************************************
    40. * Notetags for actors and enemies to set gender - don't include spaces!
    41. *
    42. * For male any of: <gender:m>, <gender:male>, <gender:M>, <gender:Male>     
    43. * For female any of: <gender:f>, <gender:female>, <gender:F>, <gender:Female>
    44. * For neuter any of: <gender:n>, <gender:neuter>, <gender:N>, <gender:Neuter>
    45. * Gender is unknown (undefined) if there is no valid notetag.
    46. **************************************************************************
    47. * Plugin Commands to assign or change an actor's gender, or change hornCnt
    48. **************************************************************************
    49. * To set or change an actor's gender during play, use either of:
    50. *
    51. * changegender ID CODE
    52. *
    53. * vargender VAR CODE
    54. *
    55. * To add to an actor's hornCnt (hornCnt starts as 0), use either of:
    56. *
    57. * changehorn ID NUM
    58. *
    59. * varhorn VAR NUM
    60. *
    61. * or, to change hornCnt for the whole party:
    62. *
    63. * partyhorn NUM
    64. *
    65. * To read a hornCnt, use one of:
    66. *
    67. * readmemhorn MEMVAR RETURNVAR
    68. *
    69. * readahorn ID RETURNVAR
    70. *
    71. * readvarhorn VAR RETURNVAR
    72. *
    73. *   ID is actor ID in database
    74. *   VAR is the number of the variable the actor's ID is stored in.
    75. *   CODE is one of: 0 for unknown, 1 for neuter, 2 for male, 3 for female
    76. *   NUM is a positive or negative integer added to the actor's hornCnt
    77. *   MEMVAR is the party index (0 for the party leader) of the party member
    78. *   RETURNVAR is the number of the variable to store the value of hornCnt
    79. *
    80. **************************************************************************
    81. * Script Calls
    82. **************************************************************************
    83. * Calls for script boxes of conditional branches:
    84. *
    85. * this.memberIsUnknown(X)     true if party member X is of unknown gender
    86. * this.memberIsNeuter(X)      true if party member X is neuter
    87. * this.memberIsMale(X)        true if party member X is male
    88. * this.memberIsFemale(X)      true if party member X is female
    89. *
    90. * NOTE that 'X' starts at 0 for the party leader.
    91. *
    92. * this.actorIsUnknown(ID)     true if actor number ID is of unknown gender
    93. * this.actorIsNeuter(ID)      true if actor number ID is neuter
    94. * this.actorIsMale(ID)        true if actor number ID is male
    95. * this.actorIsFemale(ID)      true if actor number ID is female
    96. *
    97. * 'ID' is the actor's position in the database.  The first actor's ID is 1
    98. *
    99. * this.partyIsUnknown()       true if all party members are unknown
    100. * this.partyIsNeuter()        true if all party members are neuter
    101. * this.partyIsMale()          true if all party members are male
    102. * this.partyIsFemale()        true if all party members are female
    103. *
    104. * this.troopMemberIsUnknown(INX)
    105. * this.troopMemberIsNeuter(INX)
    106. * this.troopMemberIsMale(INX)
    107. * this.troopMemberIsFemale(INX)
    108. * The troop calls are for battles only. They check the gender of an enemy in
    109. * the troop the party is facing. 'INX' is the enemy's position in the troop.
    110. * 0 is the first enemy, 1 the 2nd and so on. They don't check whether the
    111. * troop member is still alive.
    112. *************************************************************************
    113. * Calls for the script boxes of "control variables":
    114. *
    115. * this.partyUnknownCount()    returns number of unknown gender party members
    116. * this.partyNeuterCount()     returns number of neuter party members
    117. * this.partyMaleCount()       returns number of male party members
    118. * this.partyFemaleCount()     returns number of female party members
    119. *
    120. * this.troopUnknownCount()    returns number of unknown gender troop members
    121. * this.troopNeuterCount()     returns number of neuter troop members
    122. * this.troopMaleCount()       returns number of male troop members
    123. * this.troopFemaleCount()     returns number of female troop members
    124. * The troop calls are for battle only. They check numbers in the troop that
    125. * are still alive.
    126. *************************************************************************
    127. * Confident scripters may read or set gender by using:
    128. *
    129. * $gameParty.allMembers()[INDEX].gender
    130. * $gameParty.allMembers()[$gameVariables.value(VAR)].gender
    131. * $gameActors.actor(ID).gender
    132. * $gameActors.actor($gameVariables.value(VAR)).gender
    133. *     
    134. *   INDEX is position in party, starting with 0 for the leader
    135. *   ID is the actor position in the database (starts at 1)
    136. *   VAR is the number of the variable 'INDEX' or 'ID' is stored in
    137. *   Codes used are 3 for female, 2 for male, 1 for neuter, 0 for unknown.
    138. *
    139. * For access to hornCnt, which can be used for libido count downs:
    140. *
    141. * $gameParty.allMembers()[INDEX].hornCnt
    142. * $gameParty.allMembers()[$gameVariables.value(VAR)].hornCnt
    143. * $gameActors.actor(ID).hornCnt
    144. * $gameActors.actor($gameVariables.value(VAR)).hornCnt
    145. **************************************************************************
    146. * Plugin History
    147. * Mr. Bubbles made a script for RPG Maker VX Ace. Trihan ported the script
    148. * into a plugin for RPG Maker MV "GenderFunctions.js". That plugin helped to
    149. * inspire this one. Much of the code for script calls was taken from
    150. * Trihan's plugin. This plugin adds the abilities to set or change gender in
    151. * game and assign states to males and females, distinguishes unknown gender
    152. * from neuter, and changed a few script calls.
    153. * Version 1 - Released
    154. * V 1.1 - Corrected Help section - Code 2 is used for male, 3 for female.
    155. * V1.2 - added parameters for states to be applied to neuter party members
    156. *        and enemies.
    157. * V1.3 - Added "hornCnt", an adjustable value for each actor
    158. * V1.3.1 - Added further plugin commands for "hornCnt"
    159. **************************************************************************
    160. * TERMS OF USE
    161. * Free for use in commercial and non-commercial games. No liability accepted.
    162. * Credit Piyan Glupak, Trihan and Mr. Bubbles.
    163. **************************************************************************
    164. * COMPATIBILITY
    165. * No issues known yet.
    166. */
    167. // Retain a reference to the original function
    168. {
    169. const Game_Actor_setup = Game_Actor.prototype.setup;
    170. const  parameters = PluginManager.parameters('PG_Gender');
    171. var  femaleActorState = Number(parameters['Female Actor State']);
    172. var  maleActorState = Number(parameters['Male Actor State']);
    173. var  neuterActorState = Number(parameters['Neuter Actor State']);
    174. var  femaleEnemyState = Number(parameters['Female Enemy State']);
    175. var  maleEnemyState = Number(parameters['Male Enemy State']);
    176. var  neuterEnemyState = Number(parameters['Neuter Enemy State']);
    177. Game_Actor.prototype.setup = function (actorId) {
    178.    // Call the original function
    179.    Game_Actor_setup.call(this, actorId);
    180.    this.hornCnt = 0;
    181.    this.gender = $dataActors[actorId].meta.gender || null;
    182.    switch (this.gender) {
    183.                         case 'n':
    184.                         case 'N':
    185.                         case 'neuter':
    186.                         case 'Neuter':
    187.                             this.gender = 1;
    188.                             this.addState(neuterActorState);
    189.                             break;
    190.                         case 'm':
    191.                         case 'M':
    192.                         case 'male':
    193.                         case 'Male':
    194.                             this.gender = 2;
    195.                             this.addState(maleActorState);
    196.                             break;
    197.                         case 'f':
    198.                         case 'F':
    199.                         case 'female':
    200.                         case 'Female':
    201.                             this.gender = 3;
    202.                             this.addState(femaleActorState);
    203.                             break;
    204.                        default :
    205.                             this.gender = 0;
    206.                     }
    207. };
    208. const Game_Enemy_setup = Game_Enemy.prototype.setup;
    209. Game_Enemy.prototype.setup = function (enemyId, x, y) {
    210.    // Call the original function
    211.    Game_Enemy_setup.call(this, enemyId, x, y);
    212.    this.gender = $dataEnemies[enemyId].meta.gender || null;
    213.    switch (this.gender) {
    214.                         case 'n':
    215.                         case 'N':
    216.                         case 'neuter':
    217.                         case 'Neuter':
    218.                             this.gender = 1;
    219.                             this.addState(neuterEnemyState);
    220.                             break;
    221.                         case 'm':
    222.                         case 'M':
    223.                         case 'male':
    224.                         case 'Male':
    225.                             this.gender = 2;
    226.                             this.addState(maleEnemyState);
    227.                             break;
    228.                         case 'f':
    229.                         case 'F':
    230.                         case 'female':
    231.                         case 'Female':
    232.                             this.gender = 3;
    233.                             this.addState(femaleEnemyState);
    234.                             break;
    235.                        default :
    236.                             this.gender = 0;
    237.                     }
    238. };
    239. Game_Actor.prototype.changeGender = function (newGender) {
    240.    this.gender = newGender;
    241.    if (this.gender == 1) {
    242.       if (this.isStateAffected(femaleActorState))
    243.          this.removeState(femaleActorState);
    244.       if (this.isStateAffected(maleActorState))
    245.          this.removeState(maleActorState);
    246.          }
    247.    if (this.gender == 2) {
    248.       if (this.isStateAffected(femaleActorState))
    249.          this.removeState(femaleActorState);
    250.       this.addState(maleActorState);
    251.       };
    252.    if (this.gender == 3) {
    253.       if (this.isStateAffected(maleActorState))
    254.          this.removeState(maleActorState);
    255.       this.addState(femaleActorState);
    256.       };
    257.       this.clearResult();
    258. };
    259. // Retain a reference to the original function
    260. const Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    261. Game_Interpreter.prototype.pluginCommand = function (command, args) {
    262.    Game_Interpreter_pluginCommand.call(this, command, args);
    263. };
    264. Game_Interpreter.prototype.pluginCommand = function (command, args) {
    265.    Game_Interpreter_pluginCommand.call(this, command, args);
    266.    // If the plugin command is ours
    267.    if (command.toLowerCase() === "changegender") {
    268.       // Grab the arguments
    269.       const id = parseInt(args[0]);
    270.       const newGender = parseInt(args[1]);
    271.       // Change the actor's gender
    272.       $gameActors.actor(id).changeGender(newGender);
    273.    }
    274.   //Game_Interpreter_pluginCommand.call(this, command, args);
    275.   if (command.toLowerCase() === "vargender") {
    276.   // Grab the arguments
    277.       const holder = $gameVariables.value(parseInt(args[0]));
    278.       const newGender = parseInt(args[1]);
    279.   // Change the actor's gender
    280.       $gameActors.actor(holder).changeGender(newGender);
    281.    }
    282.   //Game_Interpreter_pluginCommand.call(this, command, args);
    283.    if (command.toLowerCase() === "changehorn") {
    284.    // Grab the arguments
    285.       const id = parseInt(args[0]);
    286.       const addHorn = parseInt(args[1]);
    287.    // Change the actor's hornCnt
    288.       $gameActors.actor(id).hornCnt += addHorn;
    289.    }
    290.   //Game_Interpreter_pluginCommand.call(this, command, args);
    291.   if (command.toLowerCase() === "varhorn") {
    292.   // Grab the arguments
    293.       const holder = $gameVariables.value(parseInt(args[0]));
    294.       const addHorn = parseInt(args[1]);
    295.   // Change the actor's hornCnt
    296.       $gameActors.actor(holder).hornCnt += addHorn;
    297.    }
    298.   //Game_Interpreter_pluginCommand.call(this, command, args);
    299.   if (command.toLowerCase() === "partyhorn") {
    300.   // Grab the arguments
    301.    const addhorn = parseInt(args[0]);
    302.    for (var i=0;i<$gameParty.allMembers().length;i++)
    303.       $gameParty.allMembers()[i].hornCnt += addhorn;
    304.    }
    305.   //Game_Interpreter_pluginCommand.call(this, command, args);
    306.   if (command.toLowerCase() === "readmemhorn") {
    307.   // Grab the arguments, first the party index
    308.       const memHolder = $gameVariables.value(parseInt(args[0]));
    309.   // Next argument, the number of the variable to store the value
    310.       const cnt = parseInt(args[1]);
    311.   // Set the second variable to the party member's hornCnt
    312.   $gameVariables.setValue(cnt, $gameParty.allMembers()[memHolder].hornCnt);
    313. }
    314. //Game_Interpreter_pluginCommand.call(this, command, args);
    315.   if (command.toLowerCase() === "readahorn") {
    316.   // Grab the arguments, first the actor number
    317.       const actorno = parseInt(args[0]);
    318.   // Next argument, the number of the variable to store the value
    319.       const cnt = parseInt(args[1]);
    320.   // Set the second variable to the party member's hornCnt
    321.   $gameVariables.setValue(cnt, $gameActors.actor(actorno).hornCnt);
    322.   }
    323. //Game_Interpreter_pluginCommand.call(this, command, args);
    324.   if (command.toLowerCase() === "readvarhorn") {
    325.   // Grab the arguments, first the variable holding the actor number
    326.       const actorholder = $gameVariables.value(parseInt(args[0]));
    327.   // Next argument, the number of the variable to store the value
    328.       const cnt = parseInt(args[1]);
    329.   // Set the second variable to the party member's hornCnt
    330.   $gameVariables.setValue(cnt, $gameActors.actor(actorholder).hornCnt);
    331.   }
    332. };
    333. //Output
    334.     Game_BattlerBase.prototype.isUnknown = function() {
    335.         return this.gender === 0;
    336.     };
    337.     Game_BattlerBase.prototype.isNeuter = function() {
    338.         return this.gender === 1;
    339.     };
    340.     Game_BattlerBase.prototype.isMale = function() {
    341.         return this.gender === 2;
    342.     };
    343.    
    344.     Game_BattlerBase.prototype.isFemale = function() {
    345.         return this.gender === 3;
    346.     };
    347.      _Game_Actor_setup = Game_Actor.prototype.setup;
    348.     Game_Actor.prototype.setup = function(actorId) {
    349.         this._gender = $dataActors[actorId].gender;
    350.         _Game_Actor_setup.call(this, actorId);
    351.     };
    352.     _Game_Enemy_setup = Game_Enemy.prototype.setup;
    353.     Game_Enemy.prototype.setup = function(enemyId, x, y) {
    354.         this._gender = $dataEnemies[enemyId].gender;
    355.         _Game_Enemy_setup.call(this, enemyId, x, y);
    356.     };
    357.     Game_Interpreter.prototype.memberIsUnknown = function(index) {
    358.         var member = $gameParty.allMembers()[index];
    359.         if (member) { return member.isUnknown(); }
    360.         return false;
    361.     };
    362.    
    363.     Game_Interpreter.prototype.memberIsNeuter = function(index) {
    364.         var member = $gameParty.allMembers()[index];
    365.         if (member) { return member.isNeuter(); }
    366.         return false;
    367.     };
    368.     Game_Interpreter.prototype.memberIsMale = function(index) {
    369.         var member = $gameParty.allMembers()[index];
    370.         if (member) { return member.isMale(); }
    371.         return false;
    372.     };
    373.     Game_Interpreter.prototype.memberIsFemale = function(index) {
    374.         var member = $gameParty.allMembers()[index];
    375.         if (member) { return member.isFemale(); }
    376.         return false;
    377.     };
    378.     Game_Interpreter.prototype.actorIsUnknown = function(id) {
    379.         var actor = $gameActors.actor(id);
    380.         if (actor) { return actor.isUnknown(); }
    381.         return false;
    382.     };
    383.     Game_Interpreter.prototype.actorIsNeuter = function(id) {
    384.         var actor = $gameActors.actor(id);
    385.         if (actor) { return actor.isNeuter(); }
    386.         return false;
    387.     };
    388.     Game_Interpreter.prototype.actorIsMale = function(id) {
    389.         var actor = $gameActors.actor(id);
    390.         if (actor) { return actor.isMale(); }
    391.         return false;
    392.     };
    393.     Game_Interpreter.prototype.actorIsFemale = function(id) {
    394.         var actor = $gameActors.actor(id);
    395.         if (actor) { return actor.isFemale(); }
    396.         return false;
    397.     };
    398.     Game_Interpreter.prototype.partyIsUnknown = function() {
    399.         return $gameParty.allMembers().every(function(member) {
    400.             return member.isUnknown();
    401.         });
    402.     };
    403.     Game_Interpreter.prototype.partyIsNeuter = function() {
    404.         return $gameParty.allMembers().every(function(member) {
    405.             return member.isNeuter();
    406.         });
    407.     };
    408.     Game_Interpreter.prototype.partyIsMale = function() {
    409.         return $gameParty.allMembers().every(function(member) {
    410.             return member.isMale();
    411.         });
    412.     };
    413.     Game_Interpreter.prototype.partyIsFemale = function() {
    414.         return $gameParty.allMembers().every(function(member) {
    415.             return member.isFemale();
    416.         });
    417.     };
    418.     Game_Interpreter.prototype.unknownCount = function(group) {
    419.         return group.reduce(function(total, member) {
    420.             return member.isUnknown() ? total + 1 : total;
    421.         }, 0);
    422.     };
    423.   
    424.     Game_Interpreter.prototype.neuterCount = function(group) {
    425.         return group.reduce(function(total, member) {
    426.             return member.isNeuter() ? total + 1 : total;
    427.         }, 0);
    428.     };
    429.     Game_Interpreter.prototype.maleCount = function(group) {
    430.         return group.reduce(function(total, member) {
    431.             return member.isMale() ? total + 1 : total;
    432.         }, 0);
    433.     };
    434.     Game_Interpreter.prototype.femaleCount = function(group) {
    435.         return group.reduce(function(total, member) {
    436.             return member.isFemale() ? total + 1 : total;
    437.         }, 0);
    438.     };
    439.     Game_Interpreter.prototype.partyUnknownCount = function() {
    440.         return this.unknownCount($gameParty.allMembers());
    441.     };
    442.     Game_Interpreter.prototype.partyNeuterCount = function() {
    443.         return this.neuterCount($gameParty.allMembers());
    444.     };
    445.     Game_Interpreter.prototype.partyMaleCount = function() {
    446.         return this.maleCount($gameParty.allMembers());
    447.     };
    448.     Game_Interpreter.prototype.partyFemaleCount = function() {
    449.         return this.femaleCount($gameParty.allMembers());
    450.     };   
    451.    
    452.     Game_Interpreter.prototype.troopMemberIsUnknown = function(index) {
    453.         if ($gameParty.inBattle()) {
    454.             var enemy = $gameTroop.members()[index];
    455.             if (enemy) { return enemy.isUnknown(); }
    456.         }
    457.         return false;
    458.     };
    459.       
    460.     Game_Interpreter.prototype.troopMemberIsNeuter = function(index) {
    461.         if ($gameParty.inBattle()) {
    462.             var enemy = $gameTroop.members()[index];
    463.             if (enemy) { return enemy.isNeuter(); }
    464.         }
    465.         return false;
    466.     };
    467.     Game_Interpreter.prototype.troopMemberIsMale = function(index) {
    468.         if ($gameParty.inBattle()) {
    469.             var enemy = $gameTroop.members()[index];
    470.             if (enemy) { return enemy.isMale(); }
    471.         }
    472.         return false;
    473.     };
    474.     Game_Interpreter.prototype.troopMemberIsFemale = function(index) {
    475.         if ($gameParty.inBattle()) {
    476.             var enemy = $gameTroop.members()[index];
    477.             if (enemy) { return enemy.isFemale(); }
    478.         }
    479.         return false;
    480.     };   
    481.     Game_Interpreter.prototype.troopUnknownCount = function() {
    482.         return this.unknownCount($gameTroop.aliveMembers());
    483.     };
    484.     Game_Interpreter.prototype.troopNeuterCount = function() {
    485.         return this.neuterCount($gameTroop.aliveMembers());
    486.     };
    487.     Game_Interpreter.prototype.troopMaleCount = function() {
    488.         return this.maleCount($gameTroop.aliveMembers());
    489.     };
    490.     Game_Interpreter.prototype.troopFemaleCount = function() {
    491.         return this.femaleCount($gameTroop.aliveMembers());
    492.     };   
    493. }
    复制代码




    本贴来自国际rpgmaker官方论坛作者:Piyan Glupak处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/gender-plugin-pg_gender-js.141676/

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-7-31 22:35 , Processed in 0.118988 second(s), 52 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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