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

Project1

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

[已经过期] 技能冷却脚本在测试游戏时没问题但是进入游戏报错,求.....

[复制链接]

Lv2.观梦者

梦石
0
星屑
2805
在线时间
60 小时
注册时间
2016-11-10
帖子
4
跳转到指定楼层
1
发表于 2016-11-12 09:42:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x

Lv2.观梦者

梦石
0
星屑
2805
在线时间
60 小时
注册时间
2016-11-10
帖子
4
2
 楼主| 发表于 2016-11-12 09:43:52 | 只看该作者
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
2805
在线时间
60 小时
注册时间
2016-11-10
帖子
4
3
 楼主| 发表于 2016-11-12 09:46:15 | 只看该作者
本帖最后由 RyanBern 于 2016-11-12 13:42 编辑

这个是脚本,脚本盲是不是和别的脚本冲突了。。。。。。
RUBY 代码复制
  1. #=======================================================================
  2. #  豪华版技能冷却系统 By 绿发的Eclair
  3. #  使用方法:在特技名称后面用半角逗号分割,写上冷却回合数。
  4. #  比如 十字斩,10 就是特技 十字斩 冷却10个回合了。
  5. #  注意这个冷却是敌我通用的,不只是我方,敌人也不会使用冷却中的技能哦。
  6. #  不想让特技窗口中显示冷却回合数, $冷却时间显示 = false 就行了。
  7. #  冲突性:存在,但是除了RTAB外似乎整合难度不大。
  8. #=======================================================================
  9. $冷却时间显示 = true
  10. module RPG
  11.   class Skill
  12.   def cold
  13.     return @name.split(/,/)[1]
  14.   end
  15.   def name(actor = nil)
  16.     if $冷却时间显示 and actor != nil and actor.cold[@id] != nil
  17.       a = (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0])
  18.       return a + "(" + actor.cold[@id].to_s + "回合冷却)"
  19.     else
  20.       return (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0])
  21.     end
  22.   end
  23.   end
  24. end
  25. class Game_Battler
  26.   attr_accessor :cold
  27.   alias initialize_cold :initialize
  28.   def initialize
  29.     [url=home.php?mod=space&uid=10437]@cold[/url] = {}
  30.     initialize_cold
  31.   end
  32.   def set_cold(key,val)
  33.     return if @cold[key] == nil
  34.     @cold[key] += val
  35.     @cold.delete(key) if @cold[key] <= 0
  36.   end
  37.   alias skill_can_use_addcold :skill_can_use?
  38.   def skill_can_use?(skill_id)
  39.     return false if @cold[skill_id] != nil
  40.     skill_can_use_addcold(skill_id)
  41.   end
  42. end
  43. class Scene_Battle
  44.   alias make_skill_action_result_addcold :make_skill_action_result
  45.   def make_skill_action_result
  46.     make_skill_action_result_addcold
  47.     if @skill.cold.to_i != 0
  48.     @active_battler.cold[@skill.id] = @skill.cold.to_i
  49.     end
  50.   end
  51.   alias start_phase4_addcold :start_phase4
  52.   def start_phase4
  53.     for i in $game_party.actors + $game_troop.enemies
  54.       for j in i.cold.keys
  55.       i.set_cold(j,-1)
  56.       end  
  57.     end  
  58.     start_phase4_addcold
  59.   end   
  60. end  
  61. class Window_Skill < Window_Selectable
  62.     def draw_item(index)
  63.     skill = @data[index]
  64.     if @actor.skill_can_use?(skill.id)
  65.       self.contents.font.color = normal_color
  66.     else
  67.       self.contents.font.color = disabled_color
  68.     end
  69.     x = 4 + index % 2 * (288 + 32)
  70.     y = index / 2 * 32
  71.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  72.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  73.     bitmap = RPG::Cache.icon(skill.icon_name)
  74.     opacity = self.contents.font.color == normal_color ? 255 : 128
  75.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  76.     if $scene.is_a?(Scene_Battle)
  77.     self.contents.draw_text(x + 28, y, 204, 32, skill.name(@actor), 0)
  78.     else
  79.     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  80.     end
  81.     self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
  82.   end
  83. end
  84.  
  85. class Game_Enemy < Game_Battler
  86.     def make_action
  87.     # 清除当前行动
  88.     self.current_action.clear
  89.     # 无法行动的情况
  90.     unless self.movable?
  91.       # 过程结束
  92.       return
  93.     end
  94.     # 抽取现在有效的行动
  95.     available_actions = []
  96.     rating_max = 0
  97.     for action in self.actions
  98.       # 确认回合条件
  99.       n = $game_temp.battle_turn
  100.       a = action.condition_turn_a
  101.       b = action.condition_turn_b
  102.       if (b == 0 and n != a) or
  103.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  104.         next
  105.       end
  106.       # 确认 HP 条件
  107.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  108.         next
  109.       end
  110.       if self.cold[action.skill_id] != nil
  111.         next
  112.       end
  113.       # 确认等级条件
  114.       if $game_party.max_level < action.condition_level
  115.         next
  116.       end
  117.       # 确认开关条件
  118.       switch_id = action.condition_switch_id
  119.       if switch_id > 0 and $game_switches[switch_id] == false
  120.         next
  121.       end
  122.       # 符合条件 : 添加本行动
  123.       available_actions.push(action)
  124.       if action.rating > rating_max
  125.         rating_max = action.rating
  126.       end
  127.     end
  128.     # 最大概率值作为 3 合计计算(0 除外)
  129.     ratings_total = 0
  130.     for action in available_actions
  131.       if action.rating > rating_max - 3
  132.         ratings_total += action.rating - (rating_max - 3)
  133.       end
  134.     end
  135.     # 概率合计不为 0 的情况下
  136.     if ratings_total > 0
  137.       # 生成随机数
  138.       value = rand(ratings_total)
  139.       # 设置对应生成随机数的当前行动
  140.       for action in available_actions
  141.         if action.rating > rating_max - 3
  142.           if value < action.rating - (rating_max - 3)
  143.             self.current_action.kind = action.kind
  144.             self.current_action.basic = action.basic
  145.             self.current_action.skill_id = action.skill_id
  146.             self.current_action.decide_random_target_for_enemy
  147.             return
  148.           else
  149.             value -= action.rating - (rating_max - 3)
  150.           end
  151.         end
  152.       end
  153.     end
  154.   end
  155. end
  156. #=======================================================================
  157. #豪华版技能冷却系统
  158. #=======================================================================

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2016-11-12 13:46:45 | 只看该作者
初步看是和旧存档不兼容。新开游戏的话应该没问题。
@cold

25-42行作如下修改
RUBY 代码复制
  1. class Game_Battler
  2.   attr_accessor :cold
  3.   alias initialize_cold :initialize
  4.   def initialize
  5.     @cold = {}
  6.     initialize_cold
  7.   end
  8.   def set_cold(key,val)
  9.     @cold || = {}
  10.     return if @cold[key] == nil
  11.     @cold[key] += val
  12.     @cold.delete(key) if @cold[key] <= 0
  13.   end
  14.   alias skill_can_use_addcold :skill_can_use?
  15.   def skill_can_use?(skill_id)
  16.     @cold || = {}
  17.     return false if @cold[skill_id] != nil
  18.     skill_can_use_addcold(skill_id)
  19.   end
  20. end

加了两句话。应该能解决问题。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
2805
在线时间
60 小时
注册时间
2016-11-10
帖子
4
5
 楼主| 发表于 2016-11-12 15:23:58 | 只看该作者
问题解决了,谢谢大神。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 16:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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