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

Project1

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

[已经解决] “『FSL』天赋 技能树”脚本如何给第二个人物加天赋

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
跳转到指定楼层
1
发表于 2010-12-7 17:48:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 shinliwei 于 2010-12-10 13:41 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 简易天赋树脚本 - FSL_ST ◆ VX ◆
  3. #_/
  4. #_/    ◇ 许可协议 :FSL       ◇
  5. #_/    ◇ 项目分类 : 角色辅助  ◇
  6. #_/    ◇ 项目版本 : 1.7.912   ◇
  7. #_/    ◇ 建立日期 : 2010/9/05 ◇
  8. #_/    ◇ 最后更新 : 2010/9/12 ◇
  9. #_/----------------------------------------------------------------------------
  10. #_/  作者:wangswz
  11. #_/============================================================================
  12. #_/ 【基本机能】复杂化游戏系统。
  13. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  14. #===============================================================================
  15. #-------------------------------------------------------------------------------
  16. # ▼ 通用配置模块
  17. #-------------------------------------------------------------------------------
  18. module FSL
  19.   module ST
  20.     #职业对应天赋树初始化
  21.     St_class_id = []
  22.     #详细设置
  23.     #    每个职业只能设置3个不同的天赋树
  24.     St_class_id[1] = [1,2,3]#包含St_detailed[1]St_detailed[2]St_detailed[3]
  25.     St_class_id[2] = [4,5,6]
  26.    
  27.     #等级天赋点
  28.     #每级增加的天赋点数
  29.     St_up = 1
  30.    
  31.     #深度等级基数 每下降一级深度就需要在该天赋树上多投入多少点
  32.     St_lv = 5
  33.    
  34.     #天赋树
  35.     St_detailed = []
  36.     #基本信息详细设置  默认0            不可出现重复
  37.     #st_detailed[1] = [基本点数, 天赋名,包含的天赋技能]
  38.     St_detailed[1] =  [       0,"神圣",1,2,3,4,5,6]
  39.     St_detailed[2] =  [       0,"统御",7,8,9,10,11,12]
  40.     St_detailed[3] =  [       0,"惩戒",13,14,15,16,17,18]
  41.     St_detailed[4] =  [       0,"武器",2,3,5]
  42.     St_detailed[5] =  [       0,"狂暴",1,3,5]
  43.     St_detailed[6] =  [       0,"防护",3,4,6]
  44.    
  45.     #将天赋树分为5×6格
  46.     # 0 1 2 3 4 5 列
  47.     #0
  48.     #1
  49.     #2
  50.     #3
  51.     #4
  52.     #5
  53.     #深
  54.    
  55.     St_skill = []
  56.     #天赋技能设置   进阶定义                            默认0
  57.     #st_skill[1] = [列,深度,技能id          ,前置技能ID,点数存储]
  58.    
  59.     #神圣
  60.     St_skill[1] =  [ 1,   0,[ 1, 2, 3, 4, 5],       [0],       0]#神圣智慧
  61.     St_skill[2] =  [ 1,   1,[ 6, 7, 8]      ,       [1],       0]#神恩
  62.     St_skill[3] =  [ 2,   2,[ 9, 10]        ,       [0],       0]#不灭信仰
  63.     St_skill[4] =  [ 4,   5,[11]            ,     [3,5],       0]#圣光道标
  64.     St_skill[5] =  [ 3,   0,[12,13,14,15,16],       [0],       0]#光之烙铁
  65.     St_skill[6] =  [ 2,   1,[17,18,19]      ,       [1],       0]#冥想
  66.     #统御
  67.     St_skill[7] =  [ 1,   0,[31,32,33,34,35],       [8],       0]
  68.     St_skill[8] =  [ 3,   0,[22,23,24,25,26],        [],       0]
  69.     St_skill[9] =  [ 2,   1,[36,37,38]      ,        [],       0]
  70.     St_skill[10] = [ 1,   2,[20,21]         ,        [],       0]
  71.     St_skill[11] = [ 2,   4,[30]            ,        [],       0]
  72.     St_skill[12] = [ 3,   5,[27,28,29]      ,        [],       0]
  73.     #惩戒
  74.     St_skill[13] = [ 3,   3,[57]            ,        [],       0]
  75.     St_skill[14] = [ 2,   0,[39,40,41,42,43],        [],       0]
  76.     St_skill[15] = [ 3,   1,[45,46,47,48,49],        [],       0]
  77.     St_skill[16] = [ 1,   1,[50,51,52]      ,        [],       0]
  78.     St_skill[17] = [ 2,   2,[53,54,55,56]   ,        [],       0]
  79.     St_skill[18] = [ 1,   3,[44]            ,        [],       0]
  80.         
  81.     #角色存放值
  82.     #    为每个能够加入队伍的角色建立存储区
  83.     St_actor = []
  84.     St_actor[1] = [[],[],[]]
  85.     St_actor[2] = [[],[],[]]
  86.     St_actor[6] = [[],[],[]]
  87. #-----------------------------进阶定义-----------------------------
  88.     #天赋树列数
  89.     St_Base_x = 5
  90.     #天赋树深度
  91.     St_Base_y = 6
  92.   end
  93. end
  94. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  95. $fscript = {} if $fscript == nil
  96.                 $fscript["FSL_ST"] = [ 1, 7, 912]
  97. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  98. #==============================================================================
  99. # ■ Scene_Skill_Tree
  100. #------------------------------------------------------------------------------
  101. #  天赋技能类
  102. #==============================================================================

  103. class Scene_Skill_Tree < Scene_Base
  104.   #--------------------------------------------------------------------------
  105.   # ● 初始化对像
  106.   #     index : 天赋树
  107.   #--------------------------------------------------------------------------
  108.   def initialize(actor_index = 0)
  109.     @actor = actor_index
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 开始处理
  113.   #--------------------------------------------------------------------------
  114.   def start
  115.     super
  116.     create_menu_background
  117.     start_command
  118.     @skill_tree_window = Window_Skill_Tree.new(272, 0, 272, 328, $game_party.members[@actor])
  119.     @skill_tree_window.active = false
  120.     @skill_tree_window.visible = false
  121.     @skill_tree_window.index = 2 #??
  122.     @base_window = Window_Base.new(272, 0, 272, 328)
  123.     @skill_status_window = Window_skill_status.new
  124.     @skill_status_window.visible = false
  125.     @base_window2 = Window_Base.new(0, 328, 544, 88)
  126.     @skill_actor_window = Window_actor_Tree.new($game_party.members[@actor])
  127.     @skill_actor_window.active = true
  128.     @skill_data = Window_skill_data.new($game_party.members[@actor].id)
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 开始处理
  132.   #--------------------------------------------------------------------------
  133.   def start_command
  134.     s1 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]][1]
  135.     s2 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]][1]
  136.     s3 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]][1]
  137.     @command_window = Window_Command.new(272, [s1, s2, s3], 3)
  138.     @command_window.y = 88
  139.     @command_window.active = true
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 结束处理
  143.   #--------------------------------------------------------------------------
  144.   def terminate
  145.     super
  146.     @skill_tree_window.dispose
  147.     @base_window.dispose
  148.     @base_window2.dispose
  149.     @skill_data.dispose
  150.     @skill_status_window.dispose
  151.     @skill_actor_window.dispose
  152.     @command_window.dispose
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 更新画面
  156.   #--------------------------------------------------------------------------
  157.   def update
  158.     super
  159.     @skill_tree_window.update
  160.     @skill_actor_window.update
  161.     @skill_status_window.update
  162.     @base_window.update
  163.     @base_window2.update
  164.     @skill_data.update
  165.     @command_window.update
  166.    
  167.     if @skill_actor_window.active
  168.       if @skill_tree_window.visible == false
  169.         if Input.trigger?(Input::R)
  170.           Sound.play_cursor
  171.           @actor += 1
  172.           @actor %= $game_party.members.size
  173.           $scene = Scene_Skill_Tree.new(@actor)
  174.           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  175.         elsif Input.trigger?(Input::L)
  176.           Sound.play_cursor
  177.           @actor += $game_party.members.size - 1
  178.           @actor %= $game_party.members.size
  179.           $scene = Scene_Skill_Tree.new(@actor)
  180.           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  181.         end
  182.       end
  183.     end

  184.     if @command_window.active
  185.       update_command_selection
  186.     elsif @skill_tree_window.active
  187.       update_skill_tree_selection
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 更新命令窗口
  192.   #--------------------------------------------------------------------------
  193.   def update_command_selection
  194.     if Input.trigger?(Input::B)
  195.       Sound.play_cancel
  196.       $scene = Scene_Map.new
  197.     elsif Input.trigger?(Input::C)
  198.       case @command_window.index
  199.       when 0  # 第一天赋
  200.         Sound.play_decision
  201.         @command_window.active = false
  202.         @base_window.visible = false
  203.         @base_window2.visible = false
  204.         @skill_actor_window.active = false
  205.         @skill_tree_window.active = true
  206.         @skill_tree_window.visible = true
  207.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]
  208.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  209.         @skill_status_window.visible = true
  210.         @skill_status_window.skill = @skill_tree_window.STK
  211.       when 1  # 第二天赋
  212.         Sound.play_decision
  213.         @command_window.active = false
  214.         @base_window.visible = false
  215.         @base_window2.visible = false
  216.         @skill_actor_window.active = false
  217.         @skill_tree_window.active = true
  218.         @skill_tree_window.visible = true
  219.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]
  220.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  221.         @skill_status_window.visible = true
  222.         @skill_status_window.skill = @skill_tree_window.STK
  223.       when 2  # 第三天赋
  224.         Sound.play_decision
  225.         @command_window.active = false
  226.         @base_window.visible = false
  227.         @base_window2.visible = false
  228.         @skill_actor_window.active = false
  229.         @skill_tree_window.active = true
  230.         @skill_tree_window.visible = true
  231.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]
  232.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  233.         @skill_status_window.visible = true
  234.         @skill_status_window.skill = @skill_tree_window.STK
  235.       end
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 更新天赋窗口
  240.   #--------------------------------------------------------------------------
  241.   def update_skill_tree_selection
  242.     if Input.trigger?(Input::B)
  243.       Sound.play_cancel
  244.       @command_window.active = true
  245.       @base_window.visible = true
  246.       @base_window2.visible = true
  247.       @skill_actor_window.active = true
  248.       @skill_tree_window.active = false
  249.       @skill_tree_window.visible = false
  250.       @skill_status_window.visible = false
  251.       @skill_tree_window.ST_actor_data2
  252.     end

  253.       if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT) || Input.trigger?(Input::UP) || Input.trigger?(Input::DOWN) || Input.trigger?(Input::X)
  254.         @skill_status_window.skill = @skill_tree_window.STK
  255.         @skill_tree_window.ST_actor_data3
  256.         @skill_data.refresh
  257.       end
  258.   end
  259. end
  260. #==============================================================================
  261. # ■ Window_Skill_Tree
  262. #------------------------------------------------------------------------------
  263. #  天赋技能
  264. #==============================================================================
  265. class Window_Skill_Tree < Window_Selectable
  266.   #--------------------------------------------------------------------------
  267.   # ● 初始化对像
  268.   #     x      : 窗口 X 座标
  269.   #     y      : 窗口 Y 座标
  270.   #--------------------------------------------------------------------------
  271.   def initialize(x, y, width, height, actortree)
  272.     @ST_id = actortree.id
  273.     @ST_index = FSL::ST::St_class_id[actortree.class_id][0]
  274.     super(x, y, width, height)
  275.     @ST_x_current = 0
  276.     @ST_y_current = 0
  277.     @ST_width = 48
  278.     @ST_height = 48
  279.     refresh
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● 刷新
  283.   #--------------------------------------------------------------------------
  284.   def refresh
  285.     self.contents.clear
  286.    
  287.     @ST_array = Array.new(FSL::ST::St_Base_x){Array.new(FSL::ST::St_Base_y,0)}
  288.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  289.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  290.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  291.       @ST_array[x][y] = 1
  292.     end
  293.     for j in 0...FSL::ST::St_Base_y
  294.       for i in 0...FSL::ST::St_Base_x
  295.         if @ST_array[i][j] == 1
  296.           self.cursor_rect = Rect.new((i * @ST_width) - 12,(j * @ST_height) - 12, 48, 48)
  297.           p = 1
  298.           @ST_x_current = i
  299.           @ST_y_current = j
  300.           break
  301.         end
  302.       end
  303.       break if p == 1
  304.     end
  305.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  306.       bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  307.       by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  308.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
  309.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
  310.       if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] == FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  311.         m =  FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size - 1]
  312.       else
  313.         m =  FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]]
  314.       end
  315.       n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  316.       l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  317.       
  318.       
  319.       
  320.       t = true
  321.       #技能总深度是否达到
  322.       if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  323.         t = false
  324.       end#技能总深度是否达到
  325.       
  326.         #技能前置是否满修
  327.         for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  328.         if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  329.           ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
  330.           ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
  331.           x2 = ax * @ST_width + 12
  332.           y2 = ay * @ST_height + 12
  333.           if FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][4] != FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][2].size
  334.             t = false
  335.           end
  336.       
  337.           bitmap = Cache.load_bitmap("Graphics/System/", "xy")
  338.           if ay == by
  339.             if ax > bx
  340.               rect = Rect.new(48, 48, 48, 48)
  341.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  342.               rect = Rect.new(48, 0, 48, 48)
  343.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  344.               rect = Rect.new(192, 48, 48, 48)
  345.               for r in (bx + 1)...ax
  346.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  347.               end
  348.             elsif bx > ax
  349.               rect = Rect.new(96, 48, 48, 48)
  350.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  351.               rect = Rect.new(96, 0, 48, 48)
  352.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  353.               rect = Rect.new(192, 48, 48, 48)
  354.               for r in (ax + 1)...bx
  355.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  356.               end
  357.             end
  358.           elsif by > ay
  359.             if ax > bx
  360.               rect = Rect.new(48, 48, 48, 48)
  361.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  362.               rect = Rect.new(144, 48, 48, 48)
  363.               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  364.               rect = Rect.new(192, 48, 48, 48)
  365.               for r in (bx + 1)...ax
  366.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  367.               end
  368.             elsif bx > ax
  369.               rect = Rect.new(96, 48, 48, 48)
  370.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  371.               rect = Rect.new(144, 0, 48, 48)
  372.               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  373.               rect = Rect.new(192, 48, 48, 48)
  374.               for r in (ax + 1)...bx
  375.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  376.               end
  377.             else
  378.               rect = Rect.new(0, 48, 48, 48)
  379.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  380.             end
  381.             rect = Rect.new(0, 0, 48, 48)
  382.             self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  383.             rect = Rect.new(192, 0, 48, 48)
  384.             for r in (ay + 1)...by
  385.                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
  386.             end
  387.           end
  388.         
  389.         end
  390.         end#技能前置是否满修
  391.       
  392.       draw_icon($data_skills[m].icon_index, x, y, t)
  393.       self.contents.font.color = normal_color
  394.       self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
  395.       self.contents.font.color = system_color
  396.       self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
  397.       self.contents.font.color = normal_color

  398.       
  399.     end
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 统计
  403.   #--------------------------------------------------------------------------
  404.   def statistics
  405.       k = 0
  406.       for i in 2...FSL::ST::St_detailed[@ST_index].size
  407.         k += FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  408.       end
  409.       return k
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # ● 更新
  413.   #--------------------------------------------------------------------------
  414.   def update
  415.     super
  416.    
  417.     if self.active == true #窗口活动则判断输入
  418.    
  419.       if Input.trigger?(Input::LEFT)
  420.         Sound.play_cursor
  421.         loop do
  422.           if @ST_x_current == 0
  423.             @ST_x_current = (FSL::ST::St_Base_x - 1)
  424.           else
  425.             Sound.play_cursor
  426.             @ST_x_current -= 1
  427.           end
  428.           if @ST_array[@ST_x_current][@ST_y_current] == 1
  429.             break
  430.           end
  431.         end
  432.         update_cursor
  433.         return
  434.       end
  435.       
  436.       if Input.trigger?(Input::RIGHT)
  437.         Sound.play_cursor
  438.         loop do
  439.           if @ST_x_current == (FSL::ST::St_Base_x - 1)
  440.             @ST_x_current = 0
  441.           else
  442.             @ST_x_current += 1
  443.           end
  444.           if @ST_array[@ST_x_current][@ST_y_current] == 1
  445.             break
  446.           end
  447.         end
  448.         update_cursor
  449.         return
  450.       end
  451.       
  452.       if Input.trigger?(Input::UP)
  453.         Sound.play_cursor
  454.         i = @ST_x_current - 1
  455.         j = @ST_y_current
  456.         loop do
  457.           if i == -1
  458.             i = FSL::ST::St_Base_x - 1
  459.             j -= 1
  460.           end
  461.           j = FSL::ST::St_Base_y - 1 if j == -1
  462.           if @ST_array[i][j] == 1
  463.             @ST_x_current = i
  464.             @ST_y_current = j
  465.             break
  466.           end
  467.           i -= 1
  468.         end
  469.         update_cursor
  470.         return
  471.       end
  472.       
  473.       if Input.trigger?(Input::DOWN)
  474.         Sound.play_cursor
  475.         i = @ST_x_current + 1
  476.         j = @ST_y_current
  477.         loop do
  478.           if i == FSL::ST::St_Base_x
  479.             i = 0
  480.             j += 1
  481.           end
  482.           j = 0 if j == FSL::ST::St_Base_y
  483.           if @ST_array[i][j] == 1
  484.             @ST_x_current = i
  485.             @ST_y_current = j
  486.             break
  487.           end
  488.           i += 1
  489.         end
  490.         update_cursor
  491.         return
  492.       end
  493.       
  494.       if Input.trigger?(Input::X)
  495.         if @st_data == 0
  496.           Sound.play_buzzer
  497.         else
  498.         for i in 2...FSL::ST::St_detailed[@ST_index].size
  499.           xx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  500.           yy = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  501.           t = true
  502.           #技能总深度是否达到
  503.           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  504.             t = false
  505.           end#技能总深度是否达到
  506.          
  507.           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  508.           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  509.             if FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][4] != FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][2].size
  510.               t = false
  511.             end
  512.           end
  513.           end
  514.         
  515.           if @ST_x_current == xx && @ST_y_current == yy
  516.             if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] == FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  517.               Sound.play_buzzer
  518.             else
  519.               if t == true
  520.                 if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] > 0
  521.                   $game_actors[@ST_id].forget_skill(FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] - 1])
  522.                 end
  523.                 $game_actors[@ST_id].learn_skill(FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]])
  524.                 FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] += 1
  525.                 @st_data -= 1
  526.                
  527.                 Sound.play_cursor
  528.               else
  529.                 Sound.play_buzzer
  530.               end
  531.             end
  532.           end
  533.         end
  534.         
  535.         self.contents.clear
  536.         for i in 2...FSL::ST::St_detailed[@ST_index].size
  537.           bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  538.           by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  539.           x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
  540.           y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
  541.           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] == FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  542.             m =  FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size - 1]
  543.           else
  544.             m =  FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]]
  545.           end
  546.           n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  547.           l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  548.         
  549.           t = true
  550.           #技能总深度是否达到
  551.           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  552.             t = false
  553.           end#技能总深度是否达到
  554.          
  555.           #技能前置是否满修
  556.           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  557.           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  558.             ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
  559.             ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
  560.             x2 = ax * @ST_width + 12
  561.             y2 = ay * @ST_height + 12
  562.             if FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][4] != FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][2].size
  563.               t = false
  564.             end

  565.             bitmap = Cache.load_bitmap("Graphics/System/", "xy")
  566.             if ay == by
  567.               if ax > bx
  568.                 rect = Rect.new(48, 48, 48, 48)
  569.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  570.                 rect = Rect.new(48, 0, 48, 48)
  571.                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  572.                 rect = Rect.new(192, 48, 48, 48)
  573.                 for r in (bx + 1)...ax
  574.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  575.                 end
  576.               elsif bx > ax
  577.                 rect = Rect.new(96, 48, 48, 48)
  578.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  579.                 rect = Rect.new(96, 0, 48, 48)
  580.                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  581.                 rect = Rect.new(192, 48, 48, 48)
  582.                 for r in (ax + 1)...bx
  583.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  584.                 end
  585.               end
  586.             elsif by > ay
  587.               if ax > bx
  588.                 rect = Rect.new(48, 48, 48, 48)
  589.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  590.                 rect = Rect.new(144, 48, 48, 48)
  591.                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  592.                 rect = Rect.new(192, 48, 48, 48)
  593.                 for r in (bx + 1)...ax
  594.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  595.                 end
  596.               elsif bx > ax
  597.                 rect = Rect.new(96, 48, 48, 48)
  598.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  599.                 rect = Rect.new(144, 0, 48, 48)
  600.                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  601.                 rect = Rect.new(192, 48, 48, 48)
  602.                 for r in (ax + 1)...bx
  603.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  604.                 end
  605.               else
  606.                 rect = Rect.new(0, 48, 48, 48)
  607.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  608.               end
  609.               rect = Rect.new(0, 0, 48, 48)
  610.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  611.               rect = Rect.new(192, 0, 48, 48)
  612.               for r in (ay + 1)...by
  613.                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
  614.               end
  615.             end
  616.          
  617.           end
  618.           end#技能前置是否满修
  619.         
  620.           draw_icon($data_skills[m].icon_index, x, y, t)
  621.           self.contents.font.color = normal_color
  622.           self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
  623.           self.contents.font.color = system_color
  624.           self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
  625.           self.contents.font.color = normal_color
  626.         
  627.         end
  628.       end#@st_data
  629.       end#(Input::X)
  630.   
  631.     end #窗口活动则判断输入
  632.   end
  633.   #--------------------------------------------------------------------------
  634.   # ● 更新光标
  635.   #--------------------------------------------------------------------------
  636.   def update_cursor
  637.     if @ST_x_current < 0 || @ST_y_current < 0       # 当光标位置小于0
  638.       self.cursor_rect.empty                        # 隐藏光标
  639.     else
  640.       x = @ST_x_current * @ST_width
  641.       y = @ST_y_current * @ST_height
  642.       rect = Rect.new(x, y, 48 , 48)
  643.       self.cursor_rect = rect                       # 更新光标矩形
  644.     end
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● 设置天赋
  648.   #     index : 天赋
  649.   #--------------------------------------------------------------------------
  650.   def index=(index)
  651.     if @ST_index != index
  652.       @ST_index = index
  653.     end
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 获取技能
  657.   #--------------------------------------------------------------------------
  658.   def STK
  659.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  660.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  661.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  662.       if @ST_x_current == x && @ST_y_current == y
  663.         if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] == FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  664.           return FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size - 1]
  665.         else
  666.           return FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2][FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]]
  667.         end
  668.       end
  669.     end
  670.   end
  671.   #--------------------------------------------------------------------------
  672.   # ● 读取角色具体天赋数值
  673.   #--------------------------------------------------------------------------
  674.   def ST_actor_data(ac)
  675.     @st_actor_data = ac
  676.     @st_data = $game_actors[@st_actor_data].level * FSL::ST::St_up
  677.     for j in 0..2
  678.       m = 2
  679.       if FSL::ST::St_actor[@st_actor_data][j] != nil
  680.         s = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  681.         for i in FSL::ST::St_actor[@st_actor_data][j]
  682.           @st_data -= i
  683.           FSL::ST::St_skill[FSL::ST::St_detailed[s][m]][4] = i
  684.           m += 1
  685.         end
  686.       end
  687.     end
  688.     refresh
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● 存储角色具体天赋数值
  692.   #--------------------------------------------------------------------------
  693.   def ST_actor_data2
  694.     for j in 0..2
  695.       FSL::ST::St_actor[@st_actor_data][j].clear
  696.       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  697.       for i in 2...FSL::ST::St_detailed[p].size
  698.         FSL::ST::St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
  699.         FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4] = 0
  700.       end
  701.     end
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   # ● 更新角色具体天赋数值
  705.   #--------------------------------------------------------------------------
  706.   def ST_actor_data3
  707.     for j in 0..2
  708.       FSL::ST::St_actor[@st_actor_data][j].clear
  709.       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  710.       for i in 2...FSL::ST::St_detailed[p].size
  711.         FSL::ST::St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
  712.       end
  713.     end
  714.   end
  715. end
  716. #==============================================================================
  717. # ■ Window_actor_Tree
  718. #------------------------------------------------------------------------------
  719. #  天赋
  720. #==============================================================================

  721. class Window_actor_Tree < Window_Base
  722.   #--------------------------------------------------------------------------
  723.   # ● 初始化对像
  724.   #     actor : 角色
  725.   #--------------------------------------------------------------------------
  726.   def initialize(actor)
  727.     super(0, 0, 272, 88)
  728.     @actor = actor
  729.     refresh
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ● 刷新
  733.   #--------------------------------------------------------------------------
  734.   def refresh
  735.     self.contents.clear
  736.     draw_actor_name(@actor, 0, 0)
  737.     draw_actor_class(@actor, 0, 32)
  738.     draw_STface(@actor.face_name, @actor.face_index, 128, 0)
  739.   end
  740.   #--------------------------------------------------------------------------
  741.   # ● 设置角色
  742.   #     actor : 角色
  743.   #--------------------------------------------------------------------------
  744.   def actor=(actor)
  745.     if @actor != actor
  746.       @actor = actor
  747.       refresh
  748.     end
  749.   end
  750.   #--------------------------------------------------------------------------
  751.   # ● 绘制头像部分图
  752.   #     face_name  : 头像文件名
  753.   #     face_index : 头像号码
  754.   #     x     : 描画目标 X 坐标
  755.   #     y     : 描画目标 Y 坐标
  756.   #     size       : 显示大小
  757.   #--------------------------------------------------------------------------
  758.   def draw_STface(face_name, face_index, x, y, size = 96)
  759.     bitmap = Cache.face(face_name)
  760.     rect = Rect.new(0, 0, 0, 0)
  761.     rect.x = face_index % 4 * 96 + (96 - size) / 2
  762.     rect.y = face_index / 4 * 96 + (96 - size) / 2 + 16
  763.     rect.width = size
  764.     rect.height = 64
  765.     self.contents.blt(x, y, bitmap, rect)
  766.     bitmap.dispose
  767.   end
  768. end
  769. #==============================================================================
  770. # ■ Window_skill_status
  771. #------------------------------------------------------------------------------
  772. #  技能
  773. #==============================================================================
  774. class Window_skill_status < Window_Base
  775.   #--------------------------------------------------------------------------
  776.   # ● 初始化对像
  777.   #--------------------------------------------------------------------------
  778.   def initialize(skill = -1)
  779.     super(0, 328, 544, 88)
  780.     @skill = skill
  781.     refresh
  782.   end
  783.   #--------------------------------------------------------------------------
  784.   # ● 刷新
  785.   #--------------------------------------------------------------------------
  786.   def refresh
  787.     if @skill != -1
  788.       self.contents.clear
  789.       self.contents.draw_text(24, 0, 544, WLH, $data_skills[@skill].name)
  790.       draw_icon($data_skills[@skill].icon_index, 0, 0)
  791.       self.contents.draw_text(0, 32, 544, WLH, $data_skills[@skill].description)
  792.     end
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ● 设置技能
  796.   #--------------------------------------------------------------------------
  797.   def skill=(skill)
  798.     if @skill != skill
  799.       @skill = skill
  800.       refresh
  801.     end
  802.   end
  803. end
  804. #==============================================================================
  805. # ■ Window_skill_data
  806. #------------------------------------------------------------------------------
  807. #  数值
  808. #==============================================================================
  809. class Window_skill_data < Window_Base
  810.   #--------------------------------------------------------------------------
  811.   # ● 初始化对像
  812.   #     actor : 角色id
  813.   #--------------------------------------------------------------------------
  814.   def initialize(actor)
  815.     super(0, 144, 272, 184)
  816.     @actor = actor
  817.     refresh
  818.   end
  819.   #--------------------------------------------------------------------------
  820.   # ● 刷新
  821.   #--------------------------------------------------------------------------
  822.   def refresh
  823.     self.contents.clear
  824.     @st_data = $game_actors[@actor].level * FSL::ST::St_up
  825.     for i in 0..2
  826.       p = 0
  827.       if FSL::ST::St_actor[@actor][i] != nil
  828.         for j in FSL::ST::St_actor[@actor][i]
  829.           p += j
  830.         end
  831.       end
  832.       self.contents.draw_text(i * (272/3), 0, 272, WLH, p)
  833.       @st_data -= p
  834.     end
  835.     self.contents.draw_text(0, WLH, 272, WLH, @st_data)
  836.   end
  837. end
复制代码
执行$scene = Scene_Skill_Tree.new时 打开的天赋技能树默认是1号人物的,如何切换到2号人物?

我尝试队伍排列脚本 把2号人物排到第一个,但是执行$scene = Scene_Skill_Tree.new时 脚本就出错了。

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
2
 楼主| 发表于 2010-12-7 22:33:28 | 只看该作者
4小时已过,自顶一下,求解答
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
3
发表于 2010-12-10 13:09:14 | 只看该作者
本帖最后由 Rion幻音 于 2010-12-10 13:11 编辑
  1. $scene = Scene_Skill_Tree.new(X)
复制代码
X为自定义,阁下Scene_Skill_Tree.new有加()吗?

评分

参与人数 1星屑 +2 收起 理由
shinliwei + 2 感谢

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
116 小时
注册时间
2008-5-12
帖子
264
4
 楼主| 发表于 2010-12-10 13:40:46 | 只看该作者
回复 Rion幻音 的帖子

抱歉,我知道我错在哪了。我第二个人物对应的是第三个职业,而这个天赋是按职业ID来的,不是按人物ID来的,我一时疏忽,还琢磨了两三天。真是抱歉。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 03:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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