赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 18678 |
最后登录 | 2021-1-2 |
在线时间 | 61 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 95
- 在线时间
- 61 小时
- 注册时间
- 2008-1-19
- 帖子
- 121
|
有是有一个.不过不大好看......作些修改比较好......
基本方法:
显示名字:\w[你的名字].脚本如下:
- =begin rdoc
- = #037 メッセージ制御文字追加
- == 概要
- メッセージウィンドウに名前ウィンドウを追加します。左右の表示位置を指定でき、
- 内容には制御文字を使用することが出来ます。
- また、アイテム・武器・防具の名前を呼び出せるようになります。
- == 注記事項
- * #008「メッセージバグ修正」#009「アイテム名取り込み対応」を取り込んでいます。
- これらと併用する必要はありません。
- * 動作の詳細は下記の[動作について]をご覧下さい。
- == このスクリプトの情報
- バージョン:: 2.0.0
- 対応:: RPGツクールVX
- 配布元:: http://quiet-labs.net/s/037/
- 作成者:: ユミル ( mailto:[email protected] )
- 挿入位置:: [VX] 標準の位置に挿入
- 動作条件:: [VX] 特に無し
- == 動作について
- * メッセージの先頭に「 \w[ (内容) ] 」の形式で入力してください。
- メッセージの表示の際にこの位置に到達すると、名前欄に内容を表示します。
- * 「 \w[\n[1]] 」の用に指定した場合、そのアクターの名前を画面に表示できます。
- * \w もしくは \wl で左に表示、\wr で右側に表示します。
- * メッセージの中で何度でも使用することが出来ます。メッセージの表示中に名前欄を
- 変更することも出来ます。
- * また、以下の特殊文字を使用できるようになります。
- - \It[n] ID n 番のアイテムの名前に置き換えられます。
- - \We[n] ID n 番の武器の名前に置き換えられます。
- - \Ar[n] ID n 番の防具の名前に置き換えられます。
- * n には半角数字を入力します。
- \It[\v[1]] のように変数で指定することも可能です。
- * また、RPGツクールVX の標準スクリプトの以下の不具合を修正します。
- * \G が小文字の時に動作しない不具合。
- * 構文をエスケープできない不具合。(通常「\\G」などと入力した場合、画面には
- 「\G」と表示されるべきであるが、不具合により「\G」と同じ動作をしてしまう)
- * 英文字は大文字・小文字の区別はありません。
- * 特殊文字はメッセージ編集中に表示できるプレビューには反映されませんが、
- ゲーム中での動作時は問題なく反映されます。
- ==サポート
- * 不具合などがありましたら掲示板で報告していただければ幸いです。
- * 設定や組み込みなどで不明な点が有れば掲示板にてお尋ね下さい。
- == 更新履歴
- [2.0.0]
- 更新 : 2008-05-04
- * #008「メッセージバグ修正」を吸収。
- * #009「アイテム名取り込み対応」を吸収。
- [1.0.2]
- 更新 : 2008-03-06
- * 特殊文字の追加を容易にするために Window_Message#convert_special_characters
- を分割。
- [1.0.1]
- 更新 : 2008-02-26
- * 戦闘中、名前ウィンドウの位置が上に固定される不具合を修正。
- * 左右位置の設定が有効にならない不具合を修正。
- [1.0.0]
- 更新 : 2008-01-29
- * 公開。
- =end
- # このサイトのスクリプトの名前空間。
- module QuietLab
- end
- # このスクリプトの名前空間。
- module QuietLab::Script_37
-
- # このスクリプトのバージョンの日付表記。
- Version = 2008_05_04
- end
- # 名前を表示するクラス。
- class QuietLab::Script_37::Window_Name < Window_Base
-
- # ウィンドウに表示する文字列。
- attr_reader :text
-
- # オブジェクトを初期化します。
- def initialize(x = 0, y = 0)
- super(x, y, 160, WLH + 32)
- @text = ""
- refresh
- end
-
- # 内容を再描画します。
- def refresh
- self.contents.clear
- self.contents.draw_text(4, 0, self.width - 32 - 8, WLH, @text)
- self.open if @text != ""
- end
-
- # 表示する文字列を設定します。位置は [ 0:左, 2:右 ] です。
- def set_text(pos, val)
- @text = val
- self.x = (pos == 2 ? 544 - self.width : 0)
- refresh
- end
- end
- # メッセージウィンドウのクラス。
- class Window_Message
-
- #-- alias 定義
- # 判別のため、メソッド名末尾に _by_QuietLab37 を付加します。
- #++
- alias :initialize_by_QuietLab37 :initialize
- alias :dispose_by_QuietLab37 :dispose
- alias :update_by_QuietLab37 :update
- alias :create_gold_window_by_QuietLab37 :create_gold_window
- alias :start_message_by_QuietLab37 :start_message
- alias :reset_window_by_QuietLab37 :reset_window
- alias :terminate_message_by_QuietLab37 :terminate_message
- alias :update_message_by_QuietLab37 :update_message
-
- # オブジェクトを初期化します。
- def initialize
- initialize_by_QuietLab37
- create_name_window
- end
-
- # 使用しているウィンドウ・スプライトを解放します。
- def dispose
- dispose_by_QuietLab37
- dispose_name_window
- end
-
- # ウィンドウを更新します。
- def update
- update_name_window
- update_by_QuietLab37
- end
-
- # ゴールドウィンドウを作成します。
- def create_gold_window
- create_gold_window_by_QuietLab37
- @gold_window.z = self.z + 1
- end
-
- # メッセージの表示処理を開始します。
- def start_message
- @name_window.close
- start_message_by_QuietLab37
- end
-
- # ウィンドウの状態をリセットします。
- def reset_window
- reset_window_by_QuietLab37
- if @position == 0
- self.y = 24
- @gold_window.y = -16
- end
- reset_name_window
- end
-
- # 発言者ウィンドウの位置をリセットします。
- def reset_name_window
- @name_window.opacity = self.opacity
- @name_window.y = self.y - 40
- end
-
- # メッセージの表示処理を終了します。
- def terminate_message
- terminate_message_by_QuietLab37
- @name_window.close
- end
-
- # メッセージの内容を更新します。
- def update_message
- loop do
- case @text.slice(/./m)
- when "\x0a"
- @text.sub!(/\x0a\[(.*?)\]/, "")
- @name_window.set_text(0, $1)
- when "\x0b"
- @text.sub!(/\x0b\[(.*?)\]/, "")
- @name_window.set_text(2, $1)
- else
- break
- end
- break unless @show_fast or @line_show_fast
- end
- update_message_by_QuietLab37
- end
-
- # 発言者ウィンドウを作成します。
- def create_name_window
- @name_window = QuietLab::Script_37::Window_Name.new
- @name_window.openness = 0
- @name_window.z = self.z + 1
- end
-
- # 発言者ウィンドウを解放します。
- def dispose_name_window
- @name_window.dispose
- end
-
- # 発言者ウィンドウを更新します。
- def update_name_window
- @name_window.update
- end
-
- # 表示する内容に含まれる特殊文字を変換します。
- # このメソッドは分割されており、ここではエスケープの置き換えを行います。
- def convert_special_characters
- @text.gsub!(/\\\\/) { "\x7f" }
- convert_special_characters_main
- @text.gsub!(/\x7f/) { "\\" }
- end
-
- # 表示する内容に含まれる特殊文字を変換します。
- # このメソッドは分割されており、ここではエディタ標準の制御文字の置き換えを
- # 行います。
- def convert_special_characters_system
- @text.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }
- @text.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }
- @text.gsub!(/\\G/i) { "\x02" }
- @text.gsub!(/\\\./) { "\x03" }
- @text.gsub!(/\\\|/) { "\x04" }
- @text.gsub!(/\\!/) { "\x05" }
- @text.gsub!(/\\>/) { "\x06" }
- @text.gsub!(/\\</) { "\x07" }
- @text.gsub!(/\\\^/) { "\x08" }
- end
-
- # 表示する内容に含まれる特殊文字を変換します。
- # このメソッドは分割されており、ここでは文字の置き換えを行うメソッドを
- # 呼び出します。
- def convert_special_characters_main
- convert_special_characters_system
- convert_special_characters_item
- convert_special_characters_name
- end
-
- # 表示する内容に含まれる特殊文字を変換します。
- # このメソッドは分割されており、ここではこのスクリプトで追加された
- # アイテム関連の制御文字の置き換えを行います。
- def convert_special_characters_item
- @text.gsub!(/\\It\[(\d+)\]/i) do
- $data_items[$1.to_i].nil? ? "" : $data_items[$1.to_i].name
- end
- @text.gsub!(/\\We\[(\d+)\]/i) do
- $data_weapons[$1.to_i].nil? ? "" : $data_weapons[$1.to_i].name
- end
- @text.gsub!(/\\Ar\[(\d+)\]/i) do
- $data_armors[$1.to_i].nil? ? "" : $data_armors[$1.to_i].name
- end
- end
-
- # 表示する内容に含まれる特殊文字を変換します。
- # このメソッドは分割されており、ここではこのスクリプトで追加された
- # 名前ウィンドウ関連の制御文字の置き換えを行います。
- def convert_special_characters_name
- @text.gsub!(/\\WR\[(.*?)\]/i) { "\x0b[#{$1}]" }
- @text.gsub!(/\\WL?\[(.*?)\]/i) { "\x0a[#{$1}]" }
- end
- end
- # 戦闘中に使用されるメッセージウィンドウのクラス。
- class Window_BattleMessage
-
- #-- alias 定義
- # 判別のため、メソッド名末尾に _by_QuietLab37 を付加します。
- #++
- alias :reset_window_by_QuietLab37 :reset_window
-
- # ウィンドウの状態をリセットします。
- def reset_window
- reset_window_by_QuietLab37
- reset_name_window
- end
- end
- # QuietLab ScriptFormat v1.20
复制代码
效果图:
个人觉得...还是用VX呼出对话框好看些.就是偶有小冲突...... 系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~ |
|