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

Project1

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

[已经解决] 能否在公共事件里给SP伤害加上颜色?

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2011-11-23 13:51:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如以下写在公共事件里的脚本,如果要换成蓝色,应该怎么办?

$active_battler.damage =
"吸取了" + $sp_reduce.to_s + "的SP"
$active_battler.damage_pop = true
囡囚囨囚囨図囨囧

Lv2.观梦者

(?????)

梦石
0
星屑
787
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

2
发表于 2011-11-23 14:14:22 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-11-23 14:27 编辑

参阅帮助文档关于RPG::Sprite的部分,可以找到以下用法:
damage(value, critical)
使伤害的数字或“Miss”等字符串弹出在精灵前面。

value 指定为正值时为表示普通伤害的白色文字,而指定为负值时为表示回复的绿色文字。且负值时不会显示符号。value 为字符串时会照原样显示白色的文字。

critical 指定真的话,会在伤害字符串上追加小的“CRITICAL”的文字。

显示伤害的精灵 Z 座标是 3000。
也就是说默认只有绿色和白色。
好在不是隐藏的内部类,下面就给出了定义(我只摘抄damage方法部分)
  1.     def damage(value, critical)
  2.       dispose_damage
  3.       if value.is_a?(Numeric)
  4.         damage_string = value.abs.to_s
  5.       else
  6.         damage_string = value.to_s
  7.       end
  8.       bitmap = Bitmap.new(160, 48)
  9.       bitmap.font.name = "Arial Black"
  10.       bitmap.font.size = 32
  11.       bitmap.font.color.set(0, 0, 0)
  12.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  13.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  14.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  15.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  16.       if value.is_a?(Numeric) and value < 0
  17.         bitmap.font.color.set(176, 255, 144)
  18.       else
  19.         bitmap.font.color.set(255, 255, 255)
  20.       end
  21.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  22.       if critical
  23.         bitmap.font.size = 20
  24.         bitmap.font.color.set(0, 0, 0)
  25.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  26.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  27.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  28.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  29.         bitmap.font.color.set(255, 255, 255)
  30.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  31.       end
  32.       @_damage_sprite = ::Sprite.new(self.viewport)
  33.       @_damage_sprite.bitmap = bitmap
  34.       @_damage_sprite.ox = 80
  35.       @_damage_sprite.oy = 20
  36.       @_damage_sprite.x = self.x
  37.       @_damage_sprite.y = self.y - self.oy / 2
  38.       @_damage_sprite.z = 3000
  39.       @_damage_duration = 40
  40.     end
复制代码
在20行的end下面加入一行:
  1. bitmap.font.color.set(0, 128, 255) if damage_string[/的SP/] != nil
复制代码
其中“的SP”是识别用的 - - 如果你上面的语句改了这里也要改。
最后别忘了在脚本头部加入
  1. module RPG
  2.   class Sprite < ::Sprite
复制代码
尾部加入两行end补齐
至此脚本修改完毕
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2011-11-23 15:30:58 | 只看该作者
本帖最后由 幻耶 于 2011-11-23 15:51 编辑
各种压力的猫君 发表于 2011-11-23 14:14
参阅帮助文档关于RPG::Sprite的部分,可以找到以下用法:也就是说默认只有绿色和白色。
好在不是 ...


因为我用了彩虹神剑,这样的话,那句 bitmap.font.color.set(0, 128, 255) if damage_string[/的SP/] != nil 是不是应该加在 unless value == "Miss" 的下面,也就是以下脚本的第43行?
  1. def damage(value, critical)
  2.       # 释放伤害,效果是伤害数字快速消失,觉得不如不消失好看......
  3.       #dispose_damage
  4.       #清除hit数
  5.       dispose_hit
  6.       # 如果伤害值是数值
  7.       if value.is_a?(Numeric)
  8.         # 绝对值转为字符串
  9.         damage_string = value.abs.to_s
  10.       else
  11.         # 转为字符串
  12.         damage_string = value.to_s
  13.       end
  14.       # 初始化位图
  15.       bitmap = Bitmap.new(162, 64)
  16.       bitmap.font.name = ["华文行楷","黑体", "宋体"]
  17.       bitmap.font.size = 32
  18.       # 伤害值是数值的情况下
  19.       if value.is_a?(Numeric)
  20.         # 分割伤害值字符串
  21.         damage_array = damage_string.scan(/./)
  22.         damage_x = 81 - damage_string.size * 9
  23.         # 伤害值为负的情况下
  24.         if value < 0
  25.           # 调用回复数字表
  26.           rect_y = 32
  27.         else
  28.           # 调用伤害数字表
  29.           rect_y = 0
  30.         end
  31.         # 循环伤害值字符串
  32.         for char in damage_array
  33.           number = char.to_i
  34.           # 显示伤害数字
  35.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damagenew"),
  36.           Rect.new(number * 18, rect_y, 18, 32))
  37.           # 后移一位
  38.           damage_x += 18
  39.         end
  40.       # 伤害值不是数值的情况
  41.       else
  42.         # 如果伤害值不是 Miss
  43.         unless value == "Miss"
  44.           # 系统默认描画字符串
  45.           bitmap.font.color.set(0, 0, 0)
  46.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  47.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  48.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  49.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  50.           bitmap.font.color.set(255, 255, 255)
  51.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  52.         # Miss 的情况下
  53.         else
  54.           # 显示未击中图画
  55.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  56.         end
  57.       end
  58.       # 会心一击标志打开的情况
  59.       if critical
复制代码
������
囡囚囨囚囨図囨囧
回复

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
787
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

4
发表于 2011-11-23 21:37:21 | 只看该作者
幻耶 发表于 2011-11-23 15:30
因为我用了彩虹神剑,这样的话,那句 bitmap.font.color.set(0, 128, 255) if damage_string[/的SP/] !=  ...

加在52行上面并把if改成elsif
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
5
 楼主| 发表于 2011-11-24 08:15:13 | 只看该作者
各种压力的猫君 发表于 2011-11-23 21:37
加在52行上面并把if改成elsif

改成这样,但是字还是白色的


     else
        # 如果伤害值不是 Miss
        unless value == "Miss"
          # 系统默认描画字符串
          bitmap.font.color.set(0, 0, 0)
          bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
          bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
          bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
          bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
          bitmap.font.color.set(255, 255, 255)
          bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
          if damage_string[/的SP/] != nil
            bitmap.font.color.set(0, 128, 255)
          end

        # Miss 的情况下
        else
          # 显示未击中图画
          bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
        end
      end


幻耶于2011-11-24 08:47补充以下内容:
加在52行上面并把if改成elsif

我理解成加在52行上面,并改成: bitmap.font.color.set(0, 128, 255) elsif damage_string[/的SP/] != nil
改成这样会出现SyntaxError?

点评

敢不敢把我回帖看全  发表于 2011-11-24 08:20
囡囚囨囚囨図囨囧
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-21 01:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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