Project1

标题: 求教于Scene_Battle4中状态效果问题 [打印本页]

作者: 宁静致远p    时间: 2012-4-4 10:11
标题: 求教于Scene_Battle4中状态效果问题
本帖最后由 宁静致远p 于 2012-4-4 15:25 编辑

小生是个脚本菜鸟,请各位老鸟不要见笑。
我是想在Scene_Battle4中添加一个效果:中了@active_battler.state?(38)   角色中了38号状态时每回合敌人损失100HP的血,开始的时候我是这样写的(在连续伤害后面添加)
      if@active_battler.hp > 0 and @active_battler.state?(38)      
     if@active_battler.state?(27)
     elsif @active_battler.animation_id = 96             # 显示96画
     @attr_accessor.hp-= 100 # 减少100HP
     @attr_accessor.sp-=100# 减少100精神
     @attr_accessor.damage = "红色剑灵低极效果" # 设置伤害文字为"红色剑灵低极效果"
     @attr_accessor.damage_pop = true             # 将伤害显示在屏幕上
  end
end
可是脚本出错,希望各位能帮助一下,谢谢
最好是可以显示出伤害,这里我用了伤害值美化脚本
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     #--------------------------------------------------------------------------
  4.     # ● 伤害值描画
  5.     #--------------------------------------------------------------------------
  6.     def damage(value, critical)
  7.       # 释放伤害
  8.       dispose_damage
  9.       # 如果伤害值是数值
  10.       if value.is_a?(Numeric)
  11.         # 绝对值转为字符串
  12.         damage_string = value.abs.to_s
  13.       else
  14.         # 转为字符串
  15.         damage_string = value.to_s
  16.       end
  17.       # 初始化位图
  18.       bitmap = Bitmap.new(162, 64)
  19.       bitmap.font.name = "华文行楷" #Arial Black
  20.       bitmap.font.size = 32
  21.       # 伤害值是数值的情况下
  22.       if value.is_a?(Numeric)
  23.         # 分割伤害值字符串
  24.         damage_array = damage_string.scan(/./)
  25.         damage_x = 81 - damage_string.size * 9
  26.         # 伤害值为负的情况下
  27.         if value < 0
  28.           # 调用回复数字表
  29.           rect_y = 32
  30.         else
  31.           # 调用伤害数字表
  32.           rect_y = 0
  33.         end
  34.         # 循环伤害值字符串
  35.         for char in damage_array
  36.           number = char.to_i
  37.           # 显示伤害数字
  38.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  39.             Rect.new(number * 18, rect_y, 18, 32))
  40.           # 后移一位
  41.           damage_x += 18
  42.         end
  43.       # 伤害值不是数值的情况
  44.       else
  45.         # 如果伤害值不是 Miss
  46.         unless value == "Miss"
  47.           # 系统默认描画字符串
  48.           bitmap.font.color.set(0, 0, 0)
  49.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  50.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  51.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  52.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  53.           bitmap.font.color.set(255, 255, 255)
  54.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  55.         # Miss 的情况下
  56.         else
  57.           # 显示未击中图画
  58.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  59.         end
  60.       end
  61.       # 会心一击标志打开的情况
  62.       if critical
  63.         # 显示会心一击图画
  64.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  65.       end
  66.       # 伤害值定位
  67.       @_damage_sprite = ::Sprite.new(self.viewport)
  68.       @_damage_sprite.bitmap = bitmap
  69.       @_damage_sprite.ox = 81
  70.       @_damage_sprite.oy = 20
  71.       @_damage_sprite.x = self.x
  72.       @_damage_sprite.y = self.y - self.oy / 2
  73.       @_damage_sprite.z = 3000
  74.       @_damage_duration = 40
  75.     end
  76.   end
  77. end
复制代码
dsu_plus_rewardpost_czw




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1