| 赞 | 0  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 1 | 
 
| 经验 | 706 | 
 
| 最后登录 | 2013-8-28 | 
 
| 在线时间 | 18 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 50 
 
        - 在线时间
 - 18 小时
 
        - 注册时间
 - 2013-7-15
 
        - 帖子
 - 26
 
 
 
 | 
	
4楼
 
 
 楼主 |
发表于 2013-7-17 22:44:53
|
只看该作者
 
 
 
 本帖最后由 protosssonny 于 2013-7-29 08:30 编辑  
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
 - #_/    ◆ 简易天赋树脚本 - FSL_ST ◆ VX ◆
 
 - #_/
 
 - #_/    ◇ 许可协议 :FSL       ◇
 
 - #_/    ◇ 项目分类 : 角色辅助  ◇
 
 - #_/    ◇ 项目版本 : 1.8.0423   ◇
 
 - #_/    ◇ 建立日期 : 2010/9/05 ◇
 
 - #_/    ◇ 最后更新 : 2011/4/23 ◇
 
 - #_/----------------------------------------------------------------------------
 
 - #_/  作者:wangswz
 
 - #_/============================================================================
 
 - #_/ 【基本机能】复杂化游戏系统。
 
 - #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
 - #===============================================================================
 
 - #-------------------------------------------------------------------------------
 
 - # ▼ 通用配置模块
 
 - #-------------------------------------------------------------------------------
 
 - module FSL
 
 -   module ST
 
 -     #职业对应天赋树初始化
 
 -     St_class_id = []
 
 -     #详细设置
 
 -     #    每个职业只能设置3个不同的天赋树
 
 -     St_class_id[1] = [1,2,3]#包含St_detailed[1]St_detailed[2]St_detailed[3]
 
 -     St_class_id[2] = [4,5,6]
 
 -     
 
 -     #等级天赋点
 
 -     #每级增加的天赋点数
 
 -     St_up = 1
 
 -     
 
 -     #深度等级基数 每下降一级深度就需要在该天赋树上多投入多少点
 
 -     St_lv = 5
 
 -     
 
 -     #天赋树
 
 -     St_detailed = []
 
 -     #基本信息详细设置  默认0            不可出现重复
 
 -     #st_detailed[1] = [基本点数, 天赋名,包含的天赋技能]
 
 -     St_detailed[1] =  [       0,"神圣",1,2,3,4,5,6]
 
 -     St_detailed[2] =  [       0,"统御",7,8,9,10,11,12]
 
 -     St_detailed[3] =  [       0,"惩戒",13,14,15,16,17,18]
 
 -     St_detailed[4] =  [       0,"武器",2,3,5]
 
 -     St_detailed[5] =  [       0,"狂暴",1,3,5]
 
 -     St_detailed[6] =  [       0,"防护",3,4,6]
 
 -     
 
 -     #将天赋树分为5×6格
 
 -     # 0 1 2 3 4 5 列
 
 -     #0
 
 -     #1
 
 -     #2
 
 -     #3
 
 -     #4
 
 -     #5
 
 -     #深
 
 -     
 
 -     St_skill = []
 
 -     #天赋技能设置   进阶定义                            默认0
 
 -     #st_skill[1] = [列,深度,技能id          ,前置技能ID,点数存储]
 
 -     
 
 -     #神圣
 
 -     St_skill[1] =  [ 1,   0,[ 1, 2, 3, 4, 5],       [0],       0]#神圣智慧
 
 -     St_skill[2] =  [ 1,   1,[ 6, 7, 8]      ,       [1],       0]#神恩
 
 -     St_skill[3] =  [ 2,   2,[ 9, 10]        ,       [0],       0]#不灭信仰
 
 -     St_skill[4] =  [ 4,   5,[11]            ,     [3,5],       0]#圣光道标
 
 -     St_skill[5] =  [ 3,   0,[12,13,14,15,16],       [0],       0]#光之烙铁
 
 -     St_skill[6] =  [ 2,   1,[17,18,19]      ,       [1],       0]#冥想
 
 -     #统御
 
 -     St_skill[7] =  [ 1,   0,[31,32,33,34,35],       [8],       0]
 
 -     St_skill[8] =  [ 3,   0,[22,23,24,25,26],        [],       0]
 
 -     St_skill[9] =  [ 2,   1,[36,37,38]      ,        [],       0]
 
 -     St_skill[10] = [ 1,   2,[20,21]         ,        [],       0]
 
 -     St_skill[11] = [ 2,   4,[30]            ,        [],       0]
 
 -     St_skill[12] = [ 3,   5,[27,28,29]      ,        [],       0]
 
 -     #惩戒
 
 -     St_skill[13] = [ 3,   3,[57]            ,        [],       0]
 
 -     St_skill[14] = [ 2,   0,[39,40,41,42,43],        [],       0]
 
 -     St_skill[15] = [ 3,   1,[45,46,47,48,49],        [],       0]
 
 -     St_skill[16] = [ 1,   1,[50,51,52]      ,        [],       0]
 
 -     St_skill[17] = [ 2,   2,[53,54,55,56]   ,        [],       0]
 
 -     St_skill[18] = [ 1,   3,[44]            ,        [],       0]
 
 -     
 
 - #-----------------------------进阶定义-----------------------------
 
 -     #天赋树列数
 
 -     St_Base_x = 5
 
 -     #天赋树深度
 
 -     St_Base_y = 6
 
 -   end
 
 - end
 
 - #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
 -     #角色存放值
 
 -     #    为每个能够加入队伍的角色建立存储区
 
 -     $St_actor = {} if $St_actor == nil
 
 -     $St_actor[1] = [[],[],[]] if $St_actor[1] == nil
 
 -     $St_actor[2] = [[],[],[]] if $St_actor[2] == nil
 
 -     $St_actor[6] = [[],[],[]] if $St_actor[6] == nil
 
 - #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
 - $fscript = {} if $fscript == nil
 
 -                 $fscript["FSL_ST"] = [ 1, 7, 912]
 
 - #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
  
