| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 0 |  
| 积分 | 1 |  
| 经验 | 556 |  
| 最后登录 | 2014-9-3 |  
| 在线时间 | 0 小时 |  
 Lv1.梦旅人 幻想 
	梦石0 星屑50 在线时间0 小时注册时间2007-12-23帖子1016 | 
| 
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  这是显示ARPG用的窗口,但是第二个角色就是不显示SP只显示HP其他3个角色没问题。怎么加个职业显示上去,能把数字改成血条么~?复制代码#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#============================================================================== 
 
#◆◇◆◇◆-----XRXS54. マップ上で簡易ウィンドウ表示 ver1.0 -----◇◆◇◆◇
# by 刻宮
# 「ディフォルト機能 & 仕様」
#  ・$WIN_2 = true。としても、スイッチがONでかつ、アクターが存在しなければ
#   ウィンドウは表示されません。この3要素が揃った時にウィンドウを表示します。
#  ・逆にこの要素が一つでも欠けるとウィンドウは自動的に非表示になります。
#  ・ツクール開始時はスイッチはOFFなので、ONにしないと表示されません。
#------------------------------------------------------------------
# カスタマイズポイント
#(*存在しないスイッチを指定されるとエラーになります。)
#----------------------------------------------------------------
# 使用说明(66RPG提示:本脚本其实难度不是很高,建议学习RGSS略有心得
#           的人尝试自己编写一个同类功能窗口)
#----------------------------------------------------------------
  WIN_1     = true  # 是否使用1号窗口,true为使用,false为不使用
  SWITVH_1  = 26    # 当此编号开关打开的时候窗口显示。如设置为40则40号开关打开,1号窗口显示
  OPACITY_1 = 144   # 1号窗口透明度
  X_1       = 0     # 1号窗口X坐标
  Y_1       = 384   # 1号窗口Y坐标
  
  $WIN_2    = true  # 是否使用2号窗口,true为使用,false为不使用
  SWITVH_2  = 27   # 当此编号开关打开的时候窗口显示。如设置为41则41号开关打开,2号窗口显示
  OPACITY_2 = 144   # 2号窗口透明度
  X_2       = 160   # 2号窗口X坐标
  Y_2       = 384   # 2号窗口Y坐标
  
  WIN_3     = true  # 是否使用3号窗口,true为使用,false为不使用
  SWITVH_3  = 28    # 当此编号开关打开的时候窗口显示。如设置为42则42号开关打开,3号窗口显示
  OPACITY_3 = 144   # 3号窗口透明度
  X_3       = 320   # 3号窗口X坐标
  Y_3       = 384   # 3号窗口Y坐标
  
  WIN_4     = true  # 是否使用4号窗口,true为使用,false为不使用
  SWITVH_4  = 29    # 当此编号开关打开的时候窗口显示。如设置为43则43号开关打开,4号窗口显示
  OPACITY_4 = 144   # 4号窗口透明度
  X_4       = 480   # 4号窗口X坐标
  Y_4       = 384   # 4号窗口Y坐标
  
  SET_SP    = [true,false,true,true] # 决定各个窗口是否显示SP数值,true为显示,false为不显示。
  OPTION    = 30    # 决定在对话的时候是否让窗口隐藏的开关编号。
                    # 比如设置为44,则当44号开关打开,则在对话的时候窗口隐藏
                    # 否则窗口不隐藏。
                    
                    
