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

Project1

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

[已经解决] 帮我做个伤害的脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
151
在线时间
195 小时
注册时间
2009-10-10
帖子
435
21
 楼主| 发表于 2009-11-9 21:07:49 | 只看该作者
if @character.damage_pop

  damage(@character.damage, @character.critical)

  @character.damage = nil

  @character.critical = false

  @character.damage_pop = false

  $game_switches[10] = false #加入这一行,为了复位。

end
加在哪个位置?
class Sprite_Character < RPG::Sprite
  alias carol3_66RPG_damage_pop_update update
  def update
    carol3_66RPG_damage_pop_update
    if @character.damage_pop
      damage(@character.damage, @character.critical)
      @character.damage = nil
      @character.critical = false
      @character.damage_pop = false
    end
  end  
end
class Game_Character
  attr_accessor :damage_pop
  attr_accessor :damage
  attr_accessor :critical
  alias carol3_66RPG_damage_pop_initialize initialize
  def initialize
    @damage_pop = false
    @damage = 0
    @critical = false
    carol3_66RPG_damage_pop_initialize
  end
end
帮我加进去吧!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
22
发表于 2009-11-9 21:20:34 | 只看该作者
本帖最后由 well 于 2009-11-9 21:21 编辑
加在哪个位置?
class Sprite_Character < RPG::Sprite
  alias carol3_66RPG_damage_pop_update update
  def update
    carol3_66RPG_damage_pop_update
    if @character.damage_pop
      damage(@character.damage, @character.critical)
      @character.damage = nil
      @character.critical = false
      @character.damage_pop = false
      $game_switches[10] = false #加这里
    end
  end  
...
pudding 发表于 2009-11-9 21:07

其实不加也无所谓,在显示伤害前把开关关上就是。
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
151
在线时间
195 小时
注册时间
2009-10-10
帖子
435
23
 楼主| 发表于 2009-11-9 21:25:02 | 只看该作者
其实不加也无所谓,在显示伤害前把开关关上就是。
well 发表于 2009-11-9 21:20

你测试过的吗?有错误额...
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
24
发表于 2009-11-9 21:31:17 | 只看该作者
本帖最后由 well 于 2009-11-9 21:32 编辑

我没测试不加复位开关的情况,请问错误提示是?
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
151
在线时间
195 小时
注册时间
2009-10-10
帖子
435
25
 楼主| 发表于 2009-11-9 21:35:37 | 只看该作者
本帖最后由 pudding 于 2009-11-9 21:36 编辑



但是 58行却是这样  
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
26
发表于 2009-11-9 22:06:15 | 只看该作者
24# pudding
,少end。
算了,我把脚本完整贴一遍吧,我测试显示是正常的。
  1. # ============================================================================
  2. # 伤害效果美化 v1.0 by SailCat
  3. # 整合 地图伤害 by carol3
  4. #============================================================================
  5. # 脚本使用说明:
  6. # 1.使用时需要将Damage.png复制到你的游戏的Graphics/Pictures目录下
  7. # 2.Damage.png文件的格式:
  8. #   大小为180 x 96
  9. #   (0, 0) - (179, 31)为伤害值的数字表,其中每个数字宽18,高32
  10. #   (0, 32) - (179, 63)为回复值(伤害负值)的数字表,其中每个数字宽18,高32
  11. #   (0, 64) - (89, 95)为会心一击标记的图画,长宽为90 x 32
  12. #   (90, 64) - (179, 95)为未命中标记的图画,长宽为90 x 32
  13. # ============================================================================
  14. # 伤害显示方法:
  15. # ★、对角色显示伤害:
  16. # 脚本:
  17. # $game_switches[10] = true #图片第4行效果,此时负数无效
  18. # $game_player.damage = 数值 #负数效果为图片第2行,若为负值,省略第一行。
  19. # $game_player.critical = true #会心一击,false则省略此行
  20. # $game_player.damage_pop = true
  21. #
  22. # ★、对普通NPC和事件进行伤害:
  23. # 脚本:
  24. # $game_map.events[事件编号].damage = 数值 #负数效果为图片第2行
  25. # $game_map.events[事件编号].critical = true/false #会心一击
  26. # $game_map.events[事件编号].damage_pop = true
  27. #
  28. # 注意,事件编号是事件的ID号,如果目标是“本事件”,那么在事件编号输入@event_id
  29. #
  30. # ============================================================================
  31. module RPG
  32.   class Sprite < ::Sprite
  33.     #--------------------------------------------------------------------------
  34.     # ● 伤害值描画
  35.     #--------------------------------------------------------------------------
  36.     def damage(value, critical)
  37.       # 释放伤害
  38.       dispose_damage
  39.       # 如果伤害值是数值
  40.       if value.is_a?(Numeric)
  41.         # 绝对值转为字符串
  42.         damage_string = value.abs.to_s
  43.       else
  44.         # 转为字符串
  45.         damage_string = value.to_s
  46.       end
  47.       # 初始化位图
  48.       bitmap = Bitmap.new(180, 128)
  49.       bitmap.font.name = "Arial Black"
  50.       bitmap.font.size = 32
  51.       # 伤害值是数值的情况下
  52.       if value.is_a?(Numeric)
  53.         # 分割伤害值字符串
  54.         damage_array = damage_string.scan(/./)
  55.         damage_x = 81 - damage_string.size * 9
  56.         # 伤害值为负的情况下
  57.         if value < 0
  58.           # 调用回复数字表
  59.           rect_y = 32
  60.         else
  61.           # 调用伤害数字表
  62.           rect_y = 0
  63.         end
  64.         # 循环伤害值字符串
  65.         for char in damage_array
  66.           number = char.to_i
  67.           # 显示伤害数字
  68.           if $game_switches[10] == true
  69.             bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  70.             Rect.new(number * 18, rect_y+32*3, 18, 32))        
  71.           else
  72.             bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  73.             Rect.new(number * 18, rect_y, 18, 32))
  74.           end
  75.           # 后移一位
  76.           damage_x += 18
  77.         end
  78.       # 伤害值不是数值的情况
  79.       else
  80.         # 如果伤害值不是 Miss
  81.         unless value == "Miss"
  82.           # 系统默认描画字符串
  83.           bitmap.font.color.set(0, 0, 0)
  84.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  85.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  86.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  87.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  88.           bitmap.font.color.set(255, 255, 255)
  89.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  90.         # Miss 的情况下
  91.         else
  92.           # 显示未击中图画
  93.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  94.         end
  95.       end
  96.       # 会心一击标志打开的情况
  97.       if critical
  98.         # 显示会心一击图画
  99.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  100.       end
  101.       # 伤害值定位
  102.       @_damage_sprite = ::Sprite.new(self.viewport)
  103.       @_damage_sprite.bitmap = bitmap
  104.       @_damage_sprite.ox = 81
  105.       @_damage_sprite.oy = 20
  106.       @_damage_sprite.x = self.x
  107.       @_damage_sprite.y = self.y - self.oy
  108.       @_damage_sprite.z = 3000
  109.       @_damage_duration = 40      
  110.     end
  111. #=================整合地图伤害==============================================
  112.     alias carol3_66RPG_damage_pop_update update
  113.     def update
  114.       carol3_66RPG_damage_pop_update
  115.       if @character.damage_pop
  116.         damage(@character.damage, @character.critical)
  117.         @character.damage = nil
  118.         @character.critical = false
  119.         @character.damage_pop = false
  120. #=================开关复位===================================================
  121.         $game_switches[10] = false
  122. #============================================================================
  123.       end
  124. #=================伤害跟随角色===============================================
  125.       if @_damage_duration > 0
  126.         @_damage_sprite.x = self.x
  127.         case @_damage_duration
  128.         when 0..32
  129.           unless @_damage_sprite.y == self.y - self.oy
  130.             @_damage_sprite.y -= (@_damage_sprite.y - self.y + self.oy)/8
  131.           end
  132.         end        
  133.       end
  134. #============================================================================
  135.     end   
  136.   end  
  137. end
  138. #=================整合地图伤害===============================================
  139. class Game_Character
  140.   attr_accessor :damage_pop
  141.   attr_accessor :damage
  142.   attr_accessor :critical
  143.   alias carol3_66RPG_damage_pop_initialize initialize
  144.   def initialize
  145.     @damage_pop = false
  146.     @damage = 0
  147.     @critical = false
  148.     carol3_66RPG_damage_pop_initialize
  149.   end
  150. end
  151. #==============================================================================
  152. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  153. #==============================================================================