- #==============================================================================
 
 - # ■ Scene_Skill_Tree
 
 - #------------------------------------------------------------------------------
 
 - #  天赋技能类
 
 - #==============================================================================
 
  
- class Scene_Skill_Tree < Scene_Base
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对像
 
 -   #     index : 天赋树
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(actor_index = 0)
 
 -     [url=home.php?mod=space&uid=95897]@actor[/url] = actor_index
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 开始处理
 
 -   #--------------------------------------------------------------------------
 
 -   def start
 
 -     super
 
 -     create_menu_background
 
 -     start_command
 
 -     @skill_tree_window = Window_Skill_Tree.new(272, 0, 272, 328, $game_party.members[@actor])
 
 -     @skill_tree_window.active = false
 
 -     @skill_tree_window.visible = false
 
 -     @skill_tree_window.index = 2 #??
 
 -     @base_window = Window_Base.new(272, 0, 272, 328)
 
 -     @skill_status_window = Window_skill_status.new
 
 -     @skill_status_window.visible = false
 
 -     @base_window2 = Window_Base.new(0, 328, 544, 88)
 
 -     @skill_actor_window = Window_actor_Tree.new($game_party.members[@actor])
 
 -     @skill_actor_window.active = true
 
 -     @skill_data = Window_skill_data.new($game_party.members[@actor].id)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 开始处理
 
 -   #--------------------------------------------------------------------------
 
 -   def start_command
 
 -     s1 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]][1]
 
 -     s2 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]][1]
 
 -     s3 = FSL::ST::St_detailed[FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]][1]
 
 -     @command_window = Window_Command.new(272, [s1, s2, s3], 3)
 
 -     @command_window.y = 88
 
 -     @command_window.active = true
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 结束处理
 
 -   #--------------------------------------------------------------------------
 
 -   def terminate
 
 -     super
 
 -     @skill_tree_window.dispose
 
 -     @base_window.dispose
 
 -     @base_window2.dispose
 
 -     @skill_data.dispose
 
 -     @skill_status_window.dispose
 
 -     @skill_actor_window.dispose
 
 -     @command_window.dispose
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新画面
 
 -   #--------------------------------------------------------------------------
 
 -   def update
 
 -     super
 
 -     @skill_tree_window.update
 
 -     @skill_actor_window.update
 
 -     @skill_status_window.update
 
 -     @base_window.update
 
 -     @base_window2.update
 
 -     @skill_data.update
 
 -     @command_window.update
 
 -     
 
 -     if @skill_actor_window.active
 
 -       if @skill_tree_window.visible == false
 
 -         if Input.trigger?(Input::R)
 
 -           Sound.play_cursor
 
 -           [url=home.php?mod=space&uid=95897]@actor[/url] += 1
 
 -           @actor %= $game_party.members.size
 
 -           $scene = Scene_Skill_Tree.new(@actor)
 
 -           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
 
 -         elsif Input.trigger?(Input::L)
 
 -           Sound.play_cursor
 
 -           @actor += $game_party.members.size - 1
 
 -           @actor %= $game_party.members.size
 
 -           $scene = Scene_Skill_Tree.new(@actor)
 
 -           @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
 
 -         end
 
 -       end
 
 -     end
 
  
