Project1

标题: 在战斗时怎么直接显示伤害值? [打印本页]

作者: 老鼠de春天    时间: 2008-5-25 01:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2008-5-25 01:52
在人物身上直接显示数值?

MS现在只有在地图上显示数值……
作者: 3535    时间: 2008-5-25 03:06
  1. #==============================================================================
  2. # <<\/>> Vixotic_Damage_Pop up
  3. #------------------------------------------------------------------------------
  4. # Version 1.1
  5. # by Vixotic [[email protected]]
  6. # Exclusive Script for http://rpgmakervx.net/
  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.   
  17.   Damage_Y_Plus = -20
  18.   # Move Damage Position in horizontal direction ((-)left <= 0 => right(+))
  19.   
  20.   #--------------------------
  21.   # Damage Text Font/Size
  22.   #------------------------
  23.   Damage_Text_Font = "Arial Black"
  24.   Damage_Text_Size = 32
  25. end

  26. class Sprite_Base < Sprite
  27.   alias vix_sprbase_ini initialize
  28.   alias vix_sprbase_upd update

  29.   def initialize(viewport = nil)
  30.     vix_sprbase_ini(viewport)
  31.     @_damage_duration = 0
  32.   end
  33.   
  34.   def update
  35.     vix_sprbase_upd
  36.     if @_damage_duration > 0
  37.       @_damage_duration -= 1
  38.       case @_damage_duration
  39.       when 38..39
  40.         @_damage_sprite.y -= 4
  41.       when 36..37
  42.         @_damage_sprite.y -= 2
  43.       when 34..35
  44.         @_damage_sprite.y += 2
  45.       when 28..33
  46.         @_damage_sprite.y += 4
  47.       end
  48.         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  49.       if @_damage_duration == 0
  50.         dispose_damage
  51.       end
  52.     end
  53.   end
  54.   
  55.   
  56.   def damage(value)
  57.       dispose_damage
  58.       if value.is_a?(Numeric)
  59.         damage_string = value.abs.to_s
  60.       else
  61.         damage_string = value.to_s
  62.       end
  63.       bitmap = Bitmap.new(160, 48)
  64.       bitmap.font.name = VIX::Damage_Text_Font
  65.       bitmap.font.size = VIX::Damage_Text_Size
  66.       bitmap.font.color.set(0, 0, 0)
  67.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  68.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  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.       if value.is_a?(Numeric) and value < 0
  72.         bitmap.font.color.set(176, 255, 144)
  73.       else
  74.         bitmap.font.color.set(255, 255, 255)
  75.       end
  76.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  77.       @_damage_sprite = ::Sprite.new(self.viewport)
  78.       @_damage_sprite.bitmap = bitmap
  79.       @_damage_sprite.ox = 80
  80.       @_damage_sprite.oy = 20
  81.       @_damage_sprite.x = self.x + VIX::Damage_X_Plus
  82.       @_damage_sprite.y = (self.y - self.oy / 2) + VIX::Damage_Y_Plus
  83.       @_damage_sprite.z = 3000
  84.       @_damage_duration = 40
  85.     end
  86.    
  87.     def dispose_damage
  88.       if @_damage_sprite != nil
  89.         @_damage_sprite.bitmap.dispose
  90.         @_damage_sprite.dispose
  91.         @_damage_sprite = nil
  92.         @_damage_duration = 0
  93.       end
  94.     end
  95.    
  96.   end

  97. class Game_Battler
  98.   attr_accessor :damage
  99.   
  100.   alias vix_gamebat_clr clear_sprite_effects
  101.   def clear_sprite_effects
  102.     @damage = 0
  103.     vix_gamebat_clr
  104.   end
  105.   
  106. end

  107. class Sprite_Battler < Sprite_Base
  108.   DAMAGE = 7
  109.   
  110.   alias vix_sprbat_set setup_new_effect
  111.   def setup_new_effect
  112.     vix_sprbat_set
  113.     if @battler.damage != 0
  114.       damage(@battler.damage)
  115.       @effect_type = DAMAGE
  116.       @battler.damage = 0
  117.     end
  118.   end
  119.   
  120. end

  121. class Scene_Battle < Scene_Base

  122.   def display_action_effects(target, obj = nil)
  123.     unless target.skipped
  124.       line_number = @message_window.line_number
  125.       wait(5)
  126.       target.damage = target.hp_damage if target.is_a?(Game_Enemy)
  127.       display_critical(target, obj)
  128.       display_damage(target, obj)
  129.       display_state_changes(target, obj)
  130.       if line_number == @message_window.line_number
  131.         display_failure(target, obj) unless target.states_active?
  132.       end
  133.       if line_number != @message_window.line_number
  134.         wait(30)
  135.       end
  136.       @message_window.back_to(line_number)
  137.     end
  138.   end
  139. end
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 老鼠de春天    时间: 2008-5-25 03:36
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1