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

Project1

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

伤害值美化

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
274 小时
注册时间
2008-2-18
帖子
219
跳转到指定楼层
1
发表于 2008-10-3 03:34:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这是我的伤害脚本:
  1. module RPG
  2. class Sprite < ::Sprite
  3.    @@_animations = []
  4.    @@_reference_count = {}
  5.    def damage(value, critical)
  6.      dispose_damage
  7.      if value.is_a?(Numeric)
  8.        damage_string = value.abs.to_s
  9.      else
  10.        damage_string = value.to_s
  11.      end
  12.      bitmap = Bitmap.new(160, 48)
  13.      bitmap.font.name = "黑体"
  14.      bitmap.font.size = 20
  15.      bitmap.font.color.set(0, 0, 0)
  16.      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  17.      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  18.      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  19.      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  20.      if value.is_a?(Numeric) and value < 0
  21.        bitmap.font.color.set(255, 0, 0)
  22.      else
  23.        bitmap.font.color.set(255, 0, 0)
  24.      end
  25.      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  26.      if critical
  27.        bitmap.font.size = 20
  28.        bitmap.font.color.set(0, 0, 0)
  29.        bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  30.        bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  31.        bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  32.        bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  33.        bitmap.font.color.set(255, 255, 255)
  34.        bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  35.      end
  36.      @_damage_sprite = ::Sprite.new(self.viewport)
  37.      @_damage_sprite.bitmap = bitmap
  38.      @_damage_sprite.ox = 100
  39.      @_damage_sprite.oy = 40
  40.      @_damage_sprite.x = self.x
  41.      @_damage_sprite.y = self.y - self.oy / 2
  42.      @_damage_sprite.z = 3000
  43.      
  44.      @_damage_duration = 40
  45.    end
  46.    def update
  47.      super
  48.      if @_whiten_duration > 0
  49.        @_whiten_duration -= 1
  50.        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  51.      end
  52.      if @_appear_duration > 0
  53.        @_appear_duration -= 1
  54.        self.opacity = (16 - @_appear_duration) * 16
  55.      end
  56.      if @_escape_duration > 0
  57.        @_escape_duration -= 1
  58.        self.opacity = 256 - (32 - @_escape_duration) * 10
  59.      end
  60.      if @_collapse_duration > 0
  61.        @_collapse_duration -= 1
  62.        self.opacity = 256 - (48 - @_collapse_duration) * 6
  63.      end
  64.      if @_damage_duration > 0
  65.        @_damage_duration -= 1
  66.        case @_damage_duration
  67.        when 38..39
  68.          @_damage_sprite.y -= 10
  69.        when 36..37
  70.          @_damage_sprite.y -= 5
  71.        when 34..35
  72.          @_damage_sprite.y += 0
  73.        when 28..33
  74.          @_damage_sprite.y += 0
  75.        end
  76.        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  77.        if @_damage_duration == 0
  78.          dispose_damage
  79.        end
  80.      end
  81.      if @_animation != nil and (Graphics.frame_count % 2 == 0)
  82.        @_animation_duration -= 1
  83.        update_animation
  84.      end
  85.      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  86.        update_loop_animation
  87.        @_loop_animation_index += 1
  88.        @_loop_animation_index %= @_loop_animation.frame_max
  89.      end
  90.      if @_blink
  91.        @_blink_count = (@_blink_count + 1) % 32
  92.        if @_blink_count < 16
  93.          alpha = (16 - @_blink_count) * 6
  94.        else
  95.          alpha = (@_blink_count - 16) * 6
  96.        end
  97.        self.color.set(255, 255, 255, alpha)
  98.      end
  99.      @@_animations.clear
  100.    end
  101. end
  102. end
复制代码
请问伤害值前如何 显示 "-" 或"+"
也就是 造成伤害时 显示 -"伤害值" 回血时显示+"伤害值"
此贴于 2008-10-3 13:44:52 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2008-10-4 11:42:19 被版主darkten提醒,请楼主看到后对本贴做出回应。
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-4
帖子
57
2
发表于 2008-10-3 05:03:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
274 小时
注册时间
2008-2-18
帖子
219
3
 楼主| 发表于 2008-10-3 05:52:38 | 只看该作者