-     if @command_window.active
 
 -       update_command_selection
 
 -     elsif @skill_tree_window.active
 
 -       update_skill_tree_selection
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新命令窗口
 
 -   #--------------------------------------------------------------------------
 
 -   def update_command_selection
 
 -     if Input.trigger?(Input::B)
 
 -       Sound.play_cancel
 
 -       $scene = Scene_Map.new
 
 -     elsif Input.trigger?(Input::C)
 
 -       case @command_window.index
 
 -       when 0  # 第一天赋
 
 -         Sound.play_decision
 
 -         @command_window.active = false
 
 -         @base_window.visible = false
 
 -         @base_window2.visible = false
 
 -         @skill_actor_window.active = false
 
 -         @skill_tree_window.active = true
 
 -         @skill_tree_window.visible = true
 
 -         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][0]
 
 -         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
 
 -         @skill_status_window.visible = true
 
 -         @skill_status_window.skill = @skill_tree_window.STK
 
 -       when 1  # 第二天赋
 
 -         Sound.play_decision
 
 -         @command_window.active = false
 
 -         @base_window.visible = false
 
 -         @base_window2.visible = false
 
 -         @skill_actor_window.active = false
 
 -         @skill_tree_window.active = true
 
 -         @skill_tree_window.visible = true
 
 -         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][1]
 
 -         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
 
 -         @skill_status_window.visible = true
 
 -         @skill_status_window.skill = @skill_tree_window.STK
 
 -       when 2  # 第三天赋
 
 -         Sound.play_decision
 
 -         @command_window.active = false
 
 -         @base_window.visible = false
 
 -         @base_window2.visible = false
 
 -         @skill_actor_window.active = false
 
 -         @skill_tree_window.active = true
 
 -         @skill_tree_window.visible = true
 
 -         @skill_tree_window.index = FSL::ST::St_class_id[$game_party.members[@actor].class_id][2]
 
 -         @skill_tree_window.ST_actor_data($game_party.members[@actor].id)
 
 -         @skill_status_window.visible = true
 
 -         @skill_status_window.skill = @skill_tree_window.STK
 
 -       end
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新天赋窗口
 
 -   #--------------------------------------------------------------------------
 
 -   def update_skill_tree_selection
 
 -     if Input.trigger?(Input::B)
 
 -       Sound.play_cancel
 
 -       @command_window.active = true
 
 -       @base_window.visible = true
 
 -       @base_window2.visible = true
 
 -       @skill_actor_window.active = true
 
 -       @skill_tree_window.active = false
 
 -       @skill_tree_window.visible = false
 
 -       @skill_status_window.visible = false
 
 -       @skill_tree_window.ST_actor_data2
 
 -     end
 
  
