查看: 3043|回复: 13

[已经解决] 每回合自動回復SP的字體

[复制链接]
梦石
0
星屑
3080
在线时间
492 小时
注册时间
2016-10-1
回帖
30
发表于 2016-10-1 22:13:35 | 显示全部楼层 |阅读模式

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

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

×
我是用RTAB战斗脚本,然后在RTAB脚本中弄了每回合自动回复SP,但是,战斗中有自动回复SP,但是显示出来的字体却是绿色的,照理说应该要是蓝色的(回复SP的那种颜色),有什么办法,可以把回复的字体从绿色改成蓝色 (要讓18號狀態會每回合回復25%的SP)

顯示的字體是綠色的

顯示的字體是綠色的
腳本.png
梦石
0
星屑
125
在线时间
171 小时
注册时间
2014-4-14
回帖
135
发表于 2016-10-2 08:56:57 | 显示全部楼层
这不关你这个RTAB战斗系统脚本的事,请修改伤害美化脚本中回复sp的颜色(要特定状态颜色不同还需条件分支)。
Vanyogin
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-10-2 09:46:47 | 显示全部楼层
这应该是用图片显示的
你找到游戏目录下,这个伤害的图片
把颜色改一下
回复

使用道具 举报

梦石
0
星屑
3080
在线时间
492 小时
注册时间
2016-10-1
回帖
30
 楼主| 发表于 2016-10-2 11:43:48 | 显示全部楼层
谢谢各位解答,但是我想了很久却不知道该如何添加,我的伤害字体图片是如下图,RTAB伤害美化的脚本,怕乱改会出错...






[pre lang="ruby"]# ダメージ表示改造(RTAB用) ver 1.02
# 配布元・サポートURL
# http://members.jcom.home.ne.jp/cogwheel/

class Scene_Battle
  alias :atb_setup_original :atb_setup
  def atb_setup
    for path in ["num", "critical", "miss", "levelup", "newskill", "learning"]
      RPG::Cache.numeric(path)
    end
    atb_setup_original
  end
end

module RPG
  class Sprite < ::Sprite
    WIDTH = 18                  # 文字幅
    HEIGHT = 20                 # クリティカルの文字・高さ
    def damage(value, critical, type = 0)
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      if value.is_a?(Numeric) and value >= 0
        if type == 0
          if critical
            d_bitmap = draw_damage(value, 1)
          else
            d_bitmap = draw_damage(value, 0)
          end
        else
          d_bitmap = draw_damage(value, 2)
        end
      else
        if type == 0
          d_bitmap = draw_damage(value, 3)
        else
          d_bitmap = draw_damage(value, 4)
        end
      end
      if type == 2
        d_bitmap = draw_damage(value, 5)
      end
      num = @_damage.size
      if type != 2
        @_damage.push([::Sprite.new, 40, 0, rand(40) - 20, rand(30) + 50])
      else
        @_damage.push([::Sprite.new, 40, 0, rand(20) - 10, rand(20) + 60])
      end
      @_damage[num][0].bitmap = d_bitmap
      @_damage[num][0].ox = d_bitmap.width / 2
      @_damage[num][0].oy = d_bitmap.height / 2
      if self.battler.is_a?(Game_Actor)
        @_damage[num][0].x = self.x + self.viewport.ox
        @_damage[num][0].y = self.y - self.oy / 2
      else
        @_damage[num][0].x = self.x + self.viewport.rect.x -
                            self.ox + self.src_rect.width / 2
        @_damage[num][0].y = self.y - self.oy * self.zoom_y / 2 +
                            self.viewport.rect.y
        @_damage[num][0].zoom_x = self.zoom_x
        @_damage[num][0].zoom_y = self.zoom_y
        @_damage[num][0].z = 3000
      end
    end
    def draw_damage(value, element)
      width = 0
      if value.is_a?(Numeric)
        value = value.abs
        fig = value.to_s.size - 1
        file = RPG::Cache.numeric("num")
        d_width = WIDTH * fig + file.rect.width / 10
        if element == 1
          critical = RPG::Cache.numeric("critical")
          d_width = [d_width, critical.rect.width].max
          d_bitmap = Bitmap.new(d_width+36, HEIGHT + file.rect.height / 5)
          d_x = 0#(width - critical.rect.width / 10) / 2
          d_bitmap.blt(d_x+fig*(fig/1.6), 0, critical, critical.rect)
         # 会心一击表现效果强化
          Audio.se_play("Audio/SE/"+"Clip10",100,100)
      $game_screen.start_flash(Color.new(255,255,255),10)
       $game_screen.start_shake(3,9,10)
        else
          d_bitmap = Bitmap.new(d_width, HEIGHT + file.rect.height / 5)
        end
        d_x = ((d_width) - (WIDTH * fig + file.rect.width / 10)) / 2
        while fig >= 0
          d_bitmap.blt(d_x, HEIGHT, file, Rect.new((value / (10 ** fig)) *
            file.rect.width / 10, element * file.rect.height / 5,
            file.rect.width / 10, file.rect.height / 5))
          d_x += WIDTH
          value %= 10 ** fig
          fig -= 1
        end
      else
        case value
        when "Miss"
          file = RPG::Cache.numeric("miss")
        when "Level up!"
          file = RPG::Cache.numeric("levelup")
        when "New Skill!"
          file = RPG::Cache.numeric("newskill")
        when "Learning!"
          file = RPG::Cache.numeric("learning")
        else
          return Bitmap.new(1, 1)
        end
        d_bitmap = file
      end
      return d_bitmap
    end
  end
  module Cache
    def self.numeric(filename)
      self.load_bitmap("Graphics/String/", filename)
    end
  end
