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

Project1

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

技能等级的脚本出现错误

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2009-1-26
帖子
48
跳转到指定楼层
1
发表于 2009-5-23 15:26:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

  1. class RPG::Skill < RPG::UsableItem
  2.   # 判斷技能是否有等級
  3.   def lvup?
  4.     self.note.split(/[\r\n]+/).each { |line|
  5.       return line =~ /\[(lvup|level up|升級|升级)\]/}
  6.     return false
  7.   end
  8.   # 判斷技能熟練度次數
  9.   def times_used_to_lvup
  10.     self.note.split(/[\r\n]+/).each { |line|
  11.       return $1.to_i if line =~ /\[(?:use_exp|熟練次數) (\d*)\]/}
  12.     return 20
  13.   end
  14.   # 判斷技能所需熟練度
  15.   def use_exp; return (100 / times_used_to_lvup); end
  16.   # 獲取技能最大等級
  17.   def maxlv
  18.     self.note.split(/[\r\n]+/).each { |line|
  19.       return $1.to_i if line =~ /\[(?:maxlv|最大等級|最大等级) (\d*)\]/}
  20.     return 1
  21.   end
  22.   # 獲取等級值
  23.   def get_value(lv, hash)
  24.     if hash.include?(lv)
  25.       return hash[lv]
  26.     else
  27.       ks = hash.keys.dup
  28.       ks.sort!
  29.       for i in 1..hash.size-1
  30.         k0 = ks[i-1]
  31.         k1 = ks[i]
  32.         k2 = ks[i+1]
  33.         if lv > k1 and lv < k2
  34.           return hash[k1]
  35.         elsif lv < k1
  36.           return hash[k0]
  37.         elsif lv > k2
  38.           next
  39.         end
  40.       end
  41.     end
  42.   end
  43. end
  44. class Game_Temp
  45.   alias skill_level_initialize initialize
  46.   attr_accessor :skill_level
  47.   def initialize
  48.     skill_level_initialize
  49.     @skill_level = 1
  50.   end
  51. end
  52. class Game_Battler
  53.   # 技能效果 + 熟練度提升
  54.   alias skill_level_skill_effect skill_effect
  55.   def skill_effect(user, skill)
  56.     if skill_effective?(user, skill)
  57.       exp = user.skill_exp[skill.id].to_i + skill.use_exp
  58.       user.change_skill_exp(skill.id, exp)
  59.     end
  60.     skill_level_skill_effect(user, skill)
  61.   end
  62. end
  63. class Game_Actor < Game_Battler
  64.   attr_accessor :skill_level
  65.   attr_accessor :skill_exp
  66.   alias skill_level_initialize initialize
  67.   # 可升級技能初始化
  68.   def initialize(actor_id)
  69.     skill_level_initialize(actor_id)
  70.     @skill_level = {}
  71.     @skill_exp   = {}
  72.     for i in self.class.learnings
  73.       skill = $data_skills[i.skill_id]
  74.       if skill.lvup?
  75.         @skill_level[skill.id] ||= 1
  76.         @skill_exp[skill.id] ||= 0
  77.       end
  78.     end
  79.   end
  80.   # 更改技能熟練度
  81.   def change_skill_exp(id, exp)
  82.     @skill_exp[id] = [[exp, 99999].min, 0].max
  83.     while @skill_exp[id] >= 100
  84.       skill_level_up(id)
  85.       @skill_exp[id] = 0
  86.     end
  87.   end
  88.   # 更改技能等級
  89.   def skill_level_up(id, level=1)
  90.     return unless skill_lvup?(id)
  91.     @skill_level[id] = @skill_level[id].to_i+level
  92.     # 顯示升級提示窗口
  93.     @skill_lvup_window = Window_Base.new(0, (416-56)/2, 544,56)
  94.     text="技能[#{$data_skills[id].name}]等級提升"
  95.     @skill_lvup_window.contents.draw_text(0, 0, 512, Window_Base::WLH, text, 1)
  96.     Graphics.wait(60) # 等待60禎
  97.     @skill_lvup_window.dispose
  98.   end
  99.   # 角色技能是否能升级
  100.   def skill_lvup?(id)
  101.     return @skill_level[id] != $data_skills[id].maxlv
  102.     return $data_skills[id].lvup?
  103.   end
  104. end
  105. class Window_Base < Window
  106.   alias skill_level_draw_item_name draw_item_name
  107.   # 繪製技能名稱
  108.   def draw_item_name(item, x, y, enabled = true)
  109.     if item != nil and item.is_a?(RPG::Skill) and item.lvup?
  110.       draw_skill_name_lvup(item, x, y, enabled)
  111.       return
  112.     end
  113.     skill_level_draw_item_name(item, x, y, enabled)
  114.   end
  115.   # 繪製可升級技能名稱
  116.   def draw_skill_name_lvup(item, x, y, enabled = true)
  117.     draw_icon(item.icon_index, x, y, enabled)
  118.     self.contents.font.color = normal_color
  119.     self.contents.font.color.alpha = enabled ? 255 : 128
  120.     exp = @actor.skill_exp[item.id]
  121.     level = @actor.skill_level[item.id]
  122.     if @actor.skill_lvup?(item.id)
  123.       self.contents.draw_text(x + 24, y, 172, WLH, item.name+" LV:#{level}"+"(#{exp}%)")
  124.     else
  125.       self.contents.draw_text(x + 24, y, 172, WLH, item.name+" LV:#{level}")
  126.     end
  127.   end
  128. end
  129. class Game_Actor < Game_Battler
  130.   alias skill_level_skill_effective? skill_effective?
  131.   def skill_effective?(user, skill)
  132.     $game_temp.skill_level = user.skill_level[skill.id]
  133.     skill_level_skill_effective?(user, skill)
  134.   end
  135. end
  136. class Game_BattleAction
  137.   alias skill_level_set_skill set_skill
  138.   alias skill_level_skill skill
  139.   def set_skill(skill_id)
  140.     skill_level_set_skill(skill_id)
  141.     $game_temp.skill_level = @battler.skill_level[skill_id]
  142.   end
  143.   def skill
  144.     $game_temp.skill_level = @battler.skill_level[@skill_id]
  145.     skill_level_skill
  146.   end
  147. end
  148. class Window_Skill < Window_Selectable
  149.   alias skill_level_skill skill
  150.   def skill
  151.     $game_temp.skill_level = @actor.skill_level[@data[self.index].id]
  152.     skill_level_skill
  153.   end
  154. end

复制代码


class Window_Skill < Window_Selectable
  alias skill_level_skill skill
  def skill
    $game_temp.skill_level = @actor.skill_level[@data[self.index].id]
    skill_level_skill
  end
end出现错误……放到新工程中,敌人无法使用技能……
此贴于 2009-6-6 10:31:26 被版主木葬枫提醒,请楼主看到后对本贴做出回应。
这世界太疯狂了……

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2009-1-26
帖子
48
2
 楼主| 发表于 2009-6-6 20:57:56 | 只看该作者
- -被54还被提醒,真是悲哀
这世界太疯狂了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 11:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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