RGSS腳本的問題~

上一篇主題 下一篇主題 向下

RGSS腳本的問題~

發表  @~刀光劍影~@ 于 周一 2月 11, 2013 7:53 pm

這是一個顯示某物品資料的腳本
變數1號 = 2 會讀取資料庫中物品2號的資料並顯示

問題在Window_MapStatus3的initialize中
我加入一個條件分歧
代碼:

    if $game_switches[1] == true
      super(x,y,640,128)
    else
      super(x,y,640,100)
    end
想做出如果 開關1 為開啟,視窗會比較大
但是只有在開選單再關閉的時候才會重新執行initialize
想問有沒有其他辦法能做到即時的變化

代碼:

#=========================================================================
# ■ Scene_Map
#=========================================================================
class Scene_Map
  #---------------------------------------------------------------------
  # ● フレーム更新
  #---------------------------------------------------------------------
  alias main_sword2 main
  def main
      # 簡易ウィンドウを作成
      @simple_window5 = Window_MapStatus3.new(0,0,0)
      @simple_window5.opacity = 144
      @simple_window5.visible = $game_switches[25]
      unless $game_switches[23] == true
        @simple_window5.visible = false
      end
     
      main_sword2 # 舊メソッドの呼び出し
      @simple_window5.dispose # 簡易ウィンドウの解放
  end
   
  #---------------------------------------------------------------------
  # ● フレーム更新
  #---------------------------------------------------------------------
  alias update_sword2 update
  def update
    update_sword2  # 舊メソッドの呼び出し
    # 以前のパラメーターと相違があれば、內容を更新する。
    #
    # ウィンドウの更新。
    if $game_switches[23] == true
      item_a = $game_variables[1]
      factor_1 = @simple_window5.before[0] != $data_items[item_a].name
      factor_2 = @simple_window5.before[1] != $data_items[item_a].recover_hp
      factor_3 = @simple_window5.before[2] != $data_items[item_a].recover_sp
      factor_4 = @simple_window5.before[3] != $data_items[item_a].description
      factor_5 = @simple_window5.before[4] != $data_items[item_a].price
      if factor_1 or factor_2 or factor_3 or factor_4 or factor_5
        @simple_window5.before[0] = $data_items[item_a].name
        @simple_window5.before[1] = $data_items[item_a].recover_hp
        @simple_window5.before[2] = $data_items[item_a].recover_sp
        @simple_window5.before[3] = $data_items[item_a].description
        @simple_window5.before[4] = $data_items[item_a].price
        @simple_window5.refresh(0)
      end
      # 非表示機能の実行
      if @message_window.visible == true
        @simple_window5.before[5] = false
        @simple_window5.visible = false
      elsif @simple_window5.before[5] != $game_switches[25]
        @simple_window5.before[5] = $game_switches[25]
        @simple_window5.visible = $game_switches[25]
      end
    else
      @simple_window5.before[5] = false
      @simple_window5.visible = false
    end 
  end   
end

#=========================================================================
# ■ Window_MapStatus3
#=========================================================================
class Window_MapStatus3 < Window_Base
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変數
  #--------------------------------------------------------------------------
  attr_accessor  :before              # 更新前のウィンドウのパラメーター
  #---------------------------------------------------------------------
  # ● フレーム更新
  #---------------------------------------------------------------------
  def initialize(x,y,id)
    if $game_switches[1] == true
      super(x,y,640,128)
    else
      super(x,y,640,100)
    end
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 18
    @before=[]
    # 現段階のアクターのパラメーターと可視狀態を記憶。
    data
    # 項目の描畫。
    refresh(id)
  end
  #--------------------------------------------------------------------------
  # ● 項目の描畫
  #--------------------------------------------------------------------------
  def data
    if $game_switches[23] == true
      item_a = $game_variables[1]
      name = $data_items[item_a].name
      hp = $data_items[item_a].recover_hp
      sp = $data_items[item_a].recover_sp
      description = $data_items[item_a].description
      weight = $data_items[item_a].price
      @before = [name, hp, sp, description, weight, true]
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描畫
  #--------------------------------------------------------------------------
  def refresh(id)
    # 再描畫のために一旦內容を破棄する
    self.contents.clear
    # 対応するアクターがいなければ、何もせずに終了する。
    if $game_switches[23] == true
      item_a = $game_variables[1]
    else
      item_a = nil
    end
    if item_a == nil
      return
    end
    # 名前の描畫
    draw_item_name(item_a, 0, -5)
    #描述の描畫
    draw_item_description(item_a, 0 , 18)
    #重量の描畫
    draw_item_weight(item_a, 0 , 36)
    # HPの描畫
    draw_item_hp_recover(item_a, 0, 54)
    # SPの描畫
    draw_item_sp_recover(item_a, 0, 72)
  end
  #--------------------------------------------------------------------------
  # ● 描述 の描畫
  #--------------------------------------------------------------------------
  def draw_item_description(item_a, x, y)
    # 文字列 "描述" を描畫
    if $game_switches[23] == true
      description = $data_items[item_a].description
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 32, 32, "說明")
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 43, y, 640, 32, description, 0)
    end
  end
  #--------------------------------------------------------------------------
  # ● 重量 の描畫
  #--------------------------------------------------------------------------
  def draw_item_weight(item_a, x , y)
    if $game_switches[23] == true
      weight = $data_items[item_a].price
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 32, 32, "重量")
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 45, y, 48, 32, weight.to_s, 0)
    end
  end
  #--------------------------------------------------------------------------
  # ● HP の描畫
  #--------------------------------------------------------------------------
  def draw_item_hp_recover(item_a, x, y, width = 144)
    # 文字列 "HP" を描畫
    if $game_switches[23] == true
      if $data_items[item_a].occasion == 0
        hp = $data_items[item_a].recover_hp
        self.contents.font.color = system_color
        self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
        self.contents.font.color = normal_color
        self.contents.draw_text(x + 45, y, 48, 32, hp.to_s, 0)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● SP の描畫
  #--------------------------------------------------------------------------
  def draw_item_sp_recover(item_a, x, y, width = 144)
    # 文字列 "SP" を描畫
    if $game_switches[23] == true
      if $data_items[item_a].occasion == 0
        sp = $data_items[item_a].recover_sp
        self.contents.font.color = system_color
        self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
        self.contents.font.color = normal_color
        self.contents.draw_text(x + 45, y, 48, 32, sp.to_s, 0)
      end
    end
  end
end
avatar
@~刀光劍影~@
運送彩色內褲的貨車司機
運送彩色內褲的貨車司機

文章數 : 58
注冊日期 : 2008-06-06
年齡 : 22

檢視會員個人資料 http://blog.yam.com/r901042004

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章