-       if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT) || Input.trigger?(Input::UP) || Input.trigger?(Input::DOWN) || Input.trigger?(Input::X)
 
 -         @skill_status_window.skill = @skill_tree_window.STK
 
 -         @skill_tree_window.ST_actor_data3
 
 -         @skill_data.refresh
 
 -       end
 
 -   end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_Skill_Tree
 
 - #------------------------------------------------------------------------------
 
 - #  天赋技能
 
 - #==============================================================================
 
 - class Window_Skill_Tree < Window_Selectable
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对像
 
 -   #     x      : 窗口 X 座标
 
 -   #     y      : 窗口 Y 座标
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(x, y, width, height, actortree)
 
 -     @ST_id = actortree.id
 
 -     @ST_index = FSL::ST::St_class_id[actortree.class_id][0]
 
 -     super(x, y, width, height)
 
 -     @ST_x_current = 0
 
 -     @ST_y_current = 0
 
 -     @ST_width = 48
 
 -     @ST_height = 48
 
 -     refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 刷新
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh
 
 -     self.contents.clear
 
 -     
 
 -     @ST_array = Array.new(FSL::ST::St_Base_x){Array.new(FSL::ST::St_Base_y,0)}
 
 -     for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
 
 -       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
 
 -       @ST_array[x][y] = 1
 
 -     end
 
 -     for j in 0...FSL::ST::St_Base_y
 
 -       for i in 0...FSL::ST::St_Base_x
 
 -         if @ST_array[i][j] == 1
 
 -           self.cursor_rect = Rect.new((i * @ST_width) - 12,(j * @ST_height) - 12, 48, 48)
 
 -           p = 1
 
 -           @ST_x_current = i
 
 -           @ST_y_current = j
 
 -           break
 
 -         end
 
 -       end
 
 -       break if p == 1
 
 -     end
 
 -     for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -       bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
 
 -       by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
 
 -       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
 
 -       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
 
 -       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
 
 -         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]
 
 -       else
 
 -         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]]
 
 -       end
 
 -       n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
 
 -       l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
 
 -       
 
 -       
 
 -       
 
 -       t = true
 
 -       #技能总深度是否达到
 
 -       if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
 
 -         t = false
 
 -       end#技能总深度是否达到
 
 -       
 
 -         #技能前置是否满修
 
 -         for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
 
 -         if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
 
 -           ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
 
 -           ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
 
 -           x2 = ax * @ST_width + 12
 
 -           y2 = ay * @ST_height + 12
 
 -           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
 
 -             t = false
 
 -           end
 
 -       
 
 -           bitmap = Cache.load_bitmap("Graphics/System/", "xy")
 
 -           if ay == by
 
 -             if ax > bx
 
 -               rect = Rect.new(48, 48, 48, 48)
 
 -               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(48, 0, 48, 48)
 
 -               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(192, 48, 48, 48)
 
 -               for r in (bx + 1)...ax
 
 -                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -             elsif bx > ax
 
 -               rect = Rect.new(96, 48, 48, 48)
 
 -               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(96, 0, 48, 48)
 
 -               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(192, 48, 48, 48)
 
 -               for r in (ax + 1)...bx
 
 -                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -             end
 
 -           elsif by > ay
 
 -             if ax > bx
 
 -               rect = Rect.new(48, 48, 48, 48)
 
 -               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(144, 48, 48, 48)
 
 -               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(192, 48, 48, 48)
 
 -               for r in (bx + 1)...ax
 
 -                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -             elsif bx > ax
 
 -               rect = Rect.new(96, 48, 48, 48)
 
 -               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(144, 0, 48, 48)
 
 -               self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(192, 48, 48, 48)
 
 -               for r in (ax + 1)...bx
 
 -                 self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -             else
 
 -               rect = Rect.new(0, 48, 48, 48)
 
 -               self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -             end
 
 -             rect = Rect.new(0, 0, 48, 48)
 
 -             self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -             rect = Rect.new(192, 0, 48, 48)
 
 -             for r in (ay + 1)...by
 
 -                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
 
 -             end
 
 -           end
 
 -         
 
 -         end
 
 -         end#技能前置是否满修
 
 -       
 
 -       draw_icon($data_skills[m].icon_index, x, y, t)
 
 -       self.contents.font.color = normal_color
 
 -       self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
 
 -       self.contents.font.color = system_color
 
 -       self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
 
 -       self.contents.font.color = normal_color
 
  
