赞 | 1 |
VIP | 0 |
好人卡 | 0 |
积分 | 6 |
经验 | 0 |
最后登录 | 2025-6-10 |
在线时间 | 79 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 648
- 在线时间
- 79 小时
- 注册时间
- 2023-7-26
- 帖子
- 11
|
给你找了个改变贴图的脚本
- #==============================================================================
- # ■ RGSS3 変装特徴 Ver1.02 by 星潟
- #------------------------------------------------------------------------------
- # 顔グラフィックや歩行グラフィックを
- # 一時的に変更する特徴の作成が可能になります。
- #------------------------------------------------------------------------------
- # このスクリプトによる設定は、全て装備品のメモ欄で行います。
- #------------------------------------------------------------------------------
- # ★顔グラフィックの変更
- #
- # <顔グラ変更:Actor1,0,5>
- #
- # これで、この装備品を持つアクターの変更後の顔グラフィックとして
- # ファイルネーム「Actor1」の
- # インデックス0(上段の最も左)を優先度5で指定します。
- #------------------------------------------------------------------------------
- # ★歩行グラフィックの変更
- #
- # <ホコグラ変更:Actor2,5,6>
- #
- # これで、この装備品を持つアクターの変更後の歩行グラフィックとして
- # ファイルネーム「Actor2」の
- # インデックス5(下段の左から2番目)を優先度6で指定します。
- #------------------------------------------------------------------------------
- # ★共通
- #
- # 他の装備でもグラフィックの変更が設定されている場合は
- # 最も優先度が高い物の中で、最初に選択された物が選択されます。
- #------------------------------------------------------------------------------
- # 以下 XPスタイルバトル併用時のみ有効な設定です。
- #------------------------------------------------------------------------------
- # ★状況に応じた顔グラフィックの変更
- #
- # HPとステートに応じて、顔グラフィックが指定された物に変更されます。
- #------------------------------------------------------------------------------
- # Ver1.01 XPスタイルバトル用の機能を更に追加しました。
- # Ver1.02 歩行グラフィック変更機能無効化時にエラーになる不具合を解消しました。
- #==============================================================================
- module DISGUISE_FEATURE
-
- #顔グラフィック変更機能を有効にするか否か。(trueで有効、falseで無効)
-
- FACE = true
-
- #顔グラフィック設定用のキーワードを指定します。
-
- WORD1 = "顔グラ変更"
-
- #歩行グラフィック変更機能を有効にするか否か。(trueで有効、falseで無効)
-
- CHARA = true
-
- #歩行グラフィック設定用のキーワードを指定します。
-
- WORD2 = "ホコグラ変更"
-
- #XPスタイルバトル導入時、ステートや現在HPに応じて
- #顔グラフィックを変更する機能を有効にするか?
-
- XPSC = true
-
- #XPスタイルバトル導入時の変更設定が有効な場合
- #現在ステートに応じた顔グラフィックを指定します。
- #[ステートID,優先度,追加文字]で1セットとなります。
- #複数セット指定する場合は「,」で区切ってください。
- #ステートIDは対象となるステートID。
- #優先度は、その変更の優先度。(有効な物の中で最も優先度の高い物が選択されます)
- #追加文字は、元の顔グラフィックの後につく文字です。
- #例えば、[2,50,"▲"]で、これのみを満たしている場合
- #アクターの顔グラフィックファイル名がActor4であれば
- #Actor4▲という顔グラフィックファイルから読み込みます。
-
- STATE_F = [
- [2,50,"▲"]
- ]
-
- #XPスタイルバトル導入時の変更設定が有効な場合
- #現在HP割合に応じた顔グラフィックを指定します。
- #[HP割合,優先度,追加文字]で
- #1セットとなります。
- #複数セット指定する場合は「,」で区切ってください。
- #HP割合は対象となるHP割合。
- #優先度は、その変更の優先度。(有効な物の中で最も優先度の高い物が選択されます)
- #追加文字は、元の顔グラフィックの後につく文字です。
- #例えば、[60,1,"☆"]で、これのみを満たしている場合
- #アクターの顔グラフィックファイル名がActor4であれば
- #Actor4☆という顔グラフィックファイルから読み込みます。
-
- HPRATE_F = [
- [60,1,"☆"],
- [30,2,"★"]
- ]
-
- #優先度はステートとHP両方共通ですので
- #両方で最も高い優先度の物が選択されます。
- #同じ値である場合、先に処理が行われた方が優先されます。
-
- end
- class Game_Temp
- attr_accessor :disguise_flag
- #--------------------------------------------------------------------------
- # XPスタイルバトル導入フラグ
- #--------------------------------------------------------------------------
- def xps_flag
-
- #キャッシュが存在する場合はキャッシュを返す。
-
- return @xps_flag if @xps_flag != nil
-
- #XPスタイルバトル導入フラグの取得。
-
- @xps_flag = $lnx_include != nil && $lnx_include[:lnx11a] != nil
-
- #キャッシュを返す。
-
- @xps_flag
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # 顔グラフィック変更機能が有効な時
- #--------------------------------------------------------------------------
- if DISGUISE_FEATURE::FACE
- #--------------------------------------------------------------------------
- # 顔グラフィックの名称
- #--------------------------------------------------------------------------
- def face_name
-
- #変更用の顔グラフィックのファイル名を取得する。
- #存在しない場合は本来の顔グラフィックのファイル名を返す。
-
- data = ex_face.empty? ? @face_name : ex_face_best[0]
-
- #XPスタイルバトル導入時のみ処理を分岐。
-
- if $game_temp.xps_flag
-
- #キャッシュが存在しない場合はキャッシュを生成。
-
- @l_face_name = data if @l_face_name == nil
-
- #キャッシュと一致しない場合に限り、バトラーグラフィック更新フラグを立てる。
-
- if @l_face_name != data
- self.refresh_battler_graphic = true
- @l_face_name = data
- end
- end
- data
- end
- #--------------------------------------------------------------------------
- # 顔グラフィックのインデックスを取得
- #--------------------------------------------------------------------------
- def face_index
-
- #変更用の顔グラフィックインデックスを取得する。
- #存在しない場合は本来の顔グラフィックインデックスを返す。
-
- data = ex_face.empty? ? @face_index : ex_face_best[1]
-
- #XPスタイルバトル導入時のみ処理を分岐。
-
- if $game_temp.xps_flag
-
- #キャッシュが存在しない場合はキャッシュを生成。
-
- @l_face_index = data if @l_face_index == nil
- if @l_face_index != data
- self.refresh_battler_graphic = true
- @l_face_index = data
- end
- end
- data
- end
- #--------------------------------------------------------------------------
- # 顔グラフィックの一覧を取得
- #--------------------------------------------------------------------------
- def ex_face
- data = []
- feature_objects.each {|f| data.push(f.ex_face) if f && f.ex_face}
- data
- end
- #--------------------------------------------------------------------------
- # 最も優先度の高い顔グラフィックを取得
- #--------------------------------------------------------------------------
- def ex_face_best
- f_data = ["",0,0]
- ex_face.each {|f| f_data = f if f_data[2] < f[2]}
- f_data
- end
- end
- #--------------------------------------------------------------------------
- # 歩行グラフィック変更機能が有効な時
- #--------------------------------------------------------------------------
- if DISGUISE_FEATURE::CHARA
- #--------------------------------------------------------------------------
- # 歩行グラフィックの名称
- #--------------------------------------------------------------------------
- def character_name
-
- #変更用の歩行グラフィックのファイル名を取得する。
- #存在しない場合は本来の歩行グラフィックのファイル名を返す。
-
- data = ex_character.empty? ? @character_name : ex_character_best[0]
-
- #XPスタイルバトル導入時のみ処理を分岐。
-
- if $game_temp.xps_flag
-
- #キャッシュが存在しない場合はキャッシュを生成。
-
- @l_character_name = data if @l_character_name == nil
- if @l_character_name != data
- self.refresh_battler_graphic = true
- @l_character_name = data
- end
- end
- data
- end
- #--------------------------------------------------------------------------
- # 歩行グラフィックのインデックスを取得
- #--------------------------------------------------------------------------
- def character_index
-
- #変更用の歩行グラフィックインデックスを取得する。
- #存在しない場合は本来の歩行グラフィックインデックスを返す。
-
- data = ex_character.empty? ? @character_index : ex_character_best[1]
-
- #XPスタイルバトル導入時のみ処理を分岐。
-
- if $game_temp.xps_flag
-
- #キャッシュが存在しない場合はキャッシュを生成。
-
- @l_character_index = data if @l_character_index == nil
- if @l_character_index != data
- self.refresh_battler_graphic = true
- @l_character_index = data
- end
- end
- data
- end
- #--------------------------------------------------------------------------
- # 歩行グラフィックの一覧を取得
- #--------------------------------------------------------------------------
- def ex_character
- data = []
- feature_objects.each {|f| data.push(f.ex_character) if f && f.ex_character}
- data
- end
- #--------------------------------------------------------------------------
- # 最も優先度の高い歩行グラフィックを取得
- #--------------------------------------------------------------------------
- def ex_character_best
- c_data = ["",0,0]
- ex_character.each {|c| c_data = c if c_data[2] < c[2]}
- c_data
- end
- end
- #--------------------------------------------------------------------------
- # リフレッシュ
- #--------------------------------------------------------------------------
- alias refresh_disguise refresh
- def refresh
-
- #本来の処理を実行。
-
- refresh_disguise
-
- #スタック回避フラグが立っていない場合に限り、特殊リフレッシュを実行。
-
- $game_player.disguise_refresh(self) if !$game_temp.disguise_flag
- end
- end
- if DISGUISE_FEATURE::CHARA
- class Game_Player < Game_Character
- #--------------------------------------------------------------------------
- # 特殊リフレッシュ
- #--------------------------------------------------------------------------
- def disguise_refresh(d_actor)
-
- #スタック回避フラグを立てる。
-
- $game_temp.disguise_flag = true
-
- #先頭アクターと特殊リフレッシュ対象が同一の場合は
- #先頭アクターに特殊リフレッシュを実行する。
- #そうでない場合は、フォロワーに対し特殊リフレッシュを実行する。
-
- if actor == d_actor
- @character_name = actor ? actor.character_name : ""
- @character_index = actor ? actor.character_index : 0
- else
- @followers.disguise_refresh(d_actor)
- end
-
- #スタック回避フラグを消す。
-
- $game_temp.disguise_flag = nil
- end
- end
- class Game_Followers
- #--------------------------------------------------------------------------
- # 特殊リフレッシュ
- #--------------------------------------------------------------------------
- def disguise_refresh(d_actor)
-
- #フォロワーが存在しない場合は処理を終了する。
-
- return if @data.empty?
-
- #フォロワー内に特殊リフレッシュ対象が存在する時
- #そのフォロワーのみに特殊リフレッシュを実行。
-
- @data.each do |d|
- return d.refresh if d.actor == d_actor
- end
- end
- end
- end
- class RPG::BaseItem
- if DISGUISE_FEATURE::FACE
- #--------------------------------------------------------------------------
- # 顔グラフィック変更情報
- #--------------------------------------------------------------------------
- def ex_face
-
- #キャッシュがある場合はキャッシュを返す。
-
- return @ex_face if @ex_face != nil
-
- #メモ欄からデータを取得。
-
- @ex_face = false
-
- memo = self.note.scan(/<#{DISGUISE_FEATURE::WORD1}[::](\S+),(\d+),(\d+)>/).flatten
-
- #正常なデータを取得出来無かった場合は空の配列とする。
-
- if memo != nil && !memo.empty? && memo[1].to_i < 8 && memo[2].to_i > 0
-
- @ex_face = [memo[0], memo[1].to_i, memo[2].to_i]
-
- end
-
- #データを返す。
-
- @ex_face
-
- end
- end
- if DISGUISE_FEATURE::CHARA
- #--------------------------------------------------------------------------
- # 歩行グラフィック変更情報
- #--------------------------------------------------------------------------
- def ex_character
-
- #キャッシュがある場合はキャッシュを返す。
-
- return @ex_character if @ex_character != nil
-
- #メモ欄からデータを取得。
-
- @ex_character = false
-
- memo = self.note.scan(/<#{DISGUISE_FEATURE::WORD2}[::](\S+),(\d+),(\d+)>/).flatten
-
- #正常なデータを取得出来無かった場合は空の配列とする。
-
- if memo != nil && !memo.empty? && memo[1].to_i < 8 && memo[2].to_i > 0
-
- @ex_character = [memo[0], memo[1].to_i, memo[2].to_i]
-
- end
-
- #データを返す。
-
- @ex_character
-
- end
- end
- end
- if $lnx_include != nil && $lnx_include[:lnx11a] != nil
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # グラフィック設定の配列内データを変更する。
- #--------------------------------------------------------------------------
- def graphic_name_index
-
- #@を抜き、参照対象をGame_Actor内変数からGame_Actorで定義された物にする。
-
- case LNX11::DEFAULT_BATTLER_GRAPHIC
- when 0 ; [face_name, face_index]
- when 1 ; [character_name, character_index]
- end
- end
- #--------------------------------------------------------------------------
- # デフォルトバトラーグラフィック設定を変更する。
- #--------------------------------------------------------------------------
- def default_battler_graphic
-
- #@を抜き、参照対象をGame_Actor内変数からGame_Actorで定義された物にする。
-
- case LNX11::DEFAULT_BATTLER_GRAPHIC
- when 0 # 顔グラフィック
- self.facebattler = draw_face(face_name, face_index)
- when 1 # 歩行グラフィック
- self.facebattler = draw_character(character_name, character_index)
- end
- end
-
- #以下はステートやHPに応じた表情変化が有効な場合のみ処理を行う。
-
- if DISGUISE_FEATURE::XPSC
- #--------------------------------------------------------------------------
- # 顔グラフィックの名称
- #--------------------------------------------------------------------------
- alias face_name_hp_rate_state face_name
- def face_name
-
- #本来の処理でのデータを取得する。
-
- data = face_name_hp_rate_state
-
- #顔グラフィックの追加名称を付与。
-
- data = data + hp_rate_face_text
-
- #データを返す。
-
- data
- end
- #--------------------------------------------------------------------------
- # 顔グラフィックの追加名称
- #--------------------------------------------------------------------------
- def hp_rate_face_text
-
- #HP割合を取得。
-
- data = self.hp_rate * 100
-
- #初期優先度を設定。
-
- pr = 0
-
- #初期追加文字を設定。
-
- text = ""
-
- #各ステート指定に依存した処理を実行。
-
- DISGUISE_FEATURE::STATE_F.each do |a|
- if a[1] > pr
- next unless state?(a[0])
- pr = a[1]
- text = a[2]
- end
- end
-
- #各HP指定に依存した処理を実行。
-
- DISGUISE_FEATURE::HPRATE_F.each do |a|
- if a[1] > pr
- next unless a[0] >= data
- pr = a[1]
- text = a[2]
- end
- end
- text
- end
- #--------------------------------------------------------------------------
- # リフレッシュ
- #--------------------------------------------------------------------------
- alias refresh_hp_rate_state refresh
- def refresh
-
- #本来の処理を実行。
-
- refresh_hp_rate_state
-
- #グラフィック更新フラグをtrueにする。
-
- @refresh_battler_graphic = true
- end
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|