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

Project1

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

[已经过期] 请问这个damge_popup怎么显示它的图片

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
跳转到指定楼层
1
发表于 2017-9-2 09:22:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 300英雄 于 2017-9-2 09:28 编辑

问题是:我想显示它里面的citical图片,能在伤害公式中使用显示,不知道应该用什么样的指令能够弄出来这个图片

RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - DAMAGEPOPUP  (v4.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]https://atelierrgss.wordpress.com/[/url]
  6. #==============================================================================
  7. # Apresenta danos dos alvos em imagens.
  8. #==============================================================================
  9. # Serão necessários as imagems
  10. #
  11. # Critical
  12. # Evaded
  13. # Exp
  14. # Gold
  15. # Level Up
  16. # Missed
  17. # MP
  18. # Number
  19. # TP
  20. #
  21. # As imagens devem ficar na pasta /GRAPHICS/DAMAGE/
  22. #==============================================================================
  23.  
  24. #==============================================================================
  25. # DAMAGE POPUP FOR CHARACTERS (Events)
  26. #==============================================================================
  27. # Caso desejar ativar manualmente os danos nos characters, basta usar os códigos
  28. # abaixo.
  29. #
  30. # damage_popup(TARGET_ID,VALUE,"TYPE")
  31. #
  32. # TARGET_ID
  33. #      1...999 - Define a ID  do evento no mapa
  34. #      0 - Define a ID sendo do jogador.(Player)
  35. #      -1...-3 - Define  a ID dos aliados (Followers).
  36. #
  37. # VALUE
  38. #       Define o valor em dano (Pode ser valores negativos) ou um texto.
  39. #       No caso das codições defina a ID da condição. (Valore negativos
  40. #       é apresentado a condição sendo removida.)
  41. #
  42. # TYPE (Opcional)
  43. #      So use está opção para ativar srtings especiais.
  44. #
  45. #      "Exp" - Valor da string se torna em EXP.
  46. #      "Gold" - Valor da string se torna em GOLD.
  47. #      "States" - É apresentado o ícone e o nome da condição da condição.
  48. #
  49. #==============================================================================
  50. #
  51. # damage_popup(1,999)
  52. # damage_popup(4,"Save Point.")
  53. # damage_popup(0,"I'm hungry!!!")            <- (Player)
  54. # damage_popup(-1,"Booo!")                   <- (Follower ID1)
  55. # damage_popup(0,2000,"Exp")                 <- Popup 2000 Exp
  56. # damage_popup(0,5000,"Gold")                <- Popup 5000 Gold
  57. #
  58. #==============================================================================
  59. # Use o código abaixo se desejar fazer o dano aparecer em todos os personagens.
  60. #
  61. # damage_popup_party(TARGET_ID,STRING,"TYPE")
  62. #
  63. #==============================================================================
  64. # ATIVAR OU DESATIVAR OS DANOS NO MAPA.
  65. #==============================================================================
  66. # É possível usar o código abaixo para ativar ou desativar a dano no mapa
  67. # no meio do jogo, útil se você não quiser que alguma string de item ou
  68. # dano apareça no meio de algum evento ou cena.
  69. #
  70. # damage_popup_map(true)        -> or (false)
  71. #  
  72. #==============================================================================
  73. # ● Histórico (Version History)
  74. #==============================================================================
  75. # v 4.5 - Correção de ativar o dano quando o alvo é morto e o dano é zero.
  76. #==============================================================================
  77.  
  78. $imported = {} if $imported.nil?
  79. $imported[:mog_damage_popup] = true
  80.  
  81. module MOG_DAMAGEPOPUP
  82.   #Ativar as strings de dano no mapa. (Default / Inicial)
  83.   DAMAGE_POPUP_MAP = false
  84.   #Apresentar o item ao ganhar. (Apenas no mapa).
  85.   ITEM_POPUP_MAP = true
  86.   #Apresentar a exp e ouro do inimigo.
  87.   EXP_GOLD_POPUP_BATTLE = true
  88.   EXP_GOLD_POPUP_MAP = true
  89.   #Ativar a string de Level UP
  90.   LEVEL_POPUP_BATTLE = true
  91.   LEVEL_POPUP_MAP = true
  92.   #Ativar as strings nas condições.
  93.   STATES_POPUP_BATTLE = true
  94.   STATES_POPUP_MAP = true
  95.   #Definição da fonte (Nome de itens/ condições / etc...).
  96.   FONT_SIZE = 28
  97.   FONT_BOLD = true
  98.   FONT_ITALIC = false
  99.   FONT_COLOR = Color.new(255,255,255)
  100.   FONT_COLOR_ITEM = Color.new(255,255,255)
  101.   FONT_COLOR_STATUS_PLUS = Color.new(155,155,255)
  102.   FONT_COLOR_STATUS_MINUS = Color.new(255,150,150)
  103.   #Definição do espaço entre os danos.
  104.   Y_SPACE = 28
  105.   #Definição da posição Z do srpite.
  106.   DAMAGE_Z = 151
  107. end
  108.  
  109. #==============================================================================
  110. # ■ Game_System
  111. #==============================================================================
  112. class Game_System
  113.   attr_accessor :damage_popup_map
  114.  
  115.   #--------------------------------------------------------------------------
  116.   # ● Initialize
  117.   #--------------------------------------------------------------------------         
  118.   alias mog_damage_popup_initialize initialize
  119.   def initialize
  120.       @damage_popup_map = MOG_DAMAGEPOPUP::DAMAGE_POPUP_MAP
  121.       mog_damage_popup_initialize
  122.   end
  123.  
  124.   #--------------------------------------------------------------------------
  125.   # ● Damage Popup Clear
  126.   #--------------------------------------------------------------------------         
  127.   def damage_popup_clear
  128.       $game_party.character_members.each {|t|
  129.       t.actor.damage.clear; t.actor.skip_dmg_popup = false ;
  130.       t.damage.clear; t.skip_dmg_popup = false} rescue nil
  131.       $game_map.events.values.each {|t| t.damage.clear ;
  132.       t.skip_dmg_popup = false} rescue nil
  133.   end
  134.  
  135. end  
  136.  
  137. #==============================================================================
  138. # ■ Game Temp
  139. #==============================================================================
  140. class Game_Temp
  141.  
  142.   attr_accessor :battle_end
  143.  
  144.   #--------------------------------------------------------------------------
  145.   # ● Initialize
  146.   #--------------------------------------------------------------------------   
  147.   alias mog_damage_temp_opup_initialize initialize
  148.   def initialize
  149.       @battle_end = false
  150.       mog_damage_temp_opup_initialize
  151.   end
  152.  
  153.   #--------------------------------------------------------------------------
  154.   # ● Sprite Visible
  155.   #--------------------------------------------------------------------------   
  156.   def sprite_visible
  157.       return false if $game_message.visible
  158.       return false if $game_temp.battle_end
  159.       return true
  160.   end
  161.  
  162. end
  163. #==============================================================================
  164. # ■ Game CharacterBase
  165. #==============================================================================
  166. class Game_CharacterBase
  167.  
  168.   attr_accessor :damage ,:battler ,:skip_dmg_popup
  169.  
  170.   #--------------------------------------------------------------------------
  171.   # ● Ini Public Members
  172.   #--------------------------------------------------------------------------         
  173.   alias mog_damage_popup_init_public_members init_public_members
  174.   def init_public_members
  175.       @damage = [] ; @skip_dmg_popup = false
  176.       mog_damage_popup_init_public_members
  177.   end
  178.  
  179.   #--------------------------------------------------------------------------
  180.   # ● Damage Popup
  181.   #--------------------------------------------------------------------------         
  182.   def damage_popup(value,type = "String")      
  183.       @damage.push([value,type])
  184.   end  
  185.  
  186. end
  187.  
  188. #==============================================================================
  189. # ■ Scene Map
  190. #==============================================================================
  191. class Scene_Map < Scene_Base  
  192.   #--------------------------------------------------------------------------
  193.   # ● Start
  194.   #--------------------------------------------------------------------------
  195.   alias mog_damage_popup_start start
  196.   def start
  197.       $game_system.damage_popup_clear ; $game_temp.battle_end = false
  198.       mog_damage_popup_start
  199.   end  
  200. end
  201.  
  202. #==============================================================================
  203. # ■ Game Player
  204. #==============================================================================
  205. class Game_Player < Game_Character   
  206.   #--------------------------------------------------------------------------
  207.   # ● Battler
  208.   #--------------------------------------------------------------------------
  209.   def battler
  210.       actor
  211.   end   
  212. end
  213.  
  214. #==============================================================================
  215. # ■ Game Follower
  216. #==============================================================================
  217. class Game_Follower < Game_Character  
  218.   #--------------------------------------------------------------------------
  219.   # ● Battler
  220.   #--------------------------------------------------------------------------
  221.   def battler
  222.       actor
  223.   end   
  224. end
  225.  
  226. #==============================================================================
  227. # ■ Game_BattlerBase
  228. #==============================================================================
  229. class Game_BattlerBase  
  230.   #--------------------------------------------------------------------------
  231.   # ● Change HP
  232.   #--------------------------------------------------------------------------         
  233.   alias mog_damage_popup_change_hp change_hp
  234.   def change_hp(value, enable_death)
  235.       mog_damage_popup_change_hp(value, enable_death)
  236.       self.damage.push([-value,"Hp"])
  237.   end   
  238. end
  239.  
  240. #==============================================================================
  241. # ■ Game_Battler
  242. #==============================================================================
  243. class Game_Battler < Game_BattlerBase  
  244.   include MOG_DAMAGEPOPUP
  245.   attr_accessor :damage , :skip_dmg_popup
  246.  
  247.   #--------------------------------------------------------------------------
  248.   # ● Initialize
  249.   #--------------------------------------------------------------------------         
  250.   alias mog_damage_sprite_initialize initialize
  251.   def initialize      
  252.       @damage = [] ; @skip_dmg_popup = false
  253.       mog_damage_sprite_initialize
  254.   end  
  255.  
  256.   #--------------------------------------------------------------------------
  257.   # ● Item Apply
  258.   #--------------------------------------------------------------------------  
  259.    alias mog_damage_pop_item_apply item_apply
  260.    def item_apply(user, item)
  261.        mog_damage_pop_item_apply(user, item)
  262.        execute_damage_popup(user,item)
  263.   end
  264.  
  265.   #--------------------------------------------------------------------------
  266.   # ● Execute Damage Popup
  267.   #--------------------------------------------------------------------------
  268.   def execute_damage_popup(user,item)
  269.       if !@result.missed and !@result.evaded and @result.hit?
  270.         self.damage.push([@result.hp_damage,"HP",@result.critical]) if item.damage.to_hp? or @result.hp_damage != 0
  271.         user.damage.push([[email]-@result.hp_drain[/email],"HP",@result.critical]) if item.damage.type == 5
  272.         self.damage.push([@result.mp_damage,"MP",@result.critical]) if item.damage.to_mp? or @result.mp_damage != 0
  273.         user.damage.push([[email]-@result.mp_drain[/email],"MP",@result.critical]) if item.damage.type == 6
  274.         self.damage.push([@result.tp_damage,"TP",@result.critical]) if @result.tp_damage != 0
  275.      elsif !self.dead?
  276.         if @result.missed ; self.damage.push(["Missed","Missed"])
  277.         elsif @result.evaded ; self.damage.push(["Evaded","Evaded"])
  278.         end        
  279.       end
  280.   end
  281.  
  282.   #--------------------------------------------------------------------------
  283.   # ● Regenerate HP
  284.   #--------------------------------------------------------------------------
  285.   alias mog_damage_pop_regenerate_hp regenerate_hp
  286.   def regenerate_hp
  287.       mog_damage_pop_regenerate_hp
  288.       self.damage.push(["Regenerate",""]) if @result.hp_damage < 0  
  289.       self.damage.push([@result.hp_damage,"HP"]) if @result.hp_damage != 0
  290.   end
  291.  
  292.   #--------------------------------------------------------------------------
  293.   # ● Regenerate MP
  294.   #--------------------------------------------------------------------------
  295.   alias mog_damage_pop_regenerate_mp regenerate_mp
  296.   def regenerate_mp
  297.       mog_damage_pop_regenerate_mp
  298.       self.damage.push(["Regenerate",""])
  299.       self.damage.push([@result.mp_damage,"MP"]) if @result.mp_damage != 0
  300.   end
  301.  
  302.   #--------------------------------------------------------------------------
  303.   # ● Regenerate TP
  304.   #--------------------------------------------------------------------------
  305.   alias mog_damage_pop_regenerate_tp regenerate_tp
  306.   def regenerate_tp
  307.       mog_damage_pop_regenerate_tp
  308.       tp_damage = 100 * trg
  309.       self.damage.push([tp_damage,"TP"]) if tp_damage != 0
  310.   end
  311.  
  312.   #--------------------------------------------------------------------------
  313.   # ● Added New State
  314.   #--------------------------------------------------------------------------  
  315.   alias mog_damage_pop_add_new_state add_new_state
  316.   def add_new_state(state_id)
  317.       mog_damage_pop_add_new_state(state_id)
  318.       execute_popup_add_new_state(state_id)
  319.   end
  320.  
  321.   #--------------------------------------------------------------------------
  322.   # ● Execute Popup Add New State
  323.   #--------------------------------------------------------------------------  
  324. def execute_popup_add_new_state(state_id)
  325.       st = $data_states[state_id]
  326.       if self.hp > 0
  327.          unless (SceneManager.scene_is?(Scene_Battle) and !STATES_POPUP_BATTLE) or
  328.                 (SceneManager.scene_is?(Scene_Map) and !STATES_POPUP_MAP)
  329.                 self.damage.push([st.name.to_s,"States Plus",false,st.icon_index])
  330.          end
  331.       end
  332.   end
  333.  
  334.   #--------------------------------------------------------------------------
  335.   # ● Remove State
  336.   #--------------------------------------------------------------------------  
  337.   alias mog_damage_pop_remove_state remove_state
  338.   def remove_state(state_id)
  339.       execute_popup_remove_state(state_id)  
  340.       mog_damage_pop_remove_state(state_id)
  341.   end      
  342.  
  343.   #--------------------------------------------------------------------------
  344.   # ● Execute Popup Remove State
  345.   #--------------------------------------------------------------------------  
  346.   def execute_popup_remove_state(state_id)  
  347.       if state?(state_id) and self.hp > 0
  348.          st = $data_states[state_id]
  349.          unless (SceneManager.scene_is?(Scene_Battle) and !STATES_POPUP_BATTLE) or
  350.                 (SceneManager.scene_is?(Scene_Map) and !STATES_POPUP_MAP)
  351.                 self.damage.push([st.name.to_s,"States Minus",false,st.icon_index]) unless BattleManager.escape?
  352.          end
  353.       end
  354.   end     
  355.  
  356. end
  357.  
  358. #==============================================================================
  359. # ■ BattleManager
  360. #==============================================================================
  361. module BattleManager
  362.   #--------------------------------------------------------------------------
  363.   # ● Escape?
  364.   #--------------------------------------------------------------------------
  365.   def self.escape?
  366.       @phase == nil
  367.   end  
  368. end
  369.  
  370. #==============================================================================
  371. # ■ Game_Temp
  372. #==============================================================================
  373. class Game_Temp
  374.   attr_accessor :dmg_battle_mode
  375.  
  376.   #--------------------------------------------------------------------------
  377.   # ● Initialize
  378.   #--------------------------------------------------------------------------         
  379.   alias mog_damage_popup_initialize initialize
  380.   def initialize
  381.       @dmg_battle_mode = false
  382.       mog_damage_popup_initialize
  383.   end
  384.  
  385. end
  386.  
  387. #==============================================================================
  388. # ■ Scene Battle
  389. #==============================================================================
  390. class Scene_Battle < Scene_Base
  391.  
  392.   #--------------------------------------------------------------------------
  393.   # ● Start
  394.   #--------------------------------------------------------------------------         
  395.   alias mog_damage_popup_start start
  396.   def start
  397.       $game_temp.dmg_battle_mode = true
  398.       mog_damage_popup_start
  399.   end
  400.  
  401.   #--------------------------------------------------------------------------
  402.   # ● Terminate
  403.   #--------------------------------------------------------------------------         
  404.   alias mog_damage_popup_terminate terminate
  405.   def terminate
  406.       mog_damage_popup_terminate
  407.       $game_temp.dmg_battle_mode = false
  408.   end
  409.  
  410. end
  411.  
  412. #==============================================================================
  413. # ■ Game Party
  414. #==============================================================================
  415. class Game_Party < Game_Unit
  416.  
  417.   #--------------------------------------------------------------------------
  418.   # ● Character Members
  419.   #--------------------------------------------------------------------------         
  420.   def character_members
  421.       char_m = [] ; char_m.push($game_player)
  422.       $game_player.followers.each do |f| char_m.push(f) end
  423.       return char_m
  424.   end
  425.  
  426.   #--------------------------------------------------------------------------
  427.   # ● Gain Gold
  428.   #--------------------------------------------------------------------------         
  429.   alias mog_damage_popup_gain_gold gain_gold
  430.   def gain_gold(amount)
  431.       mog_damage_popup_gain_gold(amount)
  432.       $game_party.members[0].damage.push([amount,"Gold"]) if can_damage_popup_gold?
  433.   end  
  434.  
  435.   #--------------------------------------------------------------------------
  436.   # ● Can Damage Popup Gold
  437.   #--------------------------------------------------------------------------         
  438.   def can_damage_popup_gold?
  439.       return false if !SceneManager.scene_is?(Scene_Map)
  440.       return false if $game_temp.dmg_battle_mode
  441.       return false if !MOG_DAMAGEPOPUP::EXP_GOLD_POPUP_MAP
  442.       return false if !$game_system.damage_popup_map
  443.       return false if !$game_party.members[0]
  444.       return true
  445.   end
  446.  
  447. #--------------------------------------------------------------------------
  448. # ● Gain Item
  449. #--------------------------------------------------------------------------
  450. alias mog_damage_popup_gain_item gain_item
  451. def gain_item(item, amount, include_equip = false)
  452.      mog_damage_popup_gain_item(item, amount, include_equip)
  453.      execute_item_popup(item) if can_damage_popup_item?(item)
  454. end
  455.  
  456. #--------------------------------------------------------------------------
  457. # ● Can Damage Poupup Item
  458. #--------------------------------------------------------------------------
  459. def can_damage_popup_item?(item)
  460.      return false if item == nil
  461.      return false if !MOG_DAMAGEPOPUP::ITEM_POPUP_MAP
  462.      return false if !$game_system.damage_popup_map
  463.      return false if SceneManager.scene_is?(Scene_Battle)
  464.      return false if !$game_party.members[0]
  465.      return false if $game_temp.dmg_battle_mode
  466.      return true     
  467. end
  468.  
  469. #--------------------------------------------------------------------------
  470. # ● Execute Item Popup
  471. #--------------------------------------------------------------------------
  472. def execute_item_popup(item)
  473.      it = $data_items[item.id] if item.is_a?(RPG::Item)
  474.      it = $data_weapons[item.id] if item.is_a?(RPG::Weapon)
  475.      it = $data_armors[item.id] if item.is_a?(RPG::Armor)   
  476.      $game_party.members[0].damage.push([it.name.to_s,"Item",false,it.icon_index])
  477. end
  478.  
  479. end
  480.  
  481. #==============================================================================
  482. # ■ Game Interpreter
  483. #==============================================================================
  484. class Game_Interpreter
  485.  
  486. #--------------------------------------------------------------------------
  487. # ● Damage Popup Map
  488. #--------------------------------------------------------------------------
  489.   def damage_popup_map(value)
  490.       $game_system.damage_popup_map = value
  491.   end   
  492.  
  493.   #--------------------------------------------------------------------------
  494.   # ● Damage Popup
  495.   #--------------------------------------------------------------------------
  496.   def damage_popup(target_id, value,type = "")
  497.       return if !$game_system.damage_popup_map
  498.       target = set_target_dmg(target_id) rescue nil
  499.       target.damage.push([value,type]) if target
  500.   end
  501.  
  502.   #--------------------------------------------------------------------------
  503.   # ● Set Target Dmg
  504.   #--------------------------------------------------------------------------
  505.   def set_target_dmg(target)
  506.       return $game_player.battler if target == 0
  507.       return $game_player.followers.battler[(target_id + 1).abs] if target < 0
  508.       $game_map.events.values.each do |event|
  509.       return event.battler if event.id == target_id and event.battler
  510.       return event if event.id == target_id
  511.       end
  512.   end
  513.  
  514.   #--------------------------------------------------------------------------
  515.   # * Change MP
  516.   #--------------------------------------------------------------------------
  517.   alias mog_damage_popup_command_312 command_312
  518.   def command_312
  519.       value = operate_value(@params[2], @params[3], @params[4])
  520.       iterate_actor_var(@params[0], @params[1]) do |actor|
  521.       actor.damage.push([-value,"MP"])
  522.       end   
  523.       mog_damage_popup_command_312
  524.   end  
  525.  
  526. end
  527.  
  528. #==============================================================================
  529. # ■ Game Actor
  530. #==============================================================================
  531. class Game_Actor < Game_Battler
  532.   include MOG_DAMAGEPOPUP
  533.   #--------------------------------------------------------------------------
  534.   # ● Level UP
  535.   #--------------------------------------------------------------------------         
  536.    alias mog_damage_pop_level_up level_up
  537.    def level_up
  538.        mog_damage_pop_level_up      
  539.        execute_level_popup
  540.    end
  541.  
  542.   #--------------------------------------------------------------------------
  543.   # ● Execute Level Popup
  544.   #--------------------------------------------------------------------------         
  545.    def execute_level_popup
  546.        if (SceneManager.scene_is?(Scene_Battle) and LEVEL_POPUP_BATTLE) or
  547.           (SceneManager.scene_is?(Scene_Map) and LEVEL_POPUP_MAP)
  548.           @damage.push(["Level UP","Level_UP"]) unless @skip_dmg_popup
  549.           @skip_dmg_popup = true
  550.        end     
  551.    end
  552.  
  553.   #--------------------------------------------------------------------------
  554.   # ● Change Exp
  555.   #--------------------------------------------------------------------------         
  556.   alias mog_damage_popup_change_exp change_exp
  557.   def change_exp(exp, show)
  558.       n_exp = self.exp
  559.       mog_damage_popup_change_exp(exp, show)
  560.       c_exp = n_exp - self.exp
  561.       @damage.push([c_exp.abs,"Exp"]) if can_popup_exp?(exp)
  562.   end   
  563.  
  564.   #--------------------------------------------------------------------------
  565.   # ● Can Popup EXP
  566.   #--------------------------------------------------------------------------         
  567.   def can_popup_exp?(exp)
  568.       return false if !EXP_GOLD_POPUP_MAP
  569.       return false if exp <= 0
  570.       return false if self.skip_dmg_popup
  571.       return false if self.max_level?
  572.       return true
  573.   end
  574.  
  575. end
  576.  
  577. #==============================================================================
  578. # ■ Scene_Battle
  579. #==============================================================================
  580. class Scene_Battle < Scene_Base
  581.  
  582.   #--------------------------------------------------------------------------
  583.   # ● Invoke Counter Attack
  584.   #--------------------------------------------------------------------------        
  585.   alias mog_damage_popup_invoke_counter_attack invoke_counter_attack
  586.   def invoke_counter_attack(target, item)
  587.       mog_damage_popup_invoke_counter_attack(target, item)
  588.       target.damage.push(["Counter","Counter"])
  589.   end  
  590.  
  591.   #--------------------------------------------------------------------------
  592.   # ● Invoke Counter Attack
  593.   #--------------------------------------------------------------------------        
  594.   alias mog_damage_popup_invoke_magic_reflection invoke_magic_reflection
  595.   def invoke_magic_reflection(target, item)
  596.       mog_damage_popup_invoke_magic_reflection(target, item)
  597.       target.damage.push(["Reflection","Reflection"])
  598.   end  
  599.  
  600. end
  601.  
  602. #==============================================================================
  603. # ■ Cache
  604. #==============================================================================
  605. module Cache
  606.  
  607.   #--------------------------------------------------------------------------
  608.   # * Damage
  609.   #--------------------------------------------------------------------------
  610.   def self.damage(filename)
  611.       load_bitmap("Graphics/Damage/", filename)
  612.   end
  613.  
  614. end
  615.  
  616. #==============================================================================
  617. # ■ Game Temp
  618. #==============================================================================
  619. class Game_Temp
  620.  
  621.   attr_accessor :pre_cache_damage
  622.  
  623.   #--------------------------------------------------------------------------
  624.   # ● Initialize
  625.   #--------------------------------------------------------------------------  
  626.   alias mog_damage_pop_initialize initialize
  627.   def initialize
  628.       mog_damage_pop_initialize
  629.       pre_cache_damage_temp
  630.   end
  631.  
  632.   #--------------------------------------------------------------------------
  633.   # ● Pre Cache Damage Temp
  634.   #--------------------------------------------------------------------------   
  635.   def pre_cache_damage_temp
  636.       return if @pre_cache_damage != nil
  637.       @pre_cache_damage = []
  638.       @pre_cache_damage.push(Cache.damage("HP_Number"))
  639.       @pre_cache_damage.push(Cache.damage("MP"))
  640.       @pre_cache_damage.push(Cache.damage("TP"))
  641.       @pre_cache_damage.push(Cache.damage("Missed"))
  642.       @pre_cache_damage.push(Cache.damage("Evaded"))
  643.       @pre_cache_damage.push(Cache.damage("Critical"))
  644.       @pre_cache_damage.push(Cache.damage("Exp"))
  645.       @pre_cache_damage.push(Cache.damage("Gold"))
  646.       @pre_cache_damage.push(Cache.damage("Level UP"))
  647.       @pre_cache_damage.push(Cache.damage("Counter"))
  648.       @pre_cache_damage.push(Cache.damage("Reflection"))
  649.       @pre_cache_damage.push(Cache.damage("MP_Number"))
  650.       @pre_cache_damage.push(Cache.damage("TP_Number"))
  651.       @pre_cache_damage.push(Cache.damage("EG_Number"))
  652.       @pre_cache_damage.push(Cache.system("Iconset"))
  653.   end
  654.  
  655. end
  656.  
  657. #==============================================================================
  658. # ■ Sprite Base
  659. #==============================================================================
  660. class Sprite_Base < Sprite
  661.  
  662.   #--------------------------------------------------------------------------
  663.   # ● Initialize
  664.   #--------------------------------------------------------------------------  
  665.   alias mog_damage_popup_sprite_initialize initialize
  666.   def initialize(viewport = nil)
  667.       mog_damage_popup_sprite_initialize(viewport)
  668.       damage_popup_setup
  669.   end
  670.  
  671.   #--------------------------------------------------------------------------
  672.   # ● Damage Popup Setup
  673.   #--------------------------------------------------------------------------  
  674.   def damage_popup_setup      
  675.       $game_temp.pre_cache_damage_temp ; @damage_sprites = []
  676.       $game_system.damage_popup_clear
  677.   end
  678.  
  679.   #--------------------------------------------------------------------------
  680.   # ● Dispose
  681.   #--------------------------------------------------------------------------  
  682.   alias mog_damage_popup_sprite_dispose dispose
  683.   def dispose      
  684.       mog_damage_popup_sprite_dispose
  685.       dispose_damage_sprites
  686.   end
  687.  
  688.   #--------------------------------------------------------------------------
  689.   # ● Dispose Damage Sprites
  690.   #--------------------------------------------------------------------------   
  691.   def dispose_damage_sprites
  692.       return if @damage_sprites == nil
  693.       @damage_sprites.each {|sprite| sprite.dispose_damage }
  694.   end  
  695.  
  696.   #--------------------------------------------------------------------------
  697.   # ● Update
  698.   #--------------------------------------------------------------------------  
  699.   alias mog_damage_popup_sprite_update update
  700.   def update
  701.       mog_damage_popup_sprite_update
  702.       update_damage_popup
  703.   end  
  704.  
  705.   #--------------------------------------------------------------------------
  706.   # ● Update Damage Popup
  707.   #--------------------------------------------------------------------------   
  708.   def update_damage_popup
  709.       return if @damage_sprites == nil
  710.       create_damage_sprite if can_create_damage?
  711.       update_damage_sprite if !@damage_sprites.empty?
  712.   end  
  713.  
  714.   #--------------------------------------------------------------------------
  715.   # ● Can Create Damage?
  716.   #--------------------------------------------------------------------------     
  717.   def can_create_damage?      
  718.       return false if $game_message.visible
  719.       if @battler
  720.          return false if @battler.damage == nil
  721.          return false if @battler.damage.empty?
  722.          if $game_temp.battle_end and @battler.is_a?(Game_Actor)
  723.             return false if $game_message.visible
  724.             return false if $imported[:mog_battler_result] and $game_temp.result
  725.          end
  726.       elsif @character
  727.          return false if !$game_system.damage_popup_map
  728.          if @character.battler
  729.             return false if @character.battler.damage == nil
  730.             return false if @character.battler.damage.empty?
  731.          else
  732.             return false if @character.damage == nil
  733.             return false if @character.damage.empty?            
  734.          end  
  735.       end
  736.       return false if @battler == nil and @character == nil      
  737.       return true
  738.   end
  739.  
  740.   #--------------------------------------------------------------------------
  741.   # ● Create Damage Sprite
  742.   #--------------------------------------------------------------------------     
  743.   def create_damage_sprite
  744.       target = @battler ? @battler : @character
  745.       screen_x_available = target.screen_x rescue nil
  746.       return if screen_x_available == nil
  747.       sx = target.screen_x != nil ? target.screen_x : self.x
  748.       sy = target.screen_y != nil ? target.screen_y : self.y
  749.       @damage_sprites = [] if @damage_sprites == nil  
  750.       target = @character.battler if @character and @character.battler
  751.       target.damage.each_with_index do |i, index|
  752.       @damage_sprites.push(Damage_Sprite.new(nil,sx,sy,i,index,@damage_sprites.size,self)) end
  753.       if SceneManager.scene_is?(Scene_Battle)
  754.       @damage_sprites.each_with_index do |i, index| i.set_duration(index) end
  755.       end
  756.       target.damage.clear ; target.skip_dmg_popup = false
  757.   end  
  758.  
  759.   #--------------------------------------------------------------------------
  760.   # ● Update Damage Sprite
  761.   #--------------------------------------------------------------------------     
  762.   def update_damage_sprite
  763.       clear = true
  764.       @damage_sprites.each_with_index do |sprite, i|
  765.           sprite.update_damage(@damage_sprites.size,i,@battler)
  766.           sprite.dispose_damage if sprite.duration <= 0
  767.           clear = false if sprite.duration > 0
  768.       end   
  769.       @damage_sprites.clear if clear
  770.   end  
  771.  
  772. end
  773.  
  774. #==============================================================================
  775. # ■ Damage Sprite
  776. #==============================================================================
  777. class Damage_Sprite < Sprite
  778.    include MOG_DAMAGEPOPUP
  779.    attr_accessor :duration
  780.  
  781.   #--------------------------------------------------------------------------
  782.   # ● Initialize
  783.   #--------------------------------------------------------------------------      
  784.   def initialize(viewport = nil , x,y, value ,index,index_max,target)
  785.       super(viewport)
  786.       dispose_damage ; setup_base(value,x,y,index,index_max,target) ; create_sprites
  787.   end   
  788.  
  789.   #--------------------------------------------------------------------------
  790.   # ● Setup Base
  791.   #--------------------------------------------------------------------------      
  792.   def setup_base(value,x,y,index,index_max,target)
  793.       @target = target ; y2 = 0
  794.       if @target.bitmap != nil ; y2 = SceneManager.scene_is?(Scene_Battle) ? @target.bitmap.height / 2 : 0 ; end
  795.       @animation_type = 0 ; @index = index ; @index_max = index_max + 1
  796.       @image = $game_temp.pre_cache_damage ; self.z = index + DAMAGE_Z
  797.       @cw = @image[0].width / 10 ; @ch = @image[0].height / 2 ; @cw2 = 0
  798.       @x = x ; @y = y - y2 ; @value = value[0] ; @type = value[1] ; @ch2 = 0
  799.       @critical = (value[2] and @value.to_i >= 0) ? true : false; self.opacity = 0
  800.       @state_index = value[3] ; @oxy = [0,0,0,0] ; @org_xy = [0,0] ; @spxy = [0,0]
  801.       @duration = 92 ; @org_oxy = [0,0,0,0]
  802.       self.visible = false ;set_initial_position(index,nil)
  803.   end
  804.  
  805.   #--------------------------------------------------------------------------
  806.   # ● Set Duration
  807.   #--------------------------------------------------------------------------      
  808.   def set_duration(index,pre_index = nil)
  809.       return if @duration != 0
  810.       @duration = 82 + (2 * index) if @animation_type == 0
  811.   end
  812.  
  813.   #--------------------------------------------------------------------------
  814.   # ● Set Initial Position
  815.   #--------------------------------------------------------------------------      
  816.   def set_initial_position(index,old_duration)
  817.       @org_xy = [@x,@y]
  818.       self.zoom_y = self.zoom_x
  819.   end
  820.  
  821.   #--------------------------------------------------------------------------
  822.   # ● Dispose Damage
  823.   #--------------------------------------------------------------------------      
  824.   def dispose_damage
  825.       (self.bitmap.dispose ; self.bitmap = nil) if self.bitmap
  826.       (@sup_sprite.bitmap.dispose ; @sup_sprite.dispose) if @sup_sprite  
  827.       @duration = -1
  828.   end
  829.  
  830.   #--------------------------------------------------------------------------
  831.   # ● Create Sprites
  832.   #--------------------------------------------------------------------------      
  833.   def create_sprites
  834.       if @value.is_a?(Numeric)
  835.          create_number         
  836.       elsif ["Missed","Evaded","Level UP","Counter","Reflection"].include?(@value.to_s)
  837.          create_miss
  838.       else
  839.          create_string
  840.       end      
  841.       set_damage_position
  842.   end
  843.  
  844.   #--------------------------------------------------------------------------
  845.   # ● Set Damage Position
  846.   #--------------------------------------------------------------------------      
  847.   def set_damage_position
  848.       return if self.bitmap == nil
  849.       self.ox = (self.bitmap.width - @cw2) / 2
  850.       self.oy = self.bitmap.height / 2 ; self.x = @x ; self.y = @y
  851.       @org_oxy[0] = self.ox
  852.       @org_oxy[1] = self.oy
  853.       set_animation_type
  854.       if @sup_sprite
  855.          @sup_sprite.ox = self.bitmap.width / 2 ;
  856.          @sup_sprite.oy = self.bitmap.height / 2
  857.          @org_oxy[2] = @sup_sprite.ox
  858.          @org_oxy[3] = @sup_sprite.oy
  859.          if @critical
  860.             @sup_sprite.x = @x - (@sup_sprite.bitmap.width / 2) + ((@cw / 2) * @number_value.size)
  861.             @sup_sprite.y = self.y
  862.          end   
  863.          update_sup_position(@index_max - @index)
  864.       end
  865.   end   
  866.  
  867.   #--------------------------------------------------------------------------
  868.   # ● Set Damage Position
  869.   #--------------------------------------------------------------------------      
  870.   def set_animation_type
  871.       s = rand(2) ; s2 = (rand(10) * 0.1).round(2)
  872.       @oxy[2] = s == 1 ? s2 : -s2
  873.   end
  874.  
  875.   #--------------------------------------------------------------------------
  876.   # ● Create Number
  877.   #--------------------------------------------------------------------------      
  878.   def create_number
  879.       case @type
  880.       when "MP"
  881.       number_image = @image[11] ;h = @value >= 0 ? 0 : @ch ; create_sup_sprite
  882.       when "TP"
  883.       number_image = @image[12] ;h = @value >= 0 ? 0 : @ch ; create_sup_sprite
  884.       when "Exp"
  885.       number_image = @image[13] ;h = 0 ; create_sup_sprite
  886.       when "Gold"
  887.       number_image = @image[13] ;h = @ch ; create_sup_sprite            
  888.       else
  889.       number_image = @image[0] ; h = @value >= 0 ? 0 : @ch
  890.       end
  891.       @number_value = @value.abs.truncate.to_s.split(//)
  892.       self.bitmap = Bitmap.new(@cw * @number_value.size, @ch)
  893.       for r in [email]0...@number_value.size[/email]        
  894.           number_value_abs = @number_value[r].to_i
  895.           src_rect = Rect.new(@cw * number_value_abs, h, @cw, @ch)
  896.           self.bitmap.blt(@cw *  r, 0, number_image, src_rect)
  897.       end   
  898.       create_sup_sprite if @critical
  899.   end
  900.  
  901.   #--------------------------------------------------------------------------
  902.   # ● Create Sup Sprite
  903.   #--------------------------------------------------------------------------      
  904.   def create_sup_sprite
  905.       return if @sup_sprite != nil
  906.       @sup_sprite = Sprite.new ; @sup_sprite.visible = false ; fy = 0 ; sp = [0,0]
  907.       if @type == "MP" ; @sup_sprite.bitmap = @image[1].dup
  908.       elsif @type == "TP" ; @sup_sprite.bitmap = @image[2].dup
  909.       elsif @critical
  910.          @sup_sprite.bitmap = @image[5].dup
  911.          @cw2 = 0 ; @ch2 = @sup_sprite.bitmap.height  
  912.          return
  913.       elsif @type == "Exp"
  914.          @sup_sprite.bitmap = @image[6].dup ; fy = @ch ; sp[1] = 1.0
  915.       elsif @type == "Gold"
  916.          @sup_sprite.bitmap = @image[7].dup ; fy = (@ch * 2) ; sp[1] = 0.5
  917.      end  
  918.      fy = 0 if !SceneManager.scene_is?(Scene_Battle)
  919.      @y += fy ; @org_xy[1] += 0
  920.      @cw2 = @sup_sprite.bitmap.width + @cw
  921.      @spxy = [sp[0],sp[1]]
  922.   end
  923.  
  924.   #--------------------------------------------------------------------------
  925.   # ● Update Sup Position
  926.   #--------------------------------------------------------------------------      
  927.   def update_sup_position(dif_y)
  928.       @sup_sprite.x = self.x - @cw unless @critical
  929.       @sup_sprite.y = @critical ? self.y - @ch2 : self.y
  930.       @sup_sprite.opacity = self.opacity ; @sup_sprite.angle = self.angle
  931.       @sup_sprite.zoom_x = self.zoom_x ; @sup_sprite.zoom_y = self.zoom_y
  932.       @sup_sprite.z = self.z ; @sup_sprite.viewport = self.viewport
  933.       @sup_sprite.visible = self.visible
  934.   end  
  935.  
  936.   #--------------------------------------------------------------------------
  937.   # ● Create Miss
  938.   #--------------------------------------------------------------------------      
  939.   def create_miss
  940.       self.bitmap = @image[3].dup if @value == "Missed"
  941.       self.bitmap = @image[4].dup if @value == "Evaded"
  942.       self.bitmap = @image[8].dup if @value == "Level UP"
  943.       self.bitmap = @image[9].dup if @value == "Counter"
  944.       self.bitmap = @image[10].dup if @value == "Reflection"
  945.   end
  946.  
  947.   #--------------------------------------------------------------------------
  948.   # ● Create Spring
  949.   #--------------------------------------------------------------------------               
  950.   def create_string
  951.       string_size = @value.to_s.split(//) ; fsize = FONT_SIZE > 10 ? FONT_SIZE : 10
  952.       @stg_size = string_size.size > 0 ? ((1 + string_size.size ) * ((fsize / 2) - 2)) : 32      
  953.       self.bitmap = Bitmap.new(@stg_size,32)
  954.       self.bitmap.font.color = FONT_COLOR
  955.       self.bitmap.font.size = fsize ; self.bitmap.font.bold = FONT_BOLD
  956.       self.bitmap.font.italic = FONT_ITALIC
  957.       if @type == "Item"
  958.          self.bitmap.font.color = FONT_COLOR_ITEM
  959.       elsif @type == "States Plus"
  960.          self.bitmap.font.color = FONT_COLOR_STATUS_PLUS
  961.       elsif @type == "States Minus"
  962.          self.bitmap.font.color = FONT_COLOR_STATUS_MINUS
  963.       end      
  964.       self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.height, @value.to_s,0)
  965.       draw_states if @state_index != nil
  966.   end
  967.  
  968.   #--------------------------------------------------------------------------
  969.   # ● Draw States
  970.   #--------------------------------------------------------------------------               
  971.   def draw_states
  972.       @sup_sprite = Sprite.new ; @sup_sprite.bitmap = Bitmap.new(24,24)
  973.       rect = Rect.new(@state_index % 16 * 24, @state_index / 16 * 24, 24, 24)
  974.       @image[14] = Cache.system("Iconset") if @image[14]== nil or @image[14].disposed?
  975.       @sup_sprite.bitmap.blt(0, 0, @image[14].dup, rect)
  976.       (@org_xy[1] += (@ch + 5) ; @y += (@ch + 5)) unless !SceneManager.is_a?(Scene_Battle)
  977.       @cw2 = @sup_sprite.bitmap.width + @cw / 2 ; @sup_sprite.visible = false
  978.   end  
  979.  
  980.   #--------------------------------------------------------------------------
  981.   # ● Update Damage
  982.   #--------------------------------------------------------------------------               
  983.   def update_damage(index_max,index,battler)
  984.       @index_max = index_max ; @index = index
  985.       return if self.bitmap == nil or self.bitmap.disposed?
  986.       @duration -= 1
  987.       self.visible = @duration > 90 ? false : true
  988.       return if !self.visible
  989.       dif_y = (@index_max - @index)
  990.       update_animation(dif_y)
  991.       update_sprite_position(dif_y,battler)
  992.       update_sup_position(dif_y) if @sup_sprite
  993.       dispose_damage if @duration <= 0
  994.   end
  995.  
  996.   #--------------------------------------------------------------------------
  997.   # ● Update Sprite Position
  998.   #--------------------------------------------------------------------------               
  999.   def update_sprite_position(dif_y,battler)
  1000.       execute_move(0,self,@org_xy[0] + @oxy[0])
  1001.       execute_move(1,self,@org_xy[1] + @oxy[1] - (dif_y * Y_SPACE))
  1002.       self.zoom_y = self.zoom_x
  1003.       update_battle_camera if oxy_camera?(battler)
  1004.   end   
  1005.  
  1006.   #--------------------------------------------------------------------------
  1007.   # ● Update Battle Camera
  1008.   #--------------------------------------------------------------------------               
  1009.   def update_battle_camera
  1010.       self.ox = $game_temp.viewport_oxy[0] + @org_oxy[0]
  1011.       self.oy = $game_temp.viewport_oxy[1] + @org_oxy[1]
  1012.       @sup_sprite.ox = $game_temp.viewport_oxy[0] + @org_oxy[2] if @sup_sprite != nil
  1013.       @sup_sprite.oy = $game_temp.viewport_oxy[1] + @org_oxy[3] if @sup_sprite != nil
  1014.   end  
  1015.  
  1016.   #--------------------------------------------------------------------------
  1017.   # ● OXY_CAMERA
  1018.   #--------------------------------------------------------------------------               
  1019.   def oxy_camera?(battler)
  1020.       return false if $imported[:mog_battle_camera] == nil
  1021.       if battler.is_a?(Game_Actor)
  1022.          return false if $imported[:mog_battle_hud_ex] and SceneManager.face_battler?
  1023.       end
  1024.       return true
  1025.   end
  1026.  
  1027.   #--------------------------------------------------------------------------
  1028.   # ● Execute Move
  1029.   #--------------------------------------------------------------------------      
  1030.   def execute_move(type,sprite,np)
  1031.       cp = type == 0 ? sprite.x : sprite.y
  1032.       sp = 1 + ((cp - np).abs / 10)
  1033.       sp = 1 if @duration < 60
  1034.       if cp > np ;    cp -= sp ; cp = np if cp < np
  1035.       elsif cp < np ; cp += sp ; cp = np if cp > np
  1036.       end     
  1037.       sprite.x = cp if type == 0 ; sprite.y = cp if type == 1
  1038.   end   
  1039.  
  1040.   #--------------------------------------------------------------------------
  1041.   # ● Update Animation
  1042.   #--------------------------------------------------------------------------               
  1043.   def update_animation(dif_y)
  1044.      @oxy[1] -= 1
  1045.      case @duration
  1046.      when 60..90 ; self.opacity += 15
  1047.      when 30..60 ; self.opacity = 255
  1048.      when 0..30  ; self.opacity -= 9
  1049.      end
  1050.   end
  1051.  
  1052. end
  1053.  
  1054. #==============================================================================
  1055. # ■ Sprite Battler
  1056. #==============================================================================
  1057. class Sprite_Battler < Sprite_Base
  1058.  
  1059.   #--------------------------------------------------------------------------
  1060.   # ● Update Collapse
  1061.   #--------------------------------------------------------------------------  
  1062.   alias mog_damage_pop_update_collapse update_collapse
  1063.   def update_collapse
  1064.       mog_damage_pop_update_collapse
  1065.       execute_exp_pop
  1066.   end
  1067.  
  1068.   #--------------------------------------------------------------------------
  1069.   # ● Update Instant Collapse
  1070.   #--------------------------------------------------------------------------  
  1071.   alias mog_damage_pop_update_instant_collapse update_instant_collapse
  1072.   def update_instant_collapse
  1073.       mog_damage_pop_update_instant_collapse
  1074.       execute_exp_pop
  1075.   end   
  1076.  
  1077.   #--------------------------------------------------------------------------
  1078.   # ● Update Boss Collapse
  1079.   #--------------------------------------------------------------------------  
  1080.   alias mog_damage_pop_update_boss_collapse update_boss_collapse
  1081.   def update_boss_collapse
  1082.       mog_damage_pop_update_boss_collapse
  1083.       execute_exp_pop
  1084.   end
  1085.  
  1086.   #--------------------------------------------------------------------------
  1087.   # ● Execute Exp Pop
  1088.   #--------------------------------------------------------------------------  
  1089.   def execute_exp_pop
  1090.       return if !MOG_DAMAGEPOPUP::EXP_GOLD_POPUP_BATTLE or @dam_exp != nil
  1091.       return if @battler == nil or @battler.is_a?(Game_Actor)
  1092.       @dam_exp = true
  1093.       if $imported[:mog_active_bonus_gauge] != nil
  1094.          real_exp = $game_troop.bonus_exp? ? @battler.exp * 2 : @battler.exp
  1095.          real_gold = $game_troop.bonus_gold? ? @battler.gold * 2 : @battler.gold
  1096.       else
  1097.          real_exp = @battler.exp ;  real_gold = @battler.gold
  1098.       end
  1099.       @battler.damage.push([real_exp,"Exp"]) if @battler.exp > 0
  1100.       @battler.damage.push([real_gold,"Gold"]) if @battler.gold > 0
  1101.   end   
  1102.  
  1103. end
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 16:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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