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

Project1

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

[已经解决] 请求让这个脚本支持图片显示伤害。

[复制链接]

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

跳转到指定楼层
1
发表于 2013-10-22 18:42:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. #==============================================================================
  2. # <<\/>> Vixotic_Damage_Pop up
  3. #------------------------------------------------------------------------------
  4. # Version 1.1
  5. # by Vixotic [[email][email protected][/email]]
  6. # Exclusive Script for [url]http://rpgmakervx.net/[/url]
  7. #
  8. # Place this script above Main
  9. #==============================================================================
  10. module VIX
  11. #--------------------------
  12. # Damage Text Position
  13. #------------------------
  14. Damage_X_Plus = 0
  15. # Move Damage Position in vertical direction ((-)up <= 0 => down(+))
  16. Damage_Y_Plus = -20
  17. # Move Damage Position in horizontal direction ((-)left <= 0 => right(+))
  18. #--------------------------
  19. # Damage Text Font/Size
  20. #------------------------
  21. Damage_Text_Font = "Arial Black"
  22. Damage_Text_Size = 32
  23. end
  24. class Sprite_Base < Sprite
  25. alias vix_sprbase_ini initialize
  26. alias vix_sprbase_upd update
  27. def initialize(viewport = nil)
  28. vix_sprbase_ini(viewport)
  29. @_damage_duration = 0
  30. end
  31. def update
  32. vix_sprbase_upd
  33. if @_damage_duration > 0
  34. @_damage_duration -= 1
  35. case @_damage_duration
  36. when 38..39
  37. @_damage_sprite.y -= 4
  38. when 36..37
  39. @_damage_sprite.y -= 2
  40. when 34..35
  41. @_damage_sprite.y += 2
  42. when 28..33
  43. @_damage_sprite.y += 4
  44. end
  45. @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  46. if @_damage_duration == 0
  47. dispose_damage
  48. end
  49. end
  50. end
  51.  
  52. def damage(value)
  53. dispose_damage
  54. if value.is_a?(Numeric)
  55. damage_string = value.abs.to_s
  56. else
  57. damage_string = value.to_s
  58. end
  59. bitmap = Bitmap.new(160, 48)
  60. bitmap.font.name = VIX::Damage_Text_Font
  61. bitmap.font.size = VIX::Damage_Text_Size
  62. bitmap.font.color.set(0, 0, 0)
  63. bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  64. bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  65. bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  66. bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  67. if value.is_a?(Numeric) and value < 0
  68. bitmap.font.color.set(176, 255, 144)
  69. else
  70. bitmap.font.color.set(255, 255, 255)
  71. end
  72. bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  73. @_damage_sprite = ::Sprite.new(self.viewport)
  74. @_damage_sprite.bitmap = bitmap
  75. @_damage_sprite.ox = 80
  76. @_damage_sprite.oy = 20
  77. @_damage_sprite.x = self.x + VIX::Damage_X_Plus
  78. @_damage_sprite.y = (self.y - self.oy / 2) + VIX::Damage_Y_Plus
  79. @_damage_sprite.z = 3000
  80. @_damage_duration = 40
  81. end
  82. def dispose_damage
  83. if @_damage_sprite != nil
  84. @_damage_sprite.bitmap.dispose
  85. @_damage_sprite.dispose
  86. @_damage_sprite = nil
  87. @_damage_duration = 0
  88. end
  89. end
  90. end
  91. class Game_Battler
  92. attr_accessor :damage
  93. alias vix_gamebat_clr clear_sprite_effects
  94. def clear_sprite_effects
  95. @damage = 0
  96. vix_gamebat_clr
  97. end
  98. end
  99. class Sprite_Battler < Sprite_Base
  100. DAMAGE = 7
  101. alias vix_sprbat_set setup_new_effect
  102. def setup_new_effect
  103. vix_sprbat_set
  104. if @battler.damage != 0
  105. damage(@battler.damage)
  106. @effect_type = DAMAGE
  107. @battler.damage = 0
  108. end
  109. end
  110. end
  111. class Scene_Battle < Scene_Base
  112. def display_action_effects(target, obj = nil)
  113. unless target.skipped
  114. line_number = @message_window.line_number
  115. wait(5)
  116. target.damage = target.hp_damage if target.is_a?(Game_Enemy)
  117. display_critical(target, obj)
  118. display_damage(target, obj)
  119. display_state_changes(target, obj)
  120. if line_number == @message_window.line_number
  121. display_failure(target, obj) unless target.states_active?
  122. end
  123. if line_number != @message_window.line_number
  124. wait(30)
  125. end
  126. @message_window.back_to(line_number)
  127. end
  128. end
  129. end