end
[/pre]

希望是在最下面那個藍色字體

希望是在最下面那個藍色字體
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-10-2 22:01:40 | 显示全部楼层
你上面那个图片上,伤害是绿色。
那么也就是说是采取了第四行,绿色。
所以你只要把第四行颜色改掉。


你可以把绿色和蓝色的换一下位置,尺寸不要变
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-10-3 00:10:40 | 显示全部楼层
本帖最后由 夜狠简单 于 2016-10-5 22:21 编辑

放到RTAB伤害之后[pre lang="ruby"]class Scene_Battle

def refresh_phase(battler)
    battler.at -= @max
    if battler.movable?
      battler.atp = 100 * battler.at / @max
    end
    spell_reset(battler)
    # スリップダメージ
    if battler.hp > 0 and battler.slip_damage?
      battler.slip_damage_effect
      battler.damage_pop["slip"] = true
    end
    #添加部分
    if battler.state?(18) and battler.hp>0
        battler.sp_recover_effect_11
        battler.damage_pop["sp_plus"] = true
    end
    #添加角色
    # ステート自然解除
    battler.remove_states_auto
    # ステータスウィンドウをリフレッシュ
    status_refresh(battler, true)
    unless battler.movable?
      return
    end
    # ターン数カウント
    @turn_cnt += 1
  end
end

class Game_Battler
  def sp_common
    # 分散
    if self.damage_sp["sp_plus"].abs > 0
      amp = [self.damage_sp["sp_plus"].abs * 15 / 100, 1].max
      self.damage_sp["sp_plus"] += rand(amp+1) + rand(amp+1) - amp
    end
    # HP からダメージを減算
    self.sp -= self.damage_sp["sp_plus"]
  end
  
  def sp_recover_effect_11
    # ダメージを設定
    self.damage_sp["sp_plus"] = -self.maxsp / 4
    # SP からダメージを減算
    sp_common
    # メソッド終了
    return true
  end

end[/pre]


把18号状态连续伤害 取消
效果图 QQ截图20161005221656.png
QQ截图20161005221705.png


摘自方法来源:问一下RTAB能不能做每回合回复MP
https://rpg.blue/forum.php?mod=viewthread&tid=76320
(出处: 66RPG)

点评

快去手动认可吧。XD  发表于 2016-10-6 19:57
解決了 真的太感謝你了  发表于 2016-10-6 19:30
把18号状态连续伤害 取消  发表于 2016-10-5 22:21

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3080
在线时间
492 小时
注册时间
2016-10-1
回帖
30
 楼主| 发表于 2016-10-3 00:32:34 | 显示全部楼层
yang1zhi 发表于 2016-10-2 22:01
你上面那个图片上,伤害是绿色。
那么也就是说是采取了第四行,绿色。
所以你只要把第四行颜色改掉。

如果是每回合自动回HP,显示的字是绿色的,但是我用的是每回合自动回复SP,但系统也是显示绿色的,照理说回复SP的字体颜色应该要是蓝色才对,我使用物品回复SP,也都是显示蓝色的字体,惟独使用”每回合自动回复SP" 他却是显示绿色的字体

点评

我是个脚本盲...具体而言该怎么改好,怕自己乱改会改出冲突来......麻烦yang1zhi大师教一下  发表于 2016-10-3 22:18
这就是脚本的问题了。脚本没有把这两中显示区别对待。要找到他们各自显示伤害的地方看看有什么区别。伤害显示一般是damage_pop  发表于 2016-10-3 07:35
回复

使用道具 举报

梦石
0
星屑
3080
在线时间
492 小时
注册时间
2016-10-1
回帖
30
 楼主| 发表于 2016-10-5 19:55:50 | 显示全部楼层
yang1zhi 发表于 2016-10-2 22:01
你上面那个图片上,伤害是绿色。
那么也就是说是采取了第四行,绿色。
所以你只要把第四行颜色改掉。

我是个脚本盲...具体而言该怎么改好,怕自己乱改会改出冲突来......麻烦yang1zhi大师教一下
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2016-10-5 21:10:51 | 显示全部楼层
脚本里搜这张伤害数字图像的文件名字应该可以找到相关的位置..
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部