赞 | 170 |
VIP | 6 |
好人卡 | 208 |
积分 | 230 |
经验 | 137153 |
最后登录 | 2024-11-16 |
在线时间 | 8638 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 22958
- 在线时间
- 8638 小时
- 注册时间
- 2011-12-31
- 帖子
- 3367
|
- #----------------------------------------------------------------------------
- #マップにウインドウ表示
- #----------------------------------------------------------------------------
- module MARU_MAP_WINDOW
-
- #★設定項目
-
- SWITCH = 1 #マップウインドウ表示に使用するスイッチ番号
- #該当スイッチONで表示、OFFで非表示
-
- MANPUKU = 2 #「満腹度」減少を有効にするスイッチ
- #このスイッチがOFFの時、満腹度及びHP(満腹度が0の時)は
- #減少しない。
-
- WINDOW = true #ウインドウスキンを自作のモノにするかどうか
- #「true」…自作ウインドウ
- #「false」…デフォルトウインドウ
- #trueにする場合、「system」フォルダに
- #該当ウインドウを入れる事。
-
-
- #WINDOWをtrueにした場合の設定項目------------------------------------------
-
- W_NAME = [
- "backwin", #自作ウインドウのファイル名(「system」フォルダを参照する)
- "backwin2", #コンマ(,)で区切れば項目数を増やせます。
- "Actor1"
- ]
-
- W_NAME_V = 5 #自作ウインドウ画像変更に使う変数番号
- #この変数が0の時、W_NAME一番目の項目のファイル名を読みこみ、
- #1の時、W_NAME二番目の項目のファイルを読み込みます。
- #項目数を増やせば、3や4も指定出来ます。
- #(項目数-1)以上の数字は入れない事!エラーで強制終了します。
-
- W_X = 6 #自作ウインドウ画像のX座標
- W_Y = 7 #自作ウインドウ画像のY座標
- W_WSIZE = 8 #自作ウインドウ画像の幅を決める変数番号
- W_HSIZE = 9 #自作ウインドウ画像の高さを決める変数番号
-
- #自作ウインドウ描画スペースは544×96ピクセル。
- #画像の引き延ばし等は出来ません。
-
- OPACITY = 200 #自作ウインドウの透明度(0で透明、255で不透明)
-
- #---------------------------------------------------------------------------
-
- ACTOR = 2 #ステータスを表示するアクターIDを参照する変数の番号
- #変数が0の時はアクターID1番のステータスを表示
-
- NAME = "満腹度" #満腹度(仮)の名前
- VALUE = 3 #満腹度(仮)の値を操作する変数の番号
- MVALUE = 4 #満腹度(仮)の値の最大値とする変数の番号
- STEP = 10 #満腹度(仮)を1減らす歩数
- DAMEGE = 10 #満腹度(仮)が0の時、一歩毎に受けるHPダメージ
-
-
- #★設定終わり
- end
- #==============================================================================
- # ■ Scene_Map
- #------------------------------------------------------------------------------
- # マップ画面の処理を行うクラスです。
- #==============================================================================
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # ● 全ウィンドウの作成
- #--------------------------------------------------------------------------
- alias ma__create_all_windows create_all_windows
- def create_all_windows
- ma__create_all_windows #既存のウインドウ作成
- create_mapwin_window #「マップウインドウ作成」メソッドへ
- end
- #--------------------------------------------------------------------------
- # ● マップウインドウの作成
- #--------------------------------------------------------------------------
- def create_mapwin_window
- @map_window = Window_Mapwin.new #マップウインドウを作る
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias ma_update update
- def update
- ma_update #既存のアップデート
- @map_window.update #マップウインドウのアップデート
- end
- end
- #==============================================================================
- # ■ Window_Mapwin
- #------------------------------------------------------------------------------
- # マップに表示するウィンドウです。
- #==============================================================================
- class Window_Mapwin < Window_Selectable
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super(win_adjust1,win_adjust1,Graphics.width+win_adjust2,fitting_height(3)+win_adjust2)
- if $game_switches[MARU_MAP_WINDOW::SWITCH] == false
- self.visible = false
- else
- self.visible = true
- end
- if $game_variables[MARU_MAP_WINDOW::ACTOR] != 0
- @actorsta = $game_actors[$game_variables[MARU_MAP_WINDOW::ACTOR]]
- else
- @actorsta = $game_actors[1]
- end
- refresh
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウ幅の取得
- #--------------------------------------------------------------------------
- def window_width
- return 140
- end
- #--------------------------------------------------------------------------
- # ● ウインドウの更新
- #--------------------------------------------------------------------------
- def update
- super
- if $game_switches[MARU_MAP_WINDOW::SWITCH] == false
- self.visible = false
- return
- else
- self.visible = true
- end
- if $game_variables[MARU_MAP_WINDOW::ACTOR] != 0
- @actorsta = $game_actors[$game_variables[MARU_MAP_WINDOW::ACTOR]]
- else
- @actorsta = $game_actors[1]
- end
- #値のチェック。描画時の値と違っていたらリフレッシュする。
- actors = @actorsta.id
- hpp = @actorsta.hp
- mpp = @actorsta.mp
- mhpp = @actorsta.mhp
- mmpp = @actorsta.mmp
- gold = $game_party.gold
- mname = $game_map.display_name
- expp = @actorsta.exp
- value = $game_variables[MARU_MAP_WINDOW::VALUE]
- mvalue = $game_variables[MARU_MAP_WINDOW::MVALUE]
- if MARU_MAP_WINDOW::WINDOW
- skin = $game_variables[MARU_MAP_WINDOW::W_NAME_V]
- x = $game_variables[MARU_MAP_WINDOW::W_X]
- y = $game_variables[MARU_MAP_WINDOW::W_Y]
- width = $game_variables[MARU_MAP_WINDOW::W_WSIZE]
- height = $game_variables[MARU_MAP_WINDOW::W_HSIZE]
- if actors != @lastactor or gold != @last_g or mname != @last_name or
- value != @last_value or mvalue != @last_mvalue or hpp != @last_hp or
- mpp != @last_mp or mhpp != @last_mhp or mmpp != @last_mmp or
- expp != @last_exp or skin != @last_skin or x != @last_x or
- y != @last_y or width != @last_width or height != @last_height
- refresh
- end
- else
- if actors != @lastactor or gold != @last_g or mname != @last_name or
- value != @last_value or mvalue != @last_mvalue or hpp != @last_hp or
- mpp != @last_mp or mhpp != @last_mhp or mmpp != @last_mmp or
- expp != @last_exp
- refresh
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- if MARU_MAP_WINDOW::WINDOW
- self.opacity = 0
- bitmap = Cache.system(MARU_MAP_WINDOW::W_NAME[$game_variables[MARU_MAP_WINDOW::W_NAME_V]])
- rect = Rect.new(0,0,$game_variables[MARU_MAP_WINDOW::W_WSIZE],$game_variables[MARU_MAP_WINDOW::W_HSIZE])
- contents.blt($game_variables[MARU_MAP_WINDOW::W_X],$game_variables[MARU_MAP_WINDOW::W_Y], bitmap, rect,MARU_MAP_WINDOW::OPACITY)
- bitmap.dispose
- end
- #名前・ステータス描写
- draw_actor_name(@actorsta,win_adjust3,win_adjust3,96)
- draw_actor_level(@actorsta,win_adjust3,24+win_adjust3)
- draw_actor_hp(@actorsta, 96+win_adjust3, win_adjust3)
- draw_actor_mp(@actorsta, 96+win_adjust3, 24+win_adjust3)
- #マップ情報描写
- change_color(system_color)
- draw_text(230+win_adjust3,win_adjust3,165,line_height, "現在地")
- change_color(normal_color)
- draw_text(230+win_adjust3,24+win_adjust3,165,line_height, $game_map.display_name)
- #経験値描写
- draw_actor_next_exp(@actorsta, 395+win_adjust3, win_adjust3,120)
- s_next = sprintf("Next")
- change_color(system_color)
- draw_text(395+win_adjust3, win_adjust3, 140, line_height, s_next)
- change_color(normal_color)
- #所持金描写
- draw_currency_value($game_party.gold, Vocab::currency_unit, 395+win_adjust3, 24+win_adjust3, 120)
- #おまけ描写
- o_text = MARU_MAP_WINDOW::NAME
- value = $game_variables[MARU_MAP_WINDOW::VALUE]
- mvalue = $game_variables[MARU_MAP_WINDOW::MVALUE]
- draw_actor_hara_gauge(win_adjust3, 48+win_adjust3,220)
- change_color(system_color)
- draw_text(win_adjust3, 48+win_adjust3, 140, line_height, o_text)
- change_color(normal_color)
- draw_text(win_adjust3, 48+win_adjust3, 220, line_height, value.to_s + "/" + mvalue.to_s, 2)
-
- #描画時点での各値の取得
- @lastactor = @actorsta.id
- @last_hp = @actorsta.hp
- @last_mhp = @actorsta.mhp
- @last_mp = @actorsta.mp
- @last_mmp = @actorsta.mmp
- @last_g = $game_party.gold
- @last_name = $game_map.display_name
- @last_exp = @actorsta.exp
- @last_value = $game_variables[MARU_MAP_WINDOW::VALUE]
- @last_mvalue = $game_variables[MARU_MAP_WINDOW::MVALUE]
- if MARU_MAP_WINDOW::WINDOW
- @last_skin = $game_variables[MARU_MAP_WINDOW::W_NAME_V]
- @last_x = $game_variables[MARU_MAP_WINDOW::W_X]
- @last_y = $game_variables[MARU_MAP_WINDOW::W_Y]
- @last_width = $game_variables[MARU_MAP_WINDOW::W_WSIZE]
- @last_height = $game_variables[MARU_MAP_WINDOW::W_HSIZE]
- end
- end
- #--------------------------------------------------------------------------
- # ● 満腹度 の割合を取得
- #--------------------------------------------------------------------------
- def hara_rate
- $game_variables[MARU_MAP_WINDOW::MVALUE] > 0 ? $game_variables[MARU_MAP_WINDOW::VALUE].to_f / $game_variables[MARU_MAP_WINDOW::MVALUE] : 0
- end
- #--------------------------------------------------------------------------
- # ○ 満腹度 ゲージの描画
- # actor : アクター
- # x, y : 描画先 X, Y 座標
- # width : 幅
- #--------------------------------------------------------------------------
- def draw_actor_hara_gauge(x, y, width = 120)
- draw_gauge(KMS_GenericGauge::TP_IMAGE,
- x, y, width, hara_rate,
- KMS_GenericGauge::TP_OFFSET,
- KMS_GenericGauge::TP_LENGTH,
- KMS_GenericGauge::TP_SLOPE
- )
- end
- #--------------------------------------------------------------------------
- # ● ウインドウ位置調整その1
- #--------------------------------------------------------------------------
- def win_adjust1
- MARU_MAP_WINDOW::WINDOW ? -12 : 0
- end
- #--------------------------------------------------------------------------
- # ● ウインドウ位置調整その2
- #--------------------------------------------------------------------------
- def win_adjust2
- MARU_MAP_WINDOW::WINDOW ? 24 : 0
- end
- #--------------------------------------------------------------------------
- # ● ウインドウ位置調整その3
- #--------------------------------------------------------------------------
- def win_adjust3
- MARU_MAP_WINDOW::WINDOW ? 12 : 0
- end
- end
-
- #==============================================================================
- # ■ Game_Party
- #------------------------------------------------------------------------------
- # パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
- # スのインスタンスは $game_party で参照されます。
- #==============================================================================
- class Game_Party < Game_Unit
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias hara_initialize initialize
- def initialize
- hara_initialize
- @haraheri = MARU_MAP_WINDOW::STEP
- end
- #--------------------------------------------------------------------------
- # ● プレイヤーが 1 歩動いたときの処理
- #--------------------------------------------------------------------------
- alias hara_on_player_walk on_player_walk
- def on_player_walk
- hara_on_player_walk
- manpuku
- end
- #--------------------------------------------------------------------------
- # ● 満腹度の処理
- #--------------------------------------------------------------------------
- def manpuku
- if $game_player.normal_walk?
- update_haraheri_steps if $game_switches[MARU_MAP_WINDOW::MANPUKU]
- update_haraheri_damege if $game_switches[MARU_MAP_WINDOW::MANPUKU]
- end
- end
- #--------------------------------------------------------------------------
- # ● 満腹度の歩数カウントを更新
- #--------------------------------------------------------------------------
- def update_haraheri_steps
- @haraheri -= 1 if @haraheri > 0
- if @haraheri == 0
- $game_variables[MARU_MAP_WINDOW::VALUE] -= 1 if $game_variables[MARU_MAP_WINDOW::VALUE] > 0
- @haraheri = MARU_MAP_WINDOW::STEP
- end
- end
- #--------------------------------------------------------------------------
- # ● 満腹度が0の時のダメージ更新
- #--------------------------------------------------------------------------
- def update_haraheri_damege
- if $game_variables[MARU_MAP_WINDOW::VALUE] == 0
- all_members.size.times{|i| $game_party.members[i].hp -= MARU_MAP_WINDOW::DAMEGE}
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|