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

Project1

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

[已经过期] 如何制作技能树、技能加点、 设置技能等级以及被动技能?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
62
在线时间
29 小时
注册时间
2011-12-9
帖子
60
跳转到指定楼层
1
发表于 2012-6-2 17:16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试发现到后期技能攻击很低,不如多打几个普通攻击。想做个像dnf那样的升级获得技能点,自由加点(技能,不是角色的状态)的系统。至于角色状态就用被动了

Lv1.梦旅人

梦石
0
星屑
49
在线时间
107 小时
注册时间
2012-5-1
帖子
45
2
发表于 2012-6-2 17:20:49 | 只看该作者

点评

第一个可是VA的  发表于 2012-6-2 19:41

评分

参与人数 1星屑 +20 收起 理由
hcm + 20 感谢回答

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
412 小时
注册时间
2012-6-1
帖子
1021
3
发表于 2012-6-2 19:40:46 | 只看该作者
楼主还是打消这个念头吧
这些脚本一加上,不冲突才奇怪了!
这里是新人 明特·布兰马修
脚本盲 事件盲 美工盲
还是色盲ORZ
XP\VX略懂VA无助很抱歉
所以问题什么如果答不好就不要提醒我了
短篇7已经放弃,但是坑在继续补上。所以回答和现身次数少之。
有事烧纸或者留言即可。

还有我不是正太啊ORZ
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3190
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

