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

Project1

 找回密码
 注册会员
搜索

有事求教

查看数: 2005 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-2-3 07:10

正文摘要:

本帖最后由 fux2 于 2014-2-3 19:23 编辑 各位看帖的大大,我是新手,太难的脚本不会看,我用了论坛的脚本,发现一个问题,如图 ,有哪位大大能帮我弄一下,在此谢谢了。可以的话麻烦帮我#注释一下修改的地方 ...

回复

170136386 发表于 2014-2-3 17:44:48
效果很好 谢谢正太君
正太君 发表于 2014-2-3 12:30:07
本帖最后由 正太君 于 2014-2-3 12:37 编辑

搜索正太君可以找到所有被修改的脚本
下面是修改成品、效果图和脚本...{:2_282:}
请版主大人们检阅...@protosssonny @fux2 @Sion @76213585
Project1.rar (1.43 MB, 下载次数: 64)

RUBY 代码复制
  1. #==============================================================================
  2. # 功能:战斗中显示怪物受到的伤害和回复
  3. # 适用:RMVX Ace
  4. # 作者:殇殃 2012.3.13 改自 后知后觉的横版战斗模板v1.7  2012-02-09
  5. # 使用方法:复制整个脚本插入到Main之前
  6. #==============================================================================
  7. # ■ Sprite_Damage (新增类)
  8. #==============================================================================
  9. class Sprite_Damage < Sprite
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取/生成伤害值源图
  12.   #--------------------------------------------------------------------------
  13.   @@obmp = nil
  14.   def self.obmp
  15.     if @@obmp.nil? or @@obmp.disposed?
  16.        @@obmp = Bitmap.new(180, 256)
  17.       #@@obmp = Bitmap.new(180, 256)
  18.       #@@obmp.font.bold = true #粗黑体
  19.       #@@obmp.font.shadow = false #阴影
  20.       #@@obmp.font.outline = true #数字外围边框
  21.       @@obmp.font.out_color = Color.new(255, 255, 255, 255)
  22.       @@obmp.font.size = 32#32
  23.       colors = []
  24.       colors.push(Color.new(255,   0,   0, 255))#HP伤害颜色(红)
  25.       colors.push(Color.new(  0, 224,  96, 255))#HP回复颜色(亮绿)
  26.       colors.push(Color.new(  0,   0, 255, 255))#MP伤害颜色(蓝)
  27.       colors.push(Color.new(255, 255,  64, 255))#MP回复颜色(亮黄)
  28.       colors.push(Color.new(  0,   0,   0, 255))#TP伤害颜色(深黑)
  29.       colors.push(Color.new(255, 255, 255, 255))#TP回复颜色(白)
  30.       #Graphics/System/damage.png伤害图8行10列180×256
  31.       #第 1 行 HP 伤害数字0~9
  32.       #第 2 行 HP 回复数字0~9
  33.       #第 3 行 MP 伤害数字0~9
  34.       #第 4 行 MP 回复数字0~9
  35.       #第 5 行 TP 伤害数字0~9
  36.       #第 6 行 TP 回复数字0~9
  37.       #第 7 行 左边暴击(Critical)右边 攻击落空(Miss)
  38.       #第 8 行 左边闪避(Evasion) 右边 留空
  39.       colors.each_with_index do |color, hi| #每个数字占18×32
  40.         @@obmp.font.color = color
  41.         for wi in 0..9
  42.           @@obmp.draw_text(wi * 18, hi * 32, 18, 32, "#{wi}", 1)
  43.         end
  44.       end
  45.       @@obmp.font.size = 24#24 #字体大小
  46.       #@@obmp.font.italic = true #斜体
  47.       @@obmp.font.out_color = Color.new(0, 0, 0, 255)
  48.       @@obmp.font.color = Color.new(255,   0, 255, 255)#暴击等文字的颜色(亮粉红)
  49.       @@obmp.draw_text( 0, 192, 90, 32, "暴击", 1)
  50.       @@obmp.draw_text(90, 192, 90, 32, "Miss", 1)
  51.       @@obmp.draw_text( 0, 224, 90, 32, "闪避", 1)
  52.       #@@obmp.hue_change(0)# 设置伤害值图形的色相 取值范围 0~360
  53.     end
  54.     return @@obmp
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 初始化
  58.   #--------------------------------------------------------------------------
  59.   def initialize(viewport, args)
  60.     super(viewport)
  61.     @type = args[0] #伤害类型hp、mp、tp
  62.     @value = args[1] #伤害值
  63.     @critical = args[2] #是否暴击
  64.     self.x = args[4]
  65.     self.y = args[5]
  66.     self.z = args[6] + Graphics.height * 5
  67.     make_move(args[3])
  68.     refresh
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 生成移动数据
  72.   #--------------------------------------------------------------------------
  73.   def make_move(battler_obj_class)
  74.     @move = []
  75.     case battler_obj_class
  76.     when :actor
  77.       make_move_actor
  78.     when :enemy
  79.       make_move_enemy
  80.     else
  81.       make_move_default
  82.     end
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 生成移动数据 默认
  86.   #--------------------------------------------------------------------------
  87.   def make_move_default
  88.     45.times do |n|
  89.       if n % 3 == 0
  90.         ady = n < 21 ? -6 : -1
  91.         opa = n < 21 ? 255 : 255-(n-21)*6
  92.         @move.push([0, ady, opa])
  93.       else
  94.         @move.push([0, 0, -1])
  95.       end
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 生成移动数据 角色
  100.   #--------------------------------------------------------------------------
  101.   def make_move_actor
  102.     make_move_default
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 生成移动数据 敌人
  106.   #--------------------------------------------------------------------------
  107.   def make_move_enemy
  108.     make_move_default
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 描绘
  112.   #--------------------------------------------------------------------------
  113.   def refresh
  114.     if not self.bitmap.nil?
  115.       self.bitmap.dispose
  116.       self.bitmap = nil
  117.     end
  118.     begin
  119.       @obmp = Cache.system("damage")
  120.     rescue Errno::ENOENT
  121.       @obmp = Sprite_Damage.obmp #找不到伤害值显示图则使用自建的代替图
  122.     end
  123.     @numw = @obmp.width / 10
  124.     @numh = @obmp.height / 8
  125.     @strw = @obmp.width / 2
  126.     case @value
  127.     when Numeric #伤害值是数字
  128.       blt_obmp_numeric
  129.     when Symbol #伤害值是文字
  130.       blt_obmp_text
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 通过源图描绘数字
  135.   #--------------------------------------------------------------------------
  136.   def blt_obmp_numeric
  137.     nums = @value.to_i.abs.to_s.split("")
  138.     nbmpw = nums.size * @numw
  139.     bmph = @numh
  140.     cbmpw = 0
  141.     crect = nil
  142.     dy = 0
  143.     if @critical
  144.       cbmpw = @strw
  145.       bmph *= 2
  146.       crect = Rect.new(0, @numh * 6, @strw, @numh)
  147.       dy = @numh
  148.     end
  149.     self.bitmap = Bitmap.new([nbmpw, cbmpw, 32].max, [bmph, 32].max)
  150.     self.ox = bitmap.width / 2
  151.     self.oy = bmph /2
  152.     bitmap.blt((bitmap.width - cbmpw) / 2, 0, @obmp, crect) if crect
  153.     dx = (bitmap.width - nbmpw) / 2
  154.     ry = 0
  155.     case @type
  156.     when :hp
  157.       ry = @value >= 0 ? 0 : @numh
  158.     when :mp
  159.       ry = @value >= 0 ? @numh * 2 : @numh * 3
  160.     when :tp
  161.       ry = @value >= 0 ? @numh * 4 : @numh * 5
  162.     else
  163.       return
  164.     end
  165.     rect = Rect.new(0, ry, @numw, @numh)
  166.     nums.each_with_index do |str, i|
  167.       rect.x = str.to_i * @numw
  168.       bitmap.blt(dx, dy, @obmp, rect)
  169.       dx += @numw
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 通过源图描绘文字
  174.   #--------------------------------------------------------------------------
  175.   def blt_obmp_text
  176.     self.bitmap = Bitmap.new([@strw, 32].max, [@numh, 32].max)
  177.     self.ox = @strw / 2
  178.     self.oy = @numh / 2
  179.     rx = ry = 0
  180.     case @type
  181.     when :miss
  182.       rx = @strw
  183.       ry = @numh * 6
  184.     when :eva
  185.       ry = @numh * 7
  186.     else
  187.       return
  188.     end
  189.     rect = Rect.new(rx, ry, @strw, @numh)
  190.     bitmap.blt(0, 0, @obmp, rect)
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 释放
  194.   #--------------------------------------------------------------------------
  195.   def dispose
  196.     bitmap.dispose if bitmap
  197.     super
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 移动中判定
  201.   #--------------------------------------------------------------------------
  202.   def moving?
  203.     return (not @move.empty?)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 刷新
  207.   #--------------------------------------------------------------------------
  208.   def update
  209.     super
  210.     if moving?
  211.       ary = @move.shift
  212.       self.x += ary[0]
  213.       self.y += ary[1]
  214.       self.opacity = ary[2] if ary[2] >= 0
  215.     end
  216.   end
  217. end
  218.  
  219. #==============================================================================
  220. # ■ Window_BattleLog
  221. #==============================================================================
  222. class Window_BattleLog < Window_Selectable
  223.   #--------------------------------------------------------------------------
  224.   # ● 显示 MISS (追加定义)
  225.   #--------------------------------------------------------------------------
  226.   alias hzhj_old_display_miss_for_display_damage_wnd_btlog display_miss
  227.   def display_miss(target, item)
  228.     target.damage_for_show = [:miss, :miss, false]
  229.     hzhj_old_display_miss_for_display_damage_wnd_btlog(target, item)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 显示回避 (追加定义)
  233.   #--------------------------------------------------------------------------
  234.   alias hzhj_old_display_evasion_for_display_damage_wnd_btlog display_evasion
  235.   def display_evasion(target, item)
  236.     target.damage_for_show = [:eva, :evasion, false]
  237.     hzhj_old_display_evasion_for_display_damage_wnd_btlog(target, item)
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 显示 HP 伤害 (追加定义)
  241.   #--------------------------------------------------------------------------
  242.   alias hzhj_old_display_hp_damage_for_display_damage_wnd_btlog display_hp_damage
  243.   def display_hp_damage(target, item)
  244.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  245.     value = target.result.hp_damage
  246.     critical = target.result.critical
  247.     target.damage_for_show = [:hp, value, critical]
  248.     hzhj_old_display_hp_damage_for_display_damage_wnd_btlog(target, item)
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 显示 MP 伤害 (追加定义)
  252.   #--------------------------------------------------------------------------
  253.   alias hzhj_old_display_mp_damage_for_display_damage_wnd_btlog display_mp_damage
  254.   def display_mp_damage(target, item)
  255.     return if target.dead? || target.result.mp_damage == 0
  256.     value = target.result.mp_damage
  257.     critical = target.result.critical
  258.     target.damage_for_show = [:mp, value, critical]
  259.     hzhj_old_display_mp_damage_for_display_damage_wnd_btlog(target, item)
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 显示 TP 伤害 (追加定义)
  263.   #--------------------------------------------------------------------------
  264.   alias hzhj_old_display_tp_damage_for_display_damage_wnd_btlog display_tp_damage
  265.   def display_tp_damage(target, item)
  266.     return if target.dead? || target.result.tp_damage == 0
  267.     value = target.result.tp_damage
  268.     critical = target.result.critical
  269.     target.damage_for_show = [:tp, value, critical]
  270.     hzhj_old_display_tp_damage_for_display_damage_wnd_btlog(target, item)
  271.   end
  272. end
  273.  
  274. #==============================================================================
  275. # ■ Sprite_Base
  276. #==============================================================================
  277. class Sprite_Base < Sprite
  278.   #--------------------------------------------------------------------------
  279.   # ● 初始化(追加定义)
  280.   #--------------------------------------------------------------------------
  281.   alias hzhj_old_init_for_display_damage_spr_base initialize
  282.   def initialize(*args)
  283.     hzhj_old_init_for_display_damage_spr_base(*args)
  284.     @damage_num_sprites = []
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● 释放(追加定义)
  288.   #--------------------------------------------------------------------------
  289.   alias hzhj_old_dispose_for_display_damage_spr_base dispose
  290.   def dispose
  291.     hzhj_old_dispose_for_display_damage_spr_base
  292.     dispose_damage
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 判断是否有伤害在显示(新增定义)
  296.   #--------------------------------------------------------------------------
  297.   def damage?
  298.     return (not @damage_num_sprites.empty?)
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 开始显示伤害(新增定义)正太君修改
  302.   #--------------------------------------------------------------------------
  303.   def start_damage(args)
  304.     if[x,y] == [0,0]
  305.       args[4] = @damage_x
  306.       args[5] = @damage_y
  307.     else  
  308.       args[4] = x - ox + width / 2
  309.       args[5] = y - oy + height / 2
  310.     end  
  311.     args[6] = z
  312.     if @viewport_damage.nil?
  313.       @viewport_damage = Viewport.new
  314.       @viewport_damage.z = 1000
  315.     end
  316.     @damage_num_sprites.push(Sprite_Damage.new(@viewport_damage, args))
  317.     #@damage_num_sprites.push(Sprite_Damage.new(viewport, args))
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 释放所有伤害显示(新增定义)
  321.   #--------------------------------------------------------------------------
  322.   def dispose_damage
  323.     return unless damage?
  324.     @damage_num_sprites.each{|sprite|sprite.dispose}
  325.     @damage_num_sprites.clear
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 刷新(追加定义)
  329.   #--------------------------------------------------------------------------
  330.   alias hzhj_old_update_for_display_damage_spr_base update
  331.   def update
  332.     hzhj_old_update_for_display_damage_spr_base
  333.     update_damage
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 刷新显示伤害(新增定义)
  337.   #--------------------------------------------------------------------------
  338.   def update_damage
  339.     return unless damage?
  340.     @damage_num_sprites.each_with_index do |sprite, i|
  341.       if sprite.moving?
  342.         sprite.update
  343.       else
  344.         sprite.dispose
  345.         @damage_num_sprites[i] = nil
  346.       end
  347.     end
  348.     @damage_num_sprites.delete(nil)
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 正太君增加定义
  352.   #--------------------------------------------------------------------------
  353.   def actor_location(battler)
  354.     order = 0
  355.     xy = []
  356.     for i in 0...$game_party.members.size
  357.       if $game_party.members[i] == battler
  358.         order = i
  359.         break
  360.       end
  361.     end
  362.     status_window = SceneManager.scene.instance_variable_get(:@status_window)
  363.     @damage_x = 272
  364.     @damage_y = 288 + status_window.item_rect_for_text(order).y
  365.   end
  366. end
  367.  
  368. #==============================================================================
  369. # ■ Sprite_Battler
  370. #==============================================================================
  371. class Sprite_Battler < Sprite_Base
  372.   #--------------------------------------------------------------------------
  373.   # ● 刷新(追加定义)
  374.   #--------------------------------------------------------------------------
  375.   alias hzhj_old_update_for_display_damage_spr_battler update
  376.   def update
  377.     hzhj_old_update_for_display_damage_spr_battler
  378.     if @battler
  379.       if not @battler.damage_for_show.empty?
  380.         #unless @battler.damage_section_displayed
  381.           args = @battler.damage_for_show.clone
  382.           args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil)
  383.           actor_location(@battler) # 正太君增加
  384.           start_damage(args)
  385.         #end
  386.         @battler.damage_for_show.clear
  387.       end
  388.     end
  389.   end
  390.  
  391. end
  392.  
  393. #==============================================================================
  394. # ■ Game_BattlerBase
  395. #==============================================================================
  396. class Game_BattlerBase
  397.   #--------------------------------------------------------------------------
  398.   # ● 实例变量(新增定义)
  399.   #--------------------------------------------------------------------------
  400.   attr_accessor :damage_for_show #hzhj_damage
  401.   #--------------------------------------------------------------------------
  402.   # ● 初始化(追加定义)
  403.   #--------------------------------------------------------------------------
  404.   alias hzhj_old_init_for_display_damage_game_battler_base initialize
  405.   def initialize
  406.     @damage_for_show = []
  407.     hzhj_old_init_for_display_damage_game_battler_base
  408.   end
  409. end
  

点评

这个还是楼主评定比较好,我们也无法替代楼主满意- -  发表于 2014-2-3 19:22
@170136386  发表于 2014-2-3 15:52
正太君的答题风格越来越像吾了!!!话说VA区这边一般是S叔管,吾是主管VX区那边,如果S叔没有来的话吾再来看看喵~小黄鸡好像有时亦会来管喵~  发表于 2014-2-3 12:35
噗 请检阅……  发表于 2014-2-3 12:32

评分

参与人数 1星屑 +50 收起 理由
fux2 + 50 认可答案,只改一个坐标的话- -就50了(怪P.

查看全部评分

170136386 发表于 2014-2-3 07:14:06
沙发自己坐,消灭0回复

点评

小小警告一下,技术区不允许这样的。  发表于 2014-2-3 19:23
請注意,這裡不允許不必要地連帖  发表于 2014-2-3 08:36
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-16 16:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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