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

Project1

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

[已经过期] 关于外站的一个技能树脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
118
在线时间
197 小时
注册时间
2011-1-23
帖子
41
跳转到指定楼层
1
发表于 2014-10-16 18:40:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 冰风时瞬 于 2014-10-16 18:43 编辑

在外站找到一个技能树脚本
不过如果我希望在技能等级提升时学会新的技能并遗忘旧的技能,让它真的技能提升
(例如:我在技能中做出“治疗”LV1-LV5五个技能,在使用技能树提升治疗等级时,治疗LV1的技能被遗忘并学会治疗LV2)
这应该怎么做呢?
另外如果要以职业决定技能树而非角色的话,需要怎么修改?
  1. #=======================================================
  2. #         Lune Skill Tree
  3. # Autor: Raizen
  4. # Comunidade: www.centrorpg.com
  5. # Classica árvore de habilidades para jogos de rpg,
  6. # leia atentamente as instruções para configurar corretamente
  7. # o script.
  8. #=======================================================

  9. module Skill_Tree
  10. #+++++++++++++++++++++++++++++++++++++++++++++
  11. # Comandos possíveis pelo script.
  12. #+++++++++++++++++++++++++++++++++++++++++++++

  13. # Adicionar pontos de habilidade manualmente.
  14. # Chamar Script: $game_actors[id].skill_tree[0]
  15. # lembrando as operações += adiciona, -= subtrai.
  16. # Exemplo, quero adicionar 4 pontos de habilidade no personagem com id 5.
  17. # Chamar Script: $game_actors[5].skill_tree[0] += 4


  18. # Mudar uma habilidade manualmente.

  19. # Chamar Script: $game_actors[id].skill_tree[skill_id]
  20. # aonde id é o id do personagem no Database e skill_id o id de skill no database
  21. # Exemplo, quero adicionar 5 no skill 3 do personagem com id 2.
  22. # Chamar Script: $game_actors[2].skill_tree[3] += 5

  23. # lembrando as operações += adiciona, -= subtrai.


  24. # Para ativar a tela de skill tree manualmente.
  25. # Chamar Script: SceneManager.call(Scene_Skill_Change)
  26. #+++++++++++++++++++++++++++++++++++++++++++++
  27. # Configurações Iniciais
  28. #+++++++++++++++++++++++++++++++++++++++++++++

  29. # Permitir imagem de fundo? true ou false
  30. # se true, ele irá desenhar uma imagem na frente do Skill Tree,
  31. # logo permitindo que seja feito por imagens qualquer adição.
  32. # A imagem deve estar na pasta Graphics/System com o nome Actor1, Actor2...
  33. # referente ao id de cada personagem.
  34. Images = true
  35. #---------------------------------------------
  36. # Configurações de Textos
  37. #---------------------------------------------

  38. #texto de confirmação de adição de 1 ponto.
  39. # lembre-se de manter dentro de aspas ''.
  40. Bot1 = 'Adicionar 1 ponto'
  41. # cancelamento
  42. Bot2 = 'Cancelar'
  43. # Pontos restantes.
  44. Rest = 'Pontos Restantes'
  45. # Pontos totais.
  46. Total = 'Pontos Totais'
  47. # Nome no menu.
  48. Menu = 'Skill Tree'
  49. #====================================================

  50. # Criação da tela de personagens, leia atentamente para as instruções,
  51. # é muito importante que configure corretamente o script.
  52. #====================================================
  53. # Não modificar.
  54.   Actor = []
  55.   Sk = []
  56.   
  57. # Base para a criação de personagens, evite apagar essas linhas,
  58. # caso necessite sempre utilize esse template para criar os personagens.
  59. =begin
  60. #
  61. Actor[id] = [

  62. Sk[0] = {
  63. 'x' => 100, #posição do ícone em x
  64. 'y' => 32, #posição do ícone em y
  65. 'skill' => 5, #habilidade adquirida
  66. 'desc1' => 'Requer: Lvl 5, Bola de Fogo lvl 5', #descrição 1
  67. 'desc2' => 'Member1', #descrição 2
  68. 'desc3' => 'Habilidade com ataque em área', #descrição 3
  69. 'req' => [0, 1, 5, 9, 5], #requerimentos [level necessário do personagem,
  70. #id do Skill necessário, level do skill, id do skill, level do skill.
  71. # de acordo com essa tabela de Sk[id]
  72. 'maxlvl' => 5, # level máximo da habilidade
  73. 'mult' => [10, 5], # multiplicadores, o primeiro é multiplicador de dano/cura
  74. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  75. },


  76. Sk[1] = {
  77. 'x' => 100, #posição do ícone em x
  78. 'y' => 32, #posição do ícone em y
  79. 'skill' => 5, #habilidade adquirida
  80. 'desc1' => 'Requer: Lvl 5, Bola de Fogo lvl 5', #descrição 1
  81. 'desc2' => 'Member1', #descrição 2
  82. 'desc3' => 'Habilidade com ataque em área', #descrição 3
  83. 'req' => [0, 1, 5, 9, 5], #requerimentos [level necessário do personagem,
  84. #id do Skill necessário, level do skill, id do skill, level do skill.
  85. # de acordo com essa tabela de Sk[id]
  86. 'maxlvl' => 5, # level máximo da habilidade
  87. 'mult' => [10, 5], # multiplicadores, o primeiro é multiplicador de dano/cura
  88. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  89. }

  90. # pode adicionar quantos bem entender do mesmo bloco
  91. ]
  92. =end
  93. # ============================================================================
  94. # ======= Personagem 1 =======================================================
  95. # ============================================================================
  96. Actor[8] = [
  97. Sk[0] = {
  98. 'x' => 30, #posição do ícone em x
  99. 'y' => 30, #posição do ícone em y
  100. 'skill' => 51, #habilidade adquirida
  101. 'desc1' => 'Requer: Level 1', #descrição 1
  102. 'desc2' => '', #descrição 2
  103. 'desc3' => 'Fogo 1 - Habilidade de fogo', #descrição 3
  104. 'req' => [0], #requerimentos [level necessário do personagem,
  105. #id do Skill necessário, level do skill, id do skill, level do skill.
  106. # de acordo com essa tabela de Sk[id]
  107. 'maxlvl' => 10, # level máximo da habilidade
  108. 'mult' => [10, 2], # multiplicadores, o primeiro é multiplicador de dano/cura
  109. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  110. },

  111. Sk[1] = {
  112. 'x' => 90, #posição do ícone em x
  113. 'y' => 30, #posição do ícone em y
  114. 'skill' => 119, #habilidade adquirida
  115. 'desc1' => 'Requer: Level 1', #descrição 1
  116. 'desc2' => '', #descrição 2
  117. 'desc3' => 'Reflexão Mágica', #descrição 3
  118. 'req' => [0], #requerimentos [level necessário do personagem,
  119. #id do Skill necessário, level do skill, id do skill, level do skill.
  120. # de acordo com o database
  121. 'maxlvl' => 1, # level máximo da habilidade
  122. 'mult' => [10, 2], # multiplicadores, o primeiro é multiplicador de dano/cura
  123. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  124. },

  125. Sk[2] = {
  126. 'x' => 30, #posição do ícone em x
  127. 'y' => 90, #posição do ícone em y
  128. 'skill' => 52, #habilidade adquirida
  129. 'desc1' => 'Requer: Level 8 + 4xlevel', #descrição 1
  130. 'desc2' => 'Fogo1 - Level 5', #descrição 2
  131. 'desc3' => 'Fogo 2 - Habilidade aprimorada de fogo', #descrição 3
  132. 'req' => [8, 51, 5], #requerimentos [level necessário do personagem,
  133. #id do Skill necessário, level do skill, id do skill, level do skill.
  134. # de acordo com o database
  135. 'maxlvl' => 10, # level máximo da habilidade
  136. 'mult' => [10, 4], # multiplicadores, o primeiro é multiplicador de dano/cura
  137. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  138. },

  139. Sk[3] = {
  140. 'x' => 30, #posição do ícone em x
  141. 'y' => 150, #posição do ícone em y
  142. 'skill' => 53, #habilidade adquirida
  143. 'desc1' => 'Requer: Level 15 + 4xlevel', #descrição 1
  144. 'desc2' => 'Fogo 1 lvl 7, Fogo 2 lvl 5', #descrição 2
  145. 'desc3' => 'Fogo 2 - Habilidade aprimorada de fogo', #descrição 3
  146. 'req' => [15, 51, 7, 52, 5], #requerimentos [level necessário do personagem,
  147. #id do Skill necessário, level do skill, id do skill, level do skill.
  148. # de acordo com o database
  149. 'maxlvl' => 10, # level máximo da habilidade
  150. 'mult' => [10, 4], # multiplicadores, o primeiro é multiplicador de dano/cura
  151. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  152. },
  153. ]


  154. # ============================================================================
  155. # ======= Personagem 2 =======================================================
  156. # ============================================================================
  157. Actor[9] = [
  158. Sk[0] = {
  159. 'x' => 30, #posição do ícone em x
  160. 'y' => 30, #posição do ícone em y
  161. 'skill' => 51, #habilidade adquirida
  162. 'desc1' => 'Requer: Level 1', #descrição 1
  163. 'desc2' => '', #descrição 2
  164. 'desc3' => 'Fogo 1 - Habilidade de fogo', #descrição 3
  165. 'req' => [0], #requerimentos [level necessário do personagem,
  166. #id do Skill necessário, level do skill, id do skill, level do skill.
  167. # de acordo com essa tabela de Sk[id]
  168. 'maxlvl' => 10, # level máximo da habilidade
  169. 'mult' => [10, 2], # multiplicadores, o primeiro é multiplicador de dano/cura
  170. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  171. },

  172. Sk[1] = {
  173. 'x' => 90, #posição do ícone em x
  174. 'y' => 30, #posição do ícone em y
  175. 'skill' => 119, #habilidade adquirida
  176. 'desc1' => 'Requer: Level 1', #descrição 1
  177. 'desc2' => '', #descrição 2
  178. 'desc3' => 'Reflexão Mágica', #descrição 3
  179. 'req' => [0], #requerimentos [level necessário do personagem,
  180. #id do Skill necessário, level do skill, id do skill, level do skill.
  181. # de acordo com o database
  182. 'maxlvl' => 1, # level máximo da habilidade
  183. 'mult' => [10, 2], # multiplicadores, o primeiro é multiplicador de dano/cura
  184. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  185. },

  186. Sk[2] = {
  187. 'x' => 30, #posição do ícone em x
  188. 'y' => 90, #posição do ícone em y
  189. 'skill' => 52, #habilidade adquirida
  190. 'desc1' => 'Requer: Level 8 + 4xlevel', #descrição 1
  191. 'desc2' => 'Fogo1 - Level 5', #descrição 2
  192. 'desc3' => 'Fogo 2 - Habilidade aprimorada de fogo', #descrição 3
  193. 'req' => [8, 51, 5], #requerimentos [level necessário do personagem,
  194. #id do Skill necessário, level do skill, id do skill, level do skill.
  195. # de acordo com o database
  196. 'maxlvl' => 10, # level máximo da habilidade
  197. 'mult' => [10, 4], # multiplicadores, o primeiro é multiplicador de dano/cura
  198. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  199. },

  200. Sk[3] = {
  201. 'x' => 30, #posição do ícone em x
  202. 'y' => 150, #posição do ícone em y
  203. 'skill' => 53, #habilidade adquirida
  204. 'desc1' => 'Requer: Level 15 + 4xlevel', #descrição 1
  205. 'desc2' => 'Fogo 1 lvl 7, Fogo 2 lvl 5', #descrição 2
  206. 'desc3' => 'Fogo 2 - Habilidade aprimorada de fogo', #descrição 3
  207. 'req' => [15, 51, 7, 52, 5], #requerimentos [level necessário do personagem,
  208. #id do Skill necessário, level do skill, id do skill, level do skill.
  209. # de acordo com o database
  210. 'maxlvl' => 10, # level máximo da habilidade
  211. 'mult' => [10, 4], # multiplicadores, o primeiro é multiplicador de dano/cura
  212. # o segundo de leveis necessários a cada skill de habilidade adicionado.
  213. },
  214. ]
  215. end

  216. #==============================================================================
  217. # ** Scene_Status
  218. #------------------------------------------------------------------------------
  219. #  Esta classe executa o processamento da tela de atributos.
  220. #==============================================================================

  221. class Scene_Skill_Change < Scene_MenuBase
  222.   #--------------------------------------------------------------------------
  223.   # * Inicialização do processo
  224.   #--------------------------------------------------------------------------
  225.   def start
  226.     @set = $game_party.actors # array com ids dos personagens do grupo
  227.     @control_index = 0 #controle do indice de personagens
  228.     @control_inindex = 0 # controle do indice de habilidades
  229.     @status_window = Window_Skill_Select.new($game_party.actors[0]) # inicialização do menu de habilidades
  230.     @actor_window = Window_Actor_Sk.new(0, 0) # inicialização do menu de atores
  231.     @desc_window = Window_Help_Sk.new($game_party.actors[0]) # inicialização do menu de ajuda
  232.     @confirm = Window_Skill_Confirm.new # inicialização do menu de confirmação
  233.     @confirm.set_handler(:use_point, method(:command_use))
  234.     @confirm.set_handler(:return_window, method(:command_return))
  235.     @confirm.close
  236.     @actor_window.active = true
  237.     @status_window.active = false
  238.     @table = Skill_Tree::Actor
  239.     super
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # * Atualização do Processo
  243.   #--------------------------------------------------------------------------
  244.   def update
  245.     super
  246.     # Verificação do índice do menu
  247.     if @control_index != @actor_window.index
  248.        @control_index = @actor_window.index
  249.        @status_window.refresh(@set[@actor_window.index]) # mudança da janela de skills
  250.        @desc_window.refresh(@set[@actor_window.index], @status_window.index) # mudança da janela de skills
  251.      end
  252.     # Verificação do índice de habilidade
  253.     if @control_inindex != @status_window.index
  254.        @control_inindex = @status_window.index
  255.        @desc_window.refresh(@set[@actor_window.index], @status_window.index) # mudança da janela de skills
  256.     end
  257.     # Confirmação
  258.     if Input.trigger?(:C)
  259.       if @actor_window.active == true
  260.         Sound.play_ok
  261.         @status_window.active = true
  262.         @actor_window.active = false
  263.       elsif @status_window.active == true
  264.         @status_window.active = false
  265.         @confirm.open
  266.         @confirm.activate
  267.       end
  268.     end
  269.     # Retorno
  270.     if Input.trigger?(:B)
  271.       if @actor_window.active == true
  272.         return_scene
  273.       elsif @status_window.active == true
  274.         @status_window.active = false
  275.         @actor_window.active = true        
  276.       end
  277.     end
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # * Confirmação de saída
  281.   #--------------------------------------------------------------------------
  282.   def command_return
  283.     @confirm.close
  284.     @status_window.active = true
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # Confirmação de distribuição
  288.   #--------------------------------------------------------------------------
  289.   def command_use
  290.     @nocall = true
  291.     id = $game_party.actors[@actor_window.index]
  292.     # verificação dos requisitos
  293.     if $game_actors[id].skill_tree[0] > 0 && $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] < @table[id][@status_window.index]['maxlvl']
  294.       for n in 1...@table[id][@status_window.index]['req'].size
  295.         if n.even?
  296.           @nocall = false if @table[id][@status_window.index]['req'][n] > $game_actors[id].skill_tree[@table[id][@status_window.index]['req'][n-1]]
  297.         end
  298.       end
  299.     else
  300.       @nocall = false
  301.     end
  302.     # verificação do multiplicador de level
  303.     @nocall = false if @table[id][@status_window.index]['mult'][1]*$game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] + @table[id][@status_window.index]['req'][0] >$game_actors[id].level
  304.     @confirm.close
  305.     @status_window.active = true
  306.     unless @nocall
  307.       Sound.play_buzzer
  308.       return
  309.     end
  310.     if $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] == 0
  311.       $game_actors[id].learn_skill(@table[id][@status_window.index]['skill'])
  312.     end
  313.     $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] += 1
  314.     $game_actors[id].skill_mult[@table[id][@status_window.index]['skill']] += @table[id][@status_window.index]['mult'][0]
  315.     $game_actors[id].skill_tree[0] -= 1
  316.     Sound.play_ok
  317.     @status_window.refresh(@set[@actor_window.index])
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # * Retorno ao menu principal
  321.   #--------------------------------------------------------------------------
  322.   def return_scene
  323.     super
  324.     @status_window.dispose
  325.     @actor_window.dispose
  326.     @desc_window.dispose
  327.   end
  328. end

  329. #==============================================================================
  330. # ** Window_Actor_Sk
  331. #------------------------------------------------------------------------------
  332. # Esta janela exibe os personagens do grupo.
  333. #==============================================================================

  334. class Window_Actor_Sk < Window_MenuStatus
  335.   
  336.   #--------------------------------------------------------------------------
  337.   # * Largura da janela
  338.   #--------------------------------------------------------------------------
  339.   def window_width
  340.     120
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # * Altura da janela
  344.   #--------------------------------------------------------------------------
  345.   def window_height
  346.     Graphics.height
  347.   end
  348. end
  349. #==============================================================================
  350. # ** Window_Skill_Select
  351. #------------------------------------------------------------------------------
  352. # Janela Principal da Skill Tree
  353. #==============================================================================

  354. class Window_Skill_Select < Window_Base
  355. attr_reader :index
  356.   #--------------------------------------------------------------------------
  357.   # * Inicialização da Janela
  358.   #--------------------------------------------------------------------------
  359.   def initialize(a)
  360.     super(120, 0, window_width, Graphics.height - fitting_height(3))
  361.     refresh(a)
  362.     @page = 0
  363.     @index = 0
  364.     update_cursor
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # * Largura da Janela
  368.   #--------------------------------------------------------------------------
  369.   def window_width
  370.     Graphics.width - 120
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   #--------------------------------------------------------------------------
  374.   # * Aquisição do retangulo para desenhar o item(cursor)
  375.   #     index : índice do item
  376.   #--------------------------------------------------------------------------
  377.   def item_rect(index)
  378.     rect = Rect.new
  379.     rect.x = @table[index]['x']
  380.     rect.y = @table[index]['y']
  381.     rect.width = 24
  382.     rect.height = 24
  383.     rect
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # * Atualização da janela
  387.   #--------------------------------------------------------------------------
  388.   def refresh(a)
  389.     contents.clear
  390.     if Skill_Tree::Images
  391.       if @tree_load
  392.         @tree_load.bitmap.dispose
  393.         @tree_load.dispose
  394.       end
  395.       @tree_load = Sprite.new
  396.       @tree_load.bitmap = Cache.system("Actor#{+a}")
  397.       @tree_load.z = 200
  398.     end
  399.     @table = Skill_Tree::Actor[a]
  400.     contents.font.color = text_color(1)
  401.     [url=home.php?mod=space&uid=33548]@sum[/url] = 0
  402.     $game_actors[a].skill_tree.each {|z| [url=home.php?mod=space&uid=33548]@sum[/url] += z}
  403.     draw_text(50, -10, 180, 50, $game_actors[a].skill_tree[0].to_s + " "+ Skill_Tree::Rest)
  404.     draw_text(window_width - 200, -10, 180, 50, @sum.to_s + " "+ Skill_Tree::Total)
  405.     contents.font.color = text_color(0)
  406.     for i in [email protected]
  407.       contents.font.size = 16
  408.       draw_text(@table[i]['x'], @table[i]['y']+ 26, 40, 30, $game_actors[a].skill_tree[@table[i]['skill']].to_s + " /" + @table[i]['maxlvl'].to_s)
  409.       draw_icon($data_skills[@table[i]['skill']].icon_index, @table[i]['x'], @table[i]['y'], $game_actors[a].skill_learn?($data_skills[@table[i]['skill']]))
  410.     end
  411.     contents.font.size = Font.default_size
  412.     @page = 0
  413.     @index = 0
  414.     update_cursor
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # * Renovação
  418.   #--------------------------------------------------------------------------
  419.   def update
  420.     return if active == false
  421.     if Input.repeat?(:RIGHT) || Input.repeat?(:DOWN)
  422.       @index += 1
  423.       @index = 0 if @index >= @table.size
  424.       Sound.play_cursor
  425.     elsif Input.repeat?(:LEFT) || Input.repeat?(:UP)
  426.       @index -= 1
  427.       @index = (@table.size - 1) if @index < 0
  428.       Sound.play_cursor
  429.     end
  430.     update_cursor
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # * Atualização do cursor
  434.   #--------------------------------------------------------------------------
  435.   def update_cursor
  436.     cursor_rect.set(item_rect(@index))
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # * Execução do movimento do cursor
  440.   #--------------------------------------------------------------------------
  441.   def process_cursor_move
  442.     last_page = @page
  443.     super
  444.     update_cursor
  445.     Sound.play_cursor if @page != last_page
  446.   end
  447.   #--------------------------------------------------------------------------
  448.   # * Definição de controle de confirmação e cancelamento
  449.   #--------------------------------------------------------------------------
  450.   def process_handling
  451.     return unless open? && active
  452.     process_jump if Input.trigger?(:A)
  453.     process_back if Input.repeat?(:B)
  454.     process_ok   if Input.trigger?(:C)
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # * Definição de resultado ao pressionar o botão de confirmação
  458.   #--------------------------------------------------------------------------
  459.   def process_ok
  460.     if !character.empty?
  461.       on_name_add
  462.     elsif is_page_change?
  463.       Sound.play_ok
  464.       cursor_pagedown
  465.     elsif is_ok?
  466.       on_name_ok
  467.     end
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # * Adição ao nome do personagem
  471.   #--------------------------------------------------------------------------
  472.   def on_name_add
  473.     if @edit_window.add(character)
  474.       Sound.play_ok
  475.     else
  476.       Sound.play_buzzer
  477.     end
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # * Definição do nome
  481.   #--------------------------------------------------------------------------
  482.   def on_name_ok
  483.     if @edit_window.name.empty?
  484.       if @edit_window.restore_default
  485.         Sound.play_ok
  486.       else
  487.         Sound.play_buzzer
  488.       end
  489.     else
  490.       Sound.play_ok
  491.       call_ok_handler
  492.     end
  493.   end
  494.   #--------------------------------------------------------------------------
  495.   # * Descarte
  496.   #--------------------------------------------------------------------------
  497.   def dispose
  498.     super
  499.     if @tree_load
  500.       @tree_load.bitmap.dispose
  501.       @tree_load.dispose
  502.     end
  503.   end
  504. end


  505. #==============================================================================
  506. # ** Window_Help_Sk
  507. #------------------------------------------------------------------------------
  508. #  Esta janela exibe explicação de habilidades e informações sobre os requerimentos.
  509. #==============================================================================

  510. class Window_Help_Sk < Window_Base
  511.   def initialize(a)
  512.     super(120, Graphics.height - fitting_height(3), Graphics.width - 120, fitting_height(3))
  513.     @table = Skill_Tree::Actor[a]
  514.     refresh(a, 1)
  515.   end
  516.   #--------------------------------------------------------------------------
  517.   # * Atualização da janela
  518.   #--------------------------------------------------------------------------
  519.   def refresh(a, index)
  520.     contents.clear
  521.     @table = Skill_Tree::Actor[a] unless Skill_Tree::Actor[a] == nil
  522.     contents.font.color = text_color(20)
  523.     draw_text(0, 0, Graphics.width - 120, line_height, @table[index]['desc1'])
  524.     draw_text(0, line_height, Graphics.width - 120, line_height, @table[index]['desc2'])
  525.     contents.font.color = text_color(0)
  526.     draw_text(0, line_height*2, Graphics.width - 120, line_height, @table[index]['desc3'])
  527.   end
  528. end

  529. #==============================================================================
  530. # ** Window_MenuStatus
  531. #------------------------------------------------------------------------------
  532. #  Esta janela exibe os parâmetros dos membros do grupo na tela de menu.
  533. #==============================================================================

  534. class Window_Skill_Confirm < Window_Command

  535.   #--------------------------------------------------------------------------
  536.   # * Inicialização do objeto
  537.   #--------------------------------------------------------------------------
  538.   def initialize
  539.     super(0, 0)
  540.     self.z = 9999
  541.     self.x = (Graphics.width / 2) - (window_width / 2)
  542.     self.y = Graphics.height / 2
  543.     self.openness = 0
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # * Aquisição da largura da janela
  547.   #--------------------------------------------------------------------------
  548.   def window_width
  549.     return 160
  550.   end
  551.   #--------------------------------------------------------------------------
  552.   # * Criação da lista de comandos
  553.   #--------------------------------------------------------------------------
  554.   def make_command_list
  555.     add_main_commands

  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # * Adição dos comandos principais
  559.   #--------------------------------------------------------------------------
  560.   def add_main_commands
  561.     add_command(Skill_Tree::Bot1,   :use_point,   true)
  562.     add_command(Skill_Tree::Bot2,  :return_window,  true)
  563.   end
  564. end


  565. #==============================================================================
  566. # ** Game_Actor
  567. #------------------------------------------------------------------------------
  568. #  Esta classe gerencia os heróis. Ela é utilizada internamente pela classe
  569. # Game_Actors ($game_actors). A instância desta classe é referenciada
  570. # pela classe Game_Party ($game_party).
  571. #==============================================================================

  572. class Game_Actor < Game_Battler
  573. alias sk_tree_ini setup
  574. alias sk_tree_lvl level_up
  575. attr_accessor :skill_tree
  576. attr_accessor :skill_mult
  577.   #--------------------------------------------------------------------------
  578.   # * Inicialização do objeto
  579.   #     actor_id : ID do herói
  580.   #--------------------------------------------------------------------------
  581.   def setup(actor_id)
  582.     sk_tree_ini(actor_id)
  583.     @skill_tree = Array.new($data_skills.size + 1, 0)
  584.     @skill_mult = Array.new($data_skills.size + 1, 0)
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # * Aumento de nível
  588.   #--------------------------------------------------------------------------
  589.   def level_up
  590.     sk_tree_lvl
  591.     @skill_tree[0] += 1
  592.   end
  593. end




  594. #==============================================================================
  595. # ** Game_Party
  596. #------------------------------------------------------------------------------
  597. #  Esta classe gerencia o grupo. Contém informações sobre dinheiro, itens.
  598. # A instância desta classe é referenciada por $game_party.
  599. #==============================================================================

  600. class Game_Party < Game_Unit
  601. attr_accessor :actors
  602. end

  603. #==============================================================================
  604. # ** Game_Battler
  605. #------------------------------------------------------------------------------
  606. #  Esta classe gerencia os battlers. Controla a adição de sprites e ações
  607. # dos lutadores durante o combate.
  608. # É usada como a superclasse das classes Game_Enemy e Game_Actor.
  609. #==============================================================================

  610. class Game_Battler < Game_BattlerBase
  611.   #--------------------------------------------------------------------------
  612.   # * Cálculo de dano
  613.   #     user : usuário
  614.   #     item : habilidade/item
  615.   #--------------------------------------------------------------------------
  616.   def make_damage_value(user, item)
  617.     value = item.damage.eval(user, self, $game_variables)
  618.     value *= item_element_rate(user, item)
  619.     value *= pdr if item.physical?
  620.     value *= mdr if item.magical?
  621.     value *= rec if item.damage.recover?
  622.     value = apply_critical(value) if @result.critical
  623.     value = apply_variance(value, item.damage.variance)
  624.     value = apply_guard(value)
  625.     value += (value * $game_actors[user.id].skill_mult[item.id])/100
  626.     @result.make_damage(value.to_i, item)
  627.   end
  628. end
复制代码

Lv1.梦旅人

梦石
0
星屑
243
在线时间
341 小时
注册时间
2010-9-5
帖子
70
2
发表于 2014-11-17 19:29:14 | 只看该作者
这个脚本貌似有问题啊
我研究过
不过好像不能做出两个角色两个不同的技能树这种需求
如果你做出来了,可以给我个demo吗?
多谢!
点击即可领养:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 10:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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