-       
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 统计
 
 -   #--------------------------------------------------------------------------
 
 -   def statistics
 
 -       k = 0
 
 -       for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -         k += FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
 
 -       end
 
 -       return k
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新
 
 -   #--------------------------------------------------------------------------
 
 -   def update
 
 -     super
 
 -     
 
 -     if self.active == true #窗口活动则判断输入
 
 -     
 
 -       if Input.trigger?(Input::LEFT)
 
 -         Sound.play_cursor
 
 -         loop do
 
 -           if @ST_x_current == 0
 
 -             @ST_x_current = (FSL::ST::St_Base_x - 1)
 
 -           else
 
 -             Sound.play_cursor
 
 -             @ST_x_current -= 1 
 
 -           end
 
 -           if @ST_array[@ST_x_current][@ST_y_current] == 1
 
 -             break
 
 -           end
 
 -         end
 
 -         update_cursor
 
 -         return
 
 -       end
 
 -       
 
 -       if Input.trigger?(Input::RIGHT)
 
 -         Sound.play_cursor
 
 -         loop do
 
 -           if @ST_x_current == (FSL::ST::St_Base_x - 1)
 
 -             @ST_x_current = 0
 
 -           else
 
 -             @ST_x_current += 1
 
 -           end
 
 -           if @ST_array[@ST_x_current][@ST_y_current] == 1
 
 -             break
 
 -           end
 
 -         end
 
 -         update_cursor
 
 -         return
 
 -       end
 
 -       
 
 -       if Input.trigger?(Input::UP)
 
 -         Sound.play_cursor
 
 -         i = @ST_x_current - 1
 
 -         j = @ST_y_current
 
 -         loop do
 
 -           if i == -1
 
 -             i = FSL::ST::St_Base_x - 1
 
 -             j -= 1
 
 -           end
 
 -           j = FSL::ST::St_Base_y - 1 if j == -1
 
 -           if @ST_array[i][j] == 1
 
 -             @ST_x_current = i
 
 -             @ST_y_current = j
 
 -             break
 
 -           end
 
 -           i -= 1
 
 -         end
 
 -         update_cursor
 
 -         return
 
 -       end
 
 -       
 
 -       if Input.trigger?(Input::DOWN)
 
 -         Sound.play_cursor
 
 -         i = @ST_x_current + 1
 
 -         j = @ST_y_current
 
 -         loop do
 
 -           if i == FSL::ST::St_Base_x
 
 -             i = 0
 
 -             j += 1
 
 -           end
 
 -           j = 0 if j == FSL::ST::St_Base_y
 
 -           if @ST_array[i][j] == 1
 
 -             @ST_x_current = i
 
 -             @ST_y_current = j
 
 -             break
 
 -           end
 
 -           i += 1
 
 -         end
 
 -         update_cursor
 
 -         return
 
 -       end
 
 -       
 
 -       if Input.trigger?(Input::X)
 
 -         if @st_data == 0
 
 -           Sound.play_buzzer
 
 -         else
 
 -         for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -           xx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
 
 -           yy = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
 
 -           t = true
 
 -           #技能总深度是否达到
 
 -           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
 
 -             t = false
 
 -           end#技能总深度是否达到
 
 -           
 
 -           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
 
 -           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
 
 -             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
 
 -               t = false
 
 -             end
 
 -           end
 
 -           end
 
 -         
 
 -           if @ST_x_current == xx && @ST_y_current == yy
 
 -             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
 
 -               Sound.play_buzzer
 
 -             else
 
 -               if t == true
 
 -                 if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] > 0
 
 -                   $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])
 
 -                 end
 
 -                 $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]])
 
 -                 FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4] += 1
 
 -                 @st_data -= 1
 
 -                 
 
 -                 Sound.play_cursor
 
 -               else
 
 -                 Sound.play_buzzer
 
 -               end
 
 -             end
 
 -           end
 
 -         end
 
 -         
 
 -         self.contents.clear
 
 -         for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -           bx = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
 
 -           by = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
 
 -           x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0] * @ST_width + 12
 
 -           y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * @ST_height + 12
 
 -           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
 
 -             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]
 
 -           else
 
 -             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]]
 
 -           end
 
 -           n = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][4]
 
 -           l = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][2].size
 
 -         
 
 -           t = true
 
 -           #技能总深度是否达到
 
 -           if statistics < FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1] * FSL::ST::St_lv
 
 -             t = false
 
 -           end#技能总深度是否达到
 
 -           
 
 -           #技能前置是否满修
 
 -           for h in 0...FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3].size
 
 -           if FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h] > 0
 
 -             ax = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][0]
 
 -             ay = FSL::ST::St_skill[FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][3][h]][1]
 
 -             x2 = ax * @ST_width + 12
 
 -             y2 = ay * @ST_height + 12
 
 -             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
 
 -               t = false
 
 -             end
 
  
