| 赞 | 0  | 
 
| VIP | 0 | 
 
| 好人卡 | 2 | 
 
| 积分 | 1 | 
 
| 经验 | 29515 | 
 
| 最后登录 | 2019-2-24 | 
 
| 在线时间 | 461 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 55 
 
        - 在线时间
 - 461 小时
 
        - 注册时间
 - 2014-7-23
 
        - 帖子
 - 232
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 qq546431664 于 2014-10-23 11:36 编辑  
 
这是一个VX的天赋脚本帮忙看下能否改能VA的。。。 
或是求一个VA的天赋脚本 
用了VX的调用指令没反映或许是我不懂  懂的人看看呗 
 
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/    ◆ 简易天赋树脚本 - FSL_SHOP ◆ VX ◆ #_/ #_/    ◇ 许可协议 :FSL       ◇ #_/    ◇ 项目分类 : 角色辅助  ◇ #_/    ◇ 项目版本 : 1.7.912   ◇ #_/    ◇ 建立日期 : 2010/9/05 ◇ #_/    ◇ 最后更新 : 2010/9/12 ◇ #_/---------------------------------------------------------------------------- #_/  作者:wangswz #_/============================================================================ #_/ 【基本机能】复杂化游戏系统。 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #=============================================================================== #------------------------------------------------------------------------------- # ▼ 通用配置模块 #------------------------------------------------------------------------------- module FSL   module ST     #职业对应天赋树初始化     St_class_id = []     #详细设置     #    每个职业只能设置3个不同的天赋树     St_class_id[1] = [1,2,3]     St_class_id[2] = [4,5,6]       #角色存放值     #    为每个能够加入队伍的角色建立存储区     St_actor = []     St_actor[1] = [[],[],[]]     St_actor[2] = [[],[],[]]     St_actor[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]       St_skill = []     #天赋技能设置   进阶定义                            默认0     #st_skill[1] = [列,深度,技能id          ,前置技能st,点数存储]       #神圣     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 #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $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)     @actor = 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           @actor += 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 FSL::ST::St_actor[@st_actor_data][j] != nil         s = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]         for i in FSL::ST::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       FSL::ST::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         FSL::ST::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       FSL::ST::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         FSL::ST::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 FSL::ST::St_actor[@actor][i] != nil         for j in FSL::ST::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 
 
 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/  
#_/    ◆ 简易天赋树脚本 - FSL_SHOP ◆ VX ◆  
#_/  
#_/    ◇ 许可协议 :FSL       ◇  
#_/    ◇ 项目分类 : 角色辅助  ◇  
#_/    ◇ 项目版本 : 1.7.912   ◇  
#_/    ◇ 建立日期 : 2010/9/05 ◇  
#_/    ◇ 最后更新 : 2010/9/12 ◇  
#_/----------------------------------------------------------------------------  
#_/  作者:wangswz  
#_/============================================================================  
#_/ 【基本机能】复杂化游戏系统。  
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/  
#===============================================================================  
#-------------------------------------------------------------------------------  
# ▼ 通用配置模块  
#-------------------------------------------------------------------------------  
module FSL  
  module ST  
    #职业对应天赋树初始化  
    St_class_id = []  
    #详细设置  
    #    每个职业只能设置3个不同的天赋树  
    St_class_id[1] = [1,2,3]  
    St_class_id[2] = [4,5,6]  
   
    #角色存放值  
    #    为每个能够加入队伍的角色建立存储区  
    St_actor = []  
    St_actor[1] = [[],[],[]]  
    St_actor[2] = [[],[],[]]  
    St_actor[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]  
   
    St_skill = []  
    #天赋技能设置   进阶定义                            默认0  
    #st_skill[1] = [列,深度,技能id          ,前置技能st,点数存储]  
   
    #神圣  
    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  
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★  
$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)  
    @actor = 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  
          @actor += 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 FSL::ST::St_actor[@st_actor_data][j] != nil  
        s = FSL::ST::St_class_id[$game_actors[@st_actor_data].class_id][j]  
        for i in FSL::ST::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  
      FSL::ST::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  
        FSL::ST::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  
      FSL::ST::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  
        FSL::ST::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 FSL::ST::St_actor[@actor][i] != nil  
        for j in FSL::ST::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  
 
    |   
 
 
 
 |