查看: 1735|回复: 6

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

[复制链接]
梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
回帖
10960

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

发表于 2013-10-22 18:42:49 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]#==============================================================================
# <<\/>> Vixotic_Damage_Pop up
#------------------------------------------------------------------------------
# Version 1.1
# by Vixotic [vixotic@live.com]
# Exclusive Script for http://rpgmakervx.net/
#
# Place this script above Main
#==============================================================================
module VIX
#--------------------------
# Damage Text Position
#------------------------
Damage_X_Plus = 0
# Move Damage Position in vertical direction ((-)up <= 0 => down(+))
Damage_Y_Plus = -20
# Move Damage Position in horizontal direction ((-)left <= 0 => right(+))
#--------------------------
# Damage Text Font/Size
#------------------------
Damage_Text_Font = "Arial Black"
Damage_Text_Size = 32
end
class Sprite_Base < Sprite
alias vix_sprbase_ini initialize
alias vix_sprbase_upd update
def initialize(viewport = nil)
vix_sprbase_ini(viewport)
@_damage_duration = 0
end
def update
vix_sprbase_upd
if @_damage_duration > 0
@_damage_duration -= 1
case @_damage_duration
when 38..39
@_damage_sprite.y -= 4
when 36..37
@_damage_sprite.y -= 2
when 34..35
@_damage_sprite.y += 2
when 28..33
@_damage_sprite.y += 4
end
@_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
if @_damage_duration == 0
dispose_damage
end
end
end

def damage(value)
dispose_damage
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.name = VIX::Damage_Text_Font
bitmap.font.size = VIX::Damage_Text_Size
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
if value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x + VIX::Damage_X_Plus
@_damage_sprite.y = (self.y - self.oy / 2) + VIX::Damage_Y_Plus
@_damage_sprite.z = 3000
@_damage_duration = 40
end
def dispose_damage
if @_damage_sprite != nil
@_damage_sprite.bitmap.dispose
@_damage_sprite.dispose
@_damage_sprite = nil
@_damage_duration = 0
end
end
end
class Game_Battler
attr_accessor :damage
alias vix_gamebat_clr clear_sprite_effects
def clear_sprite_effects
@damage = 0
vix_gamebat_clr
end
end
class Sprite_Battler < Sprite_Base
DAMAGE = 7
alias vix_sprbat_set setup_new_effect
def setup_new_effect
vix_sprbat_set
if @battler.damage != 0
damage(@battler.damage)
@effect_type = DAMAGE
@battler.damage = 0
end
end
end
class Scene_Battle < Scene_Base
def display_action_effects(target, obj = nil)
unless target.skipped
line_number = @message_window.line_number
wait(5)
target.damage = target.hp_damage if target.is_a?(Game_Enemy)
display_critical(target, obj)
display_damage(target, obj)
display_state_changes(target, obj)
if line_number == @message_window.line_number
display_failure(target, obj) unless target.states_active?
end
if line_number != @message_window.line_number
wait(30)
end
@message_window.back_to(line_number)
end
end
end[/pre]

number.png

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

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-10-26 12:44:01 | 显示全部楼层
Scripts.rvdata (122.15 KB, 下载次数: 53)
这个应该没问题了,发烧写的代码果然漏洞百出,耽误了这么久真是抱歉

点评

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

评分

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

查看全部评分

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

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-10-23 01:13:06 | 显示全部楼层
把draw_text换成blt对应图片
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

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

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

 楼主| 发表于 2013-10-23 18:39:38 | 显示全部楼层
无脑之人 发表于 2013-10-23 01:13
把draw_text换成blt对应图片

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

回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-10-24 13:00:28 | 显示全部楼层
  1. #==============================================================================
  2. # <<\/>> Vixotic_Damage_Pop up
  3. #------------------------------------------------------------------------------
  4. # Version 1.1
  5. # by Vixotic [[email]vixotic@live.com[/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 塞糖

查看全部评分

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

使用道具 举报

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

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

 楼主| 发表于 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::这写法对吗?看起来就是这句报错了。

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

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

点评

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

回复

使用道具 举报

梦石
0
星屑
986
在线时间
717 小时
注册时间
2012-12-6
回帖
4277

开拓者

发表于 2013-10-26 21:03:57 | 显示全部楼层

点评

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

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部