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

Project1

 找回密码
 注册会员
搜索
楼主: 雪流星
打印 上一主题 下一主题

[RMVA发布] 技能升级脚本 v2.1

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
66
在线时间
140 小时
注册时间
2012-2-6
帖子
384
1
发表于 2012-2-12 13:43:06 | 显示全部楼层
其实我觉得技能位这么多都用不上
不如这样
  1. class RPG::Skill < RPG::UsableItem
  2.   def get_exp_base
  3.     self.note.split(/[\r\n]+/).each{ |line|
  4.       if line =~ /\[(?:exp_base) (\d+)\]/
  5.         p $1
  6.         return $1 ? $1.to_i : 30
  7.       end}
  8.     return 30
  9.   end
  10.   def get_exp_part
  11.     self.note.split(/[\r\n]+/).each{ |line|
  12.       if line =~ /\[(?:exp_part) (\d+)\]/
  13.         return $1 ? $1.to_i : 0
  14.       end}
  15.     return 0
  16.   end
  17.   def get_use_exp
  18.     self.note.split(/[\r\n]+/).each{ |line|
  19.       if line =~ /\[(?:use_exp) (\d+)\]/
  20.         return $1 ? $1.to_i : 1
  21.       end}
  22.     return 1
  23.   end
  24.   def can_lvup?
  25.     skill_level_initialize
  26.     return $skill_lvupskill[@id]!=nil
  27.   end
  28.   def get_exp_from_actor?
  29.     return false unless can_lvup?
  30.     return @get_exp > 0
  31.   end
  32.   def lvup_by_use?
  33.     return false unless can_lvup?
  34.     return @use_exp > 0
  35.   end
  36.   def skill_level_initialize
  37.     return if @skill_level_initialized
  38.     @get_exp = get_exp_part
  39.     @use_exp = get_use_exp
  40.     @skill_level_initialized = true
  41.   end
  42.   def exp_from_actor
  43.     return @get_exp
  44.   end
  45.   attr_reader :max_level
  46.   attr_reader :use_exp
  47. end
  48. class Game_Actor < Game_Battler
  49.   alias skill_level_initialize initialize
  50.   def initialize(actor_id)
  51.     @skill_exp = {}
  52.     @skill_exp_base = {}
  53.     @skill_next_exp = {}
  54.     $skill_lvupskill = []
  55.     #比如说ID为5的技能的前置技能是ID为3的技能,后置技能是ID为7的技能。
  56.     #升级后自动遗忘原先技能。
  57.     #则写:
  58.     #@skill_lvupskill[5] = [3,7,true]
  59.     $skill_lvupskill[80] = [nil,82,true]
  60.     skill_level_initialize(actor_id)
  61.   end
  62.   alias skill_level_learn_skill learn_skill
  63.   def learn_skill(skill_id)
  64.     skill_level_learn_skill(skill_id)
  65.     skill = $data_skills[skill_id]
  66.     if skill.can_lvup?
  67.       @skill_exp[skill_id] = 0
  68.       @skill_exp_base[skill_id] = skill.get_exp_base
  69.       @skill_next_exp[skill_id] = @skill_exp_base[skill_id]
  70.     end
  71.   end
  72.   def skill_can_lvup?(skill_id)
  73.     return false unless $data_skills[skill_id].can_lvup?
  74.     return false unless @skills.include?(skill_id)
  75.     return true
  76.   end
  77.   def skill_next_exp(skill_id)
  78.     return 0 unless skill_can_lvup?(skill_id)
  79.     return @skill_next_exp[skill_id]
  80.   end
  81.   def skill_exp(skill_id)
  82.     return 0 unless skill_can_lvup?(skill_id)
  83.     return @skill_exp[skill_id]
  84.   end
  85.   alias skill_level_gain_exp gain_exp
  86.   def gain_exp(exp)
  87.     skill_level_gain_exp(exp)
  88.     @skills.each{ |id|
  89.       skill = $data_skills[id]
  90.       if skill.get_exp_from_actor?
  91.           skill_exp = (exp.to_f / skill.exp_from_actor).ceil
  92.           gain_skill_exp(id, skill_exp)
  93.       end
  94.     }
  95.   end
  96.   def gain_skill_exp(skill_id, val)
  97.     return unless skill_can_lvup?(skill_id)
  98.     @skill_exp[skill_id] += val
  99.     while @skill_exp[skill_id] >= @skill_next_exp[skill_id]
  100.       skill_lvup(skill_id)
  101.       @skill_exp[skill_id] -= @skill_next_exp[skill_id]
  102.     end
  103.   end
  104.   def gain_skill_exp_by_use(skill)
  105.     @gain_skill_exp = 0
  106.     if skill.is_a?(RPG::Skill) and skill.lvup_by_use?
  107.       @gain_skill_exp = skill.use_exp
  108.     end
  109.   end
  110.   def gain_skill_final_exp_by_use(skill, hit)
  111.     return if @gain_skill_exp < 1
  112.     @gain_skill_exp /= 2 unless hit
  113.     gain_skill_exp(skill.id, @gain_skill_exp)
  114.     @gain_skill_exp = 0
  115.   end
  116.   alias skill_level_use_item use_item
  117.   def use_item(item)
  118.     skill_level_use_item(item)
  119.     gain_skill_exp_by_use(item)
  120.   end
  121.   def skill_lvup(skill_id)
  122.     return unless skill_can_lvup?(skill_id)
  123.     forget_skill(skill_id) if $skill_lvupskill[skill_id][2]==true
  124.     learn_skill($skill_lvupskill[skill_id][1]) unless $skill_lvupskill[skill_id][1]==nil
  125.   end
  126.   def skill_lvdown(skill_id)
  127.     return unless skill_can_lvup?(skill_id)
  128.     forget_skill(skill_id)
  129.     learn_skill($skill_lvupskill[skill_id][0]) unless $skill_lvupskill[skill_id][0]==nil
  130.   end
  131. end
  132. class Game_Battler < Game_BattlerBase
  133.   alias skill_level_item_apply item_apply
  134.   def item_apply(user, item)
  135.     skill_level_item_apply(user, item)
  136.     return unless item.is_a?(RPG::Skill)
  137.     return unless user.is_a?(Game_Actor)
  138.     user.gain_skill_final_exp_by_use(item, @result.hit?)
  139.   end
  140. end
  141. class Game_Interpreter
  142.   def gain_skill_level(actor_id, skill_id, value=1)
  143.     value.times do
  144.       $game_actors[actor_id].skill_lvup(skill_id)
  145.     end
  146.   end
  147.   def lose_skill_level(actor_id, skill_id, value=1)
  148.     value.times do
  149.       $game_actors[actor_id].skill_lvdown(skill_id)
  150.     end
  151.   end
  152. end
复制代码
签名是什么?可以吃么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
140 小时
注册时间
2012-2-6
帖子
384
2
发表于 2012-3-10 10:56:02 | 显示全部楼层
感觉2.1的更新实在是摸不着头脑
赋值这个变量有什么意义呢?

点评

31楼要求的  发表于 2012-3-10 11:18
另外如果技能伤害变化,更加无意义了。 还不如直接更换为其他技能来的好  发表于 2012-3-10 11:16
签名是什么?可以吃么?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-11 03:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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