查看: 2195|回复: 2

[已经解决] 求饱腹度脚本

[复制链接]
梦石
0
星屑
50
在线时间
29 小时
注册时间
2015-8-24
回帖
3
发表于 2015-10-17 17:16:27 | 显示全部楼层 |阅读模式

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

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

×
求饱腹度脚本
梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-10-17 18:11:10 | 显示全部楼层
本帖最后由 tseyik 于 2015-10-18 13:51 编辑

  脚本最初的就是設定項目
#★設定項目
  
  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



満腹度[pre lang="ruby"]#----------------------------------------------------------------------------
#マップにウインドウ表示
#----------------------------------------------------------------------------

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.hp -= MARU_MAP_WINDOW::DAMEGE}
    end
  end
end[/pre]

评分

参与人数 1星屑 +200 收起 理由
taroxd + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
29 小时
注册时间
2015-8-24
回帖
3
 楼主| 发表于 2015-10-17 19:44:41 | 显示全部楼层
tseyik 发表于 2015-10-17 18:11
脚本最初的就是設定項目
#★設定項目
  

显示未找到文件backwin

点评

WINDOW = true #ウインドウスキンを自作のモノにするかどうか #「true」…自作ウインドウ #「false」…デフォルトウインドウ #trueにする場合、「system」   发表于 2015-10-17 20:15
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部