复制代码
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
151
在线时间
195 小时
注册时间
2009-10-10
帖子
435
27
 楼主| 发表于 2009-11-9 22:10:00 | 只看该作者
本帖最后由 pudding 于 2009-11-9 22:13 编辑

  怎么还不是角色受伤显示第4行的...而且伤害N久才消失..角色移动它也跟着移动

把$game_player.damage_pop = true 换了  $game_switches[10] = true 后
角色受伤并没有显示伤害...   请认真测试过...

未命名.PNG (7.52 KB, 下载次数: 39)

未命名.PNG
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
28
发表于 2009-11-9 22:54:07 | 只看该作者
26# pudding

好吧,我不能说别人理解力差,只好说自己表述有问题了。
我有表达过把$game_player.damage_pop = true 替换 $game_switches[10] = true
这样的意思吗?
下面是写在事件里的伤害显示脚本
角色普通伤害(4行)

  1. $game_switches[10] = true
  2. $game_player.damage = 正数
  3. $game_player.damage_pop = true
复制代码
角色恢复

  1. $game_player.damage = 负数
  2. $game_player.damage_pop = true
复制代码
角色会心一击

  1. $game_switches[10] = true     #希望伤害数字为4行效果则加上此行
  2. $game_player.damage = 正数
  3. $game_player.critical = true
  4. $game_player.damage_pop = true
复制代码
伤害显示时间改 @_damage_duration = 40 的数值。还有运动轨迹都是系统默认,有需要在update里面改。参考14楼。
我已经搞不清你要伤害跟随角色还是不跟随。不要的跟随的话把我标注的那段删除即可。
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
151
在线时间
195 小时
注册时间
2009-10-10
帖子
435
29
 楼主| 发表于 2009-11-9 23:05:44 | 只看该作者
本帖最后由 pudding 于 2009-11-9 23:08 编辑

我已经搞不清你要伤害跟随角色还是不跟随。不要的跟随的话把我标注的那段删除即可。


伤害的消失 请做成我签名的那样 向上 慢慢 消失
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
30
发表于 2009-11-9 23:28:49 | 只看该作者
28# pudding
25楼109行 @_damage_duration = 30

  1. #=================伤害跟随角色===============================================
  2.       if @_damage_duration > 0
  3.         @_damage_sprite.x = self.x
  4.         @_damage_sprite.y -= 2   
  5.         @_damage_sprite.opacity = @_damage_duration * 6 + 50
  6.       end
  7. #============================================================================
复制代码
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 11:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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