让这个脚本显示的伤害能通过图片显示,不知该怎么弄。
求助一下。
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
来自 2楼
发表于 2013-10-26 12:44:01 | 只看该作者
Scripts.rvdata (122.15 KB, 下载次数: 53)
这个应该没问题了,发烧写的代码果然漏洞百出,耽误了这么久真是抱歉

点评

没事,发烧就不要写脚本嘛。注意多多休息嘛  发表于 2013-10-26 18:39

评分

参与人数 2星屑 +100 梦石 +1 收起 理由
铃仙·优昙华院·因幡 + 1 认可答案
美丽晨露 + 100 认可答案

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
3
发表于 2013-10-23 01:13:06 | 只看该作者
把draw_text换成blt对应图片
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

4
 楼主| 发表于 2013-10-23 18:39:38 | 只看该作者
无脑之人 发表于 2013-10-23 01:13
把draw_text换成blt对应图片

好简洁······
表示我不知道怎么写
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
5
发表于 2013-10-24 13:00:28 | 只看该作者
  1. #==============================================================================
  2. # <<\/>> Vixotic_Damage_Pop up
  3. #------------------------------------------------------------------------------
  4. # Version 1.1
  5. # by Vixotic [[email][email protected][/email]]
  6. # Exclusive Script for [url]http://rpgmakervx.net/[/url]
  7. #
  8. # Place this script above Main
  9. #==============================================================================
  10. module VIX
  11.   Damage_Picture = 'Graphics/Pictures/Test.png'
  12.   #--------------------------
  13.   # Damage Text Position
  14.   #------------------------
  15.   Damage_X_Plus = 0
  16.   # Move Damage Position in vertical direction ((-)up <= 0 => down(+))
  17.   Damage_Y_Plus = -20
  18.   # Move Damage Position in horizontal direction ((-)left <= 0 => right(+))
  19.   #--------------------------
  20.   # Damage Text Font/Size
  21.   #------------------------
  22.   Damage_Text_Font = "Arial Black"
  23.   Damage_Text_Size = 32
  24. end
  25. class Sprite_Base < Sprite
  26.   alias vix_sprbase_ini initialize
  27.   alias vix_sprbase_upd update
  28.   def initialize(viewport = nil)
  29.     vix_sprbase_ini(viewport)
  30.     @_damage_duration = 0
  31.   end
  32.   def update
  33.     vix_sprbase_upd
  34.     if @_damage_duration > 0
  35.       @_damage_duration -= 1
  36.       case @_damage_duration
  37.       when 38..39
  38.         @_damage_sprite.y -= 4
  39.       when 36..37
  40.         @_damage_sprite.y -= 2
  41.       when 34..35
  42.         @_damage_sprite.y += 2
  43.       when 28..33
  44.         @_damage_sprite.y += 4
  45.       end
  46.       @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  47.       if @_damage_duration == 0
  48.         dispose_damage
  49.       end
  50.     end
  51.   end
  52.   
  53.   def damage(value)
  54.     dispose_damage
  55.     if value.is_a?(Numeric)
  56.       damage_string = value.to_i.abs#.to_s
  57.     else
  58.       damage_string = value.to_i#.to_s
  59.     end
  60.     bitmap = Bitmap.new(160, 48)
  61.     #if value.is_a?(Numeric) and value < 0
  62.     #  bitmap.font.color.set(176, 255, 144)
  63.     #else
  64.     #  bitmap.font.color.set(255, 255, 255)
  65.     #end
  66.     draw_text(bitmap,damage_string)
  67.     #bitmap.font.name = VIX::Damage_Text_Font
  68.     #bitmap.font.size = VIX::Damage_Text_Size
  69.     #bitmap.font.color.set(0, 0, 0)
  70.     #bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  71.     #bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  72.     #bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  73.     #bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  74.     #bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  75.     @_damage_sprite = ::Sprite.new(self.viewport)
  76.     @_damage_sprite.bitmap = bitmap
  77.     @_damage_sprite.ox = 80
  78.     @_damage_sprite.oy = 20
  79.     @_damage_sprite.x = self.x + VIX::Damage_X_Plus
  80.     @_damage_sprite.y = (self.y - self.oy / 2) + VIX::Damage_Y_Plus
  81.     @_damage_sprite.z = 3000
  82.     @_damage_duration = 40
  83.   end
  84.   def draw_text(bitmap,value)
  85.     value.to_s.split('//u').each_with_index do |v,i|
  86.       bitmap.blt(0,12+i*(w=RPG::Cache.picture(VIX::Damage_Picture)).width/10,w,Rect.new(0,i*w.width,w.width,w.height)
  87.     end
  88.   end
  89.   def dispose_damage
  90.     if @_damage_sprite != nil
  91.       @_damage_sprite.bitmap.dispose
  92.       @_damage_sprite.dispose
  93.       @_damage_sprite = nil
  94.       @_damage_duration = 0
  95.     end
  96.   end
  97. end
  98. class Game_Battler
  99.   attr_accessor :damage
  100.   alias vix_gamebat_clr clear_sprite_effects
  101.   def clear_sprite_effects
  102.     @damage = 0
  103.     vix_gamebat_clr
  104.   end
  105. end
  106. class Sprite_Battler < Sprite_Base
  107.   DAMAGE = 7
  108.   alias vix_sprbat_set setup_new_effect
  109.   def setup_new_effect
  110.     vix_sprbat_set
  111.     if @battler.damage != 0
  112.       damage(@battler.damage)
  113.       @effect_type = DAMAGE
  114.       @battler.damage = 0
  115.     end
  116.   end
  117. end
  118. class Scene_Battle < Scene_Base
  119.   def display_action_effects(target, obj = nil)
  120.     unless target.skipped
  121.       line_number = @message_window.line_number
  122.       wait(5)
  123.       target.damage = target.hp_damage if target.is_a?(Game_Enemy)
  124.       display_critical(target, obj)
  125.       display_damage(target, obj)
  126.       display_state_changes(target, obj)
  127.       if line_number == @message_window.line_number
  128.         display_failure(target, obj) unless target.states_active?
  129.       end
  130.       if line_number != @message_window.line_number
  131.         wait(30)
  132.       end
  133.       @message_window.back_to(line_number)
  134.     end
  135.   end
  136. end
复制代码
没有经过测试……出问题的话魔女什么的应该有能力解决吧233333

点评

分割图片的效果出错了,附上一个范例看看可以吗?  发表于 2013-10-25 16:36
已补充错误的信息  发表于 2013-10-24 21:49

评分

参与人数 1星屑 +66 收起 理由
美丽晨露 + 66 塞糖

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

6
 楼主| 发表于 2013-10-24 17:17:28 | 只看该作者
本帖最后由 美丽晨露 于 2013-10-25 16:39 编辑
无脑之人 发表于 2013-10-24 13:00
没有经过测试……出问题的话魔女什么的应该有能力解决吧233333


感谢的说,虽然报错了
于是想问问这句是什么意义?
bitmap.blt(0,12+i*(w=RPG::Cache.picture(VIX::Damage_Picture)).width/10,w,Rect.new(0,i*w.width,w.width,w.height)
RPG::这写法对吗?看起来就是这句报错了。

报错信息,是常见的错误,注释掉上面那句就没有问题了。


Project7.zip (270.76 KB, 下载次数: 56)
错误的工程

点评

真抱歉漏了一个右括号,加上应该就没问题了  发表于 2013-10-24 23:48
这就是RPG::Cache的效果啊,调用RPG模块里面的Cache常量(也是一个模块)然后调用picture方法获取图片……算了麻烦把报错信息发一下【发烧写的代码果然.坑  发表于 2013-10-24 21:44
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
841
在线时间
705 小时
注册时间
2012-12-6
帖子
4475

开拓者

7
发表于 2013-10-26 21:03:57 | 只看该作者

点评

结贴  发表于 2013-10-26 21:04

评分

参与人数 1星屑 +1 收起 理由
铃仙·优昙华院·因幡 + 1 这个还是要等LZ去结贴才好.

查看全部评分

美国圣地亚戈(金坷垃生产公司)唯一官网
我是万年大水比、大坑比,已经有好几个天坑扔了
新坑素材收集中……
我什么都不会,只是一只渣
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 11:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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