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

Project1

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

[已经过期] 技能熟练度脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2012-3-5 12:46:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 负零 于 2012-3-5 12:47 编辑

求使用方法,似乎插入脚本没有效果。

http://ytomy.sakura.ne.jp/tkool/ ... mp;tech=skill_level
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ スキル熟練度 - KMS_SkillLevel ◆ VX Ace ◆
  3. #_/    ◇ Last update : 2012/02/12 (TOMY@Kamesoft) ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  スキルに熟練度の概念を追加します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ 設定項目 - BEGIN Setting ★
  9. #==============================================================================

  10. module KMS_SkillLevel
  11.   # ◆ 熟練度上限
  12.   EXP_MAX = 999

  13.   # ◆ 敵にも熟練度を適用する
  14.   ENABLE_FOR_ENEMY = false
  15.   # ◆ メニュー画面で使用した場合も熟練度を上げる
  16.   ENABLE_ON_MENU   = false
  17. end

  18. #==============================================================================
  19. # ☆ 設定ここまで - END Setting ☆
  20. #==============================================================================

  21. $kms_imported = {} if $kms_imported == nil
  22. $kms_imported["SkillLevel"] = true

  23. module KMS_SkillLevel
  24.   # デバッグフラグ
  25.   DEBUG = false

  26.   # 熟練度増加量
  27.   #  記述例 : <熟練度増加量 2>
  28.   REGEX_SXP_GAIN = /<(?:熟練度増加量|SXP_GAIN)\s*(\d+)>/i

  29.   # 熟練度補正
  30.   REGEX_REV = /(?:熟練度補正|SXP_REV)\s*/i

  31.   # 行動速度補正
  32.   #  記述例 : <熟練度補正 速度 sxp / 50>
  33.   REGEX_SPEED_REV = /<#{REGEX_REV}(?:速度|SPEED)\s+(.+)>/i

  34.   # 成功率補正
  35.   #  記述例 : <熟練度補正 成功率 sxp / 50>
  36.   REGEX_SUCCESS_REV = /<#{REGEX_REV}(?:成功率|SUCCESS)\s+(.+)>/i

  37.   # 熟練度用制御文字
  38.   #  \SXP / \SXP[actor_id,skill_id] / \SXP[skill_id]
  39.   #  \S が定義済みだとミスる可能性があるので \_SXP にも対応
  40.   REGEX_TEXT_SXP      = /\e_?SXP\[(\d+)\s*,\s*(\d+)]/i
  41.   REGEX_TEXT_SXP_HELP = /\e_?SXP(?:\[(\d+)\])?/i
  42. end

  43. # *****************************************************************************

  44. #==============================================================================
  45. # □ KMS_Commands
  46. #==============================================================================

  47. module KMS_Commands
  48.   module_function
  49.   #--------------------------------------------------------------------------
  50.   # ○ アクターの熟練度の増減
  51.   #--------------------------------------------------------------------------
  52.   def gain_actor_skill_exp(actor_id, skill_id, n)
  53.     return if $game_actors[actor_id].nil?
  54.     $game_actors[actor_id].gain_skill_exp(skill_id, n)
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ○ アクターの熟練度をクリア
  58.   #--------------------------------------------------------------------------
  59.   def clear_actor_skill_exp(actor_id)
  60.     return if $game_actors[actor_id].nil?
  61.     $game_actors[actor_id].clear_skill_exp
  62.   end
  63. end

  64. #==============================================================================
  65. # ■ Game_Interpreter
  66. #==============================================================================

  67. class Game_Interpreter
  68.   # イベントコマンドから直接コマンドを叩けるようにする
  69.   include KMS_Commands
  70. end

  71. #==============================================================================
  72. # ■ RPG::Skill
  73. #==============================================================================

  74. class RPG::Skill < RPG::UsableItem
  75.   #--------------------------------------------------------------------------
  76.   # ○ 熟練度キャッシュ作成
  77.   #--------------------------------------------------------------------------
  78.   def __create_skill_level_cache
  79.     @__skill_exp_gain = 1
  80.     @__speed_rev_by_skill_exp_formula   = "0"
  81.     @__success_rev_by_skill_exp_formula = "0"

  82.     note.each_line { |line|
  83.       case line
  84.       when KMS_SkillLevel::REGEX_SXP_GAIN
  85.         @__skill_exp_gain = $1.to_i
  86.       when KMS_SkillLevel::REGEX_SPEED_REV
  87.         @__speed_rev_by_skill_exp_formula = $1
  88.         print "Speed rev[#{id}]: #{$1}\n" if KMS_SkillLevel::DEBUG
  89.       when KMS_SkillLevel::REGEX_SUCCESS_REV
  90.         @__success_rev_by_skill_exp_formula = $1
  91.         print "Success rev[#{id}]: #{$1}\n" if KMS_SkillLevel::DEBUG
  92.       end
  93.     }
  94.   end
  95.   protected :__create_skill_level_cache
  96.   #--------------------------------------------------------------------------
  97.   # ○ 熟練度増加量取得
  98.   #--------------------------------------------------------------------------
  99.   def skill_exp_gain
  100.     __create_skill_level_cache if @__skill_exp_gain.nil?
  101.     return @__skill_exp_gain
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ○ 行動速度補正取得
  105.   #--------------------------------------------------------------------------
  106.   def speed_rev_by_skill_exp_formula
  107.     __create_skill_level_cache if @__speed_rev_by_skill_exp_formula.nil?
  108.     return @__speed_rev_by_skill_exp_formula
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ○ 成功率補正取得
  112.   #--------------------------------------------------------------------------
  113.   def success_rev_by_skill_exp_formula
  114.     __create_skill_level_cache if @__success_rev_by_skill_exp_formula.nil?
  115.     return @__success_rev_by_skill_exp_formula
  116.   end
  117. end

  118. #==============================================================================
  119. # ■ Game_Action
  120. #==============================================================================

  121. class Game_Action
  122.   #--------------------------------------------------------------------------
  123.   # ● 行動速度の計算
  124.   #--------------------------------------------------------------------------
  125.   alias speed_KMS_SkillLevel speed
  126.   def speed
  127.     n  = speed_KMS_SkillLevel

  128.     # 速度補正の適用
  129.     n += subject.speed_rev_by_skill_exp(item) if item

  130.     return n
  131.   end
  132. end

  133. #==============================================================================
  134. # ■ Game_BattlerBase
  135. #==============================================================================

  136. class Game_BattlerBase
  137.   #--------------------------------------------------------------------------
  138.   # ● オブジェクト初期化
  139.   #--------------------------------------------------------------------------
  140.   alias initialize_KMS_SkillLevel initialize
  141.   def initialize
  142.     initialize_KMS_SkillLevel

  143.     @skill_exp = {}
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ○ スキル熟練度の取得
  147.   #--------------------------------------------------------------------------
  148.   def skill_exp(skill_id)
  149.     @skill_exp = {}          if @skill_exp.nil?
  150.     @skill_exp[skill_id] = 0 unless @skill_exp.include?(skill_id)

  151.     return @skill_exp[skill_id]
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ○ スキル熟練度の加算
  155.   #--------------------------------------------------------------------------
  156.   def gain_skill_exp(skill_id, n = 1)
  157.     # 基本アクションは加算しない
  158.     return if skill_id == attack_skill_id || skill_id == guard_skill_id

  159.     lv = skill_exp(skill_id)
  160.     @skill_exp[skill_id] = [ [lv + n, 0 ].max, KMS_SkillLevel::EXP_MAX ].min

  161.     if KMS_SkillLevel::DEBUG
  162.       print "#{name} 熟練度 [#{skill_id}] = #{@skill_exp[skill_id]}\n"
  163.     end
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ○ スキル熟練度の初期化
  167.   #--------------------------------------------------------------------------
  168.   def clear_skill_exp
  169.     @skill_exp = {}
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ○ 現在のアクションの熟練度を取得
  173.   #     skill_id : 対象スキル ID (省略時は現在の行動)
  174.   #--------------------------------------------------------------------------
  175.   def sxp(skill_id = 0)
  176.     if skill_id > 0
  177.       return skill_exp(skill_id)
  178.     else
  179.       return current_skill_exp
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ○ スキル熟練度による行動速度補正を取得
  184.   #     item : 対象行動
  185.   #--------------------------------------------------------------------------
  186.   def speed_rev_by_skill_exp(item)
  187.     return 0 unless item.is_a?(RPG::Skill)

  188.     formula = item.speed_rev_by_skill_exp_formula
  189.     formula = formula.gsub(/sxp/i) { "skill_exp(item.id)" }
  190.     return eval(formula)
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ○ スキル熟練度による成功率補正を取得
  194.   #     item : 対象行動
  195.   #--------------------------------------------------------------------------
  196.   def success_rev_by_skill_exp(item)
  197.     return 0 unless item.is_a?(RPG::Skill)

  198.     formula = item.success_rev_by_skill_exp_formula
  199.     formula = formula.gsub(/sxp/i) { "skill_exp(item.id)" }
  200.     return eval(formula)
  201.   end
  202. end

  203. #==============================================================================
  204. # ■ Game_Battler
  205. #==============================================================================

  206. class Game_Battler < Game_BattlerBase
  207.   #--------------------------------------------------------------------------
  208.   # ○ 現在の行動のスキル熟練度を取得
  209.   #--------------------------------------------------------------------------
  210.   def current_skill_exp
  211.     if current_action.item && current_action.item.is_a?(RPG::Skill)
  212.       return skill_exp(current_action.item.id)
  213.     else
  214.       return 0
  215.     end
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ○ スキル熟練度加算処理
  219.   #--------------------------------------------------------------------------
  220.   def gain_skill_exp_effect(item)
  221.     return unless item.is_a?(RPG::Skill)

  222.     if $game_party.in_battle || KMS_SkillLevel::ENABLE_ON_MENU
  223.       gain_skill_exp(item.id, item.skill_exp_gain)
  224.     end
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● スキル/アイテムの使用
  228.   #    行動側に対して呼び出され、使用対象以外に対する効果を適用する。
  229.   #--------------------------------------------------------------------------
  230.   alias use_item_KMS_SkillLevel use_item
  231.   def use_item(item)
  232.     use_item_KMS_SkillLevel(item)

  233.     gain_skill_exp_effect(item)
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● スキル/アイテムの命中率計算
  237.   #--------------------------------------------------------------------------
  238.   alias item_hit_KMS_SkillLevel item_hit
  239.   def item_hit(user, item)
  240.     # 熟練度による成功率補正値を加算
  241.     rate_rev  = user.success_rev_by_skill_exp(item) * 0.01
  242.     rate_rev *= user.hit if item.physical?

  243.     return item_hit_KMS_SkillLevel(user, item) + rate_rev
  244.   end
  245. end

  246. #==============================================================================
  247. # ■ Game_Enemy
  248. #==============================================================================

  249. class Game_Enemy < Game_Battler
  250.   #--------------------------------------------------------------------------
  251.   # ○ スキル熟練度の加算
  252.   #--------------------------------------------------------------------------
  253.   def gain_skill_exp(skill_id, n = 1)
  254.     # 何もしない
  255.   end
  256. end unless KMS_SkillLevel::ENABLE_FOR_ENEMY

  257. #==============================================================================
  258. # ■ Window_Base
  259. #==============================================================================

  260. class Window_Base < Window
  261.   #--------------------------------------------------------------------------
  262.   # ● 制御文字の事前変換
  263.   #--------------------------------------------------------------------------
  264.   alias convert_escape_characters_KMS_SkillLevel convert_escape_characters
  265.   def convert_escape_characters(text)
  266.     result = convert_escape_characters_KMS_SkillLevel(text).clone

  267.     result.gsub!(KMS_SkillLevel::REGEX_TEXT_SXP) {
  268.       actor = $game_actors[$1.to_i]
  269.       if actor
  270.         actor.skill_exp($2.to_i)
  271.       else
  272.         ""
  273.       end
  274.     }
  275.     return result
  276.   end
  277. end

  278. #==============================================================================
  279. # ■ Window_Help
  280. #==============================================================================

  281. class Window_Help < Window_Base
  282.   #--------------------------------------------------------------------------
  283.   # ● アイテム設定
  284.   #     item : スキル、アイテム等
  285.   #--------------------------------------------------------------------------
  286.   alias set_item_KMS_SkillLevel set_item
  287.   def set_item(item)
  288.     @current_item = item

  289.     set_item_KMS_SkillLevel(item)
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ○ アクターの設定
  293.   #--------------------------------------------------------------------------
  294.   def set_actor(actor)
  295.     @current_actor = actor
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 制御文字の事前変換
  299.   #--------------------------------------------------------------------------
  300.   unless method_defined?(:convert_escape_characters_KMS_SkillLevel)
  301.     alias convert_escape_characters_KMS_SkillLevel convert_escape_characters
  302.   end
  303.   def convert_escape_characters(text)
  304.     result = convert_escape_characters_KMS_SkillLevel(text).clone

  305.     result.gsub!(KMS_SkillLevel::REGEX_TEXT_SXP_HELP) {
  306.       if @current_actor
  307.         if $1.nil? && @current_item.is_a?(RPG::Skill)
  308.           # 現在のスキル
  309.           @current_actor.skill_exp(@current_item.id)
  310.         else
  311.           # ID 指定
  312.           @current_actor.skill_exp($1.to_i)
  313.         end
  314.       else
  315.         ""
  316.       end
  317.     }
  318.     return result
  319.   end
  320. end

  321. #==============================================================================
  322. # ■ Window_SkillList
  323. #==============================================================================

  324. class Window_SkillList < Window_Selectable
  325.   #--------------------------------------------------------------------------
  326.   # ● ヘルプテキスト更新
  327.   #--------------------------------------------------------------------------
  328.   alias update_help_KMS_SkillLevel update_help
  329.   def update_help
  330.     @help_window.set_actor(@actor)

  331.     update_help_KMS_SkillLevel

  332.     @help_window.set_actor(nil)
  333.   end
  334. end

  335. #==============================================================================
  336. # ■ Scene_Skill
  337. #==============================================================================

  338. class Scene_Skill < Scene_ItemBase
  339.   #--------------------------------------------------------------------------
  340.   # ● アイテムの使用
  341.   #--------------------------------------------------------------------------
  342.   alias use_item_KMS_SkillLevel use_item
  343.   def use_item
  344.     use_item_KMS_SkillLevel

  345.     @help_window.set_actor(@actor)
  346.     @help_window.refresh
  347.     @help_window.set_actor(nil)
  348.   end
  349. end

  350. #==============================================================================
  351. # ■ Scene_Battle
  352. #==============================================================================

  353. class Scene_Battle < Scene_Base
  354.   #--------------------------------------------------------------------------
  355.   # ● コマンド[スキル]
  356.   #--------------------------------------------------------------------------
  357.   alias command_skill_KMS_SkillLevel command_skill
  358.   def command_skill
  359.     @help_window.clear

  360.     command_skill_KMS_SkillLevel
  361.   end
  362. end
