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

Project1

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

[已经解决] 熟练度脚本,求给指定角色增减ap的代码。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2009-7-25
帖子
201
跳转到指定楼层
1
发表于 2011-4-14 14:21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个脚本是用于技能熟练度的,使用特定装备杀死敌人获得ap,达到上限则学会该技能
由于我是ARPG系统,没有通常的“死亡”,所以不起作用。
求给指定角色增减ap的代码。
试过 $game_actors[1].gain_ap(1, false),不起作用
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ スキル習得装備 - KGC_EquipLearnSkill ◆ VX ◆
  3. #_/    ◇ Last update : 2009/09/26 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  スキルを習得する装備品を作成します。
  6. #_/============================================================================
  7. #_/ 【スキル】≪スキルCP制≫ より上に導入してください。
  8. #_/ 【メニュー】≪拡張装備画面≫ より上に導入してください。
  9. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  10. $data_system = load_data("Data/System.rvdata") if $data_system == nil

  11. #==============================================================================
  12. # ★ カスタマイズ項目 - Customize ★
  13. #==============================================================================

  14. module KGC
  15. module EquipLearnSkill
  16.   # ◆ AP 值名称设定
  17.   #  游戏中AP值的名称。
  18.   VOCAB_AP     = "AP"
  19.   # ◆ AP 的默认値
  20.   #  没有设定AP时使用的默认AP值。
  21.   DEFAULT_AP   = 1
  22.   # ◆ 装備しただけでは習得しない
  23.   #  true  : AP が溜まるまで使用不能
  24.   #  false : 装備するだけで使用可能
  25.   NEED_FULL_AP = false

  26.   # ◆ 战斗结果画面获得 AP的显示
  27.   #  %s : 获取的 AP值
  28.   VOCAB_RESULT_OBTAIN_AP         = "#{VOCAB_AP} を %s 獲得!"
  29.   # ◆ 战斗结果画面在学会技能时显示的消息
  30.   #  %s : 技能名字
  31.   VOCAB_RESULT_MASTER_SKILL      = "学会了%s"
  32.   # ◆ 战斗结果画面已掌握技能时显示的消息
  33.   #  %s : 掌握技能的名字
  34.   VOCAB_RESULT_MASTER_SKILL_NAME = "%s已经掌握!"

  35.   # ◆ 菜单画面的「AP查看」命令的追加显示
  36.   #  追加显示的位置、菜单指令的最下部。
  37.   #  他の部分に追加したければ、≪カスタムメニューコマンド≫ をご利用ください。
  38.   USE_MENU_AP_VIEWER_COMMAND = true
  39.   # ◆ 菜单画面的「AP 查看」命令的名称
  40.   VOCAB_MENU_AP_VIEWER       = "#{VOCAB_AP} ビューア"

  41.   # ◆ 专家级(完全習得)技能的 AP栏
  42.   VOCAB_MASTER_SKILL      = "- MASTER -"
  43.   # ◆ 蓄积 AP 为 0 的技能 AP 查看表示
  44.   SHOW_ZERO_AP_SKILL      = true
  45.   # ◆ 蓄积AP 为 0 的技能隐藏名字
  46.   MASK_ZERO_AP_SKILL_NAME = true
  47.   # ◆ 蓄积AP 为 0 的技能隐藏名字时的显示字符
  48.   #  设定某个1长度的字符、将自动扩张为与技能名字相等的长度。
  49.   ZERO_AP_NAME_MASK       = "?"
  50.   # ◆ 蓄积 AP 为 0 的技能隐藏说明文字
  51.   HIDE_ZERO_AP_SKILL_HELP = true
  52.   # ◆ 蓄积 AP 为 0的技能隐藏说明文字时的显示。
  53.   ZERO_AP_SKILL_HELP      = "????????"

  54.   # ◆ 除外装備品配列
  55.   #  配列の添字がアクター ID に対応。
  56.   #  習得装備から除外する武器・防具の ID を配列に格納。
  57.   EXCLUDE_WEAPONS = []  # 武器
  58.   EXCLUDE_ARMORS  = []  # 防具
  59.   # ここから下に定義。
  60.   #  <例>
  61.   #  アクターID:1 は、武器ID:50 と 70 のスキルを習得できない。
  62.   # EXCLUDE_WEAPONS[1] = [50, 70]

  63.   # ◆ 除外スキル配列
  64.   #  配列の添字がアクター ID と対応。
  65.   #  装備では習得不可能にするスキル ID を配列に格納。
  66.   EXCLUDE_SKILLS = []
  67.   #  <例>
  68.   #  アクターID:1 は、スキルID:30 を装備品で習得することはできない。
  69.   # EXCLUDE_SKILLS[1] = [30]
  70. end
  71. end

  72. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  73. $imported = {} if $imported == nil
  74. $imported["EquipLearnSkill"] = true

  75. module KGC::EquipLearnSkill
  76.   module Regexp
  77.     module BaseItem
  78.       # 学会技能
  79.       LEARN_SKILL = /<(?:LEARN_SKILL|学会技能)\s*(\d+(?:\s*,\s*\d+)*)>/i
  80.     end

  81.     module Skill
  82.       # 必要 AP
  83.       NEED_AP = /<(?:NEED_AP|必要AP)\s*(\d+)>/i
  84.     end

  85.     module Enemy
  86.       # 拥有 AP
  87.       AP = /<AP\s*(\d+)>/i
  88.     end
  89.   end
  90. end

  91. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  92. #==============================================================================
  93. # □ KGC::Commands
  94. #==============================================================================

  95. module KGC
  96. module Commands
  97.   module_function
  98.   #--------------------------------------------------------------------------
  99.   # ○ AP の獲得
  100.   #     actor_id : アクター ID
  101.   #     ap       : 獲得 AP
  102.   #     show     : マスター表示フラグ
  103.   #--------------------------------------------------------------------------
  104.   def gain_actor_ap(actor_id, ap, show = false)
  105.     $game_actors[actor_id].gain_ap(ap, show)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ○ AP の変更
  109.   #     actor_id : アクター ID
  110.   #     skill_id : スキル ID
  111.   #     ap       : AP
  112.   #--------------------------------------------------------------------------
  113.   def change_actor_ap(actor_id, skill_id, ap)
  114.     skill = $data_skills[skill_id]
  115.     return if skill == nil
  116.     $game_actors[actor_id].change_ap(skill, ap)

  117.     $game_actors[actor_id].restore_passive_rev if $imported["PassiveSkill"]
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ○ AP ビューアの呼び出し
  121.   #     actor_index : アクターインデックス
  122.   #--------------------------------------------------------------------------
  123.   def call_ap_viewer(actor_index = 0)
  124.     return if $game_temp.in_battle
  125.     $game_temp.next_scene = :ap_viewer
  126.     $game_temp.next_scene_actor_index = actor_index
  127.   end
  128. end
  129. end

  130. class Game_Interpreter
  131.   include KGC::Commands
  132. end

  133. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  134. #==============================================================================
  135. # ■ Vocab
  136. #==============================================================================

  137. module Vocab
  138.   # 戦闘終了メッセージ
  139.   ObtainAP              = KGC::EquipLearnSkill::VOCAB_RESULT_OBTAIN_AP
  140.   ResultFullAPSkill     = KGC::EquipLearnSkill::VOCAB_RESULT_MASTER_SKILL
  141.   ResultFullAPSkillName = KGC::EquipLearnSkill::VOCAB_RESULT_MASTER_SKILL_NAME

  142.   # AP
  143.   def self.ap
  144.     return KGC::EquipLearnSkill::VOCAB_AP
  145.   end

  146.   # マスターしたスキル
  147.   def self.full_ap_skill
  148.     return KGC::EquipLearnSkill::VOCAB_MASTER_SKILL
  149.   end

  150.   # AP ビューア
  151.   def self.ap_viewer
  152.     return KGC::EquipLearnSkill::VOCAB_MENU_AP_VIEWER
  153.   end
  154. end

  155. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  156. #==============================================================================
  157. # ■ RPG::BaseItem
  158. #==============================================================================

  159. class RPG::BaseItem
  160.   #--------------------------------------------------------------------------
  161.   # ○ スキル習得装備のキャッシュ生成
  162.   #--------------------------------------------------------------------------
  163.   def create_equip_learn_skill_cache
  164.     @__learn_skills = []

  165.     self.note.each_line { |line|
  166.       if line =~ KGC::EquipLearnSkill::Regexp::BaseItem::LEARN_SKILL
  167.         # スキル習得
  168.         $1.scan(/\d+/).each { |num|
  169.           skill_id = num.to_i
  170.           # 存在するスキルならリストに加える
  171.           @__learn_skills << skill_id if $data_skills[skill_id] != nil
  172.         }
  173.       end
  174.     }
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ○ 習得するスキル ID の配列
  178.   #--------------------------------------------------------------------------
  179.   def learn_skills
  180.     create_equip_learn_skill_cache if @__learn_skills == nil
  181.     return @__learn_skills
  182.   end
  183. end

  184. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  185. #==============================================================================
  186. # ■ RPG::Skill
  187. #==============================================================================

  188. class RPG::Skill < RPG::UsableItem
  189.   #--------------------------------------------------------------------------
  190.   # ○ クラス変数
  191.   #--------------------------------------------------------------------------
  192.   @@__masked_name =
  193.     KGC::EquipLearnSkill::ZERO_AP_NAME_MASK  # マスク名
  194.   @@__expand_masked_name = false             # マスク名拡張表示フラグ

  195.   if @@__expand_masked_name != nil
  196.     @@__expand_masked_name = (@@__masked_name.scan(/./).size == 1)
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ○ スキル習得装備のキャッシュ生成
  200.   #--------------------------------------------------------------------------
  201.   def create_equip_learn_skill_cache
  202.     @__need_ap = 0

  203.     self.note.each_line { |line|
  204.       if line =~ KGC::EquipLearnSkill::Regexp::Skill::NEED_AP  # 必要 AP
  205.         @__need_ap = $1.to_i
  206.       end
  207.     }
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ○ マスク名
  211.   #--------------------------------------------------------------------------
  212.   def masked_name
  213.     if KGC::EquipLearnSkill::MASK_ZERO_AP_SKILL_NAME
  214.       if @@__expand_masked_name
  215.         # マスク名を拡張して表示
  216.         return @@__masked_name * self.name.scan(/./).size
  217.       else
  218.         return @@__masked_name
  219.       end
  220.     else
  221.       return self.name
  222.     end
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ○ 習得に必要な AP
  226.   #--------------------------------------------------------------------------
  227.   def need_ap
  228.     create_equip_learn_skill_cache if @__need_ap == nil
  229.     return @__need_ap
  230.   end
  231. end

  232. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  233. #==============================================================================
  234. # ■ RPG::Enemy
  235. #==============================================================================

  236. class RPG::Enemy
  237.   #--------------------------------------------------------------------------
  238.   # ○ スキル習得装備のキャッシュ生成
  239.   #--------------------------------------------------------------------------
  240.   def create_equip_learn_skill_cache
  241.     @__ap = KGC::EquipLearnSkill::DEFAULT_AP

  242.     self.note.each_line { |line|
  243.       if line =~ KGC::EquipLearnSkill::Regexp::Enemy::AP  # 所持 AP
  244.         @__ap = $1.to_i
  245.       end
  246.     }
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ○ 所持 AP
  250.   #--------------------------------------------------------------------------
  251.   def ap
  252.     create_equip_learn_skill_cache if @__ap == nil
  253.     return @__ap
  254.   end
  255. end

  256. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  257. #==============================================================================
  258. # ■ Game_Temp
  259. #==============================================================================

  260. unless $imported["CustomMenuCommand"]
  261. class Game_Temp
  262.   #--------------------------------------------------------------------------
  263.   # ● 公開インスタンス変数
  264.   #--------------------------------------------------------------------------
  265.   attr_accessor :next_scene_actor_index   # 次のシーンのアクターインデックス
  266.   #--------------------------------------------------------------------------
  267.   # ● オブジェクト初期化
  268.   #--------------------------------------------------------------------------
  269.   alias initialize_KGC_EquipLearnSkill initialize
  270.   def initialize
  271.     initialize_KGC_EquipLearnSkill

  272.     @next_scene_actor_index = 0
  273.   end
  274. end
  275. end

  276. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  277. #==============================================================================
  278. # ■ Game_Actor
  279. #==============================================================================

  280. class Game_Actor < Game_Battler
  281.   #--------------------------------------------------------------------------
  282.   # ● セットアップ
  283.   #     actor_id : アクター ID
  284.   #--------------------------------------------------------------------------
  285.   alias setup_KGC_EquipLearnSkill setup
  286.   def setup(actor_id)
  287.     setup_KGC_EquipLearnSkill(actor_id)

  288.     @skill_ap = []
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ○ 指定スキルの AP 取得
  292.   #     skill_id : スキル ID
  293.   #--------------------------------------------------------------------------
  294.   def skill_ap(skill_id)
  295.     @skill_ap = [] if @skill_ap == nil
  296.     return (@skill_ap[skill_id] != nil ? @skill_ap[skill_id] : 0)
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ○ AP 変更
  300.   #     skill : スキル
  301.   #     ap    : 新しい AP
  302.   #--------------------------------------------------------------------------
  303.   def change_ap(skill, ap)
  304.     @skill_ap = [] if @skill_ap == nil
  305.     @skill_ap[skill.id] = [[ap, skill.need_ap].min, 0].max
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ○ マスターしたスキルの表示
  309.   #     new_skills : 新しくマスターしたスキルの配列
  310.   #--------------------------------------------------------------------------
  311.   def display_full_ap_skills(new_skills)
  312.     $game_message.new_page
  313.     text = sprintf(Vocab::ResultFullAPSkill, name)
  314.     $game_message.texts.push(text)
  315.     new_skills.each { |skill|
  316.       text = sprintf(Vocab::ResultFullAPSkillName, skill.name)
  317.       $game_message.texts.push(text)
  318.     }
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ○ AP 獲得
  322.   #     ap   : AP の増加量
  323.   #     show : マスタースキル表示フラグ
  324.   #--------------------------------------------------------------------------
  325.   def gain_ap(ap, show)
  326.     last_full_ap_skills = full_ap_skills

  327.     # 装備品により習得しているスキルに AP を加算
  328.     equipment_skills(true).each { |skill|
  329.       change_ap(skill, skill_ap(skill.id) + ap)
  330.     }
  331.     restore_passive_rev if $imported["PassiveSkill"]

  332.     # マスターしたスキルを表示
  333.     if show && last_full_ap_skills != full_ap_skills
  334.       display_full_ap_skills(full_ap_skills - last_full_ap_skills)
  335.     end
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● スキルオブジェクトの配列取得
  339.   #--------------------------------------------------------------------------
  340.   alias skills_KGC_EquipLearnSkill skills
  341.   def skills
  342.     result = skills_KGC_EquipLearnSkill

  343.     # 装備品と AP 蓄積済みのスキルを追加
  344.     additional_skills = equipment_skills | full_ap_skills
  345.     return (result | additional_skills).sort_by { |s| s.id }
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ○ 装備品の習得スキル取得
  349.   #     all : 使用不可能なスキルも含める
  350.   #--------------------------------------------------------------------------
  351.   def equipment_skills(all = false)
  352.     result = []
  353.     equips.compact.each { |item|
  354.       next unless include_learnable_equipment?(item)        # 除外装備は無視

  355.       item.learn_skills.each { |i|
  356.         skill = $data_skills[i]
  357.         next unless include_equipment_skill?(skill)          # 除外スキルは無視
  358.         if !all && KGC::EquipLearnSkill::NEED_FULL_AP        # 要蓄積の場合
  359.           next unless skill.need_ap == 0 || ap_full?(skill)    # 未達成なら無視
  360.         end
  361.         result << skill
  362.       }
  363.     }
  364.     return result
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ○ スキル習得装備除外判定
  368.   #     item : 判定装備
  369.   #--------------------------------------------------------------------------
  370.   def include_learnable_equipment?(item)
  371.     return false unless item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
  372.     return false unless equippable?(item)

  373.     case item
  374.     when RPG::Weapon  # 武器
  375.       # 除外武器に含まれている場合
  376.       if KGC::EquipLearnSkill::EXCLUDE_WEAPONS[id] != nil &&
  377.           KGC::EquipLearnSkill::EXCLUDE_WEAPONS[id].include?(item.id)
  378.         return false
  379.       end
  380.     when RPG::Armor   # 防具
  381.       # 除外防具に含まれている場合
  382.       if KGC::EquipLearnSkill::EXCLUDE_ARMORS[id] != nil &&
  383.           KGC::EquipLearnSkill::EXCLUDE_ARMORS[id].include?(item.id)
  384.         return false
  385.       end
  386.     end

  387.     return true
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ○ 装備品による習得スキル除外判定
  391.   #     skill : スキル
  392.   #--------------------------------------------------------------------------
  393.   def include_equipment_skill?(skill)
  394.     # 自身が除外されている場合
  395.     if KGC::EquipLearnSkill::EXCLUDE_SKILLS[id] != nil &&
  396.         KGC::EquipLearnSkill::EXCLUDE_SKILLS[id].include?(skill.id)
  397.       return false
  398.     end

  399.     return true
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ○ AP 蓄積済みのスキルを取得
  403.   #--------------------------------------------------------------------------
  404.   def full_ap_skills
  405.     result = []
  406.     (1...$data_skills.size).each { |i|
  407.       skill = $data_skills[i]
  408.       result << skill if ap_full?(skill) && include_equipment_skill?(skill)
  409.     }
  410.     return result
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ○ AP 蓄積可能なスキルを取得
  414.   #--------------------------------------------------------------------------
  415.   def can_gain_ap_skills
  416.     result = []
  417.     equips.compact.each { |item|
  418.       next unless include_learnable_equipment?(item)  # 除外装備なら無視

  419.       item.learn_skills.each { |i|
  420.         skill = $data_skills[i]
  421.         next unless include_equipment_skill?(skill)   # 除外スキルなら無視
  422.         result << skill
  423.       }
  424.     }
  425.     return (result - full_ap_skills)              # マスターしたものを除く
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ○ AP 蓄積済み判定
  429.   #     skill : スキル
  430.   #--------------------------------------------------------------------------
  431.   def ap_full?(skill)
  432.     return false unless skill.is_a?(RPG::Skill)   # スキル以外
  433.     return false if skill.need_ap == 0            # 必要 AP が 0
  434.     return true  if @skills.include?(skill.id)    # 習得済み

  435.     return (skill_ap(skill.id) >= skill.need_ap)
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● スキルの使用可能判定
  439.   #     skill : スキル
  440.   #--------------------------------------------------------------------------
  441.   def skill_can_use?(skill)
  442.     return super
  443.   end
  444. end

  445. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  446. #==============================================================================
  447. # ■ Game_Enemy
  448. #==============================================================================

  449. class Game_Enemy < Game_Battler
  450.   #--------------------------------------------------------------------------
  451.   # ○ AP の取得
  452.   #--------------------------------------------------------------------------
  453.   def ap
  454.     return enemy.ap
  455.   end
  456. end

  457. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  458. #==============================================================================
  459. # ■ Game_Troop
  460. #==============================================================================

  461. class Game_Troop < Game_Unit
  462.   #--------------------------------------------------------------------------
  463.   # ○ AP の合計計算
  464.   #--------------------------------------------------------------------------
  465.   def ap_total
  466.     ap = 0
  467.     for enemy in dead_members
  468.       ap += enemy.ap unless enemy.hidden
  469.     end
  470.     return ap
  471.   end
  472. end

  473. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  474. #==============================================================================
  475. # ■ Window_Command
  476. #==============================================================================

  477. class Window_Command < Window_Selectable
  478.   unless method_defined?(:add_command)
  479.   #--------------------------------------------------------------------------
  480.   # ○ コマンドを追加
  481.   #    追加した位置を返す
  482.   #--------------------------------------------------------------------------
  483.   def add_command(command)
  484.     @commands << command
  485.     @item_max = @commands.size
  486.     item_index = @item_max - 1
  487.     refresh_command
  488.     draw_item(item_index)
  489.     return item_index
  490.   end
  491.   #--------------------------------------------------------------------------
  492.   # ○ コマンドをリフレッシュ
  493.   #--------------------------------------------------------------------------
  494.   def refresh_command
  495.     buf = self.contents.clone
  496.     self.height = [self.height, row_max * WLH + 32].max
  497.     create_contents
  498.     self.contents.blt(0, 0, buf, buf.rect)
  499.     buf.dispose
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ○ コマンドを挿入
  503.   #--------------------------------------------------------------------------
  504.   def insert_command(index, command)
  505.     @commands.insert(index, command)
  506.     @item_max = @commands.size
  507.     refresh_command
  508.     refresh
  509.   end
  510.   #--------------------------------------------------------------------------
  511.   # ○ コマンドを削除
  512.   #--------------------------------------------------------------------------
  513.   def remove_command(command)
  514.     @commands.delete(command)
  515.     @item_max = @commands.size
  516.     refresh
  517.   end
  518.   end
  519. end

  520. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  521. #==============================================================================
  522. # □ Window_APViewer
  523. #------------------------------------------------------------------------------
  524. #  AP ビューアでスキルを表示するウィンドウです。
  525. #==============================================================================

  526. class Window_APViewer < Window_Selectable
  527.   #--------------------------------------------------------------------------
  528.   # ● オブジェクト初期化
  529.   #     x      : ウィンドウの X 座標
  530.   #     y      : ウィンドウの Y 座標
  531.   #     width  : ウィンドウの幅
  532.   #     height : ウィンドウの高さ
  533.   #     actor  : アクター
  534.   #--------------------------------------------------------------------------
  535.   def initialize(x, y, width, height, actor)
  536.     super(x, y, width, height)
  537.     @actor = actor
  538.     @can_gain_ap_skills = []
  539.     @equipment_skills   = []
  540.     self.index = 0
  541.     refresh
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ○ スキルの取得
  545.   #--------------------------------------------------------------------------
  546.   def skill
  547.     return @data[self.index]
  548.   end
  549.   #--------------------------------------------------------------------------
  550.   # ○ リフレッシュ
  551.   #--------------------------------------------------------------------------
  552.   def refresh
  553.     @data = []
  554.     @can_gain_ap_skills = @actor.can_gain_ap_skills
  555.     @equipment_skills   = @actor.equipment_skills(true)

  556.     (1...$data_skills.size).each { |i|
  557.       skill = $data_skills[i]
  558.       @data << skill if include?(skill)
  559.     }
  560.     @item_max = @data.size
  561.     create_contents
  562.     @item_max.times { |i| draw_item(i) }
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ○ 項目の描画
  566.   #     index : 項目番号
  567.   #--------------------------------------------------------------------------
  568.   def draw_item(index)
  569.     rect = item_rect(index)
  570.     self.contents.clear_rect(rect)
  571.     skill = @data[index]
  572.     if skill != nil
  573.       rect.width -= 4
  574.       draw_item_name(skill, rect.x, rect.y, enable?(skill))
  575.       if @actor.ap_full?(skill) || @actor.skill_learn?(skill)
  576.         # マスター
  577.         text = Vocab.full_ap_skill
  578.       else
  579.         # AP 蓄積中
  580.         text = sprintf("%s %4d/%4d",
  581.           Vocab.ap, @actor.skill_ap(skill.id), skill.need_ap)
  582.       end
  583.       # AP を描画
  584.       self.contents.font.color = normal_color
  585.       self.contents.draw_text(rect, text, 2)
  586.     end
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ○ スキルをリストに含めるか
  590.   #     skill : スキル
  591.   #--------------------------------------------------------------------------
  592.   def include?(skill)
  593.     return false if skill.need_ap == 0
  594.     unless KGC::EquipLearnSkill::SHOW_ZERO_AP_SKILL
  595.       # AP が 0 、かつ装備品で習得していない
  596.       if @actor.skill_ap(skill.id) == 0 && !@equipment_skills.include?(skill)
  597.         return false
  598.       end
  599.     end

  600.     return true
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ○ スキルを有効状態で表示するかどうか
  604.   #     skill : スキル
  605.   #--------------------------------------------------------------------------
  606.   def enable?(skill)
  607.     return true if @actor.skill_learn?(skill)           # 習得済み
  608.     return true if @actor.ap_full?(skill)               # マスター
  609.     return true if @can_gain_ap_skills.include?(skill)  # AP 蓄積可能

  610.     return false
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ○ スキルをマスク表示するかどうか
  614.   #     skill : スキル
  615.   #--------------------------------------------------------------------------
  616.   def mask?(skill)
  617.     return false if @actor.skill_learn?(skill)           # 習得済み
  618.     return false if @actor.skill_ap(skill.id) > 0        # AP が 1 以上
  619.     return false if @can_gain_ap_skills.include?(skill)  # AP 蓄積可能

  620.     return true
  621.   end
  622.   #--------------------------------------------------------------------------
  623.   # ● アイテム名の描画
  624.   #     item    : アイテム (スキル、武器、防具でも可)
  625.   #     x       : 描画先 X 座標
  626.   #     y       : 描画先 Y 座標
  627.   #     enabled : 有効フラグ。false のとき半透明で描画
  628.   #--------------------------------------------------------------------------
  629.   def draw_item_name(item, x, y, enabled = true)
  630.     draw_icon(item.icon_index, x, y, enabled)
  631.     self.contents.font.color = normal_color
  632.     self.contents.font.color.alpha = enabled ? 255 : 128
  633.     self.contents.draw_text(x + 24, y, 172, WLH,
  634.       mask?(item) ? item.masked_name : item.name)
  635.   end
  636.   #--------------------------------------------------------------------------
  637.   # ● カーソルを 1 ページ後ろに移動
  638.   #--------------------------------------------------------------------------
  639.   def cursor_pagedown
  640.     return if Input.repeat?(Input::R)
  641.     super
  642.   end
  643.   #--------------------------------------------------------------------------
  644.   # ● カーソルを 1 ページ前に移動
  645.   #--------------------------------------------------------------------------
  646.   def cursor_pageup
  647.     return if Input.repeat?(Input::L)
  648.     super
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ● フレーム更新
  652.   #--------------------------------------------------------------------------
  653.   def update
  654.     last_index = @index
  655.     super
  656.     return unless self.active

  657.     if Input.repeat?(Input::RIGHT)
  658.       cursor_pagedown
  659.     elsif Input.repeat?(Input::LEFT)
  660.       cursor_pageup
  661.     end
  662.     if @index != last_index
  663.       Sound.play_cursor
  664.     end
  665.   end
  666.   #--------------------------------------------------------------------------
  667.   # ● ヘルプテキスト更新
  668.   #--------------------------------------------------------------------------
  669.   def update_help
  670.     if KGC::EquipLearnSkill::HIDE_ZERO_AP_SKILL_HELP && mask?(skill)
  671.       @help_window.set_text(KGC::EquipLearnSkill::ZERO_AP_SKILL_HELP)
  672.     else
  673.       @help_window.set_text(skill == nil ? "" : skill.description)
  674.     end
  675.   end
  676. end

  677. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  678. #==============================================================================
  679. # ■ Scene_Map
  680. #==============================================================================

  681. class Scene_Map < Scene_Base
  682.   #--------------------------------------------------------------------------
  683.   # ● 画面切り替えの実行
  684.   #--------------------------------------------------------------------------
  685.   alias update_scene_change_KGC_EquipLearnSkill update_scene_change
  686.   def update_scene_change
  687.     return if $game_player.moving?    # プレイヤーの移動中?

  688.     if $game_temp.next_scene == :ap_viewer
  689.       call_ap_viewer
  690.       return
  691.     end

  692.     update_scene_change_KGC_EquipLearnSkill
  693.   end
  694.   #--------------------------------------------------------------------------
  695.   # ○ AP ビューアへの切り替え
  696.   #--------------------------------------------------------------------------
  697.   def call_ap_viewer
  698.     $game_temp.next_scene = nil
  699.     $scene = Scene_APViewer.new($game_temp.next_scene_actor_index,
  700.       0, Scene_APViewer::HOST_MAP)
  701.   end
  702. end

  703. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  704. #==============================================================================
  705. # ■ Scene_Menu
  706. #==============================================================================

  707. class Scene_Menu < Scene_Base
  708.   if KGC::EquipLearnSkill::USE_MENU_AP_VIEWER_COMMAND
  709.   #--------------------------------------------------------------------------
  710.   # ● コマンドウィンドウの作成
  711.   #--------------------------------------------------------------------------
  712.   alias create_command_window_KGC_EquipLearnSkill create_command_window
  713.   def create_command_window
  714.     create_command_window_KGC_EquipLearnSkill

  715.     return if $imported["CustomMenuCommand"]

  716.     @__command_ap_viewer_index = @command_window.add_command(Vocab.ap_viewer)
  717.     if @command_window.oy > 0
  718.       @command_window.oy -= Window_Base::WLH
  719.     end
  720.     @command_window.index = @menu_index
  721.   end
  722.   end
  723.   #--------------------------------------------------------------------------
  724.   # ● コマンド選択の更新
  725.   #--------------------------------------------------------------------------
  726.   alias update_command_selection_KGC_EquipLearnSkill update_command_selection
  727.   def update_command_selection
  728.     call_ap_viewer_flag = false
  729.     if Input.trigger?(Input::C)
  730.       case @command_window.index
  731.       when @__command_ap_viewer_index  # AP ビューア
  732.         call_ap_viewer_flag = true
  733.       end
  734.     end

  735.     # AP ビューアに移行
  736.     if call_ap_viewer_flag
  737.       if $game_party.members.size == 0
  738.         Sound.play_buzzer
  739.         return
  740.       end
  741.       Sound.play_decision
  742.       start_actor_selection
  743.       return
  744.     end

  745.     update_command_selection_KGC_EquipLearnSkill
  746.   end
  747.   #--------------------------------------------------------------------------
  748.   # ● アクター選択の更新
  749.   #--------------------------------------------------------------------------
  750.   alias update_actor_selection_KGC_EquipLearnSkill update_actor_selection
  751.   def update_actor_selection
  752.     if Input.trigger?(Input::C)
  753.       $game_party.last_actor_index = @status_window.index
  754.       Sound.play_decision
  755.       case @command_window.index
  756.       when @__command_ap_viewer_index  # AP ビューア
  757.         $scene = Scene_APViewer.new(@status_window.index,
  758.           @__command_ap_viewer_index, Scene_APViewer::HOST_MENU)
  759.         return
  760.       end
  761.     end

  762.     update_actor_selection_KGC_EquipLearnSkill
  763.   end
  764. end

  765. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  766. #==============================================================================
  767. # □ Scene_APViewer
  768. #------------------------------------------------------------------------------
  769. #   AP ビューアの処理を行うクラスです。
  770. #==============================================================================

  771. class Scene_APViewer < Scene_Base
  772.   HOST_MENU   = 0
  773.   HOST_MAP    = 1
  774.   #--------------------------------------------------------------------------
  775.   # ● オブジェクト初期化
  776.   #     actor_index : アクターインデックス
  777.   #     menu_index  : コマンドのカーソル初期位置
  778.   #     host_scene  : 呼び出し元 (0..メニュー  1..マップ)
  779.   #--------------------------------------------------------------------------
  780.   def initialize(actor_index = 0, menu_index = 0, host_scene = HOST_MENU)
  781.     @actor_index = actor_index
  782.     @menu_index = menu_index
  783.     @host_scene = host_scene
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # ● 開始処理
  787.   #--------------------------------------------------------------------------
  788.   def start
  789.     super
  790.     create_menu_background
  791.     @actor = $game_party.members[@actor_index]
  792.     @help_window = Window_Help.new
  793.     if $imported["HelpExtension"]
  794.       @help_window.row_max = KGC::HelpExtension::ROW_MAX
  795.     end
  796.     @status_window = Window_SkillStatus.new(0, @help_window.height, @actor)
  797.     dy = @help_window.height + @status_window.height
  798.     @skill_window = Window_APViewer.new(0, dy,
  799.       Graphics.width, Graphics.height - dy, @actor)
  800.     @skill_window.help_window = @help_window
  801.   end
  802.   #--------------------------------------------------------------------------
  803.   # ● 終了処理
  804.   #--------------------------------------------------------------------------
  805.   def terminate
  806.     super
  807.     dispose_menu_background
  808.     @help_window.dispose
  809.     @status_window.dispose
  810.     @skill_window.dispose
  811.   end
  812.   #--------------------------------------------------------------------------
  813.   # ○ 元の画面へ戻る
  814.   #--------------------------------------------------------------------------
  815.   def return_scene
  816.     case @host_scene
  817.     when HOST_MENU
  818.       $scene = Scene_Menu.new(@menu_index)
  819.     when HOST_MAP
  820.       $scene = Scene_Map.new
  821.     end
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   # ○ 次のアクターの画面に切り替え
  825.   #--------------------------------------------------------------------------
  826.   def next_actor
  827.     @actor_index += 1
  828.     @actor_index %= $game_party.members.size
  829.     $scene = Scene_APViewer.new(@actor_index, @menu_index, @host_scene)
  830.   end
  831.   #--------------------------------------------------------------------------
  832.   # ○ 前のアクターの画面に切り替え
  833.   #--------------------------------------------------------------------------
  834.   def prev_actor
  835.     @actor_index += $game_party.members.size - 1
  836.     @actor_index %= $game_party.members.size
  837.     $scene = Scene_APViewer.new(@actor_index, @menu_index, @host_scene)
  838.   end
  839.   #--------------------------------------------------------------------------
  840.   # ● フレーム更新
  841.   #--------------------------------------------------------------------------
  842.   def update
  843.     super
  844.     update_menu_background
  845.     @help_window.update
  846.     @skill_window.update
  847.     @status_window.update
  848.     if @skill_window.active
  849.       update_skill_selection
  850.     end
  851.   end
  852.   #--------------------------------------------------------------------------
  853.   # ○ スキル選択の更新
  854.   #--------------------------------------------------------------------------
  855.   def update_skill_selection
  856.     if Input.trigger?(Input::B)
  857.       Sound.play_cancel
  858.       return_scene
  859.     elsif Input.trigger?(Input::R)
  860.       Sound.play_cursor
  861.       next_actor
  862.     elsif Input.trigger?(Input::L)
  863.       Sound.play_cursor
  864.       prev_actor
  865.     end
  866.   end
  867. end

  868. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  869. #==============================================================================
  870. # ■ Scene_Battle
  871. #==============================================================================

  872. class Scene_Battle < Scene_Base
  873.   #--------------------------------------------------------------------------
  874.   # ● メッセージ表示が終わるまでウェイト
  875.   #--------------------------------------------------------------------------
  876.   alias wait_for_message_KGC_EquipLearnSkill wait_for_message
  877.   def wait_for_message
  878.     return if @ignore_wait_for_message  # メッセージ終了までのウェイトを無視

  879.     wait_for_message_KGC_EquipLearnSkill
  880.   end
  881.   #--------------------------------------------------------------------------
  882.   # ● 獲得した経験値とお金の表示
  883.   #--------------------------------------------------------------------------
  884.   alias display_exp_and_gold_KGC_EquipLearnSkill display_exp_and_gold
  885.   def display_exp_and_gold
  886.     @ignore_wait_for_message = true

  887.     display_exp_and_gold_KGC_EquipLearnSkill

  888.     display_ap
  889.     @ignore_wait_for_message = false
  890.     wait_for_message
  891.   end
  892.   #--------------------------------------------------------------------------
  893.   # ● レベルアップの表示
  894.   #--------------------------------------------------------------------------
  895.   alias display_level_up_KGC_EquipLearnSkill display_level_up
  896.   def display_level_up
  897.     display_level_up_KGC_EquipLearnSkill

  898.     display_master_equipment_skill
  899.   end
  900.   #--------------------------------------------------------------------------
  901.   # ○ 獲得 AP の表示
  902.   #--------------------------------------------------------------------------
  903.   def display_ap
  904.     ap = $game_troop.ap_total
  905.     if ap > 0
  906.       text = sprintf(Vocab::ObtainAP, ap)
  907.       $game_message.texts.push('\.' + text)
  908.     end
  909.     wait_for_message
  910.   end
  911.   #--------------------------------------------------------------------------
  912.   # ○ マスターしたスキルの表示
  913.   #--------------------------------------------------------------------------
  914.   def display_master_equipment_skill
  915.     ap = $game_troop.ap_total
  916.     $game_party.existing_members.each { |actor|
  917.       last_skills = actor.skills
  918.       actor.gain_ap(ap, true)
  919.     }
  920.     wait_for_message
  921.   end
  922. end
