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

Project1

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

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

 关闭 [复制链接]

Lv1.梦旅人

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



你看看...还是随着角色移动 而且 有时候角色受伤 变成蓝色  应该是红色的
伤害跳上去 又跳下来 定着  和我签名的相比....


睡觉了...明天中午在上来看看
回复

使用道具 举报

Lv2.观梦者

永遠神剣

梦石
0
星屑
334
在线时间
412 小时
注册时间
2009-8-16
帖子
1797

贵宾

32
发表于 2009-11-10 00:23:27 | 只看该作者
# 显示伤害数字
          if $game_switches[10] == true
            bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
            Rect.new(number * 18, rect_y+32*3, 18, 32))        
          else
            bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
            Rect.new(number * 18, rect_y, 18, 32))
          end

这样判定的话 .当开关打开后 不管是敌人还是角色 都会变为这个伤害图片的颜色..
其实和我遇到的问题差不多. 如果判定角色与敌人同时受伤,那么敌人的伤害也会变成这个颜色.
就因为这个关系 ,寻找很久都没想到有什么方法能解决.
不同时受伤时显示不同颜色的伤害图片就会没问题.
新的UI 旧的开始
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
33
发表于 2009-11-10 09:55:30 | 只看该作者
本帖最后由 well 于 2009-11-10 09:58 编辑

  1. # ============================================================================
  2. # 伤害效果美化 v1.0 by SailCat
  3. # ============================================================================
  4. # 脚本使用说明:
  5. # 1.使用时需要将Damage.png复制到你的游戏的Graphics/Pictures目录下
  6. # 2.Damage.png文件的格式:
  7. #   大小为180 x 96
  8. #   (0, 0) - (179, 31)为伤害值的数字表,其中每个数字宽18,高32
  9. #   (0, 32) - (179, 63)为回复值(伤害负值)的数字表,其中每个数字宽18,高32
  10. #   (0, 64) - (89, 95)为会心一击标记的图画,长宽为90 x 32
  11. #   (90, 64) - (179, 95)为未命中标记的图画,长宽为90 x 32
  12. # ============================================================================
  13. # 使用方法:
  14. #
  15. # ★、对角色显示伤害:默认显示第4行
  16. # 脚本:
  17. # $game_player.damage = 数值 #负数效果为图片第2行
  18. # $game_player.critical = true #会心一击,false则省略此行
  19. # $game_player.damage_pop = true
  20. #
  21. # ★、对普通NPC和事件进行伤害:默认显示第1行
  22. # 脚本:
  23. # $game_map.events[事件编号].damage = 数值 #负数效果为图片第2行
  24. # $game_map.events[事件编号].critical = true/false #会心一击,false则省略此行
  25. # $game_map.events[事件编号].damage_pop = true
  26. #
  27. # 注意,事件编号是事件的ID号,如果目标是“本事件”,那么在事件编号输入@event_id
  28. #
  29. # ============================================================================
  30. module RPG
  31.   class Sprite < ::Sprite
  32.     #--------------------------------------------------------------------------
  33.     # ● 伤害值描画
  34.     #--------------------------------------------------------------------------
  35.     def damage(value, critical)
  36.       # 释放伤害
  37.       dispose_damage
  38.       # 如果伤害值是数值
  39.       if value.is_a?(Numeric)
  40.         # 绝对值转为字符串
  41.         damage_string = value.abs.to_s
  42.       else
  43.         # 转为字符串
  44.         damage_string = value.to_s
  45.       end
  46.       # 初始化位图
  47.       bitmap = Bitmap.new(180, 128)
  48.       bitmap.font.name = "Arial Black"
  49.       bitmap.font.size = 32
  50.       # 伤害值是数值的情况下
  51.       if value.is_a?(Numeric)
  52.         # 分割伤害值字符串
  53.         damage_array = damage_string.scan(/./)
  54.         damage_x = 81 - damage_string.size * 9        
  55.         # 循环伤害值字符串
  56.         for char in damage_array
  57.           # 伤害值为负的情况下
  58.           if value < 0
  59.             # 调用回复数字表
  60.             rect_y = 32
  61.           else
  62.             # 调用伤害数字表
  63.             rect_y = 0
  64.           end
  65.           number = char.to_i
  66.           # 显示伤害数字
  67.           if @character.is_a?(Game_Player) && value > 0     
  68.             bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  69.             Rect.new(number * 18, 32*3, 18, 32))        
  70.           else
  71.             bitmap.blt(damage_x, 32, RPG::Cache.picture("Damage"),
  72.             Rect.new(number * 18, rect_y, 18, 32))
  73.           end
  74.           # 后移一位
  75.           damage_x += 18
  76.         end
  77.       # 伤害值不是数值的情况
  78.       else
  79.         # 如果伤害值不是 Miss
  80.         unless value == "Miss"
  81.           # 系统默认描画字符串
  82.           bitmap.font.color.set(0, 0, 0)
  83.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  84.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  85.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  86.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  87.           bitmap.font.color.set(255, 255, 255)
  88.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  89.         # Miss 的情况下
  90.         else
  91.           # 显示未击中图画
  92.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  93.         end
  94.       end
  95.       # 会心一击标志打开的情况
  96.       if critical
  97.         # 显示会心一击图画
  98.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  99.       end
  100.       # 伤害值定位
  101.       @_damage_sprite = ::Sprite.new(self.viewport)
  102.       @_damage_sprite.bitmap = bitmap
  103.       @_damage_sprite.ox = 81
  104.       @_damage_sprite.oy = 20
  105.       @_damage_sprite.x = self.x
  106.       @_damage_sprite.y = self.y - self.oy
  107.       @_damage_sprite.z = 3000
  108.       @_damage_duration = 30      
  109.     end
  110. #=================整合地图伤害==============================================
  111.     alias carol3_66RPG_damage_pop_update update
  112.     def update
  113.       carol3_66RPG_damage_pop_update
  114.       if @character.damage_pop
  115.         if @can_be_hurt
  116.           @can_be_hurt = false
  117.           damage(@character.damage, @character.critical)
  118.         end
  119.         @character.damage = nil
  120.         @character.critical = false
  121.         @character.damage_pop = false  
  122.       end
  123. #=================伤害跟随角色===============================================
  124.       if @_damage_duration > 0
  125.         @_damage_sprite.x = self.x
  126.         @_damage_sprite.y -= 2
  127.         @_damage_sprite.opacity = @_damage_duration * 8 + 10
  128.       end      
  129.       if @_damage_duration == 0
  130.         dispose_damage
  131.         @can_be_hurt = true
  132.       end      
  133. #============================================================================
  134.     end   
  135.   end  
  136. end
  137. #=================整合地图伤害===============================================
  138. class Game_Character
  139.   attr_accessor :damage_pop
  140.   attr_accessor :damage
  141.   attr_accessor :critical
  142.   alias carol3_66RPG_damage_pop_initialize initialize
  143.   def initialize
  144.     @damage_pop = false
  145.     @damage = 0
  146.     @critical = false
  147.     carol3_66RPG_damage_pop_initialize
  148.   end
  149. end
  150. #==============================================================================
  151. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  152. #==============================================================================