-             bitmap = Cache.load_bitmap("Graphics/System/", "xy")
 
 -             if ay == by
 
 -               if ax > bx
 
 -                 rect = Rect.new(48, 48, 48, 48)
 
 -                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(48, 0, 48, 48)
 
 -                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(192, 48, 48, 48)
 
 -                 for r in (bx + 1)...ax
 
 -                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 end
 
 -               elsif bx > ax
 
 -                 rect = Rect.new(96, 48, 48, 48)
 
 -                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(96, 0, 48, 48)
 
 -                 self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(192, 48, 48, 48)
 
 -                 for r in (ax + 1)...bx
 
 -                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 end
 
 -               end
 
 -             elsif by > ay
 
 -               if ax > bx
 
 -                 rect = Rect.new(48, 48, 48, 48)
 
 -                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(144, 48, 48, 48)
 
 -                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(192, 48, 48, 48)
 
 -                 for r in (bx + 1)...ax
 
 -                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 end
 
 -               elsif bx > ax
 
 -                 rect = Rect.new(96, 48, 48, 48)
 
 -                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(144, 0, 48, 48)
 
 -                 self.contents.blt(x - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 rect = Rect.new(192, 48, 48, 48)
 
 -                 for r in (ax + 1)...bx
 
 -                   self.contents.blt(r * @ST_width, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -                 end
 
 -               else
 
 -                 rect = Rect.new(0, 48, 48, 48)
 
 -                 self.contents.blt(x2 - 12, y2 - 12, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -               rect = Rect.new(0, 0, 48, 48)
 
 -               self.contents.blt(x - 12, y - 12, bitmap, rect, t ? 255 : 128)
 
 -               rect = Rect.new(192, 0, 48, 48)
 
 -               for r in (ay + 1)...by
 
 -                 self.contents.blt(x - 12, r * @ST_height, bitmap, rect, t ? 255 : 128)
 
 -               end
 
 -             end
 
 -           
 
 -           end
 
 -           end#技能前置是否满修
 
 -         
 
 -           draw_icon($data_skills[m].icon_index, x, y, t)
 
 -           self.contents.font.color = normal_color
 
 -           self.contents.draw_text(x - 8, y + 16, 48, WLH, n, 0)
 
 -           self.contents.font.color = system_color
 
 -           self.contents.draw_text(x - 12, y + 16, 44, WLH, l, 2)
 
 -           self.contents.font.color = normal_color
 
 -         
 
 -         end
 
 -       end#@st_data
 
 -       end#(Input::X)
 
 -   
 
 -     end #窗口活动则判断输入
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新光标
 
 -   #--------------------------------------------------------------------------
 
 -   def update_cursor
 
 -     if @ST_x_current < 0 || @ST_y_current < 0       # 当光标位置小于0
 
 -       self.cursor_rect.empty                        # 隐藏光标
 
 -     else
 
 -       x = @ST_x_current * @ST_width
 
 -       y = @ST_y_current * @ST_height
 
 -       rect = Rect.new(x, y, 48 , 48)
 
 -       self.cursor_rect = rect                       # 更新光标矩形
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 设置天赋
 
 -   #     index : 天赋
 
 -   #--------------------------------------------------------------------------
 
 -   def index=(index)
 
 -     if @ST_index != index
 
 -       @ST_index = index
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 获取技能
 
 -   #--------------------------------------------------------------------------
 
 -   def STK
 
 -     for i in 2...FSL::ST::St_detailed[@ST_index].size
 
 -       x = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][0]
 
 -       y = FSL::ST::St_skill[FSL::ST::St_detailed[@ST_index][i]][1]
 
 -       if @ST_x_current == x && @ST_y_current == y
 
 -         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
 
 -           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]
 
 -         else
 
 -           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]]
 
 -         end
 
 -       end
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 读取角色具体天赋数值
 
 -   #--------------------------------------------------------------------------
 
 -   def ST_actor_data(ac)
 
 -     @st_actor_data = ac
 
 -     @st_data = $game_actors[@st_actor_data].level * FSL::ST::St_up
 
 -     for j in 0..2
 
 -       m = 2
 
 -       if $St_actor[@st_actor_data][j] != nil
 
 -         s = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
 
 -         for i in $St_actor[@st_actor_data][j]
 
 -           @st_data -= i
 
 -           FSL::ST::St_skill[FSL::ST::St_detailed[s][m]][4] = i
 
 -           m += 1
 
 -         end
 
 -       end
 
 -     end
 
 -     refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 存储角色具体天赋数值
 
 -   #--------------------------------------------------------------------------
 
 -   def ST_actor_data2
 
 -     for j in 0..2
 
 -       $St_actor[@st_actor_data][j].clear
 
 -       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
 
 -       for i in 2...FSL::ST::St_detailed[p].size
 
 -         $St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
 
 -         FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4] = 0
 
 -       end
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 更新角色具体天赋数值
 
 -   #--------------------------------------------------------------------------
 
 -   def ST_actor_data3
 
 -     for j in 0..2
 
 -       $St_actor[@st_actor_data][j].clear
 
 -       p = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]
 
 -       for i in 2...FSL::ST::St_detailed[p].size
 
 -         $St_actor[@st_actor_data][j].push(FSL::ST::St_skill[FSL::ST::St_detailed[p][i]][4])
 
 -       end
 
 -     end
 
 -   end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_actor_Tree
 
 - #------------------------------------------------------------------------------
 
 - #  天赋
 
 - #==============================================================================
 
  