复制代码
我是好人

VX ARPG迷城的国度试玩版已经放出
后续版本紧张制作中

正在策划迷城的伊苏:以超难迷宫为主的中型游戏

Lv1.梦旅人

梦石
0
星屑
50
在线时间
176 小时
注册时间
2011-1-26
帖子
131
2
发表于 2011-4-14 17:33:37 | 只看该作者
回复 killkill2298 的帖子

看你脚本的120行,获得ap;脚本129行,变更ap;
gain_actor_ap(actor_id, ap, show = false)   
如:gain_actor_ap(1,100)   #给1号角色100ap,  false是默认值可以不写
$game_actors[1].gain_ap(1, false) 只能在脚本内部使用,不能调用
没试过,仅供参考
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2009-7-25
帖子
201
3
 楼主| 发表于 2011-4-14 20:47:20 | 只看该作者
本帖最后由 killkill2298 于 2011-4-14 20:53 编辑

新的发现: 使用 KGC::Commands.change_actor_ap(1, 24, 1)
可以把1号角色24号技能的获得AP改为1
如何让他增加1呢
我是好人

VX ARPG迷城的国度试玩版已经放出
后续版本紧张制作中

正在策划迷城的伊苏:以超难迷宫为主的中型游戏
回复

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
4
发表于 2011-4-14 21:45:46 | 只看该作者
本帖最后由 蕾米莉亚·斯卡雷特 于 2011-4-14 23:52 编辑

  1. class Game_Actor < Game_Battler
  2.   def add_ap(skill_id, ap)
  3.     return unless @skill_ap[skill_id]
  4.     @skill_ap[skill_id] += ap
  5.   end
  6. end
复制代码
$game_actors[actor_id].add_ap(skill_id, ap)

actor_id: 人物ID
skill_id : 技能ID
ap : 增减的 AP 数




未测试~~~~

点评

嘛, 等级么?  发表于 2011-4-15 15:38
>_<表示有不少方法知道...  发表于 2011-4-15 15:26
特意申请称号掩盖的说. 嘛~~~  发表于 2011-4-14 23:52
风纪委员...(帖子里的[line][/line]- -没有这样的bbs脚本吧,分割线是[hr]= =)  发表于 2011-4-14 22:56
都啥????? ???  发表于 2011-4-14 22:08
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 23:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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