复制代码
30# pudding
重新写过,请继续测试。
关于跳上跳下,是因为攻击频率过于密集,所以@_damage_sprite.y不停地重定位。现在用的办法是@can_be_hurt控制,使上一次伤害前消失不发生下一次伤害。效果么……感觉跳的情况得到缓解,为什么只是缓解……{:4_83:}
31# Eienshinken
嗯,感觉自己进入了无限死循环似的。之前用@character.is_a?(Game_Player)判断,不报错但无效果。所以用了开关,现在看起来,尽管伤害发生后立刻让开关复位,总是存在时间差。所以改回用@character判断,好像有效……所以之前大概是我拼写错误或是大小写有问题?但为什么不报错呢???
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
133
在线时间
195 小时
注册时间
2009-10-10
帖子
435
34
 楼主| 发表于 2009-11-10 12:19:27 | 只看该作者
本帖最后由 pudding 于 2009-11-10 17:59 编辑

32# well

把的脚本负数 改成 显示的都是MISS...并不增加生命

想个其他办法,使用物品恢复生命,地图显示恢复生命的那行   增加100点生命 就显示 100点生命(这个可以不设置...如果可以帮我做)

未命名.PNG (10.19 KB, 下载次数: 20)

未命名.PNG
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
133
在线时间
195 小时
注册时间
2009-10-10
帖子
435
35
 楼主| 发表于 2009-11-10 19:55:03 | 只看该作者
帮我做好后,可以另加VIP...
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
36
发表于 2009-11-11 09:33:59 | 只看该作者
32# well

把的脚本负数 改成 显示的都是MISS...并不增加生命

想个其他办法,使用物品恢复生命,地图显示恢复生命的那行   增加100点生命 就显示 100点生命(这个可以不设置...如果可以帮我做) ...
pudding 发表于 2009-11-10 12:19

……我看不懂。
是说现在负数显示不出来?
还是,现在有效果,希望改成负值无效……那,你不用负值不就行了。
然后是使用恢复品时,希望用美化数字显示是吧。会考虑的,不过不要对我这低手期待太多。
血瞳睨世

也来玩一下养小龙吧
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
133
在线时间
195 小时
注册时间
2009-10-10
帖子
435
37
 楼主| 发表于 2009-11-11 12:17:56 | 只看该作者
……我看不懂。
是说现在负数显示不出来?
还是,现在有效果,希望改成负值无效……那,你不用负值不就行了。
然后是使用恢复品时,希望用美化数字显示是吧。会考虑的,不过不要对我这低手期待太多。 ...
well 发表于 2009-11-11 09:33


把负数改为显示..MISS
比如..当敌人的攻击为10 减 角色1级防御力5....那就显示伤害5吧!
那角色防御力会随着装备增加  敌人的攻击为 10  减角色 穿了装备的防御力 100  
那敌人打角色   角色就增加90点生命了....  改为显示 MISS 不增加生命
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1272
在线时间
670 小时
注册时间
2009-11-11
帖子
2790
38
发表于 2009-11-11 14:29:32 | 只看该作者
楼主很有爱啊
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
107 小时
注册时间
2009-11-3
帖子
246
39
发表于 2009-11-11 14:35:51 | 只看该作者
LZ还在找啊,真是太强大了
如果游戏出来,有试玩吗?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
133
在线时间
195 小时
注册时间
2009-10-10
帖子
435
40
 楼主| 发表于 2009-11-12 17:33:18 | 只看该作者
有点想放弃了...
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-12 21:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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