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

Project1

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

[已经解决] 如何修改这个《技能CP制》脚本可以达到我的目的

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
237 小时
注册时间
2014-9-14
帖子
38
跳转到指定楼层
1
发表于 2015-4-5 19:09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 VIPArcher 于 2015-4-6 09:53 编辑

这个脚本是技能SP系统
我想要的效果是
比如 技能类型1是特技
       技能类型2是魔法
    技能类型3是XXX
然后怎么改成 只有XXX才用到这个脚本
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/                ◆ 技能SP点--让技能像装备一样装备吧~
  3. #_/
  4. #_/  看到了VX中KGC的技能CP制脚本,然后到KGC和6R找了好久都没找到ACE版本,就参照着
  5. #_/  KGCVX版的思路移植了个技能SP的脚本~
  6. #_/  功能:
  7. #_/   让技能像装备一样装备,只有装备后的技能可以在战斗中使用。
  8. #_/   技能可在备注设定消耗的SP,角色升级可增加SP,装备也可追加SP(或者扣除SP上限)。
  9. #_/   可定义技能栏上限,这样即使SP再多也只能携带特定数目技能。
  10. #_/                                                            ---千叶玖濑
  11. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  12.  
  13. #==============================================================================
  14. # ☆系统设置
  15. #==============================================================================
  16. module Kunase
  17. module Skill_SP
  18.   # ◆ 技能栏最大空位
  19.   MAX_SKILLS = 7
  20.   # ◆ SP 的名字
  21.   VOCAB_SP   = "SP"
  22.   # ◆ SP 的简称
  23.   VOCAB_SP_A = "技"
  24.   # ◆ 在角色状态中显示SP数值(适合默认菜单)
  25.   SHOW_STATUS_SP = true
  26.   # ◆ 未设定消耗SP的技能,默认消耗的SP值。
  27.   DEFAULT_SP_COST = 1
  28.   # ◆ 人物升级所获得得SP值上限
  29.   SP_MAX = 25
  30.   # ◆ 人物SP值下限
  31.   SP_MIN = 0
  32.   # ◆ 本来的SP加上装备提供的SP上限
  33.   REVISED_SP_MAX = 25
  34.   # ◆ 经过装备扣除后的SP下限
  35.   REVISED_SP_MIN = 0
  36.   # ◆通用的SP最大值的计算公式
  37.   #   level代表角色当前等级
  38.   #   结果自动取整
  39.   SP_ABOUT_EXP = "level * 0.6 + 1.0"
  40.   # ◆ 对于特定角色角色最大SP计算公式
  41.   #   PERSONAL_SP_ABOUT_EXP[角色 ID] = "公式"
  42.   #   公式格式和最大值计算公式举例如下
  43.   PERSONAL_SP_ABOUT_EXP = [] # 此行不要改动
  44.   PERSONAL_SP_ABOUT_EXP[1] = "level * 1.0 - 10.0"
  45.   PERSONAL_SP_ABOUT_EXP[3] = "level * 1.0 + 5.0"
  46.   # ◆ 在技能装备栏中允许显示不可使用的技能
  47.   SHOW_UNUSABLE_SKILL    = true
  48.   # ◆ 新学习到的技能自动装备
  49.   AUTO_SET_NEW_SKILL     = true
  50.   # ◆ SP 最小值时的颜色
  51.   #  (数值为\C[n]表示的颜色)
  52.   GAUGE_START_COLOR = 13
  53.   # ◆ SP 最大值时的颜色
  54.   GAUGE_END_COLOR   = 5
  55.   # ◆ 菜单中进入技能SP的名称
  56.   VOCAB_MENU_SET_SKILL = "魔装"
  57.   # ◆ 未设定技能时显示的名称
  58.   BLANK_TEXT   = "-   空技能框   -"
  59.   # ◆ 技能解除时候显示的名称
  60.   RELEASE_TEXT = "( 解除技能 )"
  61. end
  62. end
  63. #==============================================================================
  64. # ☆对于在数据库备注中的设定方法~
  65. #==============================================================================
  66. module Kunase::Skill_SP
  67.   module Regexp
  68.     module BaseItem
  69.       # 最大SP增加:在装备栏备注中填写<最大SP X>或<MAXSP X>(X可为负数)
  70.       MAXSP_PLUS = /<(?:MAX|最大)SP\s*([\-\+]?\d+)>/
  71.       # 技能框增加:在装备栏备注中填写<技能栏追加 X>
  72.       BATTLE_SKILL_MAX = /<(?:BATTLE_SKILL_MAX|技能栏追加)\s*([\-\+]?\d+)>/i
  73.     end
  74.     module Skill
  75.       # 消费SP设定 :在技能备注中填写<SP X>
  76.       SP_COST = /<SP\s*(\d+)>/i
  77.     end
  78.   end
  79. end
  80. #==============================================================================
  81. ## ☆ Game_Interpreter----用事件脚本来获取SP的方法~
  82. #==============================================================================
  83. module Skill_SP
  84.   #--------------------------------------------------------------------------
  85.   # ○ 获得角色SP最大值
  86.   #     actor_id    : 角色编号
  87.   #     variable_id : SP赋值的变量号(不填则不代入)
  88.   #--------------------------------------------------------------------------
  89.   def get_actor_sp(actor_id, variable_id = 0)
  90.     value = $game_actors[actor_id].maxsp_plus
  91.     $game_variables[variable_id] = value if variable_id > 0
  92.     return value
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ○ 变更角色SP最大值
  96.   #     actor_id : 角色编号
  97.   #     value    : 变更后的SP最大值
  98.   #--------------------------------------------------------------------------
  99.   def set_actor_sp(actor_id, value)
  100.     $game_actors[actor_id].maxsp_plus = value
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ○ 角色最大SP增加
  104.   #     actor_id : 角色编号
  105.   #     value    : SP最大值增加量
  106.   #--------------------------------------------------------------------------
  107.   def gain_actor_sp(actor_id, value)
  108.     $game_actors[actor_id].maxsp_plus += value
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ○ 技能栏最大数获得
  112.   #     actor_id : 角色编号
  113.   #     variable_id : 技能栏最大数赋值的变量号(不填则不代入)
  114.   #--------------------------------------------------------------------------
  115.   def get_battle_skill_max(actor_id, variable_id = 0)
  116.     value = $game_actors[actor_id].battle_skill_max
  117.     $game_variables[variable_id] = value if variable_id > 0
  118.     return value
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ○ 技能栏最大数变更
  122.   #     actor_id : 角色ID
  123.   #     value    : 变更后的技能栏数目
  124.   #--------------------------------------------------------------------------
  125.   def set_battle_skill_max(actor_id, value = -1)
  126.     $game_actors[actor_id].battle_skill_max = value
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ○ 确认某技能是否已装备
  130.   #     actor_id : 角色ID
  131.   #     skill_id : 技能ID
  132.   #--------------------------------------------------------------------------
  133.   def battle_skill_set?(actor_id, skill_id)
  134.     return $game_actors[actor_id].battle_skill_ids.include?(skill_id)
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ○ 装备技能
  138.   #     actor_id : 角色编号
  139.   #     index    : 装备的技能栏位
  140.   #     skill_id : 技能ID(nil则为解除装备)
  141.   #--------------------------------------------------------------------------
  142.   def set_battle_skill(actor_id, index, skill_id = nil)
  143.     actor = $game_actors[actor_id]
  144.     if skill_id.is_a?(Integer)
  145.       # 装备
  146.       skill = $data_skills[skill_id]
  147.       return unless actor.battle_skill_settable?(index, skill)  # 无法装备
  148.       actor.set_battle_skill(index, skill)
  149.       actor.restore_battle_skill
  150.     else
  151.       # 解除
  152.       actor.remove_battle_skill(index)
  153.     end
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ○ 直接装备某技能
  157.   #     actor_id : 角色编号
  158.   #     skill_id : 技能编号
  159.   #--------------------------------------------------------------------------
  160.   def add_battle_skill(actor_id, skill_id)
  161.     actor = $game_actors[actor_id]
  162.     skill = $data_skills[skill_id]
  163.     return if actor == nil || skill == nil
  164.     actor.add_battle_skill(skill)
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ○ 卸下全部技能
  168.   #     actor_id : 角色编号
  169.   #--------------------------------------------------------------------------
  170.   def clear_battle_skill(actor_id)
  171.     $game_actors[actor_id].clear_battle_skill
  172.   end
  173.   end
  174.   class Game_Interpreter
  175.     include Skill_SP
  176.   end
  177. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  178.  
  179.  
  180. #==============================================================================
  181. # ■ RPG::BaseItem
  182. #==============================================================================
  183.  
  184. class RPG::BaseItem
  185.   #--------------------------------------------------------------------------
  186.   # ○ 读取装备备注
  187.   #--------------------------------------------------------------------------
  188.   def create_skill_sp_system_cache
  189.     @__maxsp_plus = 0
  190.     @__battle_skill_max_plus = 0
  191.     self.note.each_line { |line|
  192.       case line
  193.       when Kunase::Skill_SP::Regexp::BaseItem::MAXSP_PLUS
  194.         @__maxsp_plus += $1.to_i
  195.       when Kunase::Skill_SP::Regexp::BaseItem::BATTLE_SKILL_MAX
  196.         @__battle_skill_max_plus += $1.to_i
  197.       end
  198.     }
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ○ 最大 SP
  202.   #--------------------------------------------------------------------------
  203.   def maxsp_plus
  204.     create_skill_sp_system_cache if @__maxsp_plus == nil
  205.     return @__maxsp_plus
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ○ 技能框追加
  209.   #--------------------------------------------------------------------------
  210.   def battle_skill_max_plus
  211.     create_skill_sp_system_cache if @__battle_skill_max_plus == nil
  212.     return @__battle_skill_max_plus
  213.   end
  214. end
  215. #==============================================================================
  216. # ■ RPG::Skill
  217. #==============================================================================
  218. class RPG::Skill < RPG::UsableItem
  219.   #--------------------------------------------------------------------------
  220.   # ○ 技能SP生成
  221.   #--------------------------------------------------------------------------
  222.   def create_skill_sp_system_cache
  223.     @__sp_cost = Kunase::Skill_SP::DEFAULT_SP_COST
  224.     self.note.each_line { |line|
  225.       case line
  226.       when Kunase::Skill_SP::Regexp::Skill::SP_COST
  227.         # 消费SP
  228.         @__sp_cost = $1.to_i
  229.       end
  230.     }
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ○ 消費 SP
  234.   #--------------------------------------------------------------------------
  235.   def sp_cost
  236.     create_skill_sp_system_cache if @__sp_cost == nil
  237.     return @__sp_cost
  238.   end
  239. end
  240. #==============================================================================
  241. # ■ Vocab
  242. #==============================================================================
  243. module Vocab
  244.   #SP
  245.   def self.sp
  246.     return Kunase::Skill_SP::VOCAB_SP
  247.   end
  248.   #SP略
  249.   def self.sp_a
  250.     return Kunase::Skill_SP::VOCAB_SP_A
  251.   end
  252.   # 技能设定
  253.   def self.set_battle_skill
  254.     return Kunase::Skill_SP::VOCAB_MENU_SET_SKILL
  255.   end
  256. end
  257. #==============================================================================
  258. # ■ Game_Battler
  259. #==============================================================================
  260.  
  261. class Game_Battler
  262.   #--------------------------------------------------------------------------
  263.   # ○ 战斗技能配置确定
  264.   #--------------------------------------------------------------------------
  265.   def battle_skill_set?(skill)
  266.     return true
  267.   end
  268. end
  269.  
  270. #==============================================================================
  271. # ■ Game_Actor
  272. #==============================================================================
  273.  
  274. class Game_Actor < Game_Battler
  275.   #--------------------------------------------------------------------------
  276.   # ● 实例变量
  277.   #--------------------------------------------------------------------------
  278.   attr_writer   :maxsp_plus               # 最大SP补正值
  279.   #--------------------------------------------------------------------------
  280.   # ○ MaxSP 取得
  281.   #--------------------------------------------------------------------------
  282.   def maxsp
  283.     about_exp = Kunase::Skill_SP::PERSONAL_SP_ABOUT_EXP[self.id]
  284.     if about_exp == nil
  285.       about_exp = Kunase::Skill_SP::SP_ABOUT_EXP
  286.     end
  287.     n = Integer(eval(about_exp))
  288.     n = [[n, sp_limit].min, Kunase::Skill_SP::SP_MIN].max
  289.     n += maxsp_plus + maxsp_plus_equip
  290.     return [[n, revised_sp_limit].min, Kunase::Skill_SP::REVISED_SP_MIN].max
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ○ SP 取得
  294.   #--------------------------------------------------------------------------
  295.   def sp
  296.     return [maxsp - consumed_sp, 0].max
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ○ SP 消耗量取得
  300.   #--------------------------------------------------------------------------
  301.   def consumed_sp
  302.     n = 0
  303.     battle_skills.compact.each { |skill| n += skill.sp_cost }
  304.     return n
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ○ SP 上限取得
  308.   #--------------------------------------------------------------------------
  309.   def sp_limit
  310.     return Kunase::Skill_SP::SP_MAX
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ○ 补正后SP上限获得
  314.   #--------------------------------------------------------------------------
  315.   def revised_sp_limit
  316.     return Kunase::Skill_SP::REVISED_SP_MAX
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ○ 补正值获得
  320.   #--------------------------------------------------------------------------
  321.   def maxsp_plus
  322.     if @maxsp_plus == nil
  323.       if @own_sp != nil
  324.         @maxsp_plus = @own_sp
  325.         @own_sp = nil
  326.       else
  327.         @maxsp_plus = 0
  328.       end
  329.     end
  330.     return @maxsp_plus
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ○ 装备补正
  334.   #--------------------------------------------------------------------------
  335.   def maxsp_plus_equip
  336.     n = 0
  337.     equips.compact.each { |item| n += item.maxsp_plus }
  338.     return n
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 技能取得
  342.   #--------------------------------------------------------------------------
  343.   alias skills_SkillSP skills
  344.   def skills
  345.     return (skill_sp_restrict? ? restricted_skills : skills_SkillSP)
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ○ 战斗测试
  349.   #--------------------------------------------------------------------------
  350.   def skill_sp_restrict?
  351.     if $game_party.in_battle
  352.     return true unless $BTEST
  353.     end
  354.     return false
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ○ 技能限制
  358.   #--------------------------------------------------------------------------
  359.   def restricted_skills
  360.     # 战斗技能加入
  361.     result = battle_skills
  362.     result.sort! { |a, b| a.id <=> b.id }
  363.     return result
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ○ 全部技能取得
  367.   #--------------------------------------------------------------------------
  368.   def all_skills
  369.     last_in_battle = $game_party.in_battle
  370.     $game_party.in_battle = false
  371.     result = skills_SkillSP
  372.     $game_party.in_battle = last_in_battle
  373.     return result
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ○ 技能栏最大数取得
  377.   #--------------------------------------------------------------------------
  378.   def battle_skill_max
  379.     @battle_skill_max = -1 if @battle_skill_max == nil
  380.     n = (@battle_skill_max < 0 ?
  381.       Kunase::Skill_SP::MAX_SKILLS : @battle_skill_max)
  382.     n += equipment_battle_skill_max_plus
  383.     return [n, 0].max
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # ○ 扩充技能栏
  387.   #--------------------------------------------------------------------------
  388.   def equipment_battle_skill_max_plus
  389.     n = 0
  390.     equips.compact.each { |item| n += item.battle_skill_max_plus }
  391.     return n
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ○ 技能栏最大值设定
  395.   #--------------------------------------------------------------------------
  396.   def battle_skill_max=(value)
  397.     @battle_skill_max = value
  398.     if @battle_skills == nil
  399.       @battle_skills = []
  400.     else
  401.       @battle_skills = @battle_skills[0...value]
  402.     end
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ○ 战斗使用技能ID
  406.   #--------------------------------------------------------------------------
  407.   def battle_skill_ids
  408.     @battle_skills = [] if @battle_skills == nil
  409.     return @battle_skills
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # ○ 战斗用技能取得
  413.   #--------------------------------------------------------------------------
  414.   def battle_skills
  415.     result = []
  416.     battle_skill_ids.each { |i|
  417.       next if i == nil           
  418.       result << $data_skills[i]
  419.     }
  420.     return result
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ○ 战斗技能登陆
  424.   #     index : 位置
  425.   #     skill : 技能编号
  426.   #--------------------------------------------------------------------------
  427.   def set_battle_skill(index, skill)
  428.     if skill == nil
  429.       @battle_skills[index] = nil
  430.     else
  431.       return unless skill.is_a?(RPG::Skill)  
  432.       return if sp < skill.sp_cost           
  433.       @battle_skills[index] = skill.id
  434.     end
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ○ 战斗技能追加
  438.   #     skill : 技能
  439.   #--------------------------------------------------------------------------
  440.   def add_battle_skill(skill)
  441.     return unless skill.is_a?(RPG::Skill)  
  442.     skills = battle_skill_ids
  443.     return if skills.include?(skill.id)   
  444.     return if sp < skill.sp_cost           
  445.     battle_skill_max.times { |i|
  446.       if skills[i] == nil
  447.         set_battle_skill(i, skill)
  448.         break
  449.       end
  450.     }
  451.     restore_battle_skill
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ○ 战斗技能解除
  455.   #     index : 位置
  456.   #--------------------------------------------------------------------------
  457.   def remove_battle_skill(index)
  458.     @battle_skills[index] = nil
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ○ 战斗技能全部解除
  462.   #--------------------------------------------------------------------------
  463.   def clear_battle_skill
  464.     @battle_skills = []
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ○ 技能能否设置判定
  468.   #     index : 位置
  469.   #     skill : 技能
  470.   #--------------------------------------------------------------------------
  471.   def battle_skill_settable?(index, skill)
  472.     return false if battle_skill_max <= index  # 超出范围
  473.     return true  if skill == nil               # 解除技能
  474.     return false if battle_skill_ids.include?(skill.id)  #已经设定
  475.     skill_id = battle_skill_ids[index]
  476.     curr_skill = (skill_id != nil ? $data_skills[skill_id] : nil)
  477.     offset = (curr_skill != nil ? curr_skill.sp_cost : 0)
  478.     return false if self.sp < (skill.sp_cost - offset)  # SP 不足
  479.     return true
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ○ 战斗技能存储
  483.   #--------------------------------------------------------------------------
  484.   def restore_battle_skill
  485.     result = battle_skill_ids.clone
  486.     usable_skills = all_skills
  487.     result.each_with_index { |n, i|
  488.       next if n == nil
  489.       # 未学习的情况
  490.       if (usable_skills.find { |s| s.id == n }) == nil
  491.         result[i] = nil
  492.       end
  493.     }
  494.     @battle_skills = result[0...battle_skill_max]
  495.     # SP不足的时候排除
  496.     (battle_skill_max - 1).downto(0) { |i|
  497.       @battle_skills[i] = nil if maxsp - consumed_sp < 0
  498.     }
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● 换装备的时候
  502.   #     equip_type : 装备部位
  503.   #     item       : 道具
  504.   #     test       : 在战斗测试中
  505.   #--------------------------------------------------------------------------
  506.   alias change_equip_SkillSP change_equip
  507.   def change_equip(equip_type, item, test = false)
  508.     change_equip_SkillSP(equip_type, item)
  509.       restore_battle_skill
  510.   end
  511.   #--------------------------------------------------------------------------
  512.   # ● 装备丢弃时
  513.   #--------------------------------------------------------------------------
  514.   alias discard_equip_SkillSP discard_equip
  515.   def discard_equip(item)
  516.     discard_equip__SkillSP(item)
  517.      restore_battle_skill
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● 经验变更
  521.   #--------------------------------------------------------------------------
  522.   alias change_exp_SP change_exp
  523.   def change_exp(exp, show)
  524.     last_in_battle = $game_party.in_battle
  525.     $game_party.in_battle = false
  526.  
  527.     change_exp_SP(exp, show)
  528.  
  529.     $game_party.in_battle = last_in_battle
  530.   end
  531.   if Kunase::Skill_SP::AUTO_SET_NEW_SKILL
  532.    alias learn_skill_SP learn_skill
  533.   def learn_skill(skill_id)
  534.     learn_skill_SP(skill_id)
  535.     add_battle_skill($data_skills[skill_id])
  536.   end
  537.   end  
  538.   #--------------------------------------------------------------------------
  539.   # ● 技能遗忘
  540.   #--------------------------------------------------------------------------
  541.   alias forget_skill_SkillSP forget_skill
  542.   def forget_skill(skill_id)
  543.     # 忘れるスキルを戦闘用スキルから削除
  544.     battle_skill_ids.each_with_index { |s, i|
  545.       remove_battle_skill(i) if s == skill_id
  546.     }
  547.     forget_skill_SkillSP(skill_id)
  548.   end
  549.   #--------------------------------------------------------------------------
  550.   # ● 判定技能是否装备
  551.   #--------------------------------------------------------------------------
  552.   def battle_skill_set?(skill)
  553.     return false unless skill.is_a?(RPG::Skill)
  554.     return battle_skill_ids.include?(skill.id)
  555.   end
  556. end
  557.  
  558. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  559.  
  560. #==============================================================================
  561. # ■ Window_Base
  562. #==============================================================================
  563.  
  564. class Window_Base < Window
  565.   #--------------------------------------------------------------------------
  566.   # ○ SP颜色取得
  567.   #--------------------------------------------------------------------------
  568.   def sp_color(actor)
  569.     return knockout_color if actor.maxsp > 0 && actor.sp == 0
  570.     return normal_color
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ○ SP渐变色1
  574.   #--------------------------------------------------------------------------
  575.   def sp_gauge_color1
  576.     color = Kunase::Skill_SP::GAUGE_START_COLOR
  577.     return (color.is_a?(Integer) ? text_color(color) : color)
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ○ SP渐变色2
  581.   #--------------------------------------------------------------------------
  582.   def sp_gauge_color2
  583.     color = Kunase::Skill_SP::GAUGE_END_COLOR
  584.     return (color.is_a?(Integer) ? text_color(color) : color)
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ○ SP描绘
  588.   #--------------------------------------------------------------------------
  589.   def draw_actor_sp(actor, x, y, width = 120)
  590.     draw_actor_sp_gauge(actor, x, y, width)
  591.     self.contents.font.color = system_color
  592.     self.contents.draw_text(x, y, 30, 24, Vocab::sp_a)
  593.     self.contents.font.color = sp_color(actor)
  594.     xr = x + width
  595.     if width < 120
  596.       self.contents.draw_text(xr - 40, y, 40, 24, actor.sp, 2)
  597.     else
  598.       self.contents.draw_text(xr - 90, y, 40, 24, actor.sp, 2)
  599.       self.contents.font.color = normal_color
  600.       self.contents.draw_text(xr - 50, y, 10, 24, "/", 2)
  601.       self.contents.draw_text(xr - 40, y, 40, 24, actor.maxsp, 2)
  602.     end
  603.     self.contents.font.color = normal_color
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ○ SP条描绘
  607.   #--------------------------------------------------------------------------
  608.   def draw_actor_sp_gauge(actor, x, y, width = 120)
  609.     gw = width * actor.sp / [actor.maxsp, 1].max
  610.     gs1 = sp_gauge_color1
  611.     gs2 = sp_gauge_color2
  612.     self.contents.fill_rect(x, y + 24 - 8, width, 6, gauge_back_color)
  613.     self.contents.gradient_fill_rect(x, y + 24 - 8, gw, 6, gs1, gs2)
  614.   end
  615. end
  616. #==============================================================================
  617. # ■ Window_Status
  618. #==============================================================================
  619.  
  620. if Kunase::Skill_SP::SHOW_STATUS_SP
  621. class Window_Status < Window_Selectable
  622.   #--------------------------------------------------------------------------
  623.   # ● 绘制基本信息
  624.   #--------------------------------------------------------------------------
  625.   alias draw_basic_info_SkillSP draw_basic_info
  626.   def draw_basic_info(x, y)
  627.     draw_basic_info_SkillSP(x, y)
  628.     draw_actor_sp(@actor, x, y + 24 * 4)
  629.   end
  630. end
  631. end
  632. #==============================================================================
  633. # □ Window_BattleSkillStatus
  634. #------------------------------------------------------------------------------
  635. #   显示基本信息的窗口
  636. #==============================================================================
  637.  
  638. class Window_BattleSkillStatus < Window_Base
  639.   #--------------------------------------------------------------------------
  640.   # ● 初始化
  641.   #--------------------------------------------------------------------------
  642.   def initialize(x, y, actor)
  643.     super(x, y, Graphics.width, 24 + 32)
  644.     @actor = actor
  645.     refresh
  646.   end
  647.   #--------------------------------------------------------------------------
  648.   # ● 刷新
  649.   #--------------------------------------------------------------------------
  650.   def refresh
  651.     self.contents.clear
  652.     draw_actor_name(@actor, 4, 0)
  653.     draw_actor_level(@actor, 140, 0)
  654.     draw_actor_sp(@actor, 240, 0)
  655.   end
  656. end
  657. #==============================================================================
  658. # □ Window_BattleSkillSlot
  659. #------------------------------------------------------------------------------
  660. #   已装备的技能窗口。
  661. #==============================================================================
  662.  
  663. class Window_BattleSkillSlot < Window_Selectable
  664.   #--------------------------------------------------------------------------
  665.   # ● 初始化
  666.   #--------------------------------------------------------------------------
  667.   def initialize(x, y, width, height, actor)
  668.     super(x, y, width, height)
  669.     @actor = actor
  670.     @data = []
  671.     self.index = 0
  672.     self.active = false
  673.     refresh
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ○ 获取最大值
  677.   #--------------------------------------------------------------------------
  678.   def item_max
  679.     @data ? @data.size : 1
  680.   end
  681.   #--------------------------------------------------------------------------
  682.   # ○ 获取技能
  683.   #--------------------------------------------------------------------------
  684.   def skill
  685.     return @data[self.index]
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 刷新
  689.   #--------------------------------------------------------------------------
  690.   def refresh
  691.     @data=[]
  692.         skill_ids = @actor.battle_skill_ids
  693.     @actor.battle_skill_max.times { |i|
  694.       if skill_ids[i] != nil
  695.         @data << $data_skills[skill_ids[i]]
  696.       else
  697.         @data << nil
  698.       end
  699.     }
  700.     create_contents
  701.     draw_all_items
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   # ○ 绘制内容
  705.   #--------------------------------------------------------------------------
  706.   def draw_item(index)
  707.     rect = item_rect(index)
  708.     self.contents.clear_rect(rect)
  709.     skill = @data[index]
  710.     if skill != nil
  711.       rect.width -= 4
  712.       draw_item_name(skill, rect.x, rect.y)
  713.       self.contents.draw_text(rect, skill.sp_cost, 2)
  714.     else
  715.       self.contents.draw_text(rect, Kunase::Skill_SP::BLANK_TEXT, 1)
  716.     end
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ● 更新帮助窗口
  720.   #--------------------------------------------------------------------------
  721.   def update_help
  722.     @help_window.set_text(skill == nil ? "" : skill.description)
  723.   end
  724. end
  725. #==============================================================================
  726. # □ Window_BattleSkillList
  727. #------------------------------------------------------------------------------
  728. #   右侧显示技能列表的窗口。
  729. #==============================================================================
  730.  
  731. class Window_BattleSkillList < Window_Selectable
  732.   #--------------------------------------------------------------------------
  733.   # ● 定义实例变量
  734.   #--------------------------------------------------------------------------
  735.   attr_accessor :slot_index               # 技能栏编号
  736.   #--------------------------------------------------------------------------
  737.   # ● 初始化对象
  738.   #--------------------------------------------------------------------------
  739.   def initialize(x, y, width, height, actor)
  740.     super(x, y, width, height)
  741.     @actor = actor
  742.     @slot_index = 0
  743.     @data = []
  744.     self.index = 0
  745.     self.active = false
  746.     refresh
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # ○ 技能取得
  750.   #--------------------------------------------------------------------------
  751.   def skill
  752.     return @data[self.index]
  753.   end
  754.   #--------------------------------------------------------------------------
  755.   # ○ 最大技能数取得
  756.   #--------------------------------------------------------------------------
  757.   def item_max
  758.     @data ? @data.size : 1
  759.   end
  760.   #--------------------------------------------------------------------------
  761.   # ○ 显示技能列表
  762.   #--------------------------------------------------------------------------
  763.   def make_item_list
  764.     @data = [nil]
  765.     @actor.all_skills.each { |skill|
  766.       @data.push(skill) if selectable?(skill)
  767.     }
  768.   end
  769.   #--------------------------------------------------------------------------
  770.   # ● 刷新
  771.   #--------------------------------------------------------------------------
  772.   def refresh
  773.     make_item_list
  774.     create_contents
  775.     draw_all_items
  776.   end
  777.   #--------------------------------------------------------------------------
  778.   # ○ 技能可否选择判定
  779.   #--------------------------------------------------------------------------
  780.   def selectable?(skill)
  781.     return false if skill == nil
  782.     return true if skill.battle_ok?
  783.     if Kunase::Skill_SP::SHOW_UNUSABLE_SKILL && skill.occasion == 3
  784.       return true
  785.     end
  786.     return false
  787.   end
  788.   #--------------------------------------------------------------------------
  789.   # ○ 绘制项目
  790.   #--------------------------------------------------------------------------
  791.   def draw_item(index)
  792.     rect = item_rect(index)
  793.     self.contents.clear_rect(rect)
  794.     skill = @data[index]
  795.     if skill != nil
  796.       rect.width -= 4
  797.       enabled = @actor.battle_skill_settable?(@slot_index, skill)
  798.       draw_item_name(skill, rect.x, rect.y, enabled)
  799.       self.contents.draw_text(rect, skill.sp_cost, 2)
  800.     else
  801.       self.contents.draw_text(rect, Kunase::Skill_SP::RELEASE_TEXT, 1)
  802.     end
  803.   end
  804.   #--------------------------------------------------------------------------
  805.   # ● 更新帮助窗口
  806.   #--------------------------------------------------------------------------
  807.   def update_help
  808.     @help_window.set_text(skill == nil ? "" : skill.description)
  809.   end
  810. end
  811. #==============================================================================
  812. # □ Scene_SetBattleSkill
  813. #------------------------------------------------------------------------------
  814. #   技能设定的场景。
  815. #==============================================================================
  816.  
  817. class Scene_SetBattleSkill < Scene_MenuBase
  818.   #--------------------------------------------------------------------------
  819.   # ● 初始化
  820.   #--------------------------------------------------------------------------
  821.   def initialize(actor_index = 0, menu_index = 0)
  822.     @actor_index = actor_index
  823.     @menu_index = menu_index
  824.   end
  825.   #--------------------------------------------------------------------------
  826.   # ● 开始处理
  827.   #--------------------------------------------------------------------------
  828.   def start
  829.     super
  830.     create_background
  831.     @actor = $game_party.menu_actor
  832.     create_windows
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ○ 创建窗口
  836.   #--------------------------------------------------------------------------
  837.   def create_windows
  838.     @help_window = Window_Help.new
  839.     dy = @help_window.height
  840.     @status_window = Window_BattleSkillStatus.new(0, dy, @actor)
  841.  
  842.     dy += @status_window.height
  843.     @slot_window = Window_BattleSkillSlot.new(
  844.       0,
  845.       dy,
  846.       Graphics.width / 2,
  847.       Graphics.height - dy,
  848.       @actor)
  849.     @slot_window.help_window = @help_window
  850.     @slot_window.active = true
  851.  
  852.     @list_window = Window_BattleSkillList.new(
  853.       Graphics.width - @slot_window.width,
  854.       dy,
  855.       Graphics.width - @slot_window.width,
  856.       Graphics.height - dy,
  857.       @actor)
  858.     @list_window.help_window = @help_window
  859.   end
  860.   #--------------------------------------------------------------------------
  861.   # ● 结束处理
  862.   #--------------------------------------------------------------------------
  863.   def terminate
  864.     super
  865.     @help_window.dispose
  866.     @status_window.dispose
  867.     @slot_window.dispose
  868.     @list_window.dispose
  869.   end
  870.   #--------------------------------------------------------------------------
  871.   # ● 更新
  872.   #--------------------------------------------------------------------------
  873.   def update
  874.     super
  875.     if @slot_window.active
  876.       update_slot
  877.     elsif @list_window.active
  878.       update_list
  879.     end
  880.   end
  881.   #--------------------------------------------------------------------------
  882.   # ○ 刷新窗口
  883.   #--------------------------------------------------------------------------
  884.   def refresh_window
  885.     @status_window.refresh
  886.     @slot_window.refresh
  887.     @list_window.refresh
  888.   end
  889.   #--------------------------------------------------------------------------
  890.   # ○ 左侧窗口更新
  891.   #--------------------------------------------------------------------------
  892.   def update_slot
  893.     if @last_slot_index != @slot_window.index
  894.       @list_window.slot_index = @slot_window.index
  895.       @list_window.refresh
  896.       @last_slot_index = @slot_window.index
  897.     end
  898.     if Input.trigger?(Input::A)
  899.       Sound.play_ok
  900.       @actor.remove_battle_skill(@slot_window.index)
  901.       refresh_window
  902.     elsif Input.trigger?(Input::B)
  903.       Sound.play_cancel
  904.       SceneManager.return
  905.     elsif Input.trigger?(Input::C)
  906.       Sound.play_ok
  907.       # 切换活动窗口
  908.       @slot_window.active = false
  909.       @list_window.active = true
  910.     end
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # ○ 右侧窗口更新
  914.   #--------------------------------------------------------------------------
  915.   def update_list
  916.     if Input.trigger?(Input::B)
  917.       Sound.play_cancel
  918.       # 切换活动窗口
  919.       @slot_window.active = true
  920.       @list_window.active = false
  921.     elsif Input.trigger?(Input::C)
  922.       skill = @list_window.skill
  923.       # 无法设置的场合
  924.       unless @actor.battle_skill_settable?(@slot_window.index, skill)
  925.         Sound.play_buzzer
  926.         return
  927.       end
  928.       Sound.play_ok
  929.       set_skill(@slot_window.index, skill)
  930.       @slot_window.active = true
  931.       @list_window.active = false
  932.     end
  933.   end
  934.   #--------------------------------------------------------------------------
  935.   # ○ 设置技能
  936.   #--------------------------------------------------------------------------
  937.   def set_skill(index, skill)
  938.     @actor.remove_battle_skill(index)
  939.     if skill != nil
  940.       @actor.set_battle_skill(index, skill)
  941.     end
  942.     refresh_window
  943.   end
  944. end
  945. #==============================================================================
  946. # ■ Window_MenuCommand
  947. #------------------------------------------------------------------------------
  948. #  菜单画面中显示指令的窗口
  949. #==============================================================================
  950.  
  951. class Window_MenuCommand < Window_Command
  952.   alias add_main_commands_kunase add_main_commands
  953.   def add_main_commands
  954.     add_main_commands_kunase
  955.     add_command(Kunase::Skill_SP::VOCAB_MENU_SET_SKILL, :skillsp, main_commands_enabled)
  956.   end
  957. end
  958. #==============================================================================
  959. # ■ Scene_Menu
  960. #------------------------------------------------------------------------------
  961. #  菜单画面
  962. #==============================================================================
  963. class Scene_Menu < Scene_MenuBase
  964.   alias create_command_window_kunase create_command_window
  965.   def create_command_window
  966.     create_command_window_kunase
  967.     @command_window.set_handler(:skillsp,     method(:command_personal))
  968.   end
  969.   def on_personal_ok
  970.     case @command_window.current_symbol
  971.     when :skill
  972.       SceneManager.call(Scene_Skill)
  973.     when :equip
  974.       SceneManager.call(Scene_Equip)
  975.     when :status
  976.       SceneManager.call(Scene_Status)
  977.     when :skillsp
  978.       SceneManager.call(Scene_SetBattleSkill)
  979.       end
  980.     end
  981.   end
  982. #==============================================================================
  983. # ■ Game_Unit
  984. #------------------------------------------------------------------------------
  985. #  管理游戏单位的类。是 Game_Party 和 Game_Troop 类的父类。
  986. #==============================================================================
  987. class Game_Unit
  988.   #--------------------------------------------------------------------------
  989.   # ● 定义实例变量
  990.   #--------------------------------------------------------------------------
  991.   attr_accessor   :in_battle                # 战斗中的标志
  992. end