#=========================================================================
# ■ Scene_Map
#=========================================================================
class Scene_Map
  #---------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------- 
  alias main_tokimiya main
  def main
    # 簡易ウィンドウ1を作成
      @simple_window1 = Window_MapStatus.new(X_1,Y_1,0)
      @simple_window1.opacity = OPACITY_1
      @simple_window1.visible = $game_switches[SWITVH_1]
      unless $game_party.actors.size > 0
        @simple_window1.visible = false
      end
    # 簡易ウィンドウ2を作成
      @simple_window2 = Window_MapStatus.new(X_2,Y_2,1)
      @simple_window2.opacity = OPACITY_2
      @simple_window2.visible = $game_switches[SWITVH_2]
      unless $game_party.actors.size > 1
        @simple_window2.visible = false
      end
    # 簡易ウィンドウ3を作成
      @simple_window3 = Window_MapStatus.new(X_3,Y_3,2)
      @simple_window3.opacity = OPACITY_3
      @simple_window3.visible = $game_switches[SWITVH_3]
      unless $game_party.actors.size > 2
        @simple_window3.visible = false
      end
    # 簡易ウィンドウ4を作成
      @simple_window4 = Window_MapStatus.new(X_4,Y_4,3)
      @simple_window4.opacity = OPACITY_4
      @simple_window4.visible = $game_switches[SWITVH_4]
      unless $game_party.actors.size > 3
        @simple_window4.visible = false
      end
    
      main_tokimiya   # 旧メソッドの呼び出し
    
    # 簡易ウィンドウの解放
      @simple_window1.dispose
      @simple_window2.dispose
      @simple_window3.dispose
      @simple_window4.dispose
  end
  #---------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------- 
  alias update_tokimiya update
  def update
    update_tokimiya   # 旧メソッドの呼び出し
    # 以前のパラメーターと相違があれば、内容を更新する。
    #
    # ウィンドウ1の更新。
    if WIN_1 == true and $game_party.actors.size > 0
      # データの更新
      actor = $game_party.actors[0]
      factor_1 = @simple_window1.before_1[0] != actor.name
      factor_2 = @simple_window1.before_1[1] != actor.hp
      factor_3 = @simple_window1.before_1[2] != actor.sp
      if factor_1 or factor_2 or factor_3
        @simple_window1.before_1[0] = actor.name
        @simple_window1.before_1[1] = actor.hp
        @simple_window1.before_1[2] = actor.sp
        @simple_window1.refresh(0)
      end
      # 非表示機能の実行
      if @message_window.visible == true and $game_switches[OPTION] == true
        @simple_window1.before_1[3] = false
        @simple_window1.visible = false
      elsif @simple_window1.before_1[3] != $game_switches[SWITVH_1]
        @simple_window1.before_1[3] = $game_switches[SWITVH_1]
        @simple_window1.visible = $game_switches[SWITVH_1]
      end
    end
    
    # ウィンドウ2の更新。
    if $WIN_2 == true and $game_party.actors.size > 1
      # データの更新
      actor = $game_party.actors[1]
      factor_1 = @simple_window2.before_2[0] != actor.name
      factor_2 = @simple_window2.before_2[1] != actor.hp
      factor_3 = @simple_window2.before_2[2] != actor.sp
      if factor_1 or factor_2 or factor_3
        @simple_window2.before_2[0] = actor.name
        @simple_window2.before_2[1] = actor.hp
        @simple_window2.before_2[2] = actor.sp
        @simple_window2.refresh(1)
        # ウィンドウを強制的に生成
        @simple_window2.before_2[3] = true
        @simple_window2.visible = true
      end
      # 非表示機能の実行
      if @message_window.visible == true and $game_switches[OPTION] == true
        @simple_window2.before_2[3] = false
        @simple_window2.visible = false
      elsif @simple_window2.before_2[3] != $game_switches[SWITVH_2]
        @simple_window2.before_2[3] = $game_switches[SWITVH_2]
        @simple_window2.visible = $game_switches[SWITVH_2]
      end
    # アクターが存在しないのにウィンドウが表示されたままの場合。
    elsif @simple_window2.visible == true and @simple_window2.before_2 != nil
      # ウィンドウを消去。
      @simple_window2.before_2[3] = false
      @simple_window2.visible = false
    end
    
    # ウィンドウ3の更新。
    if WIN_3 == true and $game_party.actors.size > 2
      # データの更新
      actor = $game_party.actors[2]
      factor_1 = @simple_window3.before_3[0] != actor.name
      factor_2 = @simple_window3.before_3[1] != actor.hp
      factor_3 = @simple_window3.before_3[2] != actor.sp
      if factor_1 or factor_2 or factor_3
        @simple_window3.before_3[0] = actor.name
        @simple_window3.before_3[1] = actor.hp
        @simple_window3.before_3[2] = actor.sp
        @simple_window3.refresh(2)
        # ウィンドウを強制的に生成
        @simple_window3.before_3[3] = true
        @simple_window3.visible = true
      end
      # 非表示機能の実行
      if @message_window.visible == true and $game_switches[OPTION] == true
        @simple_window3.before_3[3] = false
        @simple_window3.visible = false
      elsif @simple_window3.before_3[3] != $game_switches[SWITVH_3]
        @simple_window3.before_3[3] = $game_switches[SWITVH_3]
        @simple_window3.visible = $game_switches[SWITVH_3]
      end
    # アクターが存在しないのにウィンドウが表示されたままの場合。
    elsif @simple_window3.visible == true and @simple_window3.before_3 != nil
      # ウィンドウを消去。
      @simple_window3.before_3[3] = false
      @simple_window3.visible = false
    end
    
    # ウィンドウ4の更新。
    if WIN_4 == true and $game_party.actors.size > 3
      # データの更新
      actor = $game_party.actors[3]
      factor_1 = @simple_window4.before_4[0] != actor.name
      factor_2 = @simple_window4.before_4[1] != actor.hp
      factor_3 = @simple_window4.before_4[2] != actor.sp
      if factor_1 or factor_2 or factor_3
        @simple_window4.before_4[0] = actor.name
        @simple_window4.before_4[1] = actor.hp
        @simple_window4.before_4[2] = actor.sp
        @simple_window4.refresh(3)
        # ウィンドウを強制的に生成
        @simple_window4.before_4[3] = true
        @simple_window4.visible = true
      end
      # 非表示機能の実行
      if @message_window.visible == true and $game_switches[OPTION] == true
        @simple_window4.before_4[3] = false
        @simple_window4.visible = false
      elsif @simple_window4.before_4[3] != $game_switches[SWITVH_4]
        @simple_window4.before_4[3] = $game_switches[SWITVH_4]
        @simple_window4.visible = $game_switches[SWITVH_4]
      end
    # アクターが存在しないのにウィンドウが表示されたままの場合。
    elsif @simple_window4.visible == true and @simple_window4.before_4 != nil
      # ウィンドウを消去。
      @simple_window4.before_4[3] = false
      @simple_window4.visible = false
    end
  end
