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

Project1

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

[已经过期] va的话技能树的脚本应该怎么弄呢?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2012-2-25
帖子
10
跳转到指定楼层
1
发表于 2012-3-31 21:11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
即是与置顶里的升级不同的,可以直接选择升级路线的那种技能树

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
2
发表于 2012-3-31 22:16:01 | 只看该作者
直接给脚本
不要问我怎么用,我还没用过……
来自 www.rpgmakervxace.net
  1. #============================================================================
  2. # Skill Trees Ace v0.5
  3. # By Emerald
  4. # HEAVILY inspired by Basic(?) - Skill Trees of Awesome by Leongon
  5. #----------------------------------------------------------------------------
  6. # You're free to use the script for any game, as long as you give credits
  7. #----------------------------------------------------------------------------
  8. # Version History
  9. # 1.0 -> Started the script. Added all basic functions. However, as of now
  10. #        requirements aren't shown in the info window.
  11. #----------------------------------------------------------------------------
  12. # This is a script which I felt very needed for games where character
  13. # customization is important. Note that this is a pretty hard to use script,
  14. # so read the instructions thoroughly!
  15. #
  16. # INSTRUCTIONS:
  17. #
  18. # Just as always, put this script between ▼ Materials and ▼ Main.... If we
  19. # scripters just got a penny for everytime we say this...
  20. #
  21. # The rest of the instructions are seperated in different sections. Read them
  22. # thoroughly!!
  23. #
  24. # 1. Standard Module Constants
  25. # 2. Tree Points Table
  26. # 3. Objects
  27. # 4. Trees
  28. # 5. Trees Per Actor
  29. # 6. Script Calls and others
  30. #
  31. # Information for the information window can be found at the bottom of the
  32. # configurations!
  33. #----------------------------------------------------------------------------
  34. # SECTION 1 / STANDARD MODULE CONSTANTS
  35. #----------------------------------------------------------------------------
  36. # USE_MENU_COMMAND / If set to true, a command in the menu will appear which
  37. # links you to the Skill Trees scene.
  38. #
  39. # MENU_VOCAB / Name of the menu command. Only use if USE_MENU_COMMAND is true.
  40. #
  41. #
  42. # The following five constants are only used in the standard information  
  43. # window:
  44. # TREE_POINTS_VOCAB / Name of the points which you can use to level skills.
  45. #
  46. # MP_COST_VOCAB / Name of the MP Cost of the skill.
  47. #
  48. # CURRENT_TREE_POINTS_VOCAB / The part of text that comes before the name of
  49. # the current tree. Together, they form the name for the points invested in the
  50. # current tree.
  51. #
  52. # SKILL_LEVEL_VOCAB / Name of the skill levels.
  53. #
  54. # REQUIREMENTS_VOCAB / Title of the requirements block.
  55. #
  56. #
  57. # The following constants deal with getting points at level up:
  58. # TABLE_TREE_POINTS / Gain points according to a table. See Tree Points Table
  59. # for more info.
  60. #
  61. # INDIVIDUAL_LEVEL_POINTS / Do the actors gain individual amounts of Tree Points
  62. # on level up, yes or no. Doesn't apply for TABLE_TREE_POINTS.
  63. #
  64. # TREE_POINTS_PER_LEVEL / Amount of Tree Point received on level up. Make it an
  65. # array ( [] ) with the amounts according to actor IDs if INDIVIDUAL_LEVEL_POINTS
  66. # is true. NOTE THAT the first element is for actor ID 0, NOT 1!!!
  67. #
  68. # REMOVE_POINTS_ON_LEVEL_DOWN / If set to true, points will be removed from the
  69. # current amount of Tree Points if the actor's level goes down. BEST USED IN
  70. # COMBINATION WITH RESETS!!
  71. #
  72. #----------------------------------------------------------------------------
  73. # SECTION 2 / TREE_POINTS_TABLE
  74. #----------------------------------------------------------------------------
  75. # This section contains tables with points which actors gain on level up if
  76. # TABLE_TREE_POINTS is set to true.
  77. #
  78. # The table 0 => [...] is for every actor WITHOUT an individual table. Else,
  79. # the key (key => [...]) should be equal to the actor_id.
  80. #
  81. # The values within the table are the amount of tree points gained for every
  82. # NEXT LEVEL!! So the first amount is gained upon reaching level 2, the second
  83. # amount upon reaching level 3 etc.
  84. #
  85. #----------------------------------------------------------------------------
  86. # SECTION 3 / OBJECTS
  87. #----------------------------------------------------------------------------
  88. # Probably the hardest one...
  89. # In this section, you create the objects that make up a tree. These can be
  90. # either skills, or 'arrows'. Arrows are just icons which will be grayed out
  91. # if their child skill is unavailable.
  92. #
  93. # Syntax:
  94. # ARROWS
  95. # Identifier => ["arrow_object", icon_index, child_skill]
  96. # Identifier = a 'name' to easily identify the object. It is used to build trees
  97. # in the next section, and therefore must be unique. However, it can be whatever
  98. # you want it to be. Even an array.
  99. #
  100. # "arrow_object" = the type of the object. Must be exactly "arrow_object" if you
  101. # want to make it an ARROW OBJECT.
  102. #
  103. # icon_index = INDEX of the ICON that is used by the object.
  104. #
  105. # child_skill = SKILL OBJECT which determines if this arrow should be GRAYED OUT
  106. # or NOT. Use the identifier of the SKILL OBJECT as value for this one. Note that
  107. # required amount of points doesn't count! (at least, not the first one)
  108. #
  109. #
  110. # SKILLS
  111. # Identifier => ["skill_object", [skill_1, skill_2, etc...], [requirements_first_skill], [requirements_second_skill], etc.....]
  112. # Identifier = exact same as for the ARROW OBJECTS.
  113. #
  114. # "skill_object" = exact same as "arrow_object", but identifies SKILL OBJECTS.
  115. #
  116. # skill_1, 2, etc... = the IDs of the SKILLS at this object's different LEVELS.
  117. # can be as many as you want. Icon will be taken from the skill, and is grayed
  118. # out if requirements don't apply (except for the first COSTS requirement).
  119. #
  120. # requirements_first_skill = an ARRAY with the different REQUIREMENTS for the
  121. # skill which belongs to this requirements. The requirements are respective with
  122. # the skills. So:
  123. # [skill_1, skill_2, skill_3], [requirements_skill_1], [requirements_skill_2], [requirements_skill_3]
  124. #
  125. # You can have as many of the following types of requirements as you want, but
  126. # you MUST have at least one of the first type:
  127. #
  128. # Tree Points, ["points", amount_needed]
  129. # amount_needed = amount of points required.
  130. # NOTE that the VERY FIRST of this type of requirements is the cost to level the
  131. # skill.
  132. #
  133. # Points in a certain tree, ["tree_points", tree_id, points_needed]
  134. # tree_id = the tree_id of the tree in which the actor must have the needed
  135. # points. If it is the first tree, tree_id = 0, second tree, tree_id = 1, third
  136. # tree, tree_id = 2.
  137. # points_needed = the points required in the specified tree.
  138. #
  139. # Skill Object at certain level, ["tree_skill_level", skill_object, required_level, can_be_from_different_trees]
  140. # skill_object = the identifier of the object which should have the required level.
  141. # required_level = can't be more obvious. 0 is unlearned. Note that the skill level
  142. # should be equal to OR HIGHER THAN this value.
  143. # can_be_from_different_trees = the learned skills are unique per tree. Set this
  144. # to true if the skill of the SKILL OBJECT's level may also be learned by another
  145. # tree.
  146. #  
  147. # Required level, ["level", case, required_level]
  148. # case = in which manner should the level be required? "=" (equal to), ">"  
  149. # (greater than), ">=" (greater than, equal to), "<" (less than), "<=" (less than
  150. # equal to), "!=" (everything BUT)
  151. #
  152. # Skill learned, ["skill", skill_id]
  153. # skill_id = ID of the skill which  the actor must have learned.
  154. # NOTE THAT THIS ONE can also be skills NOT learned by skill trees!! AND IT'S A
  155. # SINGLE SKILL!
  156. #
  157. # Switch on certain value, ["switch", switch_id, key]
  158. # switch_id = again, obvious....
  159. # key = either true or false, the switch must be equal to this.
  160. #
  161. # Variable, ["variable", variable_id, case, amount]
  162. # variable_id = ...
  163. # case = same cases as with REQUIRED LEVEL.
  164. #----------------------------------------------------------------------------
  165. # SECTION 4 / TREES
  166. #----------------------------------------------------------------------------
  167. # Trees are build up from rows and identifiers. Note that every row has 7
  168. # spots for objects. Doesn't matter what the objects are.
  169. #
  170. # Syntax:
  171. # Identifier => [object, object, object, object, object, object, object,
  172. #                object, object, object, object, object, object, object]
  173. # Identifier = the 'name' of the tree. This must be individual and is used to
  174. # sort the trees for the actors(next section). Can be a string, number, symbol,
  175. # whatever.... As long as it is identical and you use the exact same identifier
  176. # in the next section.
  177. #
  178. # object = the IDENTIFIER of the object. Every tree has rows of 7 OBJECTS. The
  179. # amounts of rows if infinite. If you want to leave an spot blank, use nil.
  180. #
  181. #----------------------------------------------------------------------------
  182. # SECTION 5 / TREES PER ACTOR
  183. #----------------------------------------------------------------------------
  184. # The eassiest out of them all. Note that EVERY ACTOR should have an array  
  185. # here.
  186. #
  187. # Syntax:
  188. # Actor_id => [tree_1, tree_2, tree_3, "tree_name_1", "tree_name_2", "tree_name_3"]
  189. # Actor_id = obvious....
  190. #
  191. # tree_1...3 = the IDENTIFIER of the tree as used in Trees. So, can be a string,
  192. # variable, symbol, whatever.... Leave nil for no tree.
  193. #
  194. # "tree_name_1...3" = NAME of the tree as displayed within the scene. Must be
  195. # a string.
  196. #
  197. #----------------------------------------------------------------------------
  198. # SECTION 6 / SCRIPT CALLS AND OTHERS
  199. #----------------------------------------------------------------------------
  200. # To add Tree Points, use:
  201. # $game_actors[actor_id].tree_points += x
  202. # $game_actors[actor_id].total_tree_points += x
  203. # Where actor_id is the id of the actor for which the skill_points are meant
  204. # and x is the amount received. Note that the total_tree_points should also
  205. # receive the SAME amount as it is a variable used when RESETING TREES!!
  206. #
  207. # To add Tree Points to individual trees, use:
  208. # $game_actors[actor_id].tree_points -= x
  209. # $game_actors[actor_id].points_per_tree[tree_id] += x
  210. # Where actor_id has the same meaning as above, tree_id is the id of the tree
  211. # to add the points to and x is the amount of ppoints. The tree_points is used
  212. # in order to prevent adding points which the actor has just gained. Else, use
  213. # $game_actors[actor_id].total_tree_points += x.
  214. #
  215. # To reset a tree, use:
  216. # $game_actors[actor_id].est_reset_tree(tree_id)
  217. # $game_actors[actor_id].est_reset_all_trees
  218. # The first is for only a single tree, the second for ALL trees. For tree_id,
  219. # put the ID of the tree to reset.
  220. #
  221. # $game_actors[actor_id].est_skill_maxed?(skill_object, tree_id)
  222. # to check if the actor with actor_id has maxed the SKILL OBJECT with skill_object
  223. # as IDENTIFIER. Tree_id is the tree containing the SKILL OBJECT.
  224. #
  225. # $game_actors[actor_id].est_skill_level(skill_object, tree_id, different_trees_too?)
  226. # this returns the skill level of the SKILL OBJECT with skill_object as identifier.
  227. # tree_id is the ID of the tree containing the SKILL OBJECT. If different_trees_too?
  228. # is set to true, the actor may have learned the skill in a different tree for
  229. # the skill level to go up by 1.
  230. #
  231. # Use SceneManager.call(Scene_SkillTrees) to call the Skill Trees scene.
  232. #
  233. # INFORMATION_WINDOW
  234. # This script always shows a window to the right of the tree. You can edit the
  235. # contents of this window at the end of the configurations. HOWEVER, you need
  236. # to be able to script to do this!!
  237. #----------------------------------------------------------------------------
  238. # HEAVILY inspired by Basic(?) - Skill Trees of Awesome by Leongon
  239. #----------------------------------------------------------------------------
  240. # If you have any issues with this script, contact me at
  241. # http://www.rpgmakervxace.net/index.php?/
  242. #============================================================================
  243. #
  244. # CONFIGURATION
  245. #
  246. #============================================================================

  247. module EME
  248.   module SKILL_TREES

  249. #----------------------------------------------------------------------------
  250. # SECTION 1 / STANDARD MODULE CONSTANTS
  251. #----------------------------------------------------------------------------     

  252.     USE_MENU_COMMAND = true
  253.     MENU_VOCAB = "Skill Trees"

  254.     TREE_POINTS_VOCAB = "SP"
  255.     MP_COST_VOCAB = "MP Cost"
  256.     CURRENT_TREE_POINTS_VOCAB = "SP in "
  257.     SKILL_LEVEL_VOCAB ="Skill Level"
  258.     REQUIREMENTS_VOCAB = "Requirements"

  259.     TABLE_TREE_POINTS = false
  260.     INDIVIDUAL_LEVEL_POINTS = false
  261.     TREE_POINTS_PER_LEVEL = 2
  262.     REMOVE_POINTS_ON_LEVEL_DOWN = true

  263. #----------------------------------------------------------------------------
  264. # SECTION 2 / TREE_POINTS_TABLE
  265. #----------------------------------------------------------------------------

  266.     Tree_Points_Table = {
  267.     0 => [2, 2, 2, 2, 2, 2, 2, 2, 2,  
  268.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  269.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  270.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  271.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  272.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  273.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  274.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  275.           2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  276.           2, 2, 2, 2, 2, 2, 2, 2, 2],

  277.     1 => [3, 3, 3, 3, 3, 3, 3, 3, 3,
  278.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  279.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  280.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  281.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  282.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  283.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  284.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  285.           3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  286.           3, 3, 3, 3, 3, 3, 3, 3, 3]
  287.     }

  288. #----------------------------------------------------------------------------
  289. # SECTION 3 / OBJECTS
  290. #----------------------------------------------------------------------------     

  291.     Objects = {

  292.     # Arrow Objects
  293.     "arrow_down_begin" => ["arrow_object", 18, "test_skill_2"],
  294.     "arrow_down_end" => ["arrow_object", 18, "test_skill_2"],

  295.     # Skill Objects
  296.     "test_skill_1" => ["skill_object", [1, 2, 3], [["points", 1]], [["points", 1]], [["points", 1]]],
  297.     "test_skill_2" => ["skill_object", [4, 5, 6], [["points", 1], ["tree_skill_level", "test_skill_1", 3]], [["points", 1]], [["points", 1]]]

  298.     }

  299. #----------------------------------------------------------------------------
  300. # SECTION 4 / TREES
  301. #----------------------------------------------------------------------------

  302.     Trees = {

  303.     "test_tree" => ["test_skill_1"    , nil, nil, nil, nil, nil, nil,
  304.                     "arrow_down_begin", nil, nil, nil, nil, nil, nil,
  305.                     "arrow_down_end"  , nil, nil, nil, nil, nil, nil,
  306.                     "test_skill_2"]
  307.     }

  308. #----------------------------------------------------------------------------
  309. # SECTION 5 / TREES PER ACTOR
  310. #----------------------------------------------------------------------------

  311.     Trees_Per_Actor = {

  312.     1 => ["test_tree", nil, nil, "Ubar Tree", "", ""],  
  313.     2 => [nil, "test_tree", nil, "", "Ubar Tree 2", ""]

  314.     }

  315.   end
  316. end

  317. #============================================================================
  318. # ADVANCED INFORMATION WINDOW
  319. #----------------------------------------------------------------------------
  320. # If you can script, here's the refresh with all the contents of the  
  321. # information window so you can easily change it if you want to.
  322. #
  323. # Added constants:
  324. # @actor        = the current actor. It's the $game_actors[actor_id] version.
  325. # @tree_id      = the ID of the current tree. 0, 1 or 2.
  326. # @skill_object = the object that is currently selected.
  327. #
  328. # Useful constants:
  329. # Tree Points            = @actor.tree_points
  330. # Points in current tree = @actor.points_per_tree[@tree_id]
  331. # Skill object level     = @actor.est_skill_level(@skill_object, @tree_id)
  332. #============================================================================

  333. class Window_EST_Information < Window_Base

  334.   def refresh
  335.     contents.clear
  336.     # Actor Info
  337.     draw_actor_face(@actor, 0, 0)
  338.     draw_actor_name(@actor, 100, 0)
  339.     draw_actor_level(@actor, 212, 0)
  340.     draw_actor_class(@actor, 100, 24)
  341.     draw_actor_tree_points(@actor, 212, 24)
  342.     draw_actor_current_tree_points(@actor, 100, 48)
  343.     draw_line
  344.     # Skill Info
  345.     @current_skill = $data_skills[@skill_object[1][@actor.est_skill_level(@skill_object, @tree_id)]]
  346.     draw_skill_name(0, 106)
  347.     draw_skill_cost(136, 106)
  348.     draw_skill_level(136, 1130)
  349.     draw_text_ex(0, 154, @current_skill.description)
  350.     draw_line_2
  351. #    draw_requirements(0, 208)
  352.   end

  353.   def draw_actor_level(actor, x, y)
  354.     change_color(system_color)
  355.     draw_text(x, y, 80, line_height, Vocab::level)
  356.     change_color(normal_color)
  357.     draw_text(x + 92, y, 24, line_height, actor.level, 2)
  358.   end

  359.   def draw_actor_tree_points(actor, x, y)
  360.     change_color(system_color)
  361.     draw_text(x, y, 80, line_height, EME::SKILL_TREES::TREE_POINTS_VOCAB)
  362.     change_color(normal_color)
  363.     draw_text(x + 80, y, 36, line_height, actor.tree_points, 2)
  364.   end

  365.   def draw_actor_current_tree_points(actor, x, y)
  366.     change_color(system_color)
  367.     draw_text(x, y, 170, line_height, EME::SKILL_TREES::CURRENT_TREE_POINTS_VOCAB + EME::SKILL_TREES::Trees_Per_Actor[actor.id][@tree_id + 3])
  368.     change_color(normal_color)
  369.     draw_text(x + 192, y, 36, line_height, actor.points_per_tree[@tree_id], 2)
  370.   end

  371.   def draw_line
  372.     rect = Rect.new(0, 100, contents.width, 2)
  373.     contents.fill_rect(rect, normal_color)
  374.   end

  375.   def draw_line_2
  376.     rect = Rect.new(0, 202, contents.width, 2)
  377.     contents.fill_rect(rect, normal_color)
  378.   end

  379.   def draw_skill_name(x, y)
  380.     draw_icon(@current_skill.icon_index, x, y, true)
  381.     change_color(normal_color)
  382.     draw_text(x + 24, y, 112, line_height, @current_skill.name)
  383.   end

  384.   def draw_skill_cost(x, y)
  385.     change_color(system_color)
  386.     draw_text(x, y, 144, line_height, EME::SKILL_TREES::MP_COST_VOCAB)
  387.     change_color(normal_color)
  388.     draw_text(x + 144, y, 48, line_height, @current_skill.mp_cost.to_s, 2)
  389.   end

  390.   def draw_skill_level(x, y)
  391.     change_color(system_color)
  392.     draw_text(x, y, 144, line_height, EME::SKILL_TREES::SKILL_LEVEL_VOCAB)
  393.     change_color(normal_color)
  394.     unless @actor.est_skill_maxed?(@skill_object, @tree_id)
  395.       draw_text(x + 156, y, 36, line_height, @actor.est_skill_level(@skill_object, @tree_id).to_s, 2)
  396.     else
  397.       draw_text(x + 156, y, 36, line_height, "MAX", 2)
  398.     end
  399.   end
  400. =begin
  401.   def draw_requirements(x, y)
  402.     draw_text(x, y, 328, line_height, EME::SKILL_TREES::REQUIREMENTS_VOCAB)
  403.   end
  404. =end   
  405. end

  406. # Don't edit anything past this line unless you know what you're doing.

  407. #============================================================================
  408. #
  409. # Game_Party
  410. # Adds memorize variables.
  411. #============================================================================

  412. class Game_Party

  413.   attr_accessor :est_last_object_index
  414.   attr_accessor :est_last_tree_id
  415.   attr_accessor :est_last_actor_index

  416.   alias eme_est_something_something_dark_side initialize
  417.   def initialize
  418.     eme_est_something_something_dark_side
  419.     @est_last_object_index = 0
  420.     @est_last_tree_id = 0
  421.     @est_last_actor_index = 0
  422.   end

  423. end

  424. #============================================================================
  425. #
  426. # Game_Actor
  427. # Adds needed individual variables and stuff.
  428. #============================================================================

  429. class Game_Actor

  430.   attr_accessor :tree_points
  431.   attr_accessor :total_tree_points
  432.   attr_accessor :points_per_tree
  433.   attr_accessor :tree_skills

  434.   alias eme_est_setup_actor setup
  435.   def setup(actor_id)
  436.     eme_est_setup_actor(actor_id)
  437.     @tree_points = 0
  438.     @total_tree_points = 0
  439.     @points_per_tree = [0,0,0]
  440.     @tree_skills = [[], [], []]
  441.   end

  442.   alias eme_est_level_up level_up
  443.   def level_up
  444.     eme_est_level_up
  445.     if EME::SKILL_TREES::TABLE_TREE_POINTS
  446.       if EME::SKILL_TREES::Tree_Points_Table.has_key?(@id)
  447.         @tree_points += EME::SKILL_TREES::Tree_Points_Table[@id][@level - 2]
  448.         @total_tree_points += EME::SKILL_TREES::Tree_Points_Table[@id][@level - 2]
  449.       else
  450.         @tree_points += EME::SKILL_TREES::Tree_Points_Table[0][@level - 2]
  451.         @total_tree_points += EME::SKILL_TREES::Tree_Points_Table[0][@level - 2]
  452.       end
  453.     else
  454.       if EME::SKILL_TREES::INDIVIDUAL_LEVEL_POINTS
  455.         @tree_points += EME::SKILL_TREES::TREE_POINTS_PER_LEVEL[@id]
  456.         @total_tree_points += EME::SKILL_TREES::TREE_POINTS_PER_LEVEL[@id]
  457.       else
  458.         @tree_points += EME::SKILL_TREES::TREE_POINTS_PER_LEVEL
  459.         @total_tree_points += EME::SKILL_TREES::TREE_POINTS_PER_LEVEL
  460.       end
  461.     end
  462.   end

  463.   alias eme_est_level_down level_down
  464.   def level_down
  465.     eme_est_level_down
  466.     if EME::SKILL_TREES::REMOVE_POINTS_ON_LEVEL_DOWN
  467.       if EME::SKILL_TREES::TABLE_TREE_POINTS
  468.         if EME::SKILL_TREES::Tree_Points_Table.has_key?(@id)
  469.           @tree_points -= EME::SKILL_TREES::Tree_Points_Table[@id][@level - 1]
  470.           @total_tree_points -= EME::SKILL_TREES::Tree_Points_Table[@id][@level - 1]
  471.         else
  472.           @tree_points -= EME::SKILL_TREES::Tree_Points_Table[0][@level - 1]
  473.           @total_tree_points -= EME::SKILL_TREES::Tree_Points_Table[0][@level - 1]
  474.         end
  475.       else
  476.         if EME::SKILL_TREES::INDIVIDUAL_LEVEL_POINTS
  477.           @tree_points -= EME::SKILL_TREES::TREE_POINTS_PER_LEVEL[@id]
  478.           @total_tree_points -= EME::SKILL_TREES::TREE_POINTS_PER_LEVEL[@id]
  479.         else
  480.           @tree_points -= EME::SKILL_TREES::TREE_POINTS_PER_LEVEL
  481.           @total_tree_points -= EME::SKILL_TREES::TREE_POINTS_PER_LEVEL
  482.         end
  483.       end
  484.     end
  485.   end

  486.   def est_reset_tree(tree_id)
  487.     @tree_points += @tree_points[tree_id]
  488.     @tree_points[tree_id] = 0
  489.     @tree_skills[tree_id].clear
  490.   end

  491.   def est_reset_all_trees
  492.     for i in 0..2
  493.       est_reset_tree(i)
  494.     end
  495.   end

  496.   def est_skill_level(skill_object, tree_id)
  497.     current_skill = 0
  498.     loop do
  499.       unless est_skill_maxed?(skill_object, tree_id)
  500.         if @tree_skills[0].include?(skill_object[1][current_skill])
  501.           current_skill += 1  
  502.         elsif @tree_skills[1].include?(skill_object[1][current_skill])
  503.           current_skill += 1  
  504.         elsif @tree_skills[2].include?(skill_object[1][current_skill])
  505.           current_skill += 1  
  506.         else
  507.           return current_skill
  508.           break
  509.         end
  510.       else
  511.         break
  512.         return est_skill_max_level(skill_object)
  513.       end
  514.     end
  515.   end

  516.   def est_skill_maxed?(skill_object, tree_id)
  517.     current_element = 0
  518.     last_element = skill_object[1].size - 1
  519.     loop do
  520.       if current_element == last_element
  521.         return @tree_skills[tree_id].include?(skill_object[1][current_element])
  522.       else
  523.         if @tree_skills[tree_id].include?(skill_object[1][current_element])
  524.           current_element += 1
  525.         else
  526.           return false
  527.         end
  528.       end
  529.     end
  530.   end

  531.   def est_skill_max_level(skill_object)
  532.     return skill_object[1].size - 1
  533.   end

  534. end

  535. #============================================================================
  536. #
  537. # Window_EST_Trees
  538. # The main window. This one depicts the current tree.
  539. #============================================================================

  540. class Window_EST_Trees < Window_Selectable

  541.   attr_reader :data
  542.   attr_reader :objects
  543.   attr_reader :trees
  544.   attr_reader :trees_per_actor
  545.   attr_accessor :actor
  546.   attr_accessor :tree_id

  547.   def initialize(tree_id)
  548.     super(0, 48, 7 * 24 + 24, Graphics.height - 48)
  549.     @tree_id = tree_id
  550.     @data = []
  551.     @actor = $game_party.members[$game_party.est_last_actor_index]
  552.     @trees = EME::SKILL_TREES::Trees
  553.     @trees_per_actor = EME::SKILL_TREES::Trees_Per_Actor
  554.     @objects = EME::SKILL_TREES::Objects
  555.     refresh
  556.     select_last
  557.   end

  558.   def item_max
  559.     @data ? @data.size : 1
  560.   end

  561.   def col_max
  562.     return 7
  563.   end

  564.   def item_width
  565.     return 24
  566.   end

  567.   def item_height
  568.     return 24
  569.   end

  570.   def spacing
  571.     return 0
  572.   end

  573.   def select_last
  574.     if @data[$game_party.est_last_object_index] != nil and @objects[@data[$game_party.est_last_object_index]][1] != "arrow_object"
  575.       select($game_party.est_last_object_index)
  576.     else
  577.       current_element = 0
  578.       last_element = @data.size - 1
  579.       loop do
  580.         if current_element != last_element
  581.           if @data[current_element] != nil and @objects[@data[current_element]][1] != "arrow_object"
  582.             select(current_element)
  583.             return
  584.           else
  585.             current_element += 1
  586.           end
  587.         else
  588.           self.unselect
  589.         end
  590.       end
  591.     end
  592.   end

  593.   alias eme_est_cursor_down cursor_down
  594.   def cursor_down(wrap = false)
  595.     loop do
  596.       if index + col_max > @data.size - 1
  597.         self.index = 0
  598.         if @data[index] != nil and @objects[@data[index]] != "arrow_object"
  599.           select(0)
  600.           return
  601.         end
  602.       elsif @data[index + col_max] != nil and @objects[@data[index + col_max]][0] != "arrow_object"
  603.         break
  604.       else
  605.         self.index += col_max
  606.         self.index = 0 if index > item_max
  607.       end
  608.     end
  609.     eme_est_cursor_down(wrap)
  610.     $game_party.est_last_object_index = @index
  611.   end

  612.   alias eme_est_cursor_up cursor_up
  613.   def cursor_up(wrap = false)
  614.     loop do
  615.       if index - col_max < 0
  616.         self.index = @data.size - 1
  617.         if @data[index] != nil and @objects[@data[index]] != "arrow_object"
  618.           select(index)
  619.           return
  620.         end
  621.       elsif @data[index - col_max] != nil and @objects[@data[index - col_max]][0] != "arrow_object"
  622.         break
  623.       else
  624.         self.index -= col_max
  625.         self.index = 0 if index < 0
  626.       end
  627.     end
  628.     eme_est_cursor_up(wrap)
  629.     $game_party.est_last_object_index = @index
  630.   end

  631.   alias eme_est_cursor_right cursor_right
  632.   def cursor_right(wrap = false)
  633.     loop do
  634.       if index + 1 > @data.size - 1
  635.         self.index = 0
  636.         if @data[index] != nil and @objects[@data[index]] != "arrow_object"
  637.           select(0)
  638.           return
  639.         end
  640.       elsif @data[index + 1] != nil and @objects[@data[index + 1]][0] != "arrow_object"
  641.         break
  642.       else
  643.         self.index += 1
  644.         self.index = 0 if index > item_max
  645.       end
  646.     end
  647.     eme_est_cursor_right(wrap)
  648.     $game_party.est_last_object_index = @index
  649.   end

  650.   alias eme_est_cursor_left cursor_left
  651.   def cursor_left(wrap = false)
  652.     loop do
  653.       if index - 1 < 0
  654.         self.index = @data.size - 1
  655.         if @data[index] != nil and @objects[@data[index]] != "arrow_object"
  656.           select(@data.size - 1)
  657.           return
  658.         end
  659.       elsif @data[index - 1] != nil and @objects[@data[index - 1]][0] != "arrow_object"
  660.         break
  661.       else
  662.         self.index -= 1
  663.         self.index = 0 if index > item_max
  664.       end
  665.     end
  666.     eme_est_cursor_left(wrap)
  667.     $game_party.est_last_object_index = @index
  668.   end

  669.   def enable_arrow?(arrow_object)
  670.     return true if enable_skill?(@objects[arrow_object[2]], true)
  671.   end

  672.   def enable_skill?(skill_object, used_in_enable_arrow)
  673.     return true if @actor.est_skill_maxed?(skill_object, @tree_id)
  674.     requirements = skill_object[@actor.est_skill_level(skill_object, @tree_id) + 2]
  675.     $game_variables[1] = requirements if skill_object == @objects["test_skill_2"]
  676.     requirements.each {|requirement|
  677.       case requirement[0]
  678.       when "points"
  679.         return false unless used_in_enable_arrow or @actor.tree_points >= requirement[1]
  680.       when "tree_points"
  681.         return false unless @actor.points_per_tree[requirement[1]] >= requirement[2]
  682.       when "tree_skill_level"  
  683.         if requirement[3] == true
  684.           for i in 0..2
  685.             return false unless @actor.est_skill_level(@objects["test_skill_1"], i) >= requirement[2] or @actor.est_skill_maxed?(@objects[requirement[1]], i)
  686.           end
  687.         else
  688.           return false unless @actor.est_skill_level(@objects["test_skill_1"], @tree_id) >= requirement[2] or @actor.est_skill_maxed?(@objects[requirement[1]], @tree_id)
  689.         end
  690.       when "level"
  691.         case requirement[1]
  692.         when "="
  693.           return false unless @actor.level == requirement[2]
  694.         when ">"
  695.           return false unless @actor.level > requirement[2]
  696.         when ">="
  697.           return false unless @actor.level >= requirement[2]
  698.         when "<"
  699.           return false unless @actor.level < requirement[2]
  700.         when "<="
  701.           return false unless @actor.level <= requirement[2]
  702.         when "!="
  703.           return false unless @actor.level != requirement[2]
  704.         end
  705.       when "skill"
  706.         return false unless @actor.has_skill?(requirement[1])
  707.       when "switch"
  708.         if requirement[2]
  709.           return false unless $game_switches[requirement[1]]  
  710.         else
  711.           return false if $game_switches[requirement[1]]  
  712.         end
  713.       when "variable"
  714.         case requirement[2]
  715.         when "="
  716.           return false unless $game_variables[requirement[1]] == requirement[3]
  717.         when ">"
  718.           return false unless $game_variables[requirement[1]] > requirement[3]
  719.         when ">="
  720.           return false unless $game_variables[requirement[1]] >= requirement[3]
  721.         when "<"
  722.           return false unless $game_variables[requirement[1]] < requirement[3]
  723.         when "<="
  724.           return false unless $game_variables[requirement[1]] <= requirement[3]
  725.         when "!="
  726.           return false unless $game_variables[requirement[1]] != requirement[3]
  727.         end
  728.       end
  729.     }
  730.     return true
  731.   end

  732.   def current_item_enabled?
  733.     return false if @data[index] == nil
  734.     case @objects[@data[index]][0]
  735.     when "skill_object"
  736.       return true if enable_skill?(@objects[@data[index]], false)
  737.     when "arrow_object"
  738.       return true if enable_arrow?(@objects[@data[index]])
  739.     end
  740.     return false
  741.   end

  742.   def make_tree_data
  743.     if @trees_per_actor[@actor.id] != nil
  744.       if @trees_per_actor[@actor.id][@tree_id] != nil
  745.         @data = @trees[@trees_per_actor[@actor.id][@tree_id]]
  746.       elsif @trees_per_actor[@actor.id][0] != nil
  747.         @tree_id = 0
  748.         @data = @trees[@trees_per_actor[@actor.id][@tree_id]]
  749.       elsif @trees_per_actor[@actor.id][1] != nil
  750.         @tree_id = 1
  751.         @data = @trees[@trees_per_actor[@actor.id][@tree_id]]
  752.       elsif @trees_per_actor[@actor.id][2] != nil
  753.         @tree_id = 2
  754.         @data = @trees[@trees_per_actor[@actor.id][@tree_id]]
  755.       else
  756.         @data = nil
  757.       end
  758.     else
  759.       @data = nil
  760.     end
  761.   end

  762.   def draw_item(index)
  763.     if @data[index] != nil
  764.       object = @objects[@data[index]]
  765.       rect = item_rect(index)
  766.       rect.width -= 4
  767.       if object[0] == "arrow_object"
  768.         draw_icon(object[1], rect.x, rect.y, enable_arrow?(object))
  769.       elsif object[0] == "skill_object"
  770.         skill_level = @actor.est_skill_level(object, @tree_id)
  771.         draw_icon($data_skills[object[1][skill_level]].icon_index, rect.x, rect.y, enable_skill?(object, false))
  772.         contents.font.size = 16
  773.         unless @actor.est_skill_maxed?(object, @tree_id)   
  774.           draw_text(rect.x + 2, rect.y + 4, 24, line_height, @actor.est_skill_level(object, @tree_id).to_s)
  775.         else
  776.           draw_text(rect.x + 2, rect.y + 4, 24, line_height, "MAX")
  777.         end
  778.       end
  779.     end
  780.   end

  781.   def refresh
  782.     make_tree_data
  783.     create_contents
  784.     draw_all_items
  785.     select_last
  786.   end

  787. end

  788. #============================================================================
  789. #
  790. # Window_EST_Selection
  791. # Window which enables the player to select the differen trees.
  792. #============================================================================

  793. class Window_EST_Selection < Window_HorzCommand

  794.   attr_accessor :actor_id

  795.   def initialize
  796.     @actor_id = 0
  797.     super(0, 0)
  798.   end

  799.   def window_width
  800.     Graphics.width
  801.   end

  802.   def col_max
  803.     return 3
  804.   end

  805.   def update
  806.     super
  807.     case current_symbol
  808.     when :tree_1
  809.       $game_party.est_last_tree_id = 0
  810.     when :tree_2
  811.       $game_party.est_last_tree_id = 1
  812.     when :tree_3
  813.       $game_party.est_last_tree_id = 2
  814.     end
  815.   end

  816.   def make_command_list
  817.     if EME::SKILL_TREES::Trees_Per_Actor.include?(@actor_id)
  818.       add_command(EME::SKILL_TREES::Trees_Per_Actor[@actor_id][3], :tree_1) if EME::SKILL_TREES::Trees_Per_Actor[@actor_id][0] != nil
  819.       add_command(EME::SKILL_TREES::Trees_Per_Actor[@actor_id][4], :tree_2) if EME::SKILL_TREES::Trees_Per_Actor[@actor_id][1] != nil
  820.       add_command(EME::SKILL_TREES::Trees_Per_Actor[@actor_id][5], :tree_3) if EME::SKILL_TREES::Trees_Per_Actor[@actor_id][2] != nil
  821.     end
  822.   end

  823.   alias eme_est_i_need_something_original refresh
  824.   def refresh
  825.     eme_est_i_need_something_original
  826.     clear_command_list
  827.     make_command_list
  828.   end

  829. end

  830. #============================================================================
  831. #
  832. # Window_EST_Information
  833. # Window which shows all needed information.
  834. #============================================================================

  835. class Window_EST_Information < Window_Base

  836.   attr_accessor :actor
  837.   attr_accessor :tree_id
  838.   attr_accessor :skill_object

  839.   def initialize
  840.     super(7 * 24 + 24, 48, Graphics.width - 7 * 24 - 24, Graphics.height - 48)
  841.     @actor = nil
  842.     @tree_id = 0
  843.     @skill_object = ["", [0], ["points", 0]]
  844.   end

  845. end

  846. #============================================================================
  847. #
  848. # Window_MenuCommand
  849. # Adds the skill trees menu command.
  850. #============================================================================

  851. class Window_MenuCommand

  852.   alias eme_est_original_commands add_original_commands
  853.   def add_original_commands
  854.     eme_est_original_commands
  855.     add_command(EME::SKILL_TREES::MENU_VOCAB, :talents) if EME::SKILL_TREES::USE_MENU_COMMAND
  856.   end

  857. end

  858. #============================================================================
  859. #
  860. # Scene_Menu
  861. # Adds the handler to access the skill trees scene from the menu.
  862. #============================================================================

  863. class Scene_Menu

  864.   alias eme_est_create_command_window create_command_window
  865.   def create_command_window
  866.     eme_est_create_command_window
  867.     @command_window.set_handler(:talents, method(:talents_scene)) if EME::SKILL_TREES::USE_MENU_COMMAND
  868.   end

  869.   def talents_scene
  870.     SceneManager.call(Scene_SkillTrees)
  871.   end

  872. end

  873. #============================================================================
  874. #
  875. # Scene_SkillTrees
  876. # New scene to learn skills from the trees.
  877. #============================================================================

  878. class Scene_SkillTrees < Scene_MenuBase

  879.   def start
  880.     super
  881.     create_skill_trees
  882.     create_skill_trees_selection
  883.     create_info_window
  884.     @skill_trees_selection.deactivate
  885.     @skill_tree.activate
  886.   end

  887.   alias eme_est_scene_update update
  888.   def update
  889.     eme_est_scene_update
  890.     any_change = false
  891.     if @info_window.skill_object != @skill_tree.objects[@skill_tree.data[$game_party.est_last_object_index]]
  892.       @info_window.skill_object = @skill_tree.objects[@skill_tree.data[$game_party.est_last_object_index]]
  893.       any_change = true
  894.     end
  895.     if @info_window.tree_id != $game_party.est_last_tree_id
  896.       @info_window.tree_id = $game_party.est_last_tree_id
  897.       any_change = true
  898.     end
  899.     if @skill_tree.tree_id != $game_party.est_last_tree_id
  900.       @skill_tree.tree_id = $game_party.est_last_tree_id
  901.       any_change = true
  902.     end
  903.     if any_change
  904.       @info_window.refresh
  905.       @skill_tree.refresh
  906.     end
  907.   end

  908.   def create_skill_trees
  909.     @skill_tree = Window_EST_Trees.new($game_party.est_last_tree_id)
  910.     @skill_tree.viewport = @viewport
  911.     @skill_tree.set_handler(:ok,     method(:learn_skill))
  912.     @skill_tree.set_handler(:cancel, method(:switch_to_selection))
  913.     @skill_tree.set_handler(:pageup, method(:actor_left))
  914.     @skill_tree.set_handler(:pagedown, method(:actor_right))
  915.   end

  916.   def create_skill_trees_selection
  917.     @skill_trees_selection = Window_EST_Selection.new
  918.     @skill_trees_selection.actor_id = @skill_tree.actor.id
  919.     @skill_trees_selection.clear_command_list
  920.     @skill_trees_selection.make_command_list
  921.     @skill_trees_selection.refresh
  922.     @skill_trees_selection.viewport = @viewport
  923.     @skill_trees_selection.select(@skill_tree.tree_id)
  924.     @skill_trees_selection.set_handler(:ok, method(:switch_to_tree))
  925.     @skill_trees_selection.set_handler(:cancel, method(:return_scene))
  926.     @skill_trees_selection.set_handler(:pageup, method(:actor_left))
  927.     @skill_trees_selection.set_handler(:pagedown, method(:actor_right))
  928.   end

  929.   def create_info_window
  930.     @info_window = Window_EST_Information.new
  931.     @info_window.actor = @skill_tree.actor
  932.     @info_window.tree_id = @skill_tree.tree_id
  933.     @info_window.skill_object = @skill_tree.objects[@skill_tree.data[@skill_tree.index]]
  934.     @info_window.refresh
  935.     @info_window.viewport = @viewport
  936.   end

  937.   def switch_to_tree
  938.     @skill_trees_selection.deactivate
  939.     @skill_tree.activate
  940.   end

  941.   def switch_to_selection
  942.     @skill_tree.deactivate
  943.     @skill_trees_selection.activate
  944.   end

  945.   def actor_left
  946.     last_window = "selection"
  947.     if @skill_tree.active
  948.       last_window = "trees"
  949.     end
  950.     current_actor_index = $game_party.members.index(@skill_tree.actor)
  951.     if current_actor_index - 1 >= 0
  952.       @skill_tree.actor = $game_party.members[current_actor_index - 1]
  953.     else
  954.       @skill_tree.actor = $game_party.members[$game_party.members.size - 1]
  955.     end
  956.     @skill_trees_selection.actor_id = @skill_tree.actor.index
  957.     @info_window.actor = @skill_tree.actor
  958.     @skill_tree.refresh
  959.     @skill_trees_selection.refresh
  960.     @info_window.refresh
  961.     $game_party.est_last_actor_index = $game_party.members.index(@skill_tree.actor)
  962.     if last_window = "trees"
  963.       @skill_tree.activate
  964.     else
  965.       @skill_trees_selection.activate
  966.     end
  967.   end

  968.   def actor_right
  969.     last_window = "selection"
  970.     if @skill_tree.active
  971.       last_window = "trees"
  972.     end
  973.     current_actor_index = $game_party.members.index(@skill_tree.actor)
  974.     if $game_party.members[current_actor_index + 1] != nil
  975.       @skill_tree.actor = $game_party.members[current_actor_index + 1]
  976.     else
  977.       @skill_tree.actor = $game_party.members[0]
  978.     end
  979.     @skill_trees_selection.actor_id = @skill_tree.actor.id
  980.     @info_window.actor = @skill_tree.actor
  981.     @skill_tree.refresh
  982.     @skill_trees_selection.refresh
  983.     @info_window.refresh
  984.     $game_party.est_last_actor_index = $game_party.members.index(@skill_tree.actor)
  985.     if last_window = "trees"
  986.       @skill_tree.activate
  987.     else
  988.       @skill_trees_selection.activate
  989.     end
  990.   end

  991.   def learn_skill
  992.     object = @skill_tree.objects[@skill_tree.data[@skill_tree.index]]
  993.     current_element = 0
  994.     cost = 0
  995.     loop do
  996.       if object[@actor.est_skill_level(object, @skill_tree.tree_id) + 2][current_element][0] == "points"
  997.         cost = object[@actor.est_skill_level(object, @skill_tree.tree_id) + 2][current_element][1]
  998.         break
  999.       else
  1000.         current_element += 1
  1001.       end
  1002.     end
  1003.     $game_actors[@actor.id].tree_points -= cost
  1004.     $game_actors[@actor.id].points_per_tree[@skill_tree.tree_id] += cost
  1005.     $game_actors[@actor.id].tree_skills[@skill_tree.tree_id].push(object[1][@actor.est_skill_level(object, @skill_tree.tree_id)])
  1006.     $game_actors[@actor.id].learn_skill(object[1][@actor.est_skill_level(object, @skill_tree.tree_id)])
  1007.     @skill_tree.refresh
  1008.     @info_window.refresh
  1009.     @skill_tree.activate
  1010.   end

  1011. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2012-2-25