Lv5.捕梦者

梦石
0
星屑
22953
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2015-4-5 21:02:23 | 只看该作者
EnDlEss DREamER有把KGC的技能CP制脚本移殖到Ace
スキルCP制 - KGC_SkillCPSystem
http://mitsu-evo.6.ql.bz/RGSS3_16.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
237 小时
注册时间
2014-9-14
帖子
38
3
 楼主| 发表于 2015-4-5 21:47:50 | 只看该作者
tseyik 发表于 2015-4-5 21:02
EnDlEss DREamER有把KGC的技能CP制脚本移殖到Ace
スキルCP制 - KGC_SkillCPSystem
http://mitsu-evo.6.ql. ...

{:2_269:}  这个网站打不开
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
444 小时
注册时间
2011-1-3
帖子
151

开拓者

4
发表于 2015-4-5 22:07:36 | 只看该作者
这个是LSS提到的移植脚本,你说的是不是获得技能时不让技能变成可装备的技能,是的话就在技能备注栏里填上 <CP 0>,这样就会正常获得。
脚本

评分

参与人数 1星屑 +150 收起 理由
VIPArcher + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
237 小时
注册时间
2014-9-14
帖子
38
5
 楼主| 发表于 2015-4-5 22:24:22 | 只看该作者
漫漫人生路 发表于 2015-4-5 22:07
这个是LSS提到的移植脚本,你说的是不是获得技能时不让技能变成可装备的技能,是的话就在技能备注栏里填上  ...

谢谢就是这样!!!太感谢你了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 00:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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