end
 
#=========================================================================
# ■ Window_MapStatus,脚本来自www.66rpg.com,转载请注意说明
#=========================================================================
class Window_MapStatus < Window_Base
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor   :before_1              # 更新前のウィンドウ1のパラメーター
  attr_accessor   :before_2              # 更新前のウィンドウ2のパラメーター
  attr_accessor   :before_3              # 更新前のウィンドウ3のパラメーター
  attr_accessor   :before_4              # 更新前のウィンドウ4のパラメーター
  #---------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------- 
  def initialize(x,y,id)
    super(x,y,160,96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 18
    @before_1=[]
    @before_2=[]
    @before_3=[]
    @before_4=[]
     # 現段階のアクターのパラメーターと可視状態を記憶。
    data
    # 項目の描画。
    refresh(id)
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #-------------------------------------------------------------------------- 
  def data
    # アクター1の記憶(ただし、パーティが1名以上の場合)
    if $game_party.actors.size > 0
      actor = $game_party.actors[0]
      @before_1 = [actor.name, actor.hp, actor.sp,true]
    end
    # アクター2の記憶(ただし、パーティが2名以上の場合)
    if $game_party.actors.size > 1
      actor = $game_party.actors[1]
      @before_2 = [actor.name, actor.hp, actor.sp,true]
    end
    # アクター3の記憶(ただし、パーティが3名以上の場合)
    if $game_party.actors.size > 2
      actor = $game_party.actors[2]
      @before_3 = [actor.name, actor.hp, actor.sp,true]
    end
    # アクター3の記憶(ただし、パーティが4名以上の場合)
    if $game_party.actors.size > 3
      actor = $game_party.actors[3]
      @before_4 = [actor.name, actor.hp, actor.sp,true]
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def refresh(id)
    # 再描画のために一旦内容を破棄する
    self.contents.clear
    # 対応するアクターがいなければ、何もせずに終了する。
    actor = $game_party.actors[id]
    if actor == nil
      return
    end
    # 名前の描画
    draw_actor_name(actor, 0, -5)
    # HPの描画
    if SET_SP[id]
      draw_actor_hp_custom(actor, 0, 18)
    else
      draw_actor_hp_custom(actor, 0, 28)
    end
    # SPの描画
    if SET_SP[id]
      draw_actor_sp_custom(actor, 0, 36)
    end
  end
  
  #--------------------------------------------------------------------------
  # ● HP の描画
  #     actor : アクター
  #     x     : 描画先 X 座標
  #     y     : 描画先 Y 座標
  #     width : 描画先の幅
  #--------------------------------------------------------------------------
  def draw_actor_hp_custom(actor, x, y, width = 144)
    # 文字列 "HP" を描画
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    # MaxHP を描画するスペースがあるか計算
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # HP を描画
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x - 12, y, 48, 32, actor.hp.to_s, 2)
    # MaxHP を描画
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48 - 12, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60 - 12, y, 48, 32, actor.maxhp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # ● SP の描画
  #     actor : アクター
  #     x     : 描画先 X 座標
  #     y     : 描画先 Y 座標
  #     width : 描画先の幅
  #--------------------------------------------------------------------------
  def draw_actor_sp_custom(actor, x, y, width = 144)
    # 文字列 "SP" を描画
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    # MaxSP を描画するスペースがあるか計算
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # SP を描画
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x - 12, y, 48, 32, actor.sp.to_s, 2)
    # MaxSP を描画
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48 - 12, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60 - 12, y, 48, 32, actor.maxsp.to_s)
    end
  end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
 
 
 
 ----------------版务----------------
 如果问题未解决,请继续提问
 如果问题已解决,请结贴
 若到末贴发贴时间后一周仍未结贴
 管理员会自动为你过期帖子、结贴或强行认可答案(好人卡-1)
 
 
 此贴于 2008-2-20 7:49:52 被版主凌冰提醒,请楼主看到后对本贴做出回应。
 | 
 |