我用了连击的脚本,连击后就会出现计算错误。
脚本 中第 26行 发生了
NomethodError undefined method +' for nil NilClass
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
4
发表于 2008-10-3 05:58:40 | 只看该作者
  1. module RPG
  2. class Sprite < ::Sprite
  3.    @@_animations = []
  4.    @@_reference_count = {}
  5.    def damage(value, critical)
  6.      dispose_damage
  7.      a = ""
  8.      if value.is_a?(Numeric)
  9.        damage_string = value.abs.to_s
  10.       
  11.       if value > 0
  12.        a = "-"
  13.      else
  14.        a = "+"
  15.      end

  16.      else
  17.        damage_string = value.to_s
  18.      end
  19.      

  20.      
  21.      bitmap = Bitmap.new(160, 48)
  22.      bitmap.font.name = "黑体"
  23.      bitmap.font.size = 20
  24.      bitmap.font.color.set(0, 0, 0)
  25.      bitmap.draw_text(-1, 12-1, 160, 36, a+damage_string, 1)
  26.      bitmap.draw_text(+1, 12-1, 160, 36, a+damage_string, 1)
  27.      bitmap.draw_text(-1, 12+1, 160, 36, a+damage_string, 1)
  28.      bitmap.draw_text(+1, 12+1, 160, 36, a+damage_string, 1)
  29.      if value.is_a?(Numeric) and value < 0
  30.        bitmap.font.color.set(255, 0, 0)
  31.      else
  32.        bitmap.font.color.set(255, 0, 0)
  33.      end
  34.      bitmap.draw_text(0, 12, 160, 36, a+damage_string, 1)
  35.      if critical
  36.        bitmap.font.size = 20
  37.        bitmap.font.color.set(0, 0, 0)
  38.        bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  39.        bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  40.        bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  41.        bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  42.        bitmap.font.color.set(255, 255, 255)
  43.        bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  44.      end
  45.      @_damage_sprite = ::Sprite.new(self.viewport)
  46.      @_damage_sprite.bitmap = bitmap
  47.      @_damage_sprite.ox = 100
  48.      @_damage_sprite.oy = 40
  49.      @_damage_sprite.x = self.x
  50.      @_damage_sprite.y = self.y - self.oy / 2
  51.      @_damage_sprite.z = 3000
  52.      
  53.      @_damage_duration = 40
  54.    end
  55.    def update
  56.      super
  57.      if @_whiten_duration > 0
  58.        @_whiten_duration -= 1
  59.        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  60.      end
  61.      if @_appear_duration > 0
  62.        @_appear_duration -= 1
  63.        self.opacity = (16 - @_appear_duration) * 16
  64.      end
  65.      if @_escape_duration > 0
  66.        @_escape_duration -= 1
  67.        self.opacity = 256 - (32 - @_escape_duration) * 10
  68.      end
  69.      if @_collapse_duration > 0
  70.        @_collapse_duration -= 1
  71.        self.opacity = 256 - (48 - @_collapse_duration) * 6
  72.      end
  73.      if @_damage_duration > 0
  74.        @_damage_duration -= 1
  75.        case @_damage_duration
  76.        when 38..39
  77.          @_damage_sprite.y -= 10
  78.        when 36..37
  79.          @_damage_sprite.y -= 5
  80.        when 34..35
  81.          @_damage_sprite.y += 0
  82.        when 28..33
  83.          @_damage_sprite.y += 0
  84.        end
  85.        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  86.        if @_damage_duration == 0
  87.          dispose_damage
  88.        end
  89.      end
  90.      if @_animation != nil and (Graphics.frame_count % 2 == 0)
  91.        @_animation_duration -= 1
  92.        update_animation
  93.      end
  94.      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  95.        update_loop_animation
  96.        @_loop_animation_index += 1
  97.        @_loop_animation_index %= @_loop_animation.frame_max
  98.      end
  99.      if @_blink
  100.        @_blink_count = (@_blink_count + 1) % 32
  101.        if @_blink_count < 16
  102.          alpha = (16 - @_blink_count) * 6
  103.        else
  104.          alpha = (@_blink_count - 16) * 6
  105.        end
  106.        self.color.set(255, 255, 255, alpha)
  107.      end
  108.      @@_animations.clear
  109.    end
  110. end
  111. end
复制代码

系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-23 07:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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