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

Project1

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

修改伤害与加血显示

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
9 小时
注册时间
2006-9-7
帖子
303
跳转到指定楼层
1
发表于 2008-12-13 00:04:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x

  
    高手帮我看看,我想修改如果是伤害就在数字前加一个 "-"  如果是加血就加一个 "+"

    下面是我修改后的, 伤害后数字向上升,很不自然啊,而且数字一升上去就会消失.

   
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     @@_animations = []
  4.     @@_reference_count = {}
  5.     def initialize(viewport = nil)
  6.       super(viewport)
  7.       @_whiten_duration = 0
  8.       @_appear_duration = 0
  9.       @_escape_duration = 0
  10.       @_collapse_duration = 0
  11.       @_damage_duration = 0
  12.       @_animation_duration = 0
  13.       @_blink = false
  14.     end
  15.     def dispose
  16.       dispose_damage
  17.       dispose_animation
  18.       dispose_loop_animation
  19.       super
  20.     end
  21.     def whiten
  22.       self.blend_type = 0
  23.       self.color.set(255, 255, 255, 128)
  24.       self.opacity = 255
  25.       @_whiten_duration = 16
  26.       @_appear_duration = 0
  27.       @_escape_duration = 0
  28.       @_collapse_duration = 0
  29.     end
  30.     def appear
  31.       self.blend_type = 0
  32.       self.color.set(0, 0, 0, 0)
  33.       self.opacity = 0
  34.       @_appear_duration = 16
  35.       @_whiten_duration = 0
  36.       @_escape_duration = 0
  37.       @_collapse_duration = 0
  38.     end
  39.     def escape
  40.       self.blend_type = 0
  41.       self.color.set(0, 0, 0, 0)
  42.       self.opacity = 255
  43.       @_escape_duration = 32
  44.       @_whiten_duration = 0
  45.       @_appear_duration = 0
  46.       @_collapse_duration = 0
  47.     end
  48.     def collapse
  49.       self.blend_type = 1
  50.       self.color.set(255, 64, 64, 255)
  51.       self.opacity = 255
  52.       @_collapse_duration = 48
  53.       @_whiten_duration = 0
  54.       @_appear_duration = 0
  55.       @_escape_duration = 0
  56.     end
  57.     def damage(value, critical)
  58.       dispose_damage
  59.       if value.is_a?(Numeric)
  60.         damage_string = value.abs.to_s
  61.       else
  62.         damage_string = value.to_s
  63.       end
  64.       bitmap = Bitmap.new(160, 48)
  65.       bitmap.font.name = "宋体"
  66.       bitmap.font.size = 16
  67.       bitmap.font.bold = true

  68.     #  bitmap.font.color.set(0, 0, 0)
  69.     #  bitmap.draw_text(-1, 12-1, 160, 36, "-" + damage_string, 1)
  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.       
  74.       if value.is_a?(Numeric) and value < 0
  75.         bitmap.font.color.set(255, 0, 0)
  76.       else
  77.         bitmap.font.color.set(255, 0, 0)
  78.       end
  79.       
  80.       bitmap.draw_text(0, 12, 160, 36, "-" + damage_string, 1)

  81.       if critical
  82.      #   bitmap.font.size = 20
  83.      #   bitmap.font.color.set(0, 0, 0)
  84.      #   bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  85.      #   bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  86.      #   bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  87.      #   bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  88.      #   bitmap.font.color.set(255, 255, 255)
  89.      #   bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  90.       end

  91.       @_damage_sprite = ::Sprite.new(self.viewport)
  92.       @_damage_sprite.bitmap = bitmap
  93.       @_damage_sprite.ox = 80
  94.       @_damage_sprite.oy = 20
  95.       @_damage_sprite.x = self.x - 550
  96.       @_damage_sprite.y = self.y - self.oy / 2
  97.       @_damage_sprite.z = 3000
  98.       @_damage_duration = 40
  99.     end
  100.     def animation(animation, hit)
  101.       dispose_animation
  102.       @_animation = animation
  103.       return if @_animation == nil
  104.       @_animation_hit = hit
  105.       @_animation_duration = @_animation.frame_max
  106.       animation_name = @_animation.animation_name
  107.       animation_hue = @_animation.animation_hue
  108.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  109.       if @@_reference_count.include?(bitmap)
  110.         @@_reference_count[bitmap] += 1
  111.       else
  112.         @@_reference_count[bitmap] = 1
  113.       end
  114.       @_animation_sprites = []
  115.       if @_animation.position != 3 or not @@_animations.include?(animation)
  116.         for i in 0..15
  117.           sprite = ::Sprite.new(self.viewport)
  118.           sprite.bitmap = bitmap
  119.           sprite.visible = false
  120.           @_animation_sprites.push(sprite)
  121.         end
  122.         unless @@_animations.include?(animation)
  123.           @@_animations.push(animation)
  124.         end
  125.       end
  126.       update_animation
  127.     end
  128.     def loop_animation(animation)
  129.       return if animation == @_loop_animation
  130.       dispose_loop_animation
  131.       @_loop_animation = animation
  132.       return if @_loop_animation == nil
  133.       @_loop_animation_index = 0
  134.       animation_name = @_loop_animation.animation_name
  135.       animation_hue = @_loop_animation.animation_hue
  136.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  137.       if @@_reference_count.include?(bitmap)
  138.         @@_reference_count[bitmap] += 1
  139.       else
  140.         @@_reference_count[bitmap] = 1
  141.       end
  142.       @_loop_animation_sprites = []
  143.       for i in 0..15
  144.         sprite = ::Sprite.new(self.viewport)
  145.         sprite.bitmap = bitmap
  146.         sprite.visible = false
  147.         @_loop_animation_sprites.push(sprite)
  148.       end
  149.       update_loop_animation
  150.     end
  151.     def dispose_damage
  152.       if @_damage_sprite != nil
  153.         @_damage_sprite.bitmap.dispose
  154.         @_damage_sprite.dispose
  155.         @_damage_sprite = nil
  156.         @_damage_duration = 0
  157.       end
  158.     end
  159.     def dispose_animation
  160.       if @_animation_sprites != nil
  161.         sprite = @_animation_sprites[0]
  162.         if sprite != nil
  163.           @@_reference_count[sprite.bitmap] -= 1
  164.           if @@_reference_count[sprite.bitmap] == 0
  165.             sprite.bitmap.dispose
  166.           end
  167.         end
  168.         for sprite in @_animation_sprites
  169.           sprite.dispose
  170.         end
  171.         @_animation_sprites = nil
  172.         @_animation = nil
  173.       end
  174.     end
  175.     def dispose_loop_animation
  176.       if @_loop_animation_sprites != nil
  177.         sprite = @_loop_animation_sprites[0]
  178.         if sprite != nil
  179.           @@_reference_count[sprite.bitmap] -= 1
  180.           if @@_reference_count[sprite.bitmap] == 0
  181.             sprite.bitmap.dispose
  182.           end
  183.         end
  184.         for sprite in @_loop_animation_sprites
  185.           sprite.dispose
  186.         end
  187.         @_loop_animation_sprites = nil
  188.         @_loop_animation = nil
  189.       end
  190.     end
  191.     def blink_on
  192.       unless @_blink
  193.         @_blink = true
  194.         @_blink_count = 0
  195.       end
  196.     end
  197.     def blink_off
  198.       if @_blink
  199.         @_blink = false
  200.         self.color.set(0, 0, 0, 0)
  201.       end
  202.     end
  203.     def blink?
  204.       @_blink
  205.     end
  206.     def effect?
  207.       @_whiten_duration > 0 or
  208.       @_appear_duration > 0 or
  209.       @_escape_duration > 0 or
  210.       @_collapse_duration > 0 or
  211.       @_damage_duration > 0 or
  212.       @_animation_duration > 0
  213.     end
  214.     def update
  215.       super
  216.       if @_whiten_duration > 0
  217.         @_whiten_duration -= 1
  218.         self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  219.       end
  220.       if @_appear_duration > 0
  221.         @_appear_duration -= 1
  222.         self.opacity = (16 - @_appear_duration) * 16
  223.       end
  224.       if @_escape_duration > 0
  225.         @_escape_duration -= 1
  226.         self.opacity = 256 - (32 - @_escape_duration) * 10
  227.       end
  228.       if @_collapse_duration > 0
  229.         @_collapse_duration -= 1
  230.         self.opacity = 256 - (48 - @_collapse_duration) * 6
  231.       end
  232.       
  233.       if @_damage_duration > 0
  234.         @_damage_duration -= 1
  235.         case @_damage_duration
  236.         
  237.     #    when 44..45
  238.     #      @_damage_sprite.y -= 2
  239.     #    when 42..43
  240.     #      @_damage_sprite.y -= 2
  241.     #    when 40..41
  242.     #      @_damage_sprite.y -= 2
  243.         when 38..39
  244.           @_damage_sprite.y -= 3
  245.         when 36..37
  246.           @_damage_sprite.y -= 3
  247.         when 34..35
  248.           @_damage_sprite.y -= 3
  249.         when 28..29
  250.           @_damage_sprite.y -= 3
  251.         when 26..27
  252.           @_damage_sprite.y -= 3  
  253.         when 24..25
  254.           @_damage_sprite.y -= 3            
  255.         when 22..23
  256.           @_damage_sprite.y -= 3  
  257.         when 20..21
  258.           @_damage_sprite.y -= 3
  259.         when 18..19
  260.           @_damage_sprite.y -= 3           
  261.         when 16..17
  262.           @_damage_sprite.y -= 3           
  263.         when 14..15
  264.           @_damage_sprite.y -= 3           
  265.         when 12..13
  266.           @_damage_sprite.y# -= 3
  267.         when 10..11
  268.           @_damage_sprite.y# -= 2
  269.         when 8..9
  270.           @_damage_sprite.y# -= 2
  271.         when 6..7
  272.           @_damage_sprite.y# -= 2           
  273.         when 4..5
  274.           @_damage_sprite.y# -= 2         
  275.         when 2..3
  276.           @_damage_sprite.y# -= 2
  277.          
  278.         end
  279.         
  280.      #   @_damage_sprite.opacity =256 - (1 - @_damage_duration) * 64
  281.       
  282.         if @_damage_duration == 0
  283.           dispose_damage
  284.         end
  285.         
  286.       end
  287.       if @_animation != nil and (Graphics.frame_count % 2 == 0)
  288.         @_animation_duration -= 1
  289.         update_animation
  290.       end
  291.       if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  292.         update_loop_animation
  293.         @_loop_animation_index += 1
  294.         @_loop_animation_index %= @_loop_animation.frame_max
  295.       end
  296.       if @_blink
  297.         @_blink_count = (@_blink_count + 1) % 32
  298.         if @_blink_count < 16
  299.           alpha = (16 - @_blink_count) * 6
  300.         else
  301.           alpha = (@_blink_count - 16) * 6
  302.         end
  303.         self.color.set(255, 255, 255, alpha)
  304.       end
  305.       @@_animations.clear
  306.     end
  307.     def update_animation
  308.       if @_animation_duration > 0
  309.         frame_index = @_animation.frame_max - @_animation_duration
  310.         cell_data = @_animation.frames[frame_index].cell_data
  311.         position = @_animation.position
  312.         animation_set_sprites(@_animation_sprites, cell_data, position)
  313.         for timing in @_animation.timings
  314.           if timing.frame == frame_index
  315.             animation_process_timing(timing, @_animation_hit)
  316.           end
  317.         end
  318.       else
  319.         dispose_animation
  320.       end
  321.     end
  322.     def update_loop_animation
  323.       frame_index = @_loop_animation_index
  324.       cell_data = @_loop_animation.frames[frame_index].cell_data
  325.       position = @_loop_animation.position
  326.       animation_set_sprites(@_loop_animation_sprites, cell_data, position)
  327.       for timing in @_loop_animation.timings
  328.         if timing.frame == frame_index
  329.           animation_process_timing(timing, true)
  330.         end
  331.       end
  332.     end
  333.     def animation_set_sprites(sprites, cell_data, position)
  334.       for i in 0..15
  335.         sprite = sprites[i]
  336.         pattern = cell_data[i, 0]
  337.         if sprite == nil or pattern == nil or pattern == -1
  338.           sprite.visible = false if sprite != nil
  339.           next
  340.         end
  341.         sprite.visible = true
  342.         sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  343.         if position == 3
  344.           if self.viewport != nil
  345.             sprite.x = self.viewport.rect.width / 2
  346.             sprite.y = self.viewport.rect.height - 160
  347.           else
  348.             sprite.x = 320
  349.             sprite.y = 240
  350.           end
  351.         else
  352.           sprite.x = self.x - self.ox + self.src_rect.width / 2
  353.           sprite.y = self.y - self.oy + self.src_rect.height / 2
  354.           sprite.y -= self.src_rect.height / 4 if position == 0
  355.           sprite.y += self.src_rect.height / 4 if position == 2
  356.         end
  357.         sprite.x += cell_data[i, 1]
  358.         sprite.y += cell_data[i, 2]
  359.         sprite.z = 2000
  360.         sprite.ox = 96
  361.         sprite.oy = 96
  362.         sprite.zoom_x = cell_data[i, 3] / 100.0
  363.         sprite.zoom_y = cell_data[i, 3] / 100.0
  364.         sprite.angle = cell_data[i, 4]
  365.         sprite.mirror = (cell_data[i, 5] == 1)
  366.         sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  367.         sprite.blend_type = cell_data[i, 7]
  368.       end
  369.     end
  370.     def animation_process_timing(timing, hit)
  371.       if (timing.condition == 0) or
  372.          (timing.condition == 1 and hit == true) or
  373.          (timing.condition == 2 and hit == false)
  374.         if timing.se.name != ""
  375.           se = timing.se
  376.           Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  377.         end
  378.         case timing.flash_scope
  379.         when 1
  380.           self.flash(timing.flash_color, timing.flash_duration * 2)
  381.         when 2
  382.           if self.viewport != nil
  383.             self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  384.           end
  385.         when 3
  386.           self.flash(nil, timing.flash_duration * 2)
  387.         end
  388.       end
  389.     end
  390.     def x=(x)
  391.       sx = x - self.x
  392.       if sx != 0
  393.         if @_animation_sprites != nil
  394.           for i in 0..15
  395.             @_animation_sprites[i].x += sx
  396.           end
  397.         end
  398.         if @_loop_animation_sprites != nil
  399.           for i in 0..15
  400.             @_loop_animation_sprites[i].x += sx
  401.           end
  402.         end
  403.       end
  404.       super
  405.     end
  406.     def y=(y)
  407.       sy = y - self.y
  408.       if sy != 0
  409.         if @_animation_sprites != nil
  410.           for i in 0..15
  411.             @_animation_sprites[i].y += sy
  412.           end
  413.         end
  414.         if @_loop_animation_sprites != nil
  415.           for i in 0..15
  416.             @_loop_animation_sprites[i].y += sy
  417.           end
  418.         end
  419.       end
  420.       super
  421.     end
  422.   end
  423. end
复制代码

版务信息:本贴由楼主自主结贴~
十年磨一剑,蓦然回首,年华如水,青春如歌。
头像被屏蔽

Lv1.梦旅人 (禁止发言)

lov Peii 4ever

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-28
帖子
423
5
发表于 2008-12-13 22:40:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
9 小时
注册时间
2006-9-7
帖子
303
4
 楼主| 发表于 2008-12-13 22:14:10 | 只看该作者
加血的时候怎么加上 "+"  

damage_string = (+value).to_s  这样不起作用.
十年磨一剑,蓦然回首,年华如水,青春如歌。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

lov Peii 4ever

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-28
帖子
423
3
发表于 2008-12-13 19:56:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
9 小时
注册时间
2006-9-7
帖子
303
2
 楼主| 发表于 2008-12-13 16:49:48 | 只看该作者
人工置顶!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-20 19:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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