查看: 2412|回复: 3

[已经解决] 如何做出这个效果?

[复制链接]
梦石
0
星屑
304
在线时间
396 小时
注册时间
2011-6-26
回帖
48
发表于 2014-8-10 22:44:12 | 显示全部楼层 |阅读模式

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

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

×
如题,本人想要做成左下角的效果。求脚本

点评

没记错的话这个游戏是开源的。  发表于 2014-8-11 06:46

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-8-10 22:50:07 | 显示全部楼层
本帖最后由 VIPArcher 于 2014-8-10 22:54 编辑

搜索地图显血
脚本在此[pre lang="ruby" line="1"]#==============================================================================
# ■ 碧の軌跡っぽいステータス表示
#   @version 0.13 12/01/07
#   @author さば缶
#------------------------------------------------------------------------------
#  マップ画面下にステータスが表示されます
#
#  ■用意するもの
#    Graphics\System の下に Actor_bg1 ~ Actor_bg3
#    Graphics\Faces の下に 顔グラを50%に縮小したファイル "通常のファイル名_s"
#    例 Actor1.png → Actor1_s.png
#    ※このファイルが存在しない場合、プログラムで縮小するため非常に荒くなります
#
#==============================================================================
module Saba
  module KisekiStatus
    # このスイッチがONの場合、ステータスを表示します
    INVISIBLE_SWITCH = 9 #使用开关
   
    # TPを表示する場合、true に設定します。
    SHOW_TP = true
  end
end

class Window_KisekiStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, Graphics.height-window_height+18, Graphics.width, window_height)
    self.opacity = 0
    self.visible = $game_switches[Saba::KisekiStatus::INVISIBLE_SWITCH]
  
    refresh
  end
  def refresh
    @last_hps = []
    @last_mps = []
    @last_tps = []
    super
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    $game_party.battle_members.size
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウの高さを取得
  #--------------------------------------------------------------------------
  def window_height
    item_height+32
  end
  #--------------------------------------------------------------------------
  # ● 項目の高さを取得
  #--------------------------------------------------------------------------
  def item_height
    52
  end
  #--------------------------------------------------------------------------
  # ● 項目の幅を取得
  #--------------------------------------------------------------------------
  def item_width
    return 70
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return $game_party.battle_members.size
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.battle_members[index]
    rect = item_rect(index)
   
    #SR Q-Button
    q_bitmap = Cache.system("Q_button")
    contents.blt(484, 20, q_bitmap, q_bitmap.rect)
   
    #SR M-Button
    w_bitmap = Cache.system("W_button")
    contents.blt(444, 20, w_bitmap, w_bitmap.rect)
   
    bg_bitmap = Cache.system("Actor_bg1")
    contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
   
    small_bitmap = Bitmap.new(48, 48)
    begin
      bitmap = Cache.face(actor.face_name + "_s")
    rescue
    end
    if bitmap == nil
      bitmap = Cache.face(actor.face_name)
      face_rect = Rect.new(actor.face_index % 4 * 96, actor.face_index / 4 * 96, 96, 96)
      small_bitmap.stretch_blt(Rect.new(0, 0, 48, 48), bitmap, face_rect)
    else
      small_bitmap.blt(0, 0, bitmap, Rect.new(actor.face_index % 4 * 48,  actor.face_index / 4 * 48, 48, 48))
    end
    bitmap.dispose
    clear_edge(small_bitmap)
   
    contents.blt(rect.x+2, 2, small_bitmap, Rect.new(0, 0, 48, 48))
    small_bitmap.dispose
   
    if actor.dead?
      bg_bitmap = Cache.system("Actor_bg1")
      contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
      bg_bitmap = Cache.system("Actor_bg3")
    else
      bg_bitmap = Cache.system("Actor_bg2")
    end
    contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
   
    draw_gauge(rect.x + 47, rect.y+20, 50, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
    draw_gauge(rect.x + 42, rect.y+24, 50, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
    if Saba::KisekiStatus::SHOW_TP
      draw_gauge(rect.x + 37, rect.y+28, 50, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
    end
    @last_hps.push(actor.hp_rate)
    @last_mps.push(actor.mp_rate)
    @last_tps.push(actor.tp_rate)
  end
  #--------------------------------------------------------------------------
  # ● 顔画像の端を消します
  #--------------------------------------------------------------------------
  def clear_edge(bitmap)
    22.times  { |i|
      bitmap.clear_rect(0, i, 22 - i, 1)
      bitmap.clear_rect(26 + i, i, 22 - i, 1)
      bitmap.clear_rect(0, i + 26, i, 1)
      bitmap.clear_rect(48 - i, i + 26, i, 1)
    }
  end
  #--------------------------------------------------------------------------
  # ● ゲージの描画
  #     rate   : 割合(1.0 で満タン)
  #     color1 : グラデーション 左端
  #     color2 : グラデーション 右端
  #--------------------------------------------------------------------------
  def draw_gauge(x, y, width, rate, color1, color2)
    fill_w = (width * rate).to_i
    gauge_y = y + line_height - 8
   
    contents.fill_rect(x-2, gauge_y-1, width+4, 4, text_color(15))
    contents.fill_rect(x-1, gauge_y-2, width+2, 6, text_color(15))
    contents.fill_rect(x, gauge_y, width, 2, gauge_back_color)
    contents.gradient_fill_rect(x, gauge_y, fill_w, 2, color1, color2)
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if $game_switches[Saba::KisekiStatus::INVISIBLE_SWITCH] == true &&
      ! $game_message.busy? && ! $game_message.visible
      self.visible = true
    else
      self.visible = false
      return
    end
    hps = []
    mps = []
    tps = []
    for actor in $game_party.battle_members
      hps.push(actor.hp_rate)
      mps.push(actor.mp_rate)
      tps.push(actor.tp_rate)
    end

    if @last_hps != hps || @last_mps != mps || @last_tps != tps
      refresh
    end
  end
end

class Scene_Map
  #--------------------------------------------------------------------------
  # ● 全ウィンドウの作成
  #--------------------------------------------------------------------------
  alias saba_kiseki_status_create_all_windows create_all_windows
  def create_all_windows
    saba_kiseki_status_create_all_windows
    @kiseki_status_window = Window_KisekiStatus.new
  end
end[/pre]

可能会漏掉什么没复制,出错点评此楼

System.zip

18.2 KB, 下载次数: 61

需要的素材

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
taroxd + 1 认可答案
zechao + 10 谢谢了但咱除了评分意外没有什么东西可以给.

查看全部评分

回复

使用道具 举报

梦石
0
星屑
304
在线时间
396 小时
注册时间
2011-6-26
回帖
48
 楼主| 发表于 2014-8-11 19:25:17 | 显示全部楼层
VIPArcher 发表于 2014-8-10 22:50
搜索地图显血
[fold=脚本在此]#======================================================================= ...

好像不行,能发个范例吗.

点评

你打开9号开关没?  发表于 2014-8-11 19:59
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-11 20:10:51 | 显示全部楼层
zechao 发表于 2014-8-11 19:25
好像不行,能发个范例吗.

开源的游戏,游戏本身不就是最好的范例吗?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部