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

Project1

 找回密码
 注册会员
搜索
查看: 3637|回复: 4

[RMVA发布] 地图上显示伤害或文字,可用于arpg伤害显示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
491 小时
注册时间
2012-1-27
帖子
421

整合系统大赛RMVA达人

发表于 2013-1-1 17:29:21 | 显示全部楼层 |阅读模式

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

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

x
地图上显示数字|文字,可用于arpg伤害显示 11.jpg
  1. #地图上显示文字,使用方法,在事件中使用脚本damage_popup(STRING)
  2. #例如damage_popup("988")
  3. #    damage_popup("66rpg")
  4. #原作者moghunter修改by狱冥幻翼  解决和sideview的冲突
  5. #==============================================================================
  6. # +++ MOG - DAMAGEPOPUP  (v2.0) +++
  7. #==============================================================================
  8. # By Moghunter
  9. # http://www.atelier-rgss.com/
  10. #==============================================================================
  11. # Apresenta danos dos alvos em imagens.
  12. #==============================================================================
  13. # Será necessário ter a imagem Damage_Number.png na pasta /GRAPHICS/SYSTEM/
  14. #==============================================================================

  15. #==============================================================================
  16. # DAMAGE POPUP ON CHARACTERS (Events)
  17. #==============================================================================
  18. # Basta usar o código abaixo para apresentar o dano nos eventos.
  19. #
  20. # damage_popup(STRING)
  21. #
  22. # STRING = valor do dano (Texto).
  23. #
  24. #
  25. # Para ativar o dano no jogador use o código abaixo
  26. #
  27. # $game_player.damage_popup(STRING)
  28. #
  29. #==============================================================================

  30. #==============================================================================
  31. # ● Histórico (Version History)
  32. #==============================================================================
  33. # v 2.0 - Apresentar o texto de recuperar nos efeitos de regenerar.
  34. # v 1.9 - Corrigido o erro de apresentar as condições sendo removidas quando a
  35. #         batalha termina.
  36. #       - Corrigido a centralização da string em danos do tipo texto.
  37. #       - Corrigido o "erro" de apresentar a condição de Death.
  38. # v 1.8 - Corrigido o erro de apresentar os textos das condições (Status) quando
  39. #         o battler estiver morto.
  40. # v 1.7 - Melhor codificação e compatibilidade.
  41. # v 1.6 - Corrigido o erro da opacidade do dano em EXP e GOLD.
  42. # v 1.5 - Possibilidade de ativar o dano nos eventos no mapa.
  43. # v 1.4 - Corrigido o erro do efeito drain.
  44. # v 1.3 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  45. # v 1.2 - Corrigido o limite do tamanho da string em palavras longas.
  46. # v 1.1 - Opção de definir a prioridade do dano.
  47. # v 1.0 - Primeiro lançamento.
  48. #==============================================================================

  49. module MOG_DAMAGEPOP
  50.   #Definição do espaço entre a palavra MP/TP e o numero de dano.
  51.   MP_TP_STRING_SPACE = 32
  52.   #Correção da posição do dano.
  53.   DAMAGE_POSITION_CORRECTION = [0 ,0]
  54.   #Apresentar a exp e ouro do inimigo.
  55.   EXP_POPUP = true
  56.   #Definição da prioridade do dano na tela.
  57.   DAMAGE_Z = 60
  58. end



  59. #==============================================================================
  60. # ■ BattleManager
  61. #==============================================================================
  62. module BattleManager

  63.   #--------------------------------------------------------------------------
  64.   # ● Escape?
  65.   #--------------------------------------------------------------------------
  66.   def self.escape?
  67.       @phase == nil
  68.   end
  69.   
  70. end  



  71. #==============================================================================
  72. # ■ Damage Sprite
  73. #==============================================================================
  74. class Damage_Sprite < Sprite
  75.    include MOG_DAMAGEPOP
  76.    attr_accessor :duration
  77.   
  78.   #--------------------------------------------------------------------------
  79.   # ● Initialize
  80.   #--------------------------------------------------------------------------      
  81.   def initialize(viewport = nil,x = 0,y = 0,value = 0,index)
  82.       super(viewport)
  83.       dispose
  84.       @image = Cache.system("Damage_Number")      
  85.       @x = x
  86.       @y = y
  87.       @value = value[0]
  88.       @type = value[1]
  89.       @critical = (value[2] and @value.to_i >= 0) ? true : false
  90.       @state_index = value[3]
  91.       @duration = 80 + (10 * index)
  92.       @cw = @image.width / 10
  93.       @ch = @image.height / 7
  94.       @center_x = 0
  95.       @mp_space = (@type == "MP" or @type == "TP") ? MP_TP_STRING_SPACE : 0      
  96.       if @value.is_a?(Numeric)
  97.          create_damage_number
  98.       elsif @value == "Missed" or  @value == "Evaded"  
  99.          create_damage_miss
  100.       else   
  101.          create_damage_string
  102.       end
  103.       self.x =  @x - (@center_x * (@cw / 2)) + DAMAGE_POSITION_CORRECTION[0]
  104.       self.y = @y + DAMAGE_POSITION_CORRECTION[1]
  105.       self.opacity = 1
  106.       zx = self.viewport != nil ? self.viewport.z : 0
  107.       self.z = DAMAGE_Z + zx
  108.       self.visible = false
  109.       damage_dir = rand(2)
  110.       @speed_x = straight_pop? ? 0 : damage_dir == 1 ? -rand(2) : rand(2)
  111.       @speed_y = 0
  112.   end
  113.   
  114.   #--------------------------------------------------------------------------
  115.   # ● Straight Pop
  116.   #--------------------------------------------------------------------------               
  117.   def straight_pop?
  118.       case @type
  119.          when "Gold";        return true
  120.          when "Exp";         return true
  121.          when "Level_UP";    return true
  122.       end
  123.       return false
  124.   end  
  125.   
  126.   #--------------------------------------------------------------------------
  127.   # ● Create Damage Number
  128.   #--------------------------------------------------------------------------            
  129.   def create_damage_miss
  130.       dam = @value == "Missed" ? 5 : 6
  131.       self.bitmap = Bitmap.new(@cw * 5, @ch)  
  132.       src_rect = Rect.new(0, dam * @ch,  @cw * 10, @ch)
  133.       self.bitmap.blt(0, 0, @image, src_rect)
  134.       @center_x += 5
  135.   end
  136.   
  137.   #--------------------------------------------------------------------------
  138.   # ● Create Damage Number
  139.   #--------------------------------------------------------------------------           
  140.   def create_damage_number
  141.       dam = @critical ? @ch * 2 : @value >= 0 ? 0 : @ch
  142.       f = @value >= 0 ? 0 : 1
  143.       number_value = @value.to_s.split(//)
  144.       self.bitmap = Bitmap.new(@mp_space + (@cw * number_value.size),@ch * 4)     
  145.       for r in f...number_value.size        
  146.          number_value_abs = number_value[r].to_i
  147.          src_rect = Rect.new(@cw * number_value_abs, dam, @cw, @ch)
  148.          self.bitmap.blt(@mp_space + (@cw *  r), 0, @image, src_rect)
  149.          @center_x += 1
  150.       end
  151.       if @type == "MP" or @type == "TP"
  152.          ty = @type == "MP" ? 3 : 4
  153.          src_rect = Rect.new(0, @ch * ty, @cw * 10, @ch)
  154.          self.bitmap.blt(0, 0, @image, src_rect)         
  155.          @center_x += 2
  156.       end
  157.       @center_x += 1 if @value < 0
  158.   end  
  159.   
  160.   #--------------------------------------------------------------------------
  161.   # ● Create Damage String
  162.   #--------------------------------------------------------------------------            
  163.   def create_damage_string
  164.       string_size = @value.to_s.split(//)
  165.       @stg_size = string_size.size > 0 ? ((1 + string_size.size) * 24) : 32      
  166.       self.bitmap = Bitmap.new(@stg_size,32)
  167.       self.bitmap.font.size = 28
  168.       self.bitmap.font.bold = true
  169.       @center_x = 2 + (string_size.size / 2)
  170.       if @state_index != nil
  171.          draw_states
  172.        else
  173.          execute_font_color
  174.          damage_string = @value.to_s         
  175.          self.bitmap.draw_text(0, 0, @stg_size, 32, damage_string,0)
  176.       end
  177.   end  
  178.   
  179.   #--------------------------------------------------------------------------
  180.   # ● Execute Font Color
  181.   #--------------------------------------------------------------------------               
  182.   def execute_font_color
  183.       case @type
  184.            when "Gold"
  185.                @duration = 160
  186.                self.bitmap.font.color = Color.new(255,255,100)
  187.            when "Exp"
  188.                @duration = 120
  189.                self.bitmap.font.color = Color.new(0,255,100)
  190.            when "Level_UP"   
  191.                self.bitmap.font.color = Color.new(50,155,255)  
  192.            else  
  193.                self.bitmap.font.color = Color.new(255,255,255)
  194.       end
  195.   end
  196.   
  197.   #--------------------------------------------------------------------------
  198.   # ● Draw States
  199.   #--------------------------------------------------------------------------               
  200.   def draw_states
  201.       icon_image = Cache.system("Iconset")
  202.       if @type == "States Plus"
  203.          self.bitmap.font.color = Color.new(200,150,50)
  204.          damage_string = "+ " + @value.to_s
  205.       elsif @type == "States Minus"
  206.           self.bitmap.font.color = Color.new(100,100,100)   
  207.          damage_string = "- " + @value.to_s
  208.       end        
  209.       rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  210.       self.bitmap.blt(0, 0, icon_image, rect)  
  211.       self.bitmap.draw_text(26, 0, @stg_size - 24, 32, damage_string,0)
  212.       @center_x += 5
  213.       icon_image.dispose
  214.       icon_image = nil
  215.   end  
  216.   
  217.   #--------------------------------------------------------------------------
  218.   # ● Dispose
  219.   #--------------------------------------------------------------------------         
  220.   def dispose
  221.       return if @image == nil
  222.       @image.dispose
  223.       @image = nil
  224.       self.bitmap.dispose
  225.       self.bitmap = nil
  226.       @duration = -1
  227.   end  
  228.   
  229.   #--------------------------------------------------------------------------
  230.   # ● Update
  231.   #--------------------------------------------------------------------------         
  232.   def update
  233.       return if self.bitmap == nil   
  234.       @duration -= 1 if @duration > 0
  235.       self.visible = @duration > 80 ? false : true
  236.       case @duration
  237.          when 65..80
  238.             self.opacity += 5
  239.             self.x += @speed_x
  240.             self.y -= 5
  241.             critical_effect(0.05)
  242.          when 50..65  
  243.              self.opacity = 255
  244.              self.y -= 3
  245.              self.x += @speed_x
  246.              critical_effect(0.05)
  247.          when 35..50
  248.              self.opacity = 255
  249.              self.y += 3
  250.              critical_effect(-0.05)
  251.          when 0..35  
  252.              self.opacity -= 7
  253.              self.y -= 1
  254.              critical_effect(-0.05)
  255.       end
  256.       dispose if self.opacity <= 0  
  257.   end
  258.    
  259.   #--------------------------------------------------------------------------
  260.   # ● Critical Effect
  261.   #--------------------------------------------------------------------------           
  262.   def critical_effect(value)
  263.       return if !@critical
  264.       self.zoom_x += value
  265.       self.zoom_y = self.zoom_x      
  266.   end
  267.   
  268. end


  269. #==============================================================================
  270. # ■ Game Interpreter
  271. #==============================================================================
  272. class Game_Interpreter
  273.   
  274.   #--------------------------------------------------------------------------
  275.   # ● damage Popup
  276.   #--------------------------------------------------------------------------      
  277.   def damage_popup(value,type = nil, critical = false)
  278.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  279.       $game_map.events[@event_id].damage.push([value,type,critical]) if same_map? && @event_id > 0
  280.   end  
  281.   
  282. end  

  283. #==============================================================================
  284. # ■ Game Character
  285. #==============================================================================
  286. class Game_CharacterBase
  287.   
  288.   attr_accessor :damage
  289.   
  290.   #--------------------------------------------------------------------------
  291.   # ● Initialize
  292.   #--------------------------------------------------------------------------   
  293.   alias mog_damage_popup_initialize initialize
  294.   def initialize
  295.       @damage = []
  296.       mog_damage_popup_initialize
  297.   end
  298.   
  299.   #--------------------------------------------------------------------------
  300.   # ● damage Popup
  301.   #--------------------------------------------------------------------------      
  302.   def damage_popup(value,type = nil, critical = false)
  303.       type = (type == nil and value.is_a?(Numeric)) ? "HP" : type
  304.       @damage.push([value,type,critical])
  305.   end
  306.   
  307. end  

  308. #==============================================================================
  309. # ■ Sprite Character
  310. #==============================================================================
  311. class Sprite_Character < Sprite_Base

  312.   #--------------------------------------------------------------------------
  313.   # ● Initialize
  314.   #--------------------------------------------------------------------------  
  315.   alias mog_damage_popup_initialize initialize
  316.   def initialize(viewport, character = nil)
  317.       mog_damage_popup_initialize(viewport, character)
  318.       create_damage_sprite
  319.   end

  320.   #--------------------------------------------------------------------------
  321.   # ● Create Damage Sprite
  322.   #--------------------------------------------------------------------------           
  323.   def create_damage_sprite
  324.       dispose_damage_sprite
  325.       @damage_sprites = []
  326.   end
  327.   
  328.   #--------------------------------------------------------------------------
  329.   # ● Dispose
  330.   #--------------------------------------------------------------------------
  331.   alias mog_damage_popup_dispose dispose
  332.   def dispose
  333.       mog_damage_popup_dispose
  334.       dispose_damage_sprite
  335.   end  
  336.   
  337.   #--------------------------------------------------------------------------
  338.   # ● Dispose Damage Sprite
  339.   #--------------------------------------------------------------------------               
  340.   def dispose_damage_sprite
  341.       return if @damage_sprites == nil
  342.       @damage_sprites.each {|sprite| sprite.dispose }
  343.       @damage_sprites.clear
  344.       @character.damage.clear
  345.       $game_temp.dispose_damage_sprite = false
  346.   end   
  347.   
  348.   #--------------------------------------------------------------------------
  349.   # ● Update
  350.   #--------------------------------------------------------------------------  
  351.   alias mog_damage_popup_update update
  352.   def update
  353.       mog_damage_popup_update
  354.       update_damage_sprite
  355.   end
  356.   
  357.   #--------------------------------------------------------------------------
  358.   # ● Create Damage
  359.   #--------------------------------------------------------------------------                    
  360.   def create_damage
  361.       index = 0
  362.       sx = self.x
  363.       sy = self.y + @ch
  364.       @damage_sprites = [] if @damage_sprites == nil
  365.       for i in @character.damage
  366.           @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index))
  367.           index += 1
  368.       end
  369.       @character.damage.clear
  370.   end
  371.   
  372.   #--------------------------------------------------------------------------
  373.   # ● Update Damage Sprite
  374.   #--------------------------------------------------------------------------                  
  375.   def update_damage_sprite
  376.       return if @damage_sprites == nil
  377.       if @initial_damage == nil
  378.          @initial_damage = true
  379.          @character.damage.clear
  380.          return
  381.       end      
  382.       create_damage if [email protected]?
  383.       if !@damage_sprites.empty?
  384.           clear = 0
  385.           for sprite in @damage_sprites
  386.               sprite.update
  387.               if sprite.duration == 0
  388.                  sprite.dispose
  389.               end   
  390.               clear += 1 if sprite.duration > 0
  391.           end
  392.           clear_damage if clear == 0
  393.       end
  394.   end   
  395.   
  396.   #--------------------------------------------------------------------------
  397.   # ● Update Damage Sprite
  398.   #--------------------------------------------------------------------------                     
  399.   def clear_damage
  400.       @damage_sprites.each {|sprite| sprite.dispose }
  401.       @damage_sprites.clear
  402.       @character.damage.clear
  403.   end   
  404.   
  405. end

  406. #=============================================================================
  407. # ■ Game_Temp
  408. #=============================================================================
  409. class Game_Temp
  410.   
  411.   attr_accessor :dispose_damage_sprite
  412.   
  413.   #--------------------------------------------------------------------------
  414.   # ● Initialize
  415.   #--------------------------------------------------------------------------           
  416.   alias mog_dispose_damage_initialize initialize
  417.   def initialize
  418.       @dispose_damage_sprite = true
  419.       mog_dispose_damage_initialize
  420.   end
  421.    
  422. end

  423. #=============================================================================
  424. # ■ Scene Manager
  425. #=============================================================================
  426. class << SceneManager
  427.   
  428.   #--------------------------------------------------------------------------
  429.   # ● Call
  430.   #--------------------------------------------------------------------------         
  431.   alias mog_damage_pop_call call
  432.   def call(scene_class)
  433.       $game_temp.dispose_damage_sprite = true
  434.       mog_damage_pop_call(scene_class)
  435.   end
  436.   
  437. end

  438. #=============================================================================
  439. # ■ Scene Map
  440. #=============================================================================
  441. class Scene_Map < Scene_Base

  442.   #--------------------------------------------------------------------------
  443.   # ● Update Scene
  444.   #--------------------------------------------------------------------------           
  445.   alias mog_dispose_damage_sprites_update update_scene
  446.   def update_scene
  447.       @spriteset.dispose_damage_sprites
  448.       mog_dispose_damage_sprites_update
  449.   end

  450. end

  451. #=============================================================================
  452. # ■ Spriteset Map
  453. #=============================================================================
  454. class Spriteset_Map
  455.   
  456.   #--------------------------------------------------------------------------
  457.   # ● Dispose Damage Sprites
  458.   #--------------------------------------------------------------------------            
  459.   def dispose_damage_sprites
  460.       return if !$game_temp.dispose_damage_sprite   
  461.       return if @character_sprites == nil
  462.       @character_sprites.each {|sprite| sprite.dispose_damage_sprite }
  463.       $game_temp.dispose_damage_sprite = false
  464.   end
  465. end
  466. $mog_rgss3_damage_pop = true