- class Window_actor_Tree < Window_Base
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对像
 
 -   #     actor : 角色
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(actor)
 
 -     super(0, 0, 272, 88)
 
 -     @actor = actor
 
 -     refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 刷新
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh
 
 -     self.contents.clear
 
 -     draw_actor_name(@actor, 0, 0)
 
 -     draw_actor_class(@actor, 0, 32)
 
 -     draw_STface(@actor.face_name, @actor.face_index, 128, 0)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 设置角色
 
 -   #     actor : 角色
 
 -   #--------------------------------------------------------------------------
 
 -   def actor=(actor)
 
 -     if @actor != actor
 
 -       @actor = actor
 
 -       refresh
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 绘制头像部分图
 
 -   #     face_name  : 头像文件名
 
 -   #     face_index : 头像号码
 
 -   #     x     : 描画目标 X 坐标
 
 -   #     y     : 描画目标 Y 坐标
 
 -   #     size       : 显示大小
 
 -   #--------------------------------------------------------------------------
 
 -   def draw_STface(face_name, face_index, x, y, size = 96)
 
 -     bitmap = Cache.face(face_name)
 
 -     rect = Rect.new(0, 0, 0, 0)
 
 -     rect.x = face_index % 4 * 96 + (96 - size) / 2
 
 -     rect.y = face_index / 4 * 96 + (96 - size) / 2 + 16
 
 -     rect.width = size
 
 -     rect.height = 64
 
 -     self.contents.blt(x, y, bitmap, rect)
 
 -     bitmap.dispose
 
 -   end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_skill_status
 
 - #------------------------------------------------------------------------------
 
 - #  技能
 
 - #==============================================================================
 
 - class Window_skill_status < Window_Base
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对像
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(skill = -1)
 
 -     super(0, 328, 544, 88)
 
 -     [url=home.php?mod=space&uid=260100]@skill[/url] = skill
 
 -     refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 刷新
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh
 
 -     if @skill != -1
 
 -       self.contents.clear
 
 -       self.contents.draw_text(24, 0, 544, WLH, $data_skills[@skill].name)
 
 -       draw_icon($data_skills[@skill].icon_index, 0, 0)
 
 -       self.contents.draw_text(0, 32, 544, WLH, $data_skills[@skill].description)
 
 -     end
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 设置技能
 
 -   #--------------------------------------------------------------------------
 
 -   def skill=(skill)
 
 -     if @skill != skill
 
 -       @skill = skill
 
 -       refresh
 
 -     end
 
 -   end
 
 - end
 
 - #==============================================================================
 
 - # ■ Window_skill_data
 
 - #------------------------------------------------------------------------------
 
 - #  数值
 
 - #==============================================================================
 
 - class Window_skill_data < Window_Base
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对像
 
 -   #     actor : 角色id
 
 -   #--------------------------------------------------------------------------
 
 -   def initialize(actor)
 
 -     super(0, 144, 272, 184)
 
 -     @actor = actor
 
 -     refresh
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 刷新
 
 -   #--------------------------------------------------------------------------
 
 -   def refresh
 
 -     self.contents.clear
 
 -     @st_data = $game_actors[@actor].level * FSL::ST::St_up
 
 -     for i in 0..2
 
 -       p = 0
 
 -       if $St_actor[@actor][i] != nil
 
 -         for j in $St_actor[@actor][i]
 
 -           p += j
 
 -         end
 
 -       end
 
 -       self.contents.draw_text(i * (272/3), 0, 272, WLH, p)
 
 -       @st_data -= p
 
 -     end
 
 -     self.contents.draw_text(0, WLH, 272, WLH, @st_data)
 
 -   end
 
 - end
 
 - #==============================================================================
 
 - # ■ Scene_File
 
 - #------------------------------------------------------------------------------
 
 - #  存档画面及读档画面的类。
 
 - #==============================================================================
 
  