复制代码

Lv1.梦旅人

梦石
0
星屑
59
在线时间
831 小时
注册时间
2010-8-23
帖子
487
2
发表于 2012-3-5 16:17:10 | 只看该作者
本帖最后由 嗨。猪头 于 2012-3-5 16:17 编辑

http://rpg.blue/forum.php?mod=vi ... D368%26typeid%3D368


论坛有

点评

对不起,是熟练度,不是等级...  发表于 2012-3-5 16:39
正统RPG进度更新~
剧情:■■■■■■■■■
系统:■■■■■■■■□□
设定:■■■■■■■■□□
左右时尚鞋坊 美丽从脚开始
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
142
在线时间
90 小时
注册时间
2008-7-14
帖子
112
3
发表于 2012-3-6 08:45:04 | 只看该作者
效果看不到的。。
  # ◆ メニュー画面で使用した場合も熟練度を上げる
  ENABLE_ON_MENU   = false
这句说的是在非战斗状态下,用技能是否增加熟练度。。
你要看熟练度的话, ,,在技能描述里面加上  /sxp  还是 sxp 就可以在游戏里面看到数值了。。攻击效果要在伤害里面加上 sxp的运算。。要不然你熟练度满了都没用。。。

点评

感谢翻译  发表于 2014-2-9 00:28
吾为吾剑之骨 身为钢铁,血为烈焰 跨越万千战场而不败 未曾有一次败逃 未能有一次获解 自醉于剑之孤丘上 因此,此生亦无意义 此身,定可为剑
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-20 06:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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