Project1

标题: 关于VX天赋脚本(以修改) [打印本页]

作者: qq546431664    时间: 2014-10-22 15:43
标题: 关于VX天赋脚本(以修改)
本帖最后由 qq546431664 于 2014-10-23 11:36 编辑

这是一个VX的天赋脚本帮忙看下能否改能VA的。。。
或是求一个VA的天赋脚本
用了VX的调用指令没反映或许是我不懂  懂的人看看呗

RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 简易天赋树脚本 - FSL_SHOP ◆ 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]
  25.     St_class_id[2] = [4,5,6]
  26.  
  27.     #角色存放值
  28.     #    为每个能够加入队伍的角色建立存储区
  29.     St_actor = []
  30.     St_actor[1] = [[],[],[]]
  31.     St_actor[2] = [[],[],[]]
  32.     St_actor[6] = [[],[],[]]
  33.  
  34.     #等级天赋点
  35.     #每级增加点数
  36.     St_up = 1
  37.  
  38.     #深度等级基数 每下降一级深度就需要在该天赋树上多投入多少点
  39.     St_lv = 5
  40.  
  41.     #天赋树
  42.     St_detailed = []
  43.     #基本信息详细设置  默认0            不可出现重复
  44.     #st_detailed[1] = [基本点数, 天赋名,包含的天赋技能]
  45.     St_detailed[1] =  [       0,"神圣",1,2,3,4,5,6]
  46.     St_detailed[2] =  [       0,"统御",7,8,9,10,11,12]
  47.     St_detailed[3] =  [       0,"惩戒",13,14,15,16,17,18]
  48.     St_detailed[4] =  [       0,"武器",2,3,5]
  49.     St_detailed[5] =  [       0,"狂暴",1,3,5]
  50.     St_detailed[6] =  [       0,"防护",3,4,6]
  51.  
  52.     St_skill = []
  53.     #天赋技能设置   进阶定义                            默认0
  54.     #st_skill[1] = [列,深度,技能id          ,前置技能st,点数存储]
  55.  
  56.     #神圣
  57.     St_skill[1] =  [ 1,   0,[ 1, 2, 3, 4, 5],       [0],       0]#神圣智慧
  58.     St_skill[2] =  [ 1,   1,[ 6, 7, 8]      ,       [1],       0]#神恩
  59.     St_skill[3] =  [ 2,   2,[ 9, 10]        ,       [0],       0]#不灭信仰
  60.     St_skill[4] =  [ 4,   5,[11]            ,     [3,5],       0]#圣光道标
  61.     St_skill[5] =  [ 3,   0,[12,13,14,15,16],       [0],       0]#光之烙铁
  62.     St_skill[6] =  [ 2,   1,[17,18,19]      ,       [1],       0]#冥想
  63.     #统御
  64.     St_skill[7] =  [ 1,   0,[31,32,33,34,35],       [8],       0]
  65.     St_skill[8] =  [ 3,   0,[22,23,24,25,26],        [],       0]
  66.     St_skill[9] =  [ 2,   1,[36,37,38]      ,        [],       0]
  67.     St_skill[10] = [ 1,   2,[20,21]         ,        [],       0]
  68.     St_skill[11] = [ 2,   4,[30]            ,        [],       0]
  69.     St_skill[12] = [ 3,   5,[27,28,29]      ,        [],       0]
  70.     #惩戒
  71.     St_skill[13] = [ 3,   3,[57]            ,        [],       0]
  72.     St_skill[14] = [ 2,   0,[39,40,41,42,43],        [],       0]
  73.     St_skill[15] = [ 3,   1,[45,46,47,48,49],        [],       0]
  74.     St_skill[16] = [ 1,   1,[50,51,52]      ,        [],       0]
  75.     St_skill[17] = [ 2,   2,[53,54,55,56]   ,        [],       0]
  76.     St_skill[18] = [ 1,   3,[44]            ,        [],       0]
  77.  
  78. #-----------------------------进阶定义-----------------------------
  79.     #天赋树列数
  80.     St_Base_x = 5
  81.     #天赋树深度
  82.     St_Base_y = 6
  83.   end
  84. end
  85. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  86. $fscript = {} if $fscript == nil
  87.                 $fscript["FSL_ST"] = [ 1, 7, 912]
  88. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  89.  
  90. #==============================================================================
  91. # ■ Scene_Skill_Tree
  92. #------------------------------------------------------------------------------
  93. #  天赋技能类
  94. #==============================================================================
  95.  
  96. class Scene_Skill_Tree < Scene_Base
  97.   #--------------------------------------------------------------------------
  98.   # ● 初始化对像
  99.   #     index : 天赋树
  100.   #--------------------------------------------------------------------------
  101.   def initialize(actor_index = 0)
  102.     @actor = actor_index
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 开始处理
  106.   #--------------------------------------------------------------------------
  107.   def start
  108.     super
  109.     create_menu_background
  110.     start_command
  111.     @skill_tree_window = Window_Skill_Tree.new(272, 0, 272, 328, $game_party.members[@actor])
  112.     @skill_tree_window.active = false
  113.     @skill_tree_window.visible = false
  114.     @skill_tree_window.index = 2 #??
  115.     @base_window = Window_Base.new(272, 0, 272, 328)
  116.     @skill_status_window = Window_skill_status.new
  117.     @skill_status_window.visible = false
  118.     @base_window2 = Window_Base.new(0, 328, 544, 88)
  119.     @skill_actor_window = Window_actor_Tree.new($game_party.members[@actor])
  120.     @skill_actor_window.active = true
  121.     @skill_data = Window_skill_data.new($game_party.members[@actor].id)
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 开始处理
  125.   #--------------------------------------------------------------------------
  126.   def start_command
  127.     s1 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]][1]
  128.     s2 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]][1]
  129.     s3 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]][1]
  130.     @command_window = Window_Command.new(272, [s1, s2, s3], 3)
  131.     @command_window.y = 88
  132.     @command_window.active = true
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 结束处理
  136.   #--------------------------------------------------------------------------
  137.   def terminate
  138.     super
  139.     @skill_tree_window.dispose
  140.     @base_window.dispose
  141.     @base_window2.dispose
  142.     @skill_data.dispose
  143.     @skill_status_window.dispose
  144.     @skill_actor_window.dispose
  145.     @command_window.dispose
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 更新画面
  149.   #--------------------------------------------------------------------------
  150.   def update
  151.     super
  152.     @skill_tree_window.update
  153.     @skill_actor_window.update
  154.     @skill_status_window.update
  155.     @base_window.update
  156.     @base_window2.update
  157.     @skill_data.update
  158.     @command_window.update
  159.  
  160.     if @skill_actor_window.active
  161.       if @skill_tree_window.visible == false
  162.         if Input.trigger?(Input::R)
  163.           Sound.play_cursor
  164.           @actor += 1
  165.           @actor %= $game_party.members.size
  166.           $scene = Scene_Skill_Tree.new(@actor)
  167.           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  168.         elsif Input.trigger?(Input::L)
  169.           Sound.play_cursor
  170.           @actor += $game_party.members.size - 1
  171.           @actor %= $game_party.members.size
  172.           $scene = Scene_Skill_Tree.new(@actor)
  173.           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  174.         end
  175.       end
  176.     end
  177.  
  178.     if @command_window.active
  179.       update_command_selection
  180.     elsif @skill_tree_window.active
  181.       update_skill_tree_selection
  182.     end
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 更新命令窗口
  186.   #--------------------------------------------------------------------------
  187.   def update_command_selection
  188.     if Input.trigger?(Input::B)
  189.       Sound.play_cancel
  190.       $scene = Scene_Map.new
  191.     elsif Input.trigger?(Input::C)
  192.       case @command_window.index
  193.       when 0  # 第一天赋
  194.         Sound.play_decision
  195.         @command_window.active = false
  196.         @base_window.visible = false
  197.         @base_window2.visible = false
  198.         @skill_actor_window.active = false
  199.         @skill_tree_window.active = true
  200.         @skill_tree_window.visible = true
  201.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]
  202.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  203.         @skill_status_window.visible = true
  204.         @skill_status_window.skill = @skill_tree_window.STK
  205.       when 1  # 第二天赋
  206.         Sound.play_decision
  207.         @command_window.active = false
  208.         @base_window.visible = false
  209.         @base_window2.visible = false
  210.         @skill_actor_window.active = false
  211.         @skill_tree_window.active = true
  212.         @skill_tree_window.visible = true
  213.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]
  214.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  215.         @skill_status_window.visible = true
  216.         @skill_status_window.skill = @skill_tree_window.STK
  217.       when 2  # 第三天赋
  218.         Sound.play_decision
  219.         @command_window.active = false
  220.         @base_window.visible = false
  221.         @base_window2.visible = false
  222.         @skill_actor_window.active = false
  223.         @skill_tree_window.active = true
  224.         @skill_tree_window.visible = true
  225.         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]
  226.         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
  227.         @skill_status_window.visible = true
  228.         @skill_status_window.skill = @skill_tree_window.STK
  229.       end
  230.     end
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 更新天赋窗口
  234.   #--------------------------------------------------------------------------
  235.   def update_skill_tree_selection
  236.     if Input.trigger?(Input::B)
  237.       Sound.play_cancel
  238.       @command_window.active = true
  239.       @base_window.visible = true
  240.       @base_window2.visible = true
  241.       @skill_actor_window.active = true
  242.       @skill_tree_window.active = false
  243.       @skill_tree_window.visible = false
  244.       @skill_status_window.visible = false
  245.       @skill_tree_window.ST_actor_data2
  246.     end
  247.  
  248.       if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT) || Input.trigger?(Input::UP) || Input.trigger?(Input::DOWN) || Input.trigger?(Input::X)
  249.         @skill_status_window.skill = @skill_tree_window.STK
  250.         @skill_tree_window.ST_actor_data3
  251.         @skill_data.refresh
  252.       end
  253.   end
  254. end
  255. #==============================================================================
  256. # ■ Window_Skill_Tree
  257. #------------------------------------------------------------------------------
  258. #  天赋技能
  259. #==============================================================================
  260. class Window_Skill_Tree < Window_Selectable
  261.   #--------------------------------------------------------------------------
  262.   # ● 初始化对像
  263.   #     x      : 窗口 X 座标
  264.   #     y      : 窗口 Y 座标
  265.   #--------------------------------------------------------------------------
  266.   def initialize(x, y, width, height, actortree)
  267.     @ST_id = actortree.id
  268.     @ST_index = FSL::ST::St_class_id[actortree.class_id][0]
  269.     super(x, y, width, height)
  270.     @ST_x_current = 0
  271.     @ST_y_current = 0
  272.     @ST_width = 48
  273.     @ST_height = 48
  274.     refresh
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● 刷新
  278.   #--------------------------------------------------------------------------
  279.   def refresh
  280.     self.contents.clear
  281.  
  282.     @ST_array = Array.new(FSL::ST::St_Base_x){Array.new(FSL::ST::St_Base_y,0)}
  283.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  284.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  285.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  286.       @ST_array[x][y] = 1
  287.     end
  288.     for j in 0...FSL::ST::St_Base_y
  289.       for i in 0...FSL::ST::St_Base_x
  290.         if @ST_array[i][j] == 1
  291.           self.cursor_rect = Rect.new((i * @ST_width) - 12,(j * @ST_height) - 12, 48, 48)
  292.           p = 1
  293.           @ST_x_current = i
  294.           @ST_y_current = j
  295.           break
  296.         end
  297.       end
  298.       break if p == 1
  299.     end
  300.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  301.       bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  302.       by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  303.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
  304.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
  305.       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
  306.         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]
  307.       else
  308.         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]]
  309.       end
  310.       n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  311.       l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  312.  
  313.  
  314.  
  315.       t = true
  316.       #技能总深度是否达到
  317.       if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  318.         t = false
  319.       end#技能总深度是否达到
  320.  
  321.         #技能前置是否满修
  322.         for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  323.         if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  324.           ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
  325.           ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
  326.           x2 = ax * @ST_width + 12
  327.           y2 = ay * @ST_height + 12
  328.           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
  329.             t = false
  330.           end
  331.  
  332.           bitmap = Cache.load_bitmap("Graphics/System/", "xy")
  333.           if ay == by
  334.             if ax > bx
  335.               rect = Rect.new(48, 48, 48, 48)
  336.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  337.               rect = Rect.new(48, 0, 48, 48)
  338.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  339.               rect = Rect.new(192, 48, 48, 48)
  340.               for r in (bx + 1)...ax
  341.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  342.               end
  343.             elsif bx > ax
  344.               rect = Rect.new(96, 48, 48, 48)
  345.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  346.               rect = Rect.new(96, 0, 48, 48)
  347.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  348.               rect = Rect.new(192, 48, 48, 48)
  349.               for r in (ax + 1)...bx
  350.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  351.               end
  352.             end
  353.           elsif by > ay
  354.             if ax > bx
  355.               rect = Rect.new(48, 48, 48, 48)
  356.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  357.               rect = Rect.new(144, 48, 48, 48)
  358.               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  359.               rect = Rect.new(192, 48, 48, 48)
  360.               for r in (bx + 1)...ax
  361.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  362.               end
  363.             elsif bx > ax
  364.               rect = Rect.new(96, 48, 48, 48)
  365.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  366.               rect = Rect.new(144, 0, 48, 48)
  367.               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  368.               rect = Rect.new(192, 48, 48, 48)
  369.               for r in (ax + 1)...bx
  370.                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  371.               end
  372.             else
  373.               rect = Rect.new(0, 48, 48, 48)
  374.               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  375.             end
  376.             rect = Rect.new(0, 0, 48, 48)
  377.             self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  378.             rect = Rect.new(192, 0, 48, 48)
  379.             for r in (ay + 1)...by
  380.                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
  381.             end
  382.           end
  383.  
  384.         end
  385.         end#技能前置是否满修
  386.  
  387.       draw_icon($data_skills[m].icon_index, x, y, t)
  388.       self.contents.font.color = normal_color
  389.       self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
  390.       self.contents.font.color = system_color
  391.       self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
  392.       self.contents.font.color = normal_color
  393.  
  394.  
  395.     end
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ● 统计
  399.   #--------------------------------------------------------------------------
  400.   def statistics
  401.       k = 0
  402.       for i in 2...FSL::ST::St_detailed[@ST_index].size
  403.         k += FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  404.       end
  405.       return k
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 更新
  409.   #--------------------------------------------------------------------------
  410.   def update
  411.     super
  412.  
  413.     if self.active == true #窗口活动则判断输入
  414.  
  415.       if Input.trigger?(Input::LEFT)
  416.         Sound.play_cursor
  417.         loop do
  418.           if @ST_x_current == 0
  419.             @ST_x_current = (FSL::ST::St_Base_x - 1)
  420.           else
  421.             Sound.play_cursor
  422.             @ST_x_current -= 1
  423.           end
  424.           if @ST_array[@ST_x_current][@ST_y_current] == 1
  425.             break
  426.           end
  427.         end
  428.         update_cursor
  429.         return
  430.       end
  431.  
  432.       if Input.trigger?(Input::RIGHT)
  433.         Sound.play_cursor
  434.         loop do
  435.           if @ST_x_current == (FSL::ST::St_Base_x - 1)
  436.             @ST_x_current = 0
  437.           else
  438.             @ST_x_current += 1
  439.           end
  440.           if @ST_array[@ST_x_current][@ST_y_current] == 1
  441.             break
  442.           end
  443.         end
  444.         update_cursor
  445.         return
  446.       end
  447.  
  448.       if Input.trigger?(Input::UP)
  449.         Sound.play_cursor
  450.         i = @ST_x_current - 1
  451.         j = @ST_y_current
  452.         loop do
  453.           if i == -1
  454.             i = FSL::ST::St_Base_x - 1
  455.             j -= 1
  456.           end
  457.           j = FSL::ST::St_Base_y - 1 if j == -1
  458.           if @ST_array[i][j] == 1
  459.             @ST_x_current = i
  460.             @ST_y_current = j
  461.             break
  462.           end
  463.           i -= 1
  464.         end
  465.         update_cursor
  466.         return
  467.       end
  468.  
  469.       if Input.trigger?(Input::DOWN)
  470.         Sound.play_cursor
  471.         i = @ST_x_current + 1
  472.         j = @ST_y_current
  473.         loop do
  474.           if i == FSL::ST::St_Base_x
  475.             i = 0
  476.             j += 1
  477.           end
  478.           j = 0 if j == FSL::ST::St_Base_y
  479.           if @ST_array[i][j] == 1
  480.             @ST_x_current = i
  481.             @ST_y_current = j
  482.             break
  483.           end
  484.           i += 1
  485.         end
  486.         update_cursor
  487.         return
  488.       end
  489.  
  490.       if Input.trigger?(Input::X)
  491.         if @st_data == 0
  492.           Sound.play_buzzer
  493.         else
  494.         for i in 2...FSL::ST::St_detailed[@ST_index].size
  495.           xx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  496.           yy = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  497.           t = true
  498.           #技能总深度是否达到
  499.           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  500.             t = false
  501.           end#技能总深度是否达到
  502.  
  503.           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  504.           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  505.             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
  506.               t = false
  507.             end
  508.           end
  509.           end
  510.  
  511.           if @ST_x_current == xx && @ST_y_current == yy
  512.             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
  513.               Sound.play_buzzer
  514.             else
  515.               if t == true
  516.                 if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] > 0
  517.                   $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])
  518.                 end
  519.                 $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]])
  520.                 FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] += 1
  521.                 @st_data -= 1
  522.  
  523.                 Sound.play_cursor
  524.               else
  525.                 Sound.play_buzzer
  526.               end
  527.             end
  528.           end
  529.         end
  530.  
  531.         self.contents.clear
  532.         for i in 2...FSL::ST::St_detailed[@ST_index].size
  533.           bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  534.           by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  535.           x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
  536.           y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
  537.           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
  538.             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]
  539.           else
  540.             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]]
  541.           end
  542.           n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
  543.           l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
  544.  
  545.           t = true
  546.           #技能总深度是否达到
  547.           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
  548.             t = false
  549.           end#技能总深度是否达到
  550.  
  551.           #技能前置是否满修
  552.           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
  553.           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
  554.             ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
  555.             ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
  556.             x2 = ax * @ST_width + 12
  557.             y2 = ay * @ST_height + 12
  558.             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
  559.               t = false
  560.             end
  561.  
  562.             bitmap = Cache.load_bitmap("Graphics/System/", "xy")
  563.             if ay == by
  564.               if ax > bx
  565.                 rect = Rect.new(48, 48, 48, 48)
  566.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  567.                 rect = Rect.new(48, 0, 48, 48)
  568.                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  569.                 rect = Rect.new(192, 48, 48, 48)
  570.                 for r in (bx + 1)...ax
  571.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  572.                 end
  573.               elsif bx > ax
  574.                 rect = Rect.new(96, 48, 48, 48)
  575.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  576.                 rect = Rect.new(96, 0, 48, 48)
  577.                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  578.                 rect = Rect.new(192, 48, 48, 48)
  579.                 for r in (ax + 1)...bx
  580.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  581.                 end
  582.               end
  583.             elsif by > ay
  584.               if ax > bx
  585.                 rect = Rect.new(48, 48, 48, 48)
  586.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  587.                 rect = Rect.new(144, 48, 48, 48)
  588.                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  589.                 rect = Rect.new(192, 48, 48, 48)
  590.                 for r in (bx + 1)...ax
  591.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  592.                 end
  593.               elsif bx > ax
  594.                 rect = Rect.new(96, 48, 48, 48)
  595.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  596.                 rect = Rect.new(144, 0, 48, 48)
  597.                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  598.                 rect = Rect.new(192, 48, 48, 48)
  599.                 for r in (ax + 1)...bx
  600.                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
  601.                 end
  602.               else
  603.                 rect = Rect.new(0, 48, 48, 48)
  604.                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
  605.               end
  606.               rect = Rect.new(0, 0, 48, 48)
  607.               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
  608.               rect = Rect.new(192, 0, 48, 48)
  609.               for r in (ay + 1)...by
  610.                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
  611.               end
  612.             end
  613.  
  614.           end
  615.           end#技能前置是否满修
  616.  
  617.           draw_icon($data_skills[m].icon_index, x, y, t)
  618.           self.contents.font.color = normal_color
  619.           self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
  620.           self.contents.font.color = system_color
  621.           self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
  622.           self.contents.font.color = normal_color
  623.  
  624.         end
  625.       end#@st_data
  626.       end#(Input::X)
  627.  
  628.     end #窗口活动则判断输入
  629.   end
  630.   #--------------------------------------------------------------------------
  631.   # ● 更新光标
  632.   #--------------------------------------------------------------------------
  633.   def update_cursor
  634.     if @ST_x_current < 0 || @ST_y_current < 0       # 当光标位置小于0
  635.       self.cursor_rect.empty                        # 隐藏光标
  636.     else
  637.       x = @ST_x_current * @ST_width
  638.       y = @ST_y_current * @ST_height
  639.       rect = Rect.new(x, y, 48 , 48)
  640.       self.cursor_rect = rect                       # 更新光标矩形
  641.     end
  642.   end
  643.   #--------------------------------------------------------------------------
  644.   # ● 设置天赋
  645.   #     index : 天赋
  646.   #--------------------------------------------------------------------------
  647.   def index=(index)
  648.     if @ST_index != index
  649.       @ST_index = index
  650.     end
  651.   end
  652.   #--------------------------------------------------------------------------
  653.   # ● 获取技能
  654.   #--------------------------------------------------------------------------
  655.   def STK
  656.     for i in 2...FSL::ST::St_detailed[@ST_index].size
  657.       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
  658.       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
  659.       if @ST_x_current == x && @ST_y_current == y
  660.         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
  661.           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]
  662.         else
  663.           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]]
  664.         end
  665.       end
  666.     end
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ● 读取角色具体天赋数值
  670.   #--------------------------------------------------------------------------
  671.   def ST_actor_data(ac)
  672.     @st_actor_data = ac
  673.     @st_data = $game_actors[@st_actor_data].level * FSL::ST::St_up
  674.     for j in 0..2
  675.       m = 2
  676.       if FSL::ST::St_actor[@st_actor_data][j] != nil
  677.         s = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  678.         for i in FSL::ST::St_actor[@st_actor_data][j]
  679.           @st_data -= i
  680.           FSL::ST::St_skill[FSL::ST::St_detailed[s][m]][4] = i
  681.           m += 1
  682.         end
  683.       end
  684.     end
  685.     refresh
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 存储角色具体天赋数值
  689.   #--------------------------------------------------------------------------
  690.   def ST_actor_data2
  691.     for j in 0..2
  692.       FSL::ST::St_actor[@st_actor_data][j].clear
  693.       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  694.       for i in 2...FSL::ST::St_detailed[p].size
  695.         FSL::ST::St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
  696.         FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4] = 0
  697.       end
  698.     end
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● 更新角色具体天赋数值
  702.   #--------------------------------------------------------------------------
  703.   def ST_actor_data3
  704.     for j in 0..2
  705.       FSL::ST::St_actor[@st_actor_data][j].clear
  706.       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
  707.       for i in 2...FSL::ST::St_detailed[p].size
  708.         FSL::ST::St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
  709.       end
  710.     end
  711.   end
  712. end
  713. #==============================================================================
  714. # ■ Window_actor_Tree
  715. #------------------------------------------------------------------------------
  716. #  天赋
  717. #==============================================================================
  718.  
  719. class Window_actor_Tree < Window_Base
  720.   #--------------------------------------------------------------------------
  721.   # ● 初始化对像
  722.   #     actor : 角色
  723.   #--------------------------------------------------------------------------
  724.   def initialize(actor)
  725.     super(0, 0, 272, 88)
  726.     @actor = actor
  727.     refresh
  728.   end
  729.   #--------------------------------------------------------------------------
  730.   # ● 刷新
  731.   #--------------------------------------------------------------------------
  732.   def refresh
  733.     self.contents.clear
  734.     draw_actor_name(@actor, 0, 0)
  735.     draw_actor_class(@actor, 0, 32)
  736.     draw_STface(@actor.face_name, @actor.face_index, 128, 0)
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ● 设置角色
  740.   #     actor : 角色
  741.   #--------------------------------------------------------------------------
  742.   def actor=(actor)
  743.     if @actor != actor
  744.       @actor = actor
  745.       refresh
  746.     end
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # ● 绘制头像部分图
  750.   #     face_name  : 头像文件名
  751.   #     face_index : 头像号码
  752.   #     x     : 描画目标 X 坐标
  753.   #     y     : 描画目标 Y 坐标
  754.   #     size       : 显示大小
  755.   #--------------------------------------------------------------------------
  756.   def draw_STface(face_name, face_index, x, y, size = 96)
  757.     bitmap = Cache.face(face_name)
  758.     rect = Rect.new(0, 0, 0, 0)
  759.     rect.x = face_index % 4 * 96 + (96 - size) / 2
  760.     rect.y = face_index / 4 * 96 + (96 - size) / 2 + 16
  761.     rect.width = size
  762.     rect.height = 64
  763.     self.contents.blt(x, y, bitmap, rect)
  764.     bitmap.dispose
  765.   end
  766. end
  767. #==============================================================================
  768. # ■ Window_skill_status
  769. #------------------------------------------------------------------------------
  770. #  技能
  771. #==============================================================================
  772. class Window_skill_status < Window_Base
  773.   #--------------------------------------------------------------------------
  774.   # ● 初始化对像
  775.   #--------------------------------------------------------------------------
  776.   def initialize(skill = -1)
  777.     super(0, 328, 544, 88)
  778.     [url=home.php?mod=space&uid=260100]@skill[/url] = skill
  779.     refresh
  780.   end
  781.   #--------------------------------------------------------------------------
  782.   # ● 刷新
  783.   #--------------------------------------------------------------------------
  784.   def refresh
  785.     if @skill != -1
  786.       self.contents.clear
  787.       self.contents.draw_text(24, 0, 544, WLH, $data_skills[@skill].name)
  788.       draw_icon($data_skills[@skill].icon_index, 0, 0)
  789.       self.contents.draw_text(0, 32, 544, WLH, $data_skills[@skill].description)
  790.     end
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   # ● 设置技能
  794.   #--------------------------------------------------------------------------
  795.   def skill=(skill)
  796.     if @skill != skill
  797.       @skill = skill
  798.       refresh
  799.     end
  800.   end
  801. end
  802. #==============================================================================
  803. # ■ Window_skill_data
  804. #------------------------------------------------------------------------------
  805. #  数值
  806. #==============================================================================
  807. class Window_skill_data < Window_Base
  808.   #--------------------------------------------------------------------------
  809.   # ● 初始化对像
  810.   #     actor : 角色id
  811.   #--------------------------------------------------------------------------
  812.   def initialize(actor)
  813.     super(0, 144, 272, 184)
  814.     @actor = actor
  815.     refresh
  816.   end
  817.   #--------------------------------------------------------------------------
  818.   # ● 刷新
  819.   #--------------------------------------------------------------------------
  820.   def refresh
  821.     self.contents.clear
  822.     @st_data = $game_actors[@actor].level * FSL::ST::St_up
  823.     for i in 0..2
  824.       p = 0
  825.       if FSL::ST::St_actor[@actor][i] != nil
  826.         for j in FSL::ST::St_actor[@actor][i]
  827.           p += j
  828.         end
  829.       end
  830.       self.contents.draw_text(i * (272/3), 0, 272, WLH, p)
  831.       @st_data -= p
  832.     end
  833.     self.contents.draw_text(0, WLH, 272, WLH, @st_data)
  834.   end
  835. end

作者: chd114    时间: 2014-10-22 22:01
先试试看能不能直接用吧,另外你可以把那个范例工程搬过来吗···表示点开你的那个地址直接卡住···话说@VIPArcher 也做过类似的东西了?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1