- class Scene_File < Scene_Base
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 写入存档数据
 
 -   #     file : 写入存档对象(已开启)
 
 -   #--------------------------------------------------------------------------
 
 -   def write_save_data(file)
 
 -     characters = []
 
 -     for actor in $game_party.members
 
 -       characters.push([actor.character_name, actor.character_index])
 
 -     end
 
 -     $game_system.save_count += 1
 
 -     $game_system.version_id = $data_system.version_id
 
 -     @last_bgm = RPG::BGM::last
 
 -     @last_bgs = RPG::BGS::last
 
 -     Marshal.dump(characters,           file)
 
 -     Marshal.dump(Graphics.frame_count, file)
 
 -     Marshal.dump(@last_bgm,            file)
 
 -     Marshal.dump(@last_bgs,            file)
 
 -     Marshal.dump($game_system,         file)
 
 -     Marshal.dump($game_message,        file)
 
 -     Marshal.dump($game_switches,       file)
 
 -     Marshal.dump($game_variables,      file)
 
 -     Marshal.dump($game_self_switches,  file)
 
 -     Marshal.dump($game_actors,         file)
 
 -     Marshal.dump($game_party,          file)
 
 -     Marshal.dump($game_troop,          file)
 
 -     Marshal.dump($game_map,            file)
 
 -     Marshal.dump($game_player,         file)
 
 -     Marshal.dump($St_actor,            file)
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 读出存档数据
 
 -   #     file : 读出存档对象(已开启)
 
 -   #--------------------------------------------------------------------------
 
 -   def read_save_data(file)
 
 -     characters           = Marshal.load(file)
 
 -     Graphics.frame_count = Marshal.load(file)
 
 -     @last_bgm            = Marshal.load(file)
 
 -     @last_bgs            = Marshal.load(file)
 
 -     $game_system         = Marshal.load(file)
 
 -     $game_message        = Marshal.load(file)
 
 -     $game_switches       = Marshal.load(file)
 
 -     $game_variables      = Marshal.load(file)
 
 -     $game_self_switches  = Marshal.load(file)
 
 -     $game_actors         = Marshal.load(file)
 
 -     $game_party          = Marshal.load(file)
 
 -     $game_troop          = Marshal.load(file)
 
 -     $game_map            = Marshal.load(file)
 
 -     $game_player         = Marshal.load(file)
 
 -     $St_actor            = Marshal.load(file)
 
 -     if $game_system.version_id != $data_system.version_id
 
 -       $game_map.setup($game_map.map_id)
 
 -       $game_player.center($game_player.x, $game_player.y)
 
 -     end
 
 -   end
 
 - end
 
  复制代码 转自这个论坛里面的某个人说到的技能天赋树   |   
 
 
 
 |