复制代码

Lv1.梦旅人

梦石
0
星屑
77
在线时间
692 小时
注册时间
2011-10-20
帖子
907
发表于 2013-1-1 17:47:03 | 显示全部楼层
其实比起脚本 初音更是重点

点评

某专家 你是要闹啥样啊……  发表于 2013-1-1 18:01
-1  发表于 2013-1-1 17:56
+1  发表于 2013-1-1 17:48
回复 支持 反对

使用道具 举报

Lv3.寻梦者

死亡颂唱者

梦石
0
星屑
1154
在线时间
1794 小时
注册时间
2011-10-21
帖子
2245

开拓者

发表于 2013-1-1 18:31:38 | 显示全部楼层
1209.jpg
强势插入~


嘿嘿,正缺这货,搬走了哈。~(→_→)~

点评

其实我木有苍井空种子~  发表于 2013-1-1 19:14
楼上和此楼都是奇葩  发表于 2013-1-1 18:44
竟然不兼容TAT  发表于 2013-1-1 18:34
这家伙很懒,什么也没有留下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
32 小时
注册时间
2010-6-26
帖子
26
发表于 2016-3-15 01:50:41 | 显示全部楼层
怎么才能换字体颜色呢,求解
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
32 小时
注册时间
2010-6-26
帖子
26
发表于 2016-3-15 02:14:37 | 显示全部楼层
求解答啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 13:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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