帖子
10
3
 楼主| 发表于 2012-3-31 23:24:01 | 只看该作者
saturnfjh 发表于 2012-3-31 22:16
直接给脚本
不要问我怎么用,我还没用过……
来自 www.rpgmakervxace.net

虽然你说不要问。。。但怎么用啊。。。。。

点评

放弃这脚本吧,,,bug太给力了。。。  发表于 2012-4-2 22:37
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
91 小时
注册时间
2008-7-14
帖子
112
4
发表于 2012-4-1 23:47:04 | 只看该作者
本帖最后由 kiuh99999 于 2012-4-2 00:28 编辑

这个脚本好难啊。。。
而且默认提供的还有bug。。。
SECTION 1 / STANDARD MODULE CONSTANTS     加点设置。。。自己折磨。。咱没看。。
SECTION 2 / TREE_POINTS_TABLE    看不懂。。。。貌似是加点的点数。。
SECTION 3 / OBJECTS   技能树设置1。。这部分超复杂,,估计只能勉强看会。。最多一半,,,
SECTION 4 / TREES 技能树设置2。。是 设置1的更加具体化。。。
SECTION 5 / TREES PER ACTOR   对应角色的技能树。
格式:Actor_id => [tree_1, tree_2, tree_3, "tree_name_1", "tree_name_2", "tree_name_3"]
最多3个技能树,,例 1=> [1, nil, 2, "tree_name_1", ", "tree_name_3"]    这样有两个技能树。。前3个是对应SECTION 4 的技能树名字,后三个你可以自己DIY新名字,也可以用原本的,,, 如果名字为空 ,就这样         “”,      前面技能树为空,则用 nil 代替。。

大致只能看懂这么多。余下lz最好自己研究。。咱慢慢折腾。。。。


‘‘──kiuh99999于2012-4-2 19:12补充以下内容

咱已经被那无尽的bug给打败了。。
SECTION 4 /。。。理解 。。。
’’


‘‘──kiuh99999于2012-4-2 22:36补充以下内容

SECTION 4 ..以7个为一排,,作为 树 的开头。。。如果没有,,就用 nil。。。然后貌似可以弄很长的树,,,
SECTION 3  这是使我放弃的原因。。。各种bug,。。各种洗具。。。太给力。。。
先是技能只有3个。。如果在按下去的话,直接弹bug。。。。。好吧。。这部分可以用 需要 技能点999999999999999 来回避。。。
然后呢,我选另一个角色,加点无效。。(有效的方法貌似猜到,但是麻烦。。。)结果呢。。。多按了几次。直接bug。。。。我明明按了 page down了。点还加在第一个角色上面。。神奇啊  。。。
顺说一句。。网页进不去。。那个脚本的地址。是要注册吗?
’’
吾为吾剑之骨 身为钢铁,血为烈焰 跨越万千战场而不败 未曾有一次败逃 未能有一次获解 自醉于剑之孤丘上 因此,此生亦无意义 此身,定可为剑
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 15:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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