4
发表于 2012-6-2 20:32:41 | 只看该作者
本帖最后由 hys111111 于 2012-6-3 15:04 编辑
  1. class Window_Help_Self < Window_Base
  2.   # 694行 第二页
  3.   # 1200行 第三页
  4.   # 1500 管LV的
  5.   # 1609 技能主部分
  6.   # 1715 技能升级窗口
  7.   # 1853 技能升级
  8.   # 1994 剩余点数显示
  9.   # 2025 技能种类
  10.   # 2137 被动技能
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化对像
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.     super(0,200,210, 430)
  16.     self.opacity = 150
  17.     self.z=150
  18.     self.visible = false
  19.     @item=nil
  20.     @armor=nil
  21.     @weapon=nil
  22. #--------------------------------------------基本定義
  23.     @i_unshow = [17, 18]
  24.     @w_unshow = [17, 18]
  25.     @a_unshow = [17, 18]
  26.     @s_unshow = [17, 18]
  27.     #
  28.     @i_unshow_state = []
  29.     @w_unshow_state = []
  30.     @a_unshow_state = []
  31.     @s_unshow_state = []
  32.     for i in 17..36
  33.       @i_unshow_state.push(i)
  34.       @w_unshow_state.push(i)
  35.       @a_unshow_state.push(i)
  36.       @s_unshow_state.push(i)
  37.     end
  38.       
  39.     #
  40.     @n_s =18 #名字大小
  41.     @d_s =14 #描述文字大小
  42.     @w_s =12 #每行字數
  43.     @base_scope = {0=>"",1=>"",2=>"",3=>"",4=>"",5=>"",6=>"",7=>""}
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 设置文本
  47.   #     text  : 窗口显示的字符串
  48.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  49.   #--------------------------------------------------------------------------
  50.   def set_text(data, align=nil,lv = 0)
  51.     # 如果文本和对齐方式的至少一方与上次的不同
  52.         # 再描绘文本
  53.     if align != nil
  54.         self.width = 240
  55.         self.height = 64
  56.         self.x=240
  57.         self.y=140
  58.         self.contents.clear
  59.         self.contents.font.color = normal_color
  60.         self.contents.font.size = 20
  61.         self.contents.draw_text(4, 0, self.width - 48, 32, data, align)
  62.       self.visible = true
  63.       return
  64.     end
  65.     if data == nil
  66.       self.visible=false
  67.     else
  68.       self.visible=true
  69.     end
  70.     if data != nil && @data != data
  71.     @data=data
  72.       case @data
  73.       when RPG::Item
  74.         set_item_text(@data)
  75.       when RPG::Weapon
  76.         set_weapon_text(@data)
  77.       when RPG::Armor
  78.         set_armor_text(@data)
  79.       when RPG::Skill
  80.         set_skill_text(@data,lv)
  81.       end
  82.     else
  83.       return
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 手動更新帮助窗口
  88.   #--------------------------------------------------------------------------
  89.   def non_auto_update
  90.     data = @data
  91.     case @data
  92.     when RPG::Item
  93.       set_item_text(@data)
  94.     when RPG::Weapon
  95.       set_weapon_text(@data)
  96.     when RPG::Armor
  97.       set_armor_text(@data)
  98.     when RPG::Skill
  99.       set_skill_text(@data,lv)
  100.     end
  101.   end
  102.    
  103.   #--------------------------------------------------------------------------
  104.   # ● 武器帮助窗口
  105.   #--------------------------------------------------------------------------
  106.   
  107.   def set_weapon_text(weapon)
  108.     # 基本文字設定
  109.     text_1 = "攻击:"
  110.     text_2 = "价格:"
  111.     text_3 = "物理防御:"
  112.     text_4 = "魔法防御:"
  113.     text_5 = "属性:"
  114.     text_6 = "解除状态:"
  115.     text_7 = "附加状态:"
  116.     text_8 = ""
  117.     text_9 = "攻击力"
  118.     @weapon=weapon
  119.     # 取得描述
  120.     description = @weapon.description.clone
  121.     # 取得屬性、附加狀態、解除狀態之副本
  122.     element_set = @weapon.element_set.clone
  123.     plus_state_set = @weapon.plus_state_set.clone
  124.     minus_state_set = @weapon.minus_state_set.clone
  125.     # 過濾不顯示的描述
  126.     element_set -= @w_unshow
  127.     plus_state_set -= @w_unshow_state
  128.     minus_state_set -= @w_unshow_state
  129.     # 基本數據
  130.     x = 0
  131.     y = 0
  132.     h = 0   
  133.     h +=4  #空行,效果范围,价格
  134.     #依要显示的内容确定高
  135.     dh = (description.size/3/@w_s)
  136.     if (description.size/3%@w_s)> 0
  137.       dh +=1
  138.     end
  139.     if @weapon.pdef!= 0 #物理防御
  140.       h += 1
  141.     end      
  142.     if @weapon.mdef!= 0 #魔法防御
  143.       h += 1
  144.     end
  145.     if @weapon.str_plus!= 0 #力量
  146.       h += 1
  147.     end
  148.     if @weapon.dex_plus!= 0 #体质
  149.       h += 1
  150.     end
  151.     if @weapon.agi_plus!= 0 #敏捷
  152.       h += 1
  153.     end
  154.     if @weapon.int_plus!= 0 #智力
  155.       h += 1
  156.     end
  157.    
  158.     #属性。为属性 ID 的数组
  159.     if element_set[0]!= nil
  160.       h += 1
  161.     end
  162.     if element_set[4]!= nil
  163.       h += 1
  164.     end
  165.    
  166.     # 附加狀態
  167.     if plus_state_set[0]!=nil
  168.       h += (1 + plus_state_set.size)
  169.     end
  170.     # 解除狀態
  171.     if minus_state_set[0]!=nil
  172.       h += (1 + minus_state_set.szie)
  173.     end
  174.     #魔力石
  175.     if @weapon.stone_record[0]!=nil
  176.       h += ([email protected]_record.size)
  177.     end
  178.    
  179.    
  180.     # 圖片保證高度
  181.     if h < 7
  182.       h = 7
  183.     end
  184.    
  185.     # 換算高度
  186.     self.height=(h+dh) * @d_s + @n_s + 34
  187.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  188.     self.contents.clear
  189.    
  190.    
  191.     #描绘名字
  192.     [email protected]
  193.     self.contents.font.color = text_color(weapon.color)#颜色脚本
  194.     self.contents.font.size=@n_s
  195.     if text!=nil
  196.       self.visible = true
  197.       self.contents.draw_text(0,0, @weapon.name.size*7, 20, text, 0)
  198.     else
  199.       self.visible = false
  200.     end
  201.    
  202.    
  203.     #描绘描叙
  204.     x =0
  205.     y+=1
  206.     text=description
  207.     while ((text = description.slice!(/./m)) != nil)
  208.       self.contents.font.color = normal_color
  209.       self.contents.font.size=@d_s
  210.       self.contents.draw_text(x*@d_s, y*@d_s+5, 14, 14, text, 0)
  211.       x+=1
  212.       if x==@w_s#每行10个字
  213.         x =0
  214.         y+=1      
  215.       end
  216.     end
  217.    
  218.     #描绘圖標
  219.     bitmap = RPG::Cache.icon(weapon.icon_name)
  220.     opacity = self.contents.font.color == normal_color ? 255 : 128
  221.     self.contents.blt(0 ,y*@d_s+20, bitmap, Rect.new(0, 0, 95, 100), 225)
  222.    
  223.     #描繪攻击
  224.       x=0
  225.       y+=1 #空行     
  226.       [email protected]_s
  227.       self.contents.font.color = normal_color
  228.       self.contents.font.size=@d_s  
  229.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)      
  230.     #价格
  231.       x=0
  232.       y+=1
  233.       [email protected]_s
  234.       self.contents.font.color = normal_color
  235.       self.contents.font.size=@d_s   
  236.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  237.     if @weapon.pdef!=0 #物理防御
  238.       x=0
  239.       y+=1
  240.       [email protected]_s
  241.       self.contents.font.color = normal_color
  242.       self.contents.font.size=@d_s   
  243.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  244.     end      
  245.     if @weapon.mdef!=0 #魔法防御
  246.       x=0
  247.       y+=1      
  248.       [email protected]_s
  249.       self.contents.font.color = normal_color
  250.       self.contents.font.size=@d_s   
  251.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  252.     end
  253.     #武器属性
  254.     if element_set.size > 0
  255.       text=text_5
  256.       for i in 0...element_set.size
  257.         if i < 4
  258.           text+=$data_system.elements[element_set[i]]
  259.         else
  260.           break
  261.         end        
  262.       end
  263.       x=0
  264.       y+=1
  265.       self.contents.font.color = normal_color
  266.       self.contents.font.size=@d_s
  267.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  268.     end
  269.     if element_set.size >= 5
  270.       text=""
  271.       for i in 4...element_set.size
  272.         text+=$data_system.elements[element_set[i]]
  273.       end
  274.       x=(text_5.size)*5-4
  275.       y+=1
  276.       self.contents.font.color = normal_color
  277.       self.contents.font.size=@d_s
  278.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  279.     end
  280.    
  281.     #解除状态
  282.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  283.       text=text_6
  284.       x=0
  285.       y+=1
  286.       self.contents.font.color = normal_color
  287.       self.contents.font.size=@d_s
  288.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  289.       for i in 0...minus_state_set.size
  290.         y+=1
  291.         text=$data_states[minus_state_set[i]].name        
  292.         self.contents.font.color = normal_color
  293.         self.contents.font.size=@d_s
  294.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  295.       end  
  296.     end
  297.     #附加状态
  298.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  299.       text=text_7
  300.       x=0
  301.       y+=1
  302.       self.contents.font.color = normal_color
  303.       self.contents.font.size=@d_s
  304.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  305.       for i in 0...plus_state_set.size
  306.         y+=1
  307.         text=$data_states[plus_state_set[i]].name        
  308.         self.contents.font.color = normal_color
  309.         self.contents.font.size=@d_s
  310.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  311.       end  
  312.     end
  313.    
  314.     y+=1 #空行
  315.    
  316.     if @weapon.str_plus!=0#力量
  317.       x=0
  318.       y+=1      
  319.       anti_str_plus = -(@weapon.str_plus)
  320.       if @weapon.str_plus>0#力量
  321.          text=$data_system.words.str+" +"[email protected]_plus.to_s
  322.       end
  323.       if @weapon.str_plus<0#力量
  324.          text=$data_system.words.str+" -"+anti_str_plus.to_s
  325.       end
  326.       self.contents.font.color = normal_color
  327.       self.contents.font.size=@d_s   
  328.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  329.     end
  330.     if @weapon.dex_plus!=0#体质
  331.       x=0
  332.       y+=1      
  333.       anti_dex_plus = -(@weapon.dex_plus)
  334.       if @weapon.dex_plus>0#体质
  335.          text=$data_system.words.dex+" +"[email protected]_plus.to_s
  336.       end
  337.       if @weapon.dex_plus<0#体质
  338.          text=$data_system.words.dex+" -"+anti_dex_plus.to_s
  339.       end
  340.       self.contents.font.color = normal_color
  341.       self.contents.font.size=@d_s   
  342.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  343.     end
  344.     if @weapon.agi_plus!=0#敏捷
  345.       x=0
  346.       y+=1      
  347.       anti_agi_plus = -(@weapon.agi_plus)
  348.       if @weapon.agi_plus>0#敏捷
  349.          text=$data_system.words.agi+" +"[email protected]_plus.to_s
  350.       end
  351.       if @weapon.agi_plus<0#敏捷
  352.          text=$data_system.words.agi+" -"+anti_agi_plus.to_s
  353.       end
  354.       self.contents.font.color = normal_color
  355.       self.contents.font.size=@d_s   
  356.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  357.     end
  358.     if @weapon.int_plus!=0#智力
  359.       x=0
  360.       y+=1      
  361.       anti_int_plus = -(@weapon.int_plus)
  362.       if @weapon.int_plus>0#智力
  363.          text=$data_system.words.int+" +"[email protected]_plus.to_s
  364.       end
  365.       if @weapon.int_plus<0#智力
  366.          text=$data_system.words.int+" -"+anti_int_plus.to_s
  367.       end
  368.       self.contents.font.color = normal_color
  369.       self.contents.font.size=@d_s   
  370.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  371.     end
  372.     y+=1
  373.     #魔力石
  374.     if @weapon.stone_record[0]!=nil
  375.       for i in [email protected]_record.size
  376.         x=0
  377.         y+=1      
  378.         text = $data_items[@weapon.stone_record[i]].name
  379.         self.contents.font.color = normal_color
  380.         self.contents.font.size=@d_s   
  381.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  382.       end
  383.     end
  384.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  385.     if @weapon.zivi != 0#---------资质
  386.       x=0
  387.       y+=1
  388.       text=text_9+" + "[email protected]_s+"%"
  389.       self.contents.font.color = Color.new(128, 255, 255, 255)#蓝色
  390.       self.contents.font.size=@d_s   
  391.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  392.     end
  393.     if @weapon.xdgr != nil
  394.       if @weapon.xdgr[0] != 0 #-----------相关
  395.         x = 0
  396.         y+=1
  397.         case @weapon.xdgr[0]
  398.            when 1 #攻击
  399.              text_swtf = "攻击"
  400.            when 2 #命中
  401.              text_swtf = "命中"
  402.            when 3 #会心
  403.              text_swtf = "暴击"
  404.           end   
  405.         text=text_swtf+" + "[email protected][1].to_s
  406.         self.contents.font.color = Color.new(124, 252, 0, 255)#绿色
  407.         self.contents.font.size=@d_s   
  408.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  409.       end
  410.     end
  411.     if @weapon.bkui != nil
  412.       if @weapon.bkui[0]!=0
  413.         x = 0
  414.         y +=1
  415.         if @weapon.bkui[0]!=1
  416.         case @weapon.bkui[0]
  417.         when 2
  418.           text_swtf = "攻击"
  419.         when 3
  420.           text_swtf = "魔力"
  421.         when 4
  422.           text_swtf = "最大MP"
  423.         when 5
  424.           text_swtf = "命中"
  425.         end
  426.          text=text_swtf+" + "[email protected][1].to_s
  427.       else
  428.          text="拥有一个凹槽"
  429.       end
  430.       self.contents.font.color = Color.new(255, 255, 0, 255)#黄色
  431.       self.contents.font.size=@d_s   
  432.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  433.     end
  434.   end
  435.   
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 防具帮助窗口
  439.   #--------------------------------------------------------------------------
  440.   
  441.   def set_armor_text(armor)
  442.     # 基本文字設定
  443.     text_2 = "价格:"
  444.     text_3 = "物理防御:"
  445.     text_4 = "魔法防御:"
  446.     text_5 = "属性:"
  447.     text_6 = "防禦状态:"
  448.     text_7 = "自動状态:"
  449.     text_8 = ""
  450.     @armor=armor
  451.     # 取得描述
  452.     description = @armor.description.clone
  453.     # 取得屬性副本
  454.     element_set = @armor.guard_element_set.clone
  455.     guard_state_set = @armor.guard_state_set.clone
  456.     auto_state_id = @armor.auto_state_id
  457.     # 過濾不顯示的描述
  458.     element_set -= @a_unshow
  459.     guard_state_set -= @a_unshow_state
  460.     # 基本數據
  461.     x = 0
  462.     y = 0
  463.     h = 0   
  464.     h +=4  #空行,效果范围,价格
  465.     #依要显示的内容确定高
  466.     dh = (description.size/3/@w_s)
  467.     if (description.size/3%@w_s)> 0
  468.       dh +=1
  469.     end
  470.     if @armor.pdef!= 0 #物理防御
  471.       h += 1
  472.     end      
  473.     if @armor.mdef!= 0 #魔法防御
  474.       h += 1
  475.     end
  476.     if @armor.str_plus!= 0 #力量
  477.       h += 1
  478.     end
  479.     if @armor.dex_plus!= 0#体质
  480.       h += 1
  481.     end
  482.     if @armor.agi_plus!= 0#敏捷
  483.       h += 1
  484.     end
  485.     if @armor.int_plus!= 0 #智力
  486.       h += 1
  487.     end
  488.    
  489.     if element_set[0]!= nil
  490.       #属性。为属性 ID 的数组
  491.       h += 1
  492.     end
  493.     if element_set[4]!= nil
  494.       h += 1
  495.     end
  496.    
  497.     #附加状态。为状态 ID 的数组
  498.     if guard_state_set[0]!=nil  
  499.       h += (guard_state_set.size + 1)  
  500.     end
  501.     #自動狀態
  502.     if auto_state_id!=0
  503.       h += 1
  504.     end
  505.     #魔力石
  506.     if @armor.stone_record[0]!=nil
  507.       h += @armor.stone_record.size
  508.     end
  509.    
  510.    
  511.     # 圖片保證高度
  512.     if h < 7
  513.       h = 7
  514.     end
  515.    
  516.     # 換算高度
  517.     self.height=(dh+h) * @d_s + @n_s + 34
  518.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  519.     self.contents.clear
  520.    
  521.    
  522.     #描绘名字
  523.     [email protected]
  524.     self.contents.font.color = text_color(armor.color)#颜色脚本
  525.     self.contents.font.size=@n_s
  526.     if text!=nil
  527.       self.visible = true
  528.       self.contents.draw_text(0,0, @armor.name.size*7, 20, text, 0)
  529.     else
  530.       self.visible = false
  531.     end
  532.     x=0
  533.     y+=1
  534.     text=description
  535.     #描绘描叙
  536.     while ((text = description.slice!(/./m)) != nil)
  537.       self.contents.font.color = normal_color
  538.       self.contents.font.size=@d_s
  539.       self.contents.draw_text(x*@d_s, y*@d_s+5, 14, 14, text, 0)
  540.       x+=1
  541.       if x==@w_s#每行10个字
  542.         x=0
  543.         y+=1      
  544.       end
  545.     end
  546.     #描绘圖標
  547.     bitmap = RPG::Cache.icon(armor.icon_name)
  548.     opacity = self.contents.font.color == normal_color ? 255 : 128
  549.     self.contents.blt(0 ,y*@d_s+20, bitmap, Rect.new(0, 0, 95, 100), 225)
  550.    
  551.     #由特技属性确定高
  552.     #价格
  553.       x=0
  554.       y+=1      
  555.       [email protected]_s
  556.       self.contents.font.color = normal_color
  557.       self.contents.font.size=@d_s   
  558.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  559.     if @armor.pdef!=0 #物理防御
  560.       x=0
  561.       y+=1      
  562.       [email protected]_s
  563.       self.contents.font.color = normal_color
  564.       self.contents.font.size=@d_s   
  565.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  566.     end   
  567.     if @armor.mdef!=0 #魔法防御
  568.       x=0
  569.       y+=1      
  570.       [email protected]_s
  571.       self.contents.font.color = normal_color
  572.       self.contents.font.size=@d_s   
  573.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  574.     end
  575.    
  576.     #防具属性
  577.     if element_set.size > 0
  578.       text=text_5
  579.       for i in 0...element_set.size
  580.         if i < 4
  581.           text+=$data_system.elements[element_set[i]]
  582.         else
  583.           break
  584.         end        
  585.       end
  586.       x=0
  587.       y+=1
  588.       self.contents.font.color = normal_color
  589.       self.contents.font.size=@d_s
  590.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  591.     end
  592.     if element_set.size >= 5
  593.       text=""
  594.       for i in 4...element_set.size
  595.         text+=$data_system.elements[element_set[i]]
  596.       end
  597.       x=(text_5.size)*5-4
  598.       y+=1
  599.       self.contents.font.color = normal_color
  600.       self.contents.font.size=@d_s
  601.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  602.     end
  603.    
  604.     #防禦状态
  605.     if guard_state_set.empty?!=true  #防禦状态。为状态 ID 的数组
  606.       text=text_6
  607.       x=0
  608.       y+=1
  609.       self.contents.font.color = normal_color
  610.       self.contents.font.size=@d_s
  611.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  612.       for i in 0...guard_state_set.size
  613.         y+=1
  614.         text=$data_states[guard_state_set[i]].name        
  615.         self.contents.font.color = normal_color
  616.         self.contents.font.size=@d_s
  617.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  618.       end  
  619.     end
  620.     if auto_state_id!=0
  621.       x=0
  622.       y+=1
  623.       text=text_7
  624.       text=$data_states[auto_state_id].name        
  625.       self.contents.font.color = normal_color
  626.       self.contents.font.size=@d_s
  627.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  628.     end  
  629.       
  630.     y+=1 #空行
  631.    
  632.     if @armor.str_plus!=0#力量
  633.       x=0
  634.       y+=1      
  635.       anti_str_plus = -(@armor.str_plus)
  636.       if @armor.str_plus>0#力量
  637.          text=$data_system.words.str+" +"[email protected]_plus.to_s
  638.       end
  639.       if @armor.str_plus<0#力量
  640.          text=$data_system.words.str+" -"+anti_str_plus.to_s
  641.       end
  642.       self.contents.font.color = normal_color
  643.       self.contents.font.size=@d_s   
  644.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  645.     end
  646.     if @armor.dex_plus!=0#体质
  647.       x=0
  648.       y+=1      
  649.       anti_dex_plus = -(@armor.dex_plus)
  650.       if @armor.dex_plus>0#体质
  651.          text=$data_system.words.dex+" +"[email protected]_plus.to_s
  652.       end
  653.       if @armor.dex_plus<0#体质
  654.          text=$data_system.words.dex+" -"+anti_dex_plus.to_s
  655.       end
  656.       self.contents.font.color = normal_color
  657.       self.contents.font.size=@d_s   
  658.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  659.     end
  660.     if @armor.agi_plus!=0#敏捷
  661.       x=0
  662.       y+=1      
  663.       anti_agi_plus = -(@armor.agi_plus)
  664.       if @armor.agi_plus>0#敏捷
  665.          text=$data_system.words.agi+" +"[email protected]_plus.to_s
  666.       end
  667.       if @armor.agi_plus<0#敏捷
  668.          text=$data_system.words.agi+" -"+anti_agi_plus.to_s
  669.       end
  670.       self.contents.font.color = normal_color
  671.       self.contents.font.size=@d_s   
  672.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  673.     end
  674.     if @armor.int_plus!=0#智力
  675.       x=0
  676.       y+=1      
  677.       anti_int_plus = -(@armor.int_plus)
  678.       if @armor.int_plus>0#智力
  679.          text=$data_system.words.int+" +"[email protected]_plus.to_s
  680.       end
  681.       if @armor.int_plus<0#智力
  682.          text=$data_system.words.int+" -"+anti_int_plus.to_s
  683.       end
  684.       self.contents.font.color = normal_color
  685.       self.contents.font.size=@d_s   
  686.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  687.     end
  688.     y+=1
  689.     #魔力石
  690.     if @armor.stone_record[0]!=nil
  691.       for i in [email protected]_record.size
  692.         x=0
  693.         y+=1      
  694.         text = $data_items[@armor.stone_record[i]].name
  695.         self.contents.font.color = normal_color
  696.         self.contents.font.size=@d_s   
  697.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  698.       end
  699.     end
  700.   end
  701. end
  702. #========================================================================================================================
  703. # ■ Window_Help
  704. #------------------------------------------------------------------------------
  705. #  特技及物品的说明、角色的状态显示的窗口。
  706. #   若要更改属性,请搜索element_set={1=>"炎",2=>"冰",3=>"雷",4=>"水",5=>"土",6=>"風",7=>"暗"}改成对应属性即可
  707. #========================================================================================================================
  708. class Window_Help_Self < Window_Base
  709.   #--------------------------------------------------------------------------
  710.   # ● 物品帮助窗口
  711.   #--------------------------------------------------------------------------
  712.   def set_item_text(item)
  713.     # 基本文字設定
  714.     text_1 = ""
  715.     #
  716.     text_2 = "价格:"
  717.     text_3 = "HP 回复率:"
  718.     text_4 = "HP 回复量:"
  719.     text_5 = "MP 回复率:"
  720.     text_6 = "MP 回复量:"
  721.     text_7 = ""
  722.     text_8 = "属性:"
  723.     #
  724.     text_9 = "附加"
  725.     text_10 = "解除"
  726.     text_11 = "状态"
  727.     #
  728.     parameter_type={1=>"MaxHP",2=>"MaxSP",3=>$data_system.words.str,4=>$data_system.words.dex,5=>$data_system.words.agi,6=>$data_system.words.int}
  729.     @item=item
  730.     # 取得描述
  731.     description = @item.description.clone
  732.     # 取得屬性、附加狀態、解除狀態之副本
  733.     element_set = @item.element_set.clone
  734.     plus_state_set = @item.plus_state_set.clone
  735.     minus_state_set = @item.minus_state_set.clone
  736.     # 過濾不顯示的描述
  737.     element_set -= @i_unshow
  738.     plus_state_set -= @i_unshow_state
  739.     minus_state_set -= @i_unshow_state
  740.     # 基本數據
  741.     x = 0
  742.     y = 0
  743.     h = 0   
  744.     h +=3  #空行,效果范围,价格
  745.    
  746.     #依要显示的内容确定高
  747.     dh = (description.size/3/@w_s)
  748.     if (description.size/3%@w_s)> 0
  749.       dh +=1
  750.     end
  751.    
  752.     if @item.recover_hp_rate!=0 #HP 回复率。
  753.       h += 1
  754.     end   
  755.     if @item.recover_hp!=0 #HP 回复量。
  756.       h += 1
  757.     end
  758.     if @item.recover_sp_rate!=0 #SP 回复率。
  759.       h += 1
  760.     end
  761.     if @item.recover_sp!=0 #SP 回复量。
  762.       h += 1
  763.     end
  764.     if @item.parameter_type!=0 #增加能力值
  765.       h += 1
  766.     end
  767.    
  768.     # 属性。为属性 ID 的数组
  769.     if element_set[0]!=nil
  770.       h += 1
  771.     end  
  772.     if element_set[4]!=nil
  773.       h+=1
  774.     end
  775.    
  776.     # 附加状态。为状态 ID 的数组
  777.     if plus_state_set.empty?!=true  
  778.       h += (1+plus_state_set.size)  
  779.     end
  780.     # 解除状态。为状态 ID 的数组
  781.     if minus_state_set.empty?!=true  
  782.       h += (1+minus_state_set.size)   
  783.     end  
  784.    
  785.     #圖片保證高度
  786.     if h < 7
  787.       h = 7
  788.     end
  789.     @materia = Materia_Set.new.sxca_materia
  790.     if @materia.include?(@item.id)
  791.       h = 7
  792.     end
  793.    
  794.     # 換算高度
  795.     self.height=(h+dh) * @d_s + @n_s + 34
  796.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  797.     self.contents.clear
  798.    
  799.    
  800.     #描绘名字
  801.     [email protected]
  802.     self.contents.font.color = normal_color#颜色脚本
  803.     self.contents.font.size=@n_s
  804.     if text!=nil
  805.       self.visible = true
  806.       self.contents.draw_text(0,0, @item.name.size*7, 20, text, 0)
  807.     else
  808.       self.visible = false
  809.     end
  810.    
  811.     #描绘描叙
  812.     x=0
  813.     y+=1
  814.     text=description
  815.     while ((text = description.slice!(/./m)) != nil)
  816.       self.contents.font.color = normal_color
  817.       self.contents.font.size=@d_s
  818.       self.contents.draw_text(x*@d_s, y*@d_s+5, 14, 14, text, 0)
  819.       x+=1
  820.       if x==@w_s#每行10个字
  821.         x=0
  822.         y+=1      
  823.       end
  824.     end
  825.    
  826.     #描绘圖標
  827.     bitmap = RPG::Cache.icon(item.icon_name) if item.icon_name!=nil
  828.     opacity = self.contents.font.color == normal_color ? 255 : 128
  829.     self.contents.blt(0 ,y*@d_s+20, bitmap, Rect.new(0, 0, 95, 100), 225)
  830.    
  831.     if @materia.include?(@item.id)
  832.       return
  833.     end
  834.     #效果范围
  835.    
  836.     text= text_1 +@base_scope[@item.scope]
  837.     x=0
  838.     y+=1  #空一行
  839.     self.contents.font.color = normal_color
  840.     self.contents.font.size=@d_s
  841.     self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  842.     #价格
  843.     x=0
  844.     y+=1      
  845.     text=text_2 [email protected]_s
  846.     self.contents.font.color = normal_color
  847.     self.contents.font.size=@d_s   
  848.     self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  849.    
  850.     #HP 回复率   
  851.     if @item.recover_hp_rate!=0
  852.       x=0
  853.       y+=1      
  854.       text=text_3 [email protected]_hp_rate.to_s+"%"
  855.       self.contents.font.color = normal_color
  856.       self.contents.font.size=@d_s   
  857.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)      
  858.     end
  859.     #HP回复量
  860.     if @item.recover_hp!=0
  861.       x=0
  862.       y+=1      
  863.       text=text_4 [email protected]_hp.to_s
  864.       self.contents.font.color = normal_color
  865.       self.contents.font.size=@d_s   
  866.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  867.     end
  868.      #SP 回复率
  869.     if @item.recover_sp_rate!=0
  870.       x=0
  871.       y+=1      
  872.       text=text_5 [email protected]_sp_rate.to_s+"%"
  873.       self.contents.font.color = normal_color
  874.       self.contents.font.size=@d_s   
  875.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  876.     end
  877.     #SP 回复量
  878.     if @item.recover_sp!=0
  879.       x=0
  880.       y+=1      
  881.       text=text_6 [email protected]_sp.to_s
  882.       self.contents.font.color = normal_color
  883.       self.contents.font.size=@d_s   
  884.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  885.     end
  886.     #增加能力值
  887.     if @item.parameter_type!=0
  888.       x=0
  889.       y+=1      
  890.       text= parameter_type[@item.parameter_type]+" +"[email protected]_points.to_s
  891.       self.contents.font.color = normal_color
  892.       self.contents.font.size=@d_s   
  893.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  894.     end      
  895.     #物品属性
  896.     if element_set.size > 0
  897.       text=text_8
  898.       for i in 0...element_set.size
  899.         if i < 4
  900.           text+=$data_system.elements[element_set[i]]
  901.         else
  902.           break
  903.         end        
  904.       end
  905.       x=0
  906.       y+=1
  907.       self.contents.font.color = normal_color
  908.       self.contents.font.size=@d_s
  909.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  910.     end
  911.     if element_set.size >= 5
  912.       text=""
  913.       for i in 4...element_set.size
  914.         text+=$data_system.elements[element_set[i]]
  915.       end
  916.       x=(text_8.size)*5-4
  917.       y+=1
  918.       self.contents.font.color = normal_color
  919.       self.contents.font.size=@d_s
  920.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  921.     end
  922.    
  923.     #附加状态
  924.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  925.       text=text_10
  926.       x=0
  927.       y+=1
  928.       self.contents.font.color = normal_color
  929.       self.contents.font.size=@d_s
  930.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  931.       for i in 0...plus_state_set.size
  932.         y+=1
  933.         text=$data_states[plus_state_set[i]].name        
  934.         self.contents.font.color = normal_color
  935.         self.contents.font.size=@d_s
  936.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  937.       end  
  938.     end
  939.     #解除状态
  940.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  941.       text=text_10
  942.       x=0
  943.       y+=1
  944.       self.contents.font.color = normal_color
  945.       self.contents.font.size=@d_s
  946.       self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  947.       for i in 0...minus_state_set.size
  948.         y+=1
  949.         text=$data_states[minus_state_set[i]].name        
  950.         self.contents.font.color = normal_color
  951.         self.contents.font.size=@d_s
  952.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  953.       end  
  954.     end
  955.   end
  956.   #--------------------------------------------------------------------------
  957.   # ● 技能帮助窗口
  958.   #--------------------------------------------------------------------------
  959.   def set_skill_text(skill,lv)
  960.     if skill.occasion == 3
  961.       set_un_skill_text(skill,lv)
  962.     else
  963.       set_pt_skill_text(skill,lv)
  964.     end
  965.    
  966.   end
  967.   
  968.   #--------------------------------------------------------------------------
  969.   # ● 普通技能帮助窗口
  970.   #--------------------------------------------------------------------------
  971.   def set_pt_skill_text(skill,lv)
  972.     text_1 = ""
  973.     text_2 = "威力:"
  974.     text_3 = "消耗MP:"
  975.     text_4 = "命中率:"
  976. #~    text_5 = "属性:"
  977.     text_6 = "附加"
  978.     text_7 = "解除"
  979.     text_8 = "状态"
  980.    
  981.     @skill=skill
  982.     # 取得描述
  983.     description = @skill.description.clone
  984.     # 取得屬性、附加狀態、解除狀態之副本
  985.     element_set = @skill.element_set.clone
  986.     plus_state_set = @skill.plus_state_set.clone
  987.     minus_state_set = @skill.minus_state_set.clone
  988.     # 過濾不顯示的描述
  989.     element_set -= @s_unshow
  990.     plus_state_set -= @s_unshow_state
  991.     minus_state_set -= @s_unshow_state
  992.     x=0
  993.     y=0
  994.     w_n = 12
  995.     h = 1     #依要显示的内容确定高
  996.     h += 4  #空行,效果范围,消费SP,命中率
  997.     #由描叙确定高
  998.     dh =description.size/3/w_n
  999.     if (description.size%3/w_n) > 0
  1000.       dh =1
  1001.     end
  1002.     if @skill.power!=0  #威力,威力为0,则可能为状态魔法
  1003.       h += 1
  1004.     end
  1005.    
  1006.     #属性。为属性 ID 的数组
  1007.     if element_set.empty?!=true
  1008.       h += 1
  1009.     end  
  1010.     if element_set[4]!=nil
  1011.       h += 1
  1012.     end
  1013.     #附加状态。为状态 ID 的数组
  1014.     if plus_state_set.empty?!=true  
  1015.       h += (@skill.plus_state_set.size+1)  
  1016.     end
  1017.     #解除状态。为状态 ID 的数组
  1018.     if @skill.minus_state_set.empty?!=true  
  1019.       h += (@skill.minus_state_set.size+1)   
  1020.     end     
  1021.     self.height=(h+dh) * @d_s + @n_s + 34 + 15   
  1022.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  1023.     self.contents.clear
  1024.    
  1025.     #描绘名字
  1026.     [email protected]
  1027.     text = text +" lv:" + lv.to_s
  1028.     self.contents.font.color =text_color(6)
  1029.     self.contents.font.size=@n_s
  1030.     if text!=nil
  1031.       self.visible = true
  1032.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  1033.     else
  1034.       self.visible = false
  1035.     end
  1036.    
  1037.     #描绘描叙
  1038.     x=0
  1039.     y+=1
  1040.     text=description
  1041.     while ((text = description.slice!(/./m)) != nil)
  1042.       self.contents.font.color = normal_color
  1043.       self.contents.font.size=@d_s
  1044.       self.contents.draw_text(x*@d_s, y*@d_s+5, 14, 14, text, 0)
  1045.       x+=1
  1046.       if x==w_n#每行10个字
  1047.         x=0
  1048.         y+=1      
  1049.       end
  1050.     end
  1051.     #由特技属性确定高
  1052.     #效果范围
  1053.     # if @skill.skill_false == ""
  1054.       # text=text_1+@base_scope[@skill.scope]
  1055.     # else
  1056.       text=text_1+@base_scope[2]
  1057.     # end
  1058.     x=0
  1059.     y+=2  #空一行
  1060.     self.contents.font.color = normal_color
  1061.     self.contents.font.size=@d_s
  1062.     self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1063.    
  1064.     #威力
  1065.     if @skill.power!=0
  1066.       p = @skill.power + @skill.power_up(lv)
  1067.       c = p > 0 ? p : -1* p
  1068.       text=text_2+c.to_s
  1069.       x=0
  1070.       y+=1
  1071.       self.contents.font.color = normal_color
  1072.       self.contents.font.size=@d_s   
  1073.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1074.     end  
  1075.     #描绘消费SP
  1076.     text=text_3 + (@skill.sp_cost + @skill.sp_cost_up(lv)) .to_s
  1077.     x=0
  1078.     y+=1
  1079.     self.contents.font.color = normal_color
  1080.     self.contents.font.size=@d_s   
  1081.     self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1082.     #命中率
  1083.     text=text_4+(@skill.hit * @skill.hit_up(lv)/100 ).to_s+"%"
  1084.     x=0
  1085.     y+=1
  1086.     self.contents.font.color = normal_color
  1087.     self.contents.font.size=@d_s
  1088.     self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1089.     #攻击属性
  1090. #~    if element_set.size > 0
  1091. #~      text=text_5
  1092. #~      for i in 0...element_set.size
  1093. #~        if i < 4
  1094. #~          text+=$data_system.elements[element_set[i]]
  1095. #~        else
  1096. #~          break
  1097. #~        end        
  1098. #~      end
  1099. #~      x=0
  1100. #~      y+=1
  1101. #~      self.contents.font.color = normal_color
  1102. #~      self.contents.font.size=@d_s
  1103. #~      self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  1104. #~    end
  1105. #~    if element_set.size >= 5
  1106. #~      text=""
  1107. #~      for i in 4...element_set.size
  1108. #~        text+=$data_system.elements[element_set[i]]
  1109. #~      end
  1110. #~      x= (text_5.size)*3
  1111. #~      y+=1
  1112. #~      self.contents.font.color = normal_color
  1113. #~      self.contents.font.size=@d_s
  1114. #~      self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)
  1115. #~    end
  1116.     #附加状态
  1117.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  1118.       text= text_6
  1119.       x=0
  1120.       y+=1
  1121.       self.contents.font.color = normal_color
  1122.       self.contents.font.size=@d_s
  1123.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1124.       for i in 0...plus_state_set.size
  1125.         y+=1
  1126.         text=$data_states[@skill.plus_state_set[i]].name        
  1127.         self.contents.font.color = normal_color
  1128.         self.contents.font.size=@d_s
  1129.         self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)        
  1130.       end  
  1131.     end   
  1132.     #解除状态
  1133.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  1134.       text= text_7
  1135.       x=0
  1136.       y+=1
  1137.       self.contents.font.color = normal_color
  1138.       self.contents.font.size=@d_s
  1139.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1140.       for i in 0...minus_state_set.size
  1141.         y+=1
  1142.         text=$data_states[@skill.minus_state_set[i]].name        
  1143.         self.contents.font.color = normal_color
  1144.         self.contents.font.size=@d_s
  1145.         self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)        
  1146.       end  
  1147.     end     
  1148.   end
  1149.   #--------------------------------------------------------------------------
  1150.   # ● 设置角色
  1151.   #     actor : 要显示状态的角色
  1152.   #--------------------------------------------------------------------------
  1153.   def set_actor(actor)
  1154.     if actor != @actor
  1155.       self.contents.clear
  1156.       draw_actor_name(actor, 4, 0)
  1157.       draw_actor_state(actor, 140, 0)
  1158.       draw_actor_hp(actor, 284, 0)
  1159.       draw_actor_sp(actor, 460, 0)
  1160.       @actor = actor
  1161.       @text = nil
  1162.       self.visible = true
  1163.     end
  1164.   end
  1165.   #--------------------------------------------------------------------------
  1166.   # ● 设置敌人
  1167.   #     enemy : 要显示名字和状态的敌人
  1168.   #--------------------------------------------------------------------------
  1169.   def set_enemy(enemy)
  1170.     text = enemy.name.sub(/\\[Ff]\[([0-9]+)\]/) {""}
  1171.     state_text = make_battler_state_text(enemy, 112, false)
  1172.     if state_text != ""
  1173.       text += "  " + state_text
  1174.     end
  1175.     set_text(text, 1)
  1176.   end
  1177.    #-----------------------------------------------------------------------
  1178.   #  ●技能加点特用
  1179.   #-----------------------------------------------------------------------
  1180.   def set_pos_skill(x,y)
  1181.     self.x=x+96
  1182.     self.y=y+64
  1183.     if self.x+self.width>640
  1184.       self.x=640-self.width
  1185.     end
  1186.     if self.y+self.height>480
  1187.       self.y=480-self.height
  1188.     end
  1189.   end
  1190.   #--------------------------------------------------------------------------
  1191.   # ● 校正帮助窗口位置
  1192.   #--------------------------------------------------------------------------
  1193.   def set_pos(x,y,width,oy,index,column_max)
  1194.     #光标坐标
  1195.     cursor_width = width / column_max - 32
  1196.     xx = index % column_max * (cursor_width + 32)
  1197.     yy = index / column_max * 32 - oy
  1198.     self.x=xx+x+150
  1199.     self.y=yy+y+30
  1200.     if self.x+self.width>640
  1201.       self.x=640-self.width
  1202.     end
  1203.     if self.y+self.height>480
  1204.       self.y=480-self.height
  1205.     end  
  1206.   end
  1207. end
  1208. #========================================================================================================================
  1209. # ■ Window_Help
  1210. #------------------------------------------------------------------------------
  1211. #  特技及物品的说明、角色的状态显示的窗口。
  1212. #   若要更改属性,请搜索element_set={1=>"炎",2=>"冰",3=>"雷",4=>"水",5=>"土",6=>"風",7=>"暗"}改成对应属性即可
  1213. #========================================================================================================================
  1214. class Window_Help_Self < Window_Base
  1215.   #--------------------------------------------------------------------------
  1216.   # ● 被动技能帮助窗口
  1217.   #--------------------------------------------------------------------------
  1218.   def set_un_skill_text(skill,lv)
  1219.     text_1 = "被动技能"
  1220.     text_2 = "增加攻击:   "
  1221.     text_3 = "增加智力:   "
  1222.     text_4 = "增加最大HP: "
  1223.     text_5 = "增加最大MP: "
  1224.     text_6 = "增加力量:   "
  1225.     text_7 = "增加体质:   "
  1226.     text_8 = "增加敏捷:   "
  1227.     text_9 = "增加物防:   "
  1228.     text_10 = "增加魔防:   "
  1229.     text_11 = "增加命中:   "
  1230.     text_12 = "增加回避:   "
  1231.     text_13 = "属性抵抗:   "
  1232.     text_14 = "附加状态:   "
  1233.     text_15 = "状态抵抗:   "
  1234.    
  1235.     @skill=skill
  1236.     # 取得描述
  1237.     description = @skill.description.clone
  1238.     # 取得屬性、附加狀態、解除狀態之副本
  1239.     element_set = @skill.element_set.clone
  1240.     plus_state_set = @skill.plus_state_set.clone
  1241.     minus_state_set = @skill.minus_state_set.clone
  1242.     # 過濾不顯示的描述
  1243.     element_set -= @s_unshow
  1244.     plus_state_set -= @s_unshow_state
  1245.     minus_state_set -= @s_unshow_state
  1246.     x=0
  1247.     y=0
  1248.     w_n = 12
  1249.     h = 1     #依要显示的内容确定高
  1250.     h += 1  #空行,效果范围,消费SP,命中率
  1251.     #由描叙确定高
  1252.     dh =description.size/3/w_n
  1253.     if (description.size%3/w_n) > 0
  1254.       dh =1
  1255.     end
  1256.     if @skill.power !=0  #威力,威力为0,则可能为状态魔法
  1257.       h += 1
  1258.     end
  1259.     if @skill.sp_cost != 0
  1260.       h += 1
  1261.     end
  1262.     if @skill.atk_f != 0
  1263.       h += 1
  1264.     end
  1265.     if @skill.eva_f != 0
  1266.       h += 1
  1267.     end
  1268.     if @skill.str_f != 0
  1269.       h += 1
  1270.     end
  1271.     if @skill.dex_f != 0
  1272.       h += 1
  1273.     end
  1274.     if @skill.agi_f != 0
  1275.       h += 1
  1276.     end
  1277.     if @skill.int_f != 0
  1278.       h += 1
  1279.     end
  1280.     if @skill.hit != 0
  1281.       h += 1
  1282.     end
  1283.     if @skill.pdef_f != 0
  1284.       h += 1
  1285.     end
  1286.     if @skill.mdef_f != 0
  1287.       h += 1
  1288.     end
  1289.    
  1290.    
  1291.   
  1292.    
  1293.     #属性。为属性 ID 的数组
  1294.     if element_set.empty?!=true
  1295.       h += 1
  1296.     end  
  1297.     #附加状态。为状态 ID 的数组
  1298.     if plus_state_set.empty?!=true  
  1299.       h += (@skill.plus_state_set.size+1)  
  1300.     end
  1301.     #解除状态。为状态 ID 的数组
  1302.     if @skill.minus_state_set.empty?!=true  
  1303.       h += (@skill.minus_state_set.size+1)   
  1304.     end     
  1305.     self.height=(h+dh) * @d_s + @n_s + 34 + 15   
  1306.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  1307.     self.contents.clear
  1308.    
  1309.     #描绘名字
  1310.     [email protected]
  1311.     text = text +" lv:" + lv.to_s
  1312.     self.contents.font.color =text_color(6)
  1313.     self.contents.font.size=@n_s
  1314.     if text!=nil
  1315.       self.visible = true
  1316.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  1317.     else
  1318.       self.visible = false
  1319.     end
  1320.    
  1321.     #描绘描叙
  1322.     x=0
  1323.     y+=1
  1324.     text=description
  1325.     while ((text = description.slice!(/./m)) != nil)
  1326.       self.contents.font.color = normal_color
  1327.       self.contents.font.size=@d_s
  1328.       self.contents.draw_text(x*@d_s, y*@d_s+5, 14, 14, text, 0)
  1329.       x+=1
  1330.       if x==w_n#每行10个字
  1331.         x=0
  1332.         y+=1      
  1333.       end
  1334.     end
  1335.     #由特技属性确定高
  1336.     #效果范围
  1337.     # if @skill.skill_false == ""
  1338.       # text=text_1+@base_scope[@skill.scope]
  1339.     # else
  1340.     text=text_1#+@base_scope[2]
  1341.     # end
  1342.     x=0
  1343.     y+=2  #空一行
  1344.     self.contents.font.color = normal_color
  1345.     self.contents.font.size=@d_s
  1346.     self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1347.    
  1348.     #最大HP
  1349.     if @skill.power!=0
  1350.       p = @skill.power + @skill.power_up(lv)
  1351.       c = p > 0 ? p : -1* p
  1352.       text=text_4+c.to_s
  1353.       x=0
  1354.       y+=1
  1355.       self.contents.font.color = normal_color
  1356.       self.contents.font.size=@d_s   
  1357.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1358.     end  
  1359.     #最大SP
  1360.     if @skill.sp_cost !=0
  1361.       text=text_5 + (@skill.sp_cost + @skill.sp_cost_up(lv)) .to_s
  1362.       x=0
  1363.       y+=1
  1364.       self.contents.font.color = normal_color
  1365.       self.contents.font.size=@d_s   
  1366.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1367.     end
  1368.    
  1369.     #命中率
  1370.     if @skill.hit != 0
  1371.       text=text_11+(@skill.hit * @skill.hit_up(lv)/100 ).to_s+"%"
  1372.       x=0
  1373.       y+=1
  1374.       self.contents.font.color = normal_color
  1375.       self.contents.font.size=@d_s
  1376.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1377.     end
  1378.     #攻击
  1379.     if @skill.atk_f !=0
  1380.       text=text_2 + (@skill.atk_f + @skill.atk_f_up(lv)) .to_s
  1381.       x=0
  1382.       y+=1
  1383.       self.contents.font.color = normal_color
  1384.       self.contents.font.size=@d_s   
  1385.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1386.     end
  1387.     #力量
  1388.     if @skill.str_f !=0
  1389.       text=text_6 + (@skill.str_f + @skill.str_f_up(lv)) .to_s
  1390.       x=0
  1391.       y+=1
  1392.       self.contents.font.color = normal_color
  1393.       self.contents.font.size=@d_s   
  1394.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1395.     end
  1396.     #技巧
  1397.     if @skill.dex_f !=0
  1398.       text=text_7 + (@skill.dex_f + @skill.dex_f_up(lv)) .to_s
  1399.       x=0
  1400.       y+=1
  1401.       self.contents.font.color = normal_color
  1402.       self.contents.font.size=@d_s   
  1403.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1404.     end
  1405.     #速度
  1406.     if @skill.agi_f !=0
  1407.       text=text_8 + (@skill.agi_f + @skill.agi_f_up(lv)) .to_s
  1408.       x=0
  1409.       y+=1
  1410.       self.contents.font.color = normal_color
  1411.       self.contents.font.size=@d_s   
  1412.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1413.     end
  1414.      #魔力
  1415.     if @skill.int_f !=0
  1416.       text=text_3 + (@skill.int_f + @skill.int_f_up(lv)) .to_s
  1417.       x=0
  1418.       y+=1
  1419.       self.contents.font.color = normal_color
  1420.       self.contents.font.size=@d_s   
  1421.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1422.     end
  1423.      #防御
  1424.     if @skill.pdef_f !=0
  1425.       text=text_9 + (@skill.pdef_f + @skill.pdef_f_up(lv)) .to_s
  1426.       x=0
  1427.       y+=1
  1428.       self.contents.font.color = normal_color
  1429.       self.contents.font.size=@d_s   
  1430.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1431.     end
  1432.     #魔防
  1433.     if @skill.mdef_f !=0
  1434.       text=text_10 + (@skill.mdef_f + @skill.mdef_f_up(lv)) .to_s
  1435.       x=0
  1436.       y+=1
  1437.       self.contents.font.color = normal_color
  1438.       self.contents.font.size=@d_s   
  1439.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1440.     end  
  1441.     #攻击属性
  1442.     if element_set.size > 0
  1443.       text=text_13
  1444.       for i in 0...element_set.size
  1445.         if i < 4
  1446.           text+=$data_system.elements[element_set[i]]+" "
  1447.         else
  1448.           break
  1449.         end        
  1450.       end
  1451.       x=0
  1452.       y+=1
  1453.       self.contents.font.color = normal_color
  1454.       self.contents.font.size=@d_s
  1455.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1456.     end

  1457.     if element_set.size >= 5
  1458.       text=""
  1459.       for i in 4...element_set.size
  1460.         text+=$data_system.elements[element_set[i]]+ " "
  1461.       end
  1462.       x= (text_5.size)*3
  1463.       y+=1
  1464.       self.contents.font.color = normal_color
  1465.       self.contents.font.size=@d_s
  1466.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1467.     end


  1468.     #附加状态
  1469.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  1470.       text= text_14
  1471.       x=0
  1472.       y+=1
  1473.       self.contents.font.color = normal_color
  1474.       self.contents.font.size=@d_s
  1475.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1476.       for i in 0...plus_state_set.size
  1477.         text=$data_states[@skill.plus_state_set[i]].name        
  1478.         self.contents.font.color = normal_color
  1479.         self.contents.font.size=@d_s
  1480.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  1481.       end  
  1482.     end   
  1483.     #解除状态
  1484.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  1485.       text= text_15
  1486.       x=0
  1487.       y+=1
  1488.       self.contents.font.color = normal_color
  1489.       self.contents.font.size=@d_s
  1490.       self.contents.draw_text(x, y*@d_s+5, text.size*6, 14, text, 0)
  1491.       for i in 0...minus_state_set.size
  1492.         text=$data_states[@skill.minus_state_set[i]].name        
  1493.         self.contents.font.color = normal_color
  1494.         self.contents.font.size=@d_s
  1495.         self.contents.draw_text(x+80, y*@d_s+5, text.size*6, 14, text, 0)        
  1496.       end  
  1497.     end   
  1498.    
  1499.    

  1500.   end
  1501. end
  1502. #==============================================================================
  1503. # ■ Game_Actor
  1504. #------------------------------------------------------------------------------
  1505. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  1506. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  1507. #==============================================================================

  1508. class Game_Actor < Game_Battler
  1509.   #-----------------------------------------
  1510.   # ●初始化
  1511.   #-----------------------------------------
  1512.   attr_reader    :skills_lv
  1513.     #初始化
  1514.   attr_reader    :unactive
  1515.   alias swtf_setup setup
  1516.   def setup(actor_id)
  1517.     actor = $data_actors[actor_id]
  1518.     #                  能力             属性    待添加   状态抵抗
  1519.     @unactive = [[0,0,0,0,0,0,0,0,0,0,0],[],       [],       []]  #被动技能数组
  1520.     @skills_lv = [0]
  1521.     swtf_setup(actor_id)
  1522.   end
  1523.   #-----------------------------------------
  1524.   # ●获取技能等级
  1525.   #-----------------------------------------
  1526.   def skill_lv(id)
  1527.     if @skills_lv[id] == nil
  1528.       return 0
  1529.     else
  1530.       @skills_lv[id]
  1531.     end
  1532.    
  1533.   end
  1534.   #-----------------------------------------
  1535.   # ●技能等级提升
  1536.   #-----------------------------------------
  1537.   def skill_lv_up(id)
  1538.    if @skills_lv[id] < $data_skills[id].max_lv
  1539.      @skills_lv[id]+=1
  1540.    end
  1541.   end
  1542.    #--------------------------------------------------------------------------
  1543.   # ● 更改 EXP
  1544.   #     exp : 新的 EXP
  1545.   #--------------------------------------------------------------------------
  1546.   def exp=(exp)
  1547.     @exp = [[exp, 9999999].min, 0].max
  1548.     # 升级
  1549.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  1550.       @level += 1
  1551.       @skills_lv[0] +=3
  1552.       # 学会特技
  1553.    #   for j in $data_classes[@class_id].learnings
  1554.    #     if j.level == @level
  1555.    #       learn_skill(j.skill_id)
  1556.    #     end
  1557.    #   end
  1558.     end
  1559.     # 降级
  1560.     while @exp < @exp_list[@level]
  1561.       @level -= 1
  1562.       @skills_lv[0] -=3
  1563.     end
  1564.     # 修正当前的 HP 与 SP 超过最大值
  1565.     @hp = [@hp, self.maxhp].min
  1566.     @sp = [@sp, self.maxsp].min
  1567.   end
  1568. #~=begin    #若版本1.2以上则注释部分无效
  1569. #~  #--------------------------------------------------------------------------
  1570. #~  # ● 觉悟特技
  1571. #~  #     skill_id : 特技 ID
  1572. #~  #--------------------------------------------------------------------------
  1573. #~  def learn_skill(skill_id)
  1574. #~    return if @skills_lv == nil
  1575. #~    if skill_learn?(skill_id)
  1576. #~      @skills_lv[skill_id] += 1
  1577. #~      @skills_lv[0] -=1
  1578. #~    else
  1579. #~      @skills.push(skill_id)
  1580. #~      @skills.sort!
  1581. #~      if @skills_lv[skill_id] == nil
  1582. #~        @skills_lv[skill_id] = 1
  1583. #~      else
  1584. #~        @skills_lv[skill_id] += 1
  1585. #~      end
  1586. #~      
  1587. #~      @skills_lv[0] -=1
  1588. #~    end
  1589. #~  end
  1590. #~  #--------------------------------------------------------------------------
  1591. #~  # ● 遗忘特技
  1592. #~  #     skill_id : 特技 ID
  1593. #~  #--------------------------------------------------------------------------
  1594. #~  def forget_skill(skill_id)
  1595. #~    return if @skills_lv == nil
  1596. #~    if @skill_lv[skill_id] < 2
  1597. #~      @skills.delete(skill_id)
  1598. #~      @skills_lv[skill_id] = 0
  1599. #~      @skills_lv[0] +=1
  1600. #~    else
  1601. #~      @skills_lv[skill_id] -= 1
  1602. #~      @skills_lv[0] +=1
  1603. #~    end
  1604. #~   
  1605. #~  end
  1606. #~=end
  1607.   
  1608. end
  1609. #===============================================================
  1610. # ■ Game_Skill
  1611. #--------------------------------------------------------------
  1612. # 设置技能的类,重新定义技能
  1613. #----------------------------------------------------------------
  1614. module RPG

  1615. class Skill
  1616.   #attr_accessor :lv  #技能的等级
  1617.     def initialize
  1618.       @id = 0
  1619.       @name = ""
  1620.       @icon_name = ""
  1621.       @description = ""
  1622.       @scope = 0
  1623.       @occasion = 1
  1624.       @animation1_id = 0
  1625.       @animation2_id = 0
  1626.       @menu_se = RPG::AudioFile.new("", 80)
  1627.       @common_event_id = 0
  1628.       @sp_cost = 0
  1629.       @power = 0
  1630.       @atk_f = 0
  1631.       @eva_f = 0
  1632.       @str_f = 0
  1633.       @dex_f = 0
  1634.       @agi_f = 0
  1635.       @int_f = 100
  1636.       @hit = 100
  1637.       @pdef_f = 0
  1638.       @mdef_f = 100
  1639.       @variance = 15
  1640.       @element_set = []
  1641.       @plus_state_set = []
  1642.       @minus_state_set = []
  1643.     end
  1644.     #----------------------------------------------------------------
  1645.     # ● 设置技能等级上限
  1646.     #----------------------------------------------------------------
  1647.     def max_lv
  1648.       return $data_skills[@id+300].description.split(/,/)[2].to_i
  1649.     end
  1650.     #----------------------------------------------------------------
  1651.     # ● 设置技能显示的位置
  1652.     #----------------------------------------------------------------
  1653.     def _x
  1654.       return $data_skills[@id+300].description.split(/,/)[0].to_i
  1655.     end
  1656.      def _y
  1657.       return $data_skills[@id+300].description.split(/,/)[1].to_i
  1658.     end
  1659.     #----------------------------------------------------------------
  1660.     # ● 设置技能的前置技能
  1661.     #----------------------------------------------------------------
  1662.     def must_skill
  1663.       return $data_skills[@id+300].name.split(/,/)
  1664.     end
  1665.     #----------------------------------------------------------------
  1666.     # ● 设置技能的威力提升度
  1667.     #----------------------------------------------------------------
  1668.     def sp_cost_up(lv)
  1669.        return $data_skills[@id+300].sp_cost * (lv-1)
  1670.      end
  1671.     def power_up(lv)
  1672.        return $data_skills[@id+300].power * (lv-1)
  1673.      end

  1674.     def atk_f_up(lv)
  1675.        return $data_skills[@id+300].atk_f * (lv-1)
  1676.     end
  1677.     def eva_f_up(lv)
  1678.        return $data_skills[@id+300].eva_f * (lv-1)
  1679.     end
  1680.     def str_f_up(lv)
  1681.        return $data_skills[@id+300].str_f * (lv-1)
  1682.      end
  1683.     def dex_f_up(lv)
  1684.        return $data_skills[@id+300].dex_f * (lv-1)
  1685.     end
  1686.     def agi_f_up(lv)
  1687.        return $data_skills[@id+300].dex_f * (lv-1)
  1688.     end
  1689.     def int_f_up(lv)
  1690.        return $data_skills[@id+300].int_f * (lv-1)
  1691.     end
  1692.     def hit_up(lv)
  1693.        return $data_skills[@id+300].hit ** (lv-1)/ 100 ** (lv-2)
  1694.     end
  1695.     def pdef_f_up(lv)
  1696.        return $data_skills[@id+300].pdef_f * (lv-1)
  1697.      end
  1698.     def mdef_f_up(lv)
  1699.        return $data_skills[@id+300].mdef_f * (lv-1)
  1700.     end
  1701.     #----------------------------------------------------------------
  1702.     # ● 设置必须的级别
  1703.     #----------------------------------------------------------------
  1704.     def must_level
  1705.       return $data_skills[@id+300].variance
  1706.     end
  1707.    
  1708.    
  1709. end


  1710. end
  1711. #===============================================================
  1712. # ■ Window_Skill_up
  1713. #--------------------------------------------------------------
  1714. # 显示技能信息的窗口
  1715. #----------------------------------------------------------------


  1716. class Window_Skill_Up < Window_Selectable
  1717.   #--------------------------------------------------------------------------
  1718.   # ● 初始化对像
  1719.   #     actor : 角色
  1720.   #--------------------------------------------------------------------------
  1721.   def initialize(actor)
  1722.     super(0, 64, 440, 416)
  1723.     @column_max = 1
  1724.     self.index = -1
  1725.     @actor = actor
  1726.    # refresh(1)
  1727.    
  1728.   end

  1729.   #--------------------------------------------------------------------------
  1730.   # ● 获取特技
  1731.   #--------------------------------------------------------------------------
  1732.   def skill
  1733.     return @data[self.index]
  1734.   end
  1735.   #--------------------------------------------------------------------------
  1736.   # ● 刷新
  1737.   #--------------------------------------------------------------------------
  1738.   def refresh(kind)
  1739.     if self.contents != nil
  1740.       self.contents.dispose
  1741.       self.contents = nil
  1742.     end
  1743.     @data = []
  1744.     temp = []
  1745.       for i in $data_classes[@actor.class_id].learnings
  1746.        temp.push(i) if i.level == kind
  1747.       end
  1748.       
  1749.     for i in temp
  1750.       id = i.skill_id
  1751.       skill = $data_skills[id]
  1752.         @data.push(skill)
  1753.     end
  1754.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  1755.     @item_max = @data.size
  1756.     if @item_max > 0
  1757.       self.contents = Bitmap.new(width - 32, height - 32)
  1758.       for i in 0...@item_max
  1759.         draw_item(i)
  1760.       end
  1761.     end
  1762.    # bit=Bitmap.new("Graphics/Pictures/up.jpg") self.contents.blt(32,32,320,384.rect)
  1763. end

  1764.   #------------------------------------------------------------------------
  1765.   # ● 刷新窗口矩形
  1766.   #-------------------------------------------------------------------------
  1767.   def update_cursor_rect
  1768.     if self.index == -1
  1769.       x= 0
  1770.       y= 0
  1771.     else
  1772.       x = @data[self.index]._x * 32 - 4
  1773.       y = @data[self.index]._y * 32
  1774.     end
  1775.     self.cursor_rect.set(x,y, 32, 32)     
  1776.   end
  1777.   #--------------------------------------------------------------------------
  1778.   # ● 描绘项目
  1779.   #     index : 项目编号
  1780.   #--------------------------------------------------------------------------
  1781.   def draw_item(index)
  1782.     skill = @data[index]
  1783.     if can_level_up?(skill)
  1784.       self.contents.font.color = normal_color
  1785.     else
  1786.       self.contents.font.color = disabled_color
  1787.     end
  1788.    
  1789.     x = skill._x.to_i*32
  1790.     y = skill._y.to_i*32
  1791.     rect = Rect.new(x, y, self.width, self.height)
  1792.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  1793.     bitmap = RPG::Cache.icon(skill.icon_name)
  1794.     if self.contents.font.color == normal_color
  1795.       opacity =  255
  1796.     else
  1797.       opacity = @actor.skill_lv(skill.id) >= 1 ? 200:64
  1798.     end
  1799.    
  1800.   #  opacity = self.contents.font.color == normal_color ? 255 : 128
  1801.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 32, 32), opacity)
  1802.     #self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  1803.     #self.contents.draw_text(x + 232-30, y, 48, 32, skill.sp_cost.to_s, 2)
  1804.   end
  1805.   
  1806.   #------------------------------------------------------------------------
  1807.   # ● 设置能否升级
  1808.   #-------------------------------------------------------------------------、
  1809.   def can_level_up?(skill)
  1810.    if @actor.skill_lv(skill.id) != nil
  1811.      if @actor.skill_lv(skill.id) >= skill.max_lv
  1812.        return false
  1813.      end
  1814.    end
  1815.    
  1816.     if @actor.skill_lv(0) < 1
  1817.       return false
  1818.     end
  1819.    for i in skill.must_skill
  1820.      if @actor.skill_lv(i.to_i) < 1
  1821.        return false
  1822.      end
  1823.    end


  1824. #   if skill.must_level > @actor.level
  1825. #     return false
  1826. #   end
  1827.    
  1828.    return true
  1829.   end

  1830.   
  1831.   #--------------------------------------------------------------------------
  1832.   # ● 刷新帮助文本
  1833.   #--------------------------------------------------------------------------
  1834.   def update_help
  1835.    return if index == - 1
  1836.      @help_window.set_text(self.skill,nil, @actor.skill_lv(self.skill.id))
  1837.        #校正帮助窗口位置
  1838.       @help_window.set_pos_skill(self.skill._x*32,self.skill._y*32)
  1839.   end


  1840. end
  1841. #==============================================================================
  1842. # ■ 技能加点主处理
  1843. #------------------------------------------------------------------------------
  1844. #  
  1845. #==============================================================================


  1846. class Scene_Skill_Up
  1847.   #--------------------------------------------------------------------------
  1848.   # ● 初始化对像
  1849.   #     actor_index : 角色索引
  1850.   #--------------------------------------------------------------------------
  1851.   def initialize(actor)
  1852.     @actor = actor
  1853.   end
  1854.   #--------------------------------------------------------------------------
  1855.   # ● 主处理
  1856.   #--------------------------------------------------------------------------
  1857.   def main
  1858.     @pic = Sprite.new
  1859.     @name = @actor.name
  1860.     @kind_window = Window_Skill_Kind.new(@actor)
  1861.     @pic.bitmap = Bitmap.new("Graphics/Titles/技能树")
  1862.     @pic.x = 0
  1863.     @pic.y = 64
  1864.     @pic.z = 100
  1865.     @spriteset = Spriteset_Map.new
  1866.    
  1867.     @skill_window =  Window_Skill_Up.new(@actor)
  1868.     @skill_window.refresh(@kind_window.kind)
  1869.     @skill_window.back_opacity=0
  1870.     @skill_window.index = 0
  1871.     @skill_window.active =true
  1872.    # @skill_window.y = 32
  1873.     @skill_window.help_window = Window_Help_Self.new
  1874.     @sur_window = Window_Skill_Sur.new
  1875.     @sur_window.refresh(@actor.skill_lv(0))
  1876.    
  1877.      # 执行过度
  1878.      
  1879.     Graphics.transition

  1880.   
  1881.     # 主循环
  1882.     loop do
  1883.       # 刷新游戏画面
  1884.       Graphics.update
  1885.       # 刷新输入信息
  1886.       Input.update
  1887.       # 刷新画面
  1888.       update
  1889.   
  1890.       # 如果画面切换就中断循环
  1891.       if $scene != self
  1892.         break
  1893.       end
  1894.     end
  1895.     # 装备过渡

  1896.     Graphics.freeze
  1897.     # 释放窗口
  1898.     @skill_window.dispose
  1899.     @skill_window.help_window.dispose
  1900.     @pic.dispose
  1901.     @sur_window.dispose
  1902.     @kind_window.dispose
  1903.     @spriteset.dispose
  1904. #    @pic.dispose
  1905.   end
  1906.   #--------------------------------------------------------------------------
  1907.   # ● 刷新
  1908.   #--------------------------------------------------------------------------
  1909.   def update
  1910.     if @skill_window.active
  1911.       @skill_window.update
  1912.       update_skill
  1913.     end
  1914.   end
  1915.   #-------------------------------------------------------------------------
  1916.   # ● 技能窗口激活的情况
  1917.   #-------------------------------------------------------------------------
  1918.   def update_skill
  1919.      # 按下 B 键的情况下
  1920.     if Input.trigger?(Input::B)
  1921.       # 演奏取消 SE
  1922.       $game_system.se_play($data_system.cancel_se)
  1923.       # 切换到菜单画面
  1924.       $scene = Scene_Map.new
  1925.       return
  1926.     end
  1927.     # 按下 C 键的情况下
  1928.     if Input.trigger?(Input::C)
  1929.       # 获取特技窗口现在选择的特技的数据
  1930.       @skill = @skill_window.skill
  1931.      if @skill_window.can_level_up?(@skill)
  1932.         # 演奏确定 SE
  1933.         $game_system.se_play($data_system.decision_se)
  1934.         @actor.learn_skill(@skill.id)
  1935.         @skill_window.help_window.set_skill_text($data_skills[1],1)
  1936.         @skill_window.update_help
  1937.         @skill_window.help_window.set_skill_text($data_skills[@skill_window.skill.id],@actor.skill_lv(@skill_window.skill.id))
  1938.         @skill_window.refresh(@kind_window.kind)
  1939.         @sur_window.refresh(@actor.skill_lv(0))
  1940.      else
  1941.         $game_system.se_play($data_system.buzzer_se)
  1942.         return
  1943.      end
  1944.       return
  1945.     end   
  1946.     # 按下 R 键的情况下
  1947.     if Input.trigger?(Input::RIGHT)
  1948.       # 演奏光标 SE1
  1949.       $game_system.se_play($data_system.cursor_se)
  1950.       # 移至下一位角色
  1951.       @kind_window.index_r
  1952.       @skill_window.refresh(@kind_window.kind)
  1953.       @pic.bitmap = Bitmap.new("Graphics/Titles/技能树")
  1954.       return
  1955.     end
  1956.     # 按下 L 键的情况下
  1957.     if Input.trigger?(Input::LEFT)
  1958.       # 演奏光标 SE
  1959.       $game_system.se_play($data_system.cursor_se)
  1960.       @kind_window.index_l
  1961.       @skill_window.refresh(@kind_window.kind)
  1962.       @pic.bitmap = Bitmap.new("Graphics/Titles/技能树")
  1963.       return
  1964.     end
  1965.   end
  1966.   #-----------------------------------------------------------------------
  1967.   # ● 确认窗口激活的情况
  1968.   #-----------------------------------------------------------------------
  1969.   def update_sure
  1970.    
  1971.      
  1972.   end

  1973.   
  1974.   
  1975. end
  1976. #=================================================================
  1977. # ■显示剩余点数的窗口
  1978. #-----------------------------------------------------------------
  1979. #
  1980. #=================================================================


  1981. class Window_Skill_Sur< Window_Base
  1982.   #--------------------------------------------------------------------------
  1983.   # ● 初始化窗口
  1984.   #--------------------------------------------------------------------------
  1985.   def initialize
  1986.     super(440, 0, 200, 64)
  1987.     self.z=100
  1988.     self.contents = Bitmap.new(width - 32, height - 32)
  1989. #    @sur= sur
  1990.     refresh(0)
  1991.   end
  1992.   #--------------------------------------------------------------------------
  1993.   # ● 刷新
  1994.   #--------------------------------------------------------------------------
  1995.   def refresh(sur)
  1996.     n = sur
  1997.     text = "剩余 "+n.to_s+"点"
  1998.     self.contents.clear
  1999.     self.contents.font.color = Color.new(255, 255,255, 255)
  2000.     self.contents.draw_text(0, 0, 200, 32,text, 1)
  2001.   end
  2002. end
  2003. #=================================================================
  2004. # ■显示技能种类的窗口
  2005. #-----------------------------------------------------------------
  2006. #
  2007. #=================================================================






  2008. class Window_Skill_Kind < Window_Base
  2009.   #--------------------------------------------------------------------------
  2010.   # ● 初始化窗口
  2011.   #--------------------------------------------------------------------------
  2012.   def initialize(actor)
  2013.     super(0, 0, 440, 64)
  2014.     self.contents = Bitmap.new(width-32, height-32)
  2015.     @actor = actor
  2016.     get_list
  2017.     @index = 0
  2018.     refresh
  2019.   end
  2020.   #--------------------------------------------------------------------------
  2021.   # ● 刷新
  2022.   #--------------------------------------------------------------------------
  2023.   def refresh
  2024.     self.contents.clear
  2025.     self.contents.font.color = disabled_color
  2026.     for i in [email protected]
  2027.       text = kind_text(@list[i])     
  2028.       if i == @index
  2029.         self.contents.font.color = normal_color
  2030.       end
  2031.       x = i * (320 / @list.size) + 320 / @list.size / 2 + 64
  2032.       self.contents.draw_text(2, 0, x, 32, text, 2)
  2033.       if i == @index
  2034.         self.contents.font.color = disabled_color
  2035.       end
  2036.     end
  2037.   end
  2038.   #种类输出
  2039.   def kind
  2040.     return @list[@index]
  2041.   end
  2042.   
  2043.   def index_l
  2044.     @index -=1
  2045.     @index = @index % @list.size
  2046.     refresh
  2047.   end
  2048.   def index_r
  2049.     @index +=1
  2050.     @index = @index % @list.size
  2051.     refresh
  2052.   end
  2053.   
  2054.   #--------------------------------------------------------------------------
  2055.   # ● #获取角色技能种类列表
  2056.   #--------------------------------------------------------------------------
  2057.   def get_list
  2058.     @list = []  
  2059.    
  2060.     for i in $data_classes[@actor.class_id].learnings
  2061.       n = true
  2062.       for j in @list
  2063.         if j == i.level
  2064.           n = false
  2065.           break
  2066.         end
  2067.       end
  2068.       
  2069.       @list.push(i.level) if n
  2070.       
  2071.     end
  2072.   end

  2073.   
  2074.   def kind_text(n)
  2075.     case n
  2076.   when 1
  2077.     case $game_variables[25]
  2078.      when 0
  2079.       return "冒险家技能"
  2080.      when 1
  2081.        return "剑士技能"
  2082.      when 2
  2083.       return "魔法师技能"
  2084.      when 3
  2085.       return "武士技能"
  2086.      when 4
  2087.       return "风行者技能"
  2088.      when 5
  2089.        return "冰火剑士"
  2090.      when 6
  2091.        return "连环剑士"
  2092.      when 7
  2093.        return "狂战士"
  2094.      when 8
  2095.        return "骑士"
  2096.     else
  2097.       return ""
  2098.       end
  2099.     when 2
  2100.        return "骑士"
  2101.     else
  2102.       return "其他"
  2103.     end
  2104.    end
  2105.   end
  2106. #=================================================================
  2107. # ■ Unactive_Skill
  2108. #-----------------------------------------------------------------
  2109. #  被动技能
  2110. #=================================================================





  2111. #==============================================================================
  2112. # ■ Game_Actor
  2113. #------------------------------------------------------------------------------
  2114. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  2115. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  2116. #==============================================================================

  2117. class Game_Actor < Game_Battler

  2118.   #--------------------------------------------------------------------------
  2119.   # ● 觉悟特技
  2120.   #     skill_id : 特技 ID
  2121.   #--------------------------------------------------------------------------
  2122.   def learn_skill(skill_id)
  2123.     return if @skills_lv == nil
  2124.     if skill_learn?(skill_id)
  2125.       @skills_lv[skill_id] += 1
  2126.       @skills_lv[0] -=1
  2127.       n = unactive_change(skill_id)
  2128.       for i in 0...@unactive[0].size
  2129.         @unactive[0][i] += n[i]
  2130.       end
  2131.       
  2132.     else
  2133.       @skills.push(skill_id)
  2134.       @skills.sort!
  2135.       if @skills_lv[skill_id] == nil
  2136.         @skills_lv[skill_id] = 1
  2137.       else
  2138.         @skills_lv[skill_id] += 1
  2139.       end
  2140.       @skills_lv[0] -=1
  2141.       @unactive[0] = unactive_change(skill_id ,false)
  2142.       unactive_plus_state(skill_id,false)
  2143.     end
  2144.     @unactive[1] += unactive_el_change(skill_id)
  2145.     @unactive[3] += unactive_minus_state(skill_id)
  2146.   end
  2147.   #--------------------------------------------------------------------------
  2148.   # ● 遗忘特技
  2149.   #     skill_id : 特技 ID
  2150.   #--------------------------------------------------------------------------
  2151.   def forget_skill(skill_id)
  2152.     return if @skills_lv == nil
  2153.     if @skill_lv[skill_id] < 2
  2154.       @skills.delete(skill_id)
  2155.       @skills_lv[skill_id] = 0
  2156.       @skills_lv[0] +=1
  2157.       for i in 0...@unactive[0].size
  2158.         @unactive[0][i] = 0
  2159.       end
  2160.       @unactive[1][i] = 0
  2161.       unactive_plus_state(skill_id,false)
  2162.     else
  2163.       n = unactive_change(skill_id)
  2164.       for i in 0...@unactive[0].size
  2165.         @unactive[0][i] -= n[i]
  2166.       end
  2167.       @skills_lv[skill_id] -= 1
  2168.       @skills_lv[0] +=1
  2169.     end
  2170.     @unactive[1] -= unactive_el_change(skill_id)
  2171.     @unactive[3] -= unactive_minus_state(skill_id)
  2172.    
  2173.   end
  2174.   #--------------------------------------------------------------------------
  2175.   # ● 被动属性更改
  2176.   #     
  2177.   #--------------------------------------------------------------------------
  2178.   def unactive_change(skill_id ,learn = true)
  2179.     skill = $data_skills[skill_id]
  2180.    return [0,0,0,0,0,0,0,0,0,0,0] if skill.occasion != 3
  2181.     if learn
  2182.            #  MAX_HP               MAX_SP           攻击
  2183.       n = [skill.power_up(2),skill.sp_cost_up(2),skill.atk_f_up(2),
  2184.           # 回避          力量                 技巧
  2185.       skill.eva_f_up(2),skill.str_f_up(2),skill.dex_f_up(2),
  2186.            #速度             魔力              命中           防御                  魔防
  2187.       skill.agi_f_up(2),skill.int_f_up(2),skill.hit_up(2),skill.pdef_f_up(2),skill.mdef_f_up(2)]
  2188.     else
  2189.           #  MAX_HP     MAX_SP    攻击
  2190.       n = [skill.power,skill.sp_cost,skill.atk_f,
  2191.           # 回避        力量      技巧
  2192.       skill.eva_f,skill.str_f,skill.dex_f,
  2193.            #速度     魔力       命中        防御     魔防
  2194.       skill.agi_f,skill.int_f,skill.hit,skill.pdef_f,skill.mdef_f]
  2195.     end
  2196.    return n
  2197.   end
  2198.   #--------------------------------------------------------------------------
  2199.   # ● 被动属性有效度更改
  2200.   #     
  2201.   #--------------------------------------------------------------------------
  2202.   def unactive_el_change(skill_id ,learn = true)
  2203.     skill = $data_skills[skill_id]
  2204.     return [] if skill.occasion != 3
  2205.     n = skill.element_set
  2206.     return n
  2207.   end
  2208.   #--------------------------------------------------------------------------
  2209.   # ● 被动状态附加
  2210.   #     直接附加不生成数组
  2211.   #--------------------------------------------------------------------------
  2212.   def unactive_plus_state(skill_id ,learn = true)
  2213.     skill = $data_skills[skill_id]
  2214.     return [] if skill.occasion != 3
  2215.     n = skill.plus_state_set
  2216.     if learn
  2217.       for i in n
  2218.         remove_state(i, true)
  2219.       end
  2220.     else
  2221.       for i in n
  2222.         add_state(i, true)
  2223.       end
  2224.    
  2225.     end
  2226.     return
  2227.   end
  2228.   #--------------------------------------------------------------------------
  2229.   # ● 被动状态抵抗
  2230.   #     
  2231.   #--------------------------------------------------------------------------
  2232.   def unactive_minus_state(skill_id ,learn = true)
  2233.     skill = $data_skills[skill_id]
  2234.     return [] if skill.occasion != 3
  2235.     n = skill.minus_state_set
  2236.     return n
  2237.   end
  2238.   #--------------------------------------------------------------------------
  2239.   # ● 获取基本 MaxHP
  2240.   #--------------------------------------------------------------------------
  2241.   alias swtf_base_maxhp base_maxhp
  2242.   def base_maxhp
  2243.      n = swtf_base_maxhp
  2244.      n += @unactive[0][0]
  2245.   end
  2246.   #--------------------------------------------------------------------------
  2247.   # ● 获取基本 MaxSP
  2248.   #--------------------------------------------------------------------------
  2249.   alias swtf_base_maxsp base_maxsp
  2250.   def base_maxsp
  2251.     n = swtf_base_maxsp
  2252.     n += @unactive[0][1]
  2253.     return n
  2254.   end
  2255.   #--------------------------------------------------------------------------
  2256.   # ● 获取基本力量
  2257.   #--------------------------------------------------------------------------
  2258.   alias swtf_base_str base_str
  2259.   def base_str
  2260.     n = swtf_base_str
  2261.     n += @unactive[0][4]
  2262.     return n
  2263.   end
  2264.   #--------------------------------------------------------------------------
  2265.   # ● 获取基本灵巧
  2266.   #--------------------------------------------------------------------------
  2267.   alias swtf_base_dex base_dex
  2268.   def base_dex
  2269.    n = swtf_base_dex
  2270.    n+= @unactive[0][5]
  2271.    return n
  2272.   end
  2273.   #--------------------------------------------------------------------------
  2274.   # ● 获取基本速度
  2275.   #--------------------------------------------------------------------------
  2276.   alias swtf_base_agi base_agi
  2277.   def base_agi
  2278.     n = swtf_base_agi
  2279.     n+= @unactive[0][6]
  2280.     return n
  2281.   end
  2282.   #--------------------------------------------------------------------------
  2283.   # ● 获取基本魔力
  2284.   #--------------------------------------------------------------------------
  2285.   alias swtf_base_int base_int
  2286.   def base_int
  2287.     n = swtf_base_int
  2288.     n+=  @unactive[0][7]
  2289.     return n
  2290.   end
  2291.   #--------------------------------------------------------------------------
  2292.   # ● 获取基本攻击力
  2293.   #--------------------------------------------------------------------------
  2294.   alias swtf_base_atk base_atk
  2295.   def base_atk
  2296.     n = swtf_base_atk
  2297.     n += @unactive[0][2]
  2298.     return n
  2299.    
  2300.   end
  2301.   #--------------------------------------------------------------------------
  2302.   # ● 获取基本物理防御
  2303.   #--------------------------------------------------------------------------
  2304.   alias swtf_base_pdef base_pdef
  2305.   def base_pdef
  2306.     n = swtf_base_pdef
  2307.     n+= @unactive[0][9]
  2308.     return n
  2309.   end
  2310.   #--------------------------------------------------------------------------
  2311.   # ● 获取基本魔法防御
  2312.   #--------------------------------------------------------------------------
  2313.   alias swtf_base_mdef base_mdef
  2314.   def base_mdef
  2315.     n = swtf_base_mdef
  2316.     n+= @unactive[0][10]
  2317.     return n
  2318.   end
  2319.   #--------------------------------------------------------------------------
  2320.   # ● 获取基本回避修正
  2321.   #--------------------------------------------------------------------------
  2322.   alias swtf_base_eva base_eva
  2323.   def base_eva
  2324.     n = swtf_base_eva
  2325.     n+= @unactive[0][3]
  2326.   end
  2327.   #--------------------------------------------------------------------------
  2328.   # ● 更新自动状态
  2329.   #     old_armor : 卸下防具
  2330.   #     new_armor : 装备防具
  2331.   #--------------------------------------------------------------------------
  2332.   
  2333.   def update_auto_state(old_armor, new_armor)
  2334.     # 强制解除卸下防具的自动状态
  2335.     if old_armor != nil and old_armor.auto_state_id != 0
  2336.       remove_state(old_armor.auto_state_id, true)
  2337.     end
  2338.     # 强制附加装备防具的自动状态
  2339.     if new_armor != nil and new_armor.auto_state_id != 0
  2340.       add_state(new_armor.auto_state_id, true)
  2341.     end
  2342.   end
  2343.   #--------------------------------------------------------------------------
  2344.   # ● 取得属性修正值
  2345.   #     element_id : 属性 ID
  2346.   #--------------------------------------------------------------------------
  2347.   alias swtf_element_rate element_rate
  2348.   def element_rate(element_id)
  2349.     n = swtf_element_rate
  2350.     s = 0
  2351.     for i in @unactive[1]
  2352.      s+=1 if i == element_id
  2353.     end
  2354.     n = [n- s*20,0].max
  2355.     return n
  2356.   end
  2357.   
  2358. end
复制代码
召唤方法:
角色 = $game_party.actors[0]
$scene = Scene_Skill_Up.new(角色)
#后面那个角色是新添加上去的

点评

wrong number arguments (0 for 1) 请教修改方法……  发表于 2012-6-3 14:50

评分

参与人数 1星屑 +60 收起 理由
hcm + 60 感谢回答

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
29 小时
注册时间
2011-12-9
帖子
60
5
 楼主| 发表于 2012-6-2 21:16:39 | 只看该作者
……楼上的是什么?解释一下吧……包括哪些功能?


‘‘──398712048于2012-6-2 21:16补充以下内容:

……楼上的是什么?解释一下吧……包括哪些功能?
’’


‘‘──398712048于2012-6-3 13:50补充以下内容:

貌似不行。。。不知道是不是冲突
’’

点评

技能树、技能加点、被动技能  发表于 2012-6-2 21:18
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 03:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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