赞 | 2 |
VIP | 341 |
好人卡 | 22 |
积分 | 6 |
经验 | 66602 |
最后登录 | 2024-5-19 |
在线时间 | 1243 小时 |
Lv2.观梦者 (管理员) 八云紫的式神
- 梦石
- 0
- 星屑
- 614
- 在线时间
- 1243 小时
- 注册时间
- 2008-1-1
- 帖子
- 4282
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
- def convert_special_characters
- # \ を変換(エスケープ処理のため)
- @text.gsub!(/\\\\/) { "\x7f" }
- # システム定義
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
- @text.gsub!(/\\C\[([0-9]+)\]/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" }
- # スクリプト定義
- @text.gsub!(/\\WR\[(.*?)\]/i) { "\x0b[#{$1}]" }
- @text.gsub!(/\\WR\[(.*?)\]/i) { "\x0b[#{$1}]" }
- @text.gsub!(/\\WL?\[(.*?)\]/i) { "\x0a[#{$1}]" }
- # \ を元の文字に戻す
- @text.gsub!(/\x7f/) { "\\" }
- end
复制代码
这是对话显名脚本的一部分,功能是显示文章里有 \w[名字]会单独弹出个window显名,我想加一个当遇到\w[1~9]的时候会自动转为\w[\n[1~9]]来显示角色名字
完整脚本:
- # このサイトのスクリプトの名前空間。
- module QuietLab
- end
- # このスクリプトの名前空間。
- module QuietLab::Script_37
-
- # このスクリプトのバージョンの日付表記。
- Version = 2008_02_26
- 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 convert_special_characters
- # \ を変換(エスケープ処理のため)
- @text.gsub!(/\\\\/) { "\x7f" }
- # システム定義
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
- @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
- @text.gsub!(/\\C\[([0-9]+)\]/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" }
- # スクリプト定義
- @text.gsub!(/\\WR\[(.*?)\]/i) { "\x0b[#{$1}]" }
- @text.gsub!(/\\WL?\[(.*?)\]/i) { "\x0a[#{$1}]" }
- # \ を元の文字に戻す
- @text.gsub!(/\x7f/) { "\\" }
- 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
- 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.12
复制代码 版务信息:本贴由楼主自主结贴~ |
|