赞 | 0 |
VIP | 1 |
好人卡 | 11 |
积分 | 1 |
经验 | 17928 |
最后登录 | 2018-9-22 |
在线时间 | 461 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 461 小时
- 注册时间
- 2008-11-19
- 帖子
- 607
|
本帖最后由 sai90306 于 2012-6-11 03:01 编辑
請問如何給這個腳本加上新的"文字指令"?
也就是透過增加新的gsub方法來實現
例如增加字體大小和文字加外框兩個指令- module Sword
- #=======================================
- #★魔劍工舖 - 地圖任意顯示文字窗口
- #轉貼腳本請著名出處:[url]http://blog.yam.com/a870053jjkj/article/24354553[/url]
- #如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
- #=======================================
- #● 使用者自定設置
- SWORD_TEXT_DISP = 1 # 切換畫面時是否釋放所有窗口,0表示不使用
- #=======================================
- #● 文字指令
- # \V[數值] : 顯示指定編號的變數(可用來代替 [數值] 使用!!)
-
- # \C[數值] : 變更文字的顏色,顏色請在Window_Base類的text_color方法中設置
-
- # \N[數值] : 顯示指定編號的角色名稱
-
- # \S[數值] : 顯示指定編號的技能名稱
-
- # \I[數值] : 顯示指定編號的物品名稱
-
- # \W[數值] : 顯示指定編號的武器名稱
-
- # \A[數值] : 顯示指定編號的防具名稱
-
- # \E[數值] : 顯示指定編號的敵人名稱
-
- # \\ : 顯示「\」符號
- #=======================================
- #● 呼叫方法
- # sword_text(編號, X座標, 座標, 寬度, 高度, 不透明度, '
- # 文字內容
- # ')
- #--------------------------------------------------------------
- # [X座標] 輸入 「true」 : 窗口的X座標為呼叫此腳本的事件的中央顯示
-
- # [Y座標] 輸入 「true」 : 窗口的Y座標為呼叫此腳本的事件的上方顯示
-
- # [寬度] 輸入 「true」 : 窗口的寬度依照文字內容最長的內容自動調整
-
- # [高度] 輸入 「true」 : 窗口的高度依照文字內容的行數來自動調整
- #=======================================
- #● 關閉窗口
- # sword_text_dispose(編號) : 關閉指定編號的窗口
-
- # sword_text_dispose(true) : 關閉目前顯示編號最大的窗口
-
- # sword_text_dispose(false) : 關閉目前顯示編號最小的窗口
-
- # sword_text_dispose(nil) : 關閉目前顯示的所有窗口
-
- #詳細設置說明請參考:[url]http://blog.yam.com/a870053jjkj/article/24354553[/url]
- #=======================================
- $sword_text_window = []
- end
-
- class WSword_Text < Window_Base
- def initialize(z, x, y, ox, oy, text)
- contents = Bitmap.new(33 - 32 , 33 - 32)
- # 將字串分解成數組並計算最長文字寬度與行數
- text = text.scan(/\S*/)
- cx = []
- br = 0
- for i in 0...text.size
- text[i] == "" ? text[i] = nil : 0
- text[i] == nil ? br += 32 : cx[i] = contents.text_size(text[i]).width + 32
- end
- br -= 32
- cx.compact!
- for i in 1...cx.size
- cx[0] >= cx[i] ? 0 : cx[0] = cx[i]
- end
- # 刪除不必要的部份,只留字串
- text.shift and text.pop and text.pop
- text.compact!
- # 當指定位置或大小為true時自動調整
- @x = x
- x.is_a?(Array) ? x = x[0] - (cx[0] / 2 - 16) : 0
- y.is_a?(Array) ? y = y[0] - br / 2 - br / 2 - 16 : 0
- ox == true ? @ox = true : 0
- @ox == true ? ox = cx[0] : 0
- oy == true ? oy = br : 0
- super(x, y, ox, oy)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = z
- @text = text
- refresh
- end
- def refresh
- self.contents.clear
- # 防止相同字符串被更動,加上標記
- a = @text[0] + "\\br"
- if @ox == true
- text_width(@text)
- end
- a.gsub!(/\\br/) { "" } # 刪除標記
- @text[0] = a
- y = 0 # 文字的Y座標
- # 循環每行的內容
- for i in @text
- text = [] # 儲存一行內容和指令之用
- b = 0 # 數組欄位
- a = "" # 暫存字串中的1個字
- i.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- i.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\000[#{$1}]" }
- i.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ss]\[([0-9]+)\]/) do
- $data_skills[$1.to_i] != nil ? $data_skills[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ii]\[([0-9]+)\]/) do
- $data_items[$1.to_i] != nil ? $data_items[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ww]\[([0-9]+)\]/) do
- $data_weapons[$1.to_i] != nil ? $data_weapons[$1.to_i].name : ""
- end
- i.gsub!(/\\[Aa]\[([0-9]+)\]/) do
- $data_armors[$1.to_i] != nil ? $data_armors[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ee]\[([0-9]+)\]/) do
- $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
- end
- while ((c = i.slice!(/./m)) != nil)
- if c == "\000" # \C 顏色
- text[b] = a
- b += 1
- i.sub!(/\[([0-9]+)\]/, "")
- text[b] = ["c", $1.to_i]
- b += 1
- a = ""
- next
- end
- a += c
- end
- text[b] = a
- # 產生窗口內容
- x = 0
- self.contents.font.color = normal_color
- # 循環該行內容(判斷指令)
- for i in text
- if i.is_a?(String) # 顯示文字
- self.contents.draw_text(x, y, 640, 32, i)
- x += contents.text_size(i).width
- else
- case i[0]
- when "c" # 更換顏色
- self.contents.font.color = text_color(i[1])
- end
- end
- end
- y += 32
- end
- end
- # 自動調整寬度的方法
- def text_width(text)
- text = [] # 用來記錄每行文字的寬度
- b = 0 # 數組欄位
- for i in @text
- i.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- i.gsub!(/\\[Cc]\[([0-9]+)\]/) { "" }
- i.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ss]\[([0-9]+)\]/) do
- $data_skills[$1.to_i] != nil ? $data_skills[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ii]\[([0-9]+)\]/) do
- $data_items[$1.to_i] != nil ? $data_items[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ww]\[([0-9]+)\]/) do
- $data_weapons[$1.to_i] != nil ? $data_weapons[$1.to_i].name : ""
- end
- i.gsub!(/\\[Aa]\[([0-9]+)\]/) do
- $data_armors[$1.to_i] != nil ? $data_armors[$1.to_i].name : ""
- end
- i.gsub!(/\\[Ee]\[([0-9]+)\]/) do
- $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
- end
- text[b] = contents.text_size(i).width
- b += 1
- end
- # 獲取數組中數值最高的數值
- for i in 1...text.size
- text[0] >= text[i] ? 0 : text[0] = text[i]
- end
- self.width = text[0] + 32
- # 窗口X座標修正
- if @x.is_a?(Array)
- x = @x[0] - (self.width / 2 - 16)
- self.x = x
- end
- self.contents = Bitmap.new(width - 32, height - 32)
- end
- end
-
- #☆ 事件中呼叫的處理
- class Interpreter
- # 產生窗口的方法
- def sword_text(i, x, y, width, height, opacity, text)
- # 防止非法編號
- if i <= 0
- return
- end
- x == true ? x = [$game_map.events[@event_id].x * 32] : 0
- y == true ? y = [$game_map.events[@event_id].y * 32] : 0
- unless $sword_text_window[i] == nil
- $sword_text_window[i].dispose
- end
- $sword_text_window[i] = WSword_Text.new(i, x, y, width, height, text)
- $sword_text_window[i].opacity = opacity
- end
- # 釋放窗口的方法
- def sword_text_dispose(dispose)
- case dispose
- when Integer # 整數(釋放指定編號的窗口)
- unless $sword_text_window[dispose] == nil
- $sword_text_window[dispose].dispose
- $sword_text_window[dispose] = nil
- end
- when TrueClass # true(釋放最前面的窗口)
- i = 1
- loop do
- a = $sword_text_window.size - i
- unless $sword_text_window[a] == nil
- $sword_text_window[a].dispose
- $sword_text_window[a] = nil
- return
- end
- if a <= 0
- return
- end
- i += 1
- end
- when FalseClass # false(釋放最後面的窗口)
- for i in 1...$sword_text_window.size
- unless $sword_text_window[i] == nil
- $sword_text_window[i].dispose
- $sword_text_window[i] = nil
- return
- end
- end
- when NilClass # nil(釋放所有顯示的窗口)
- for i in 1...$sword_text_window.size
- unless $sword_text_window[i] == nil
- $sword_text_window[i].dispose
- $sword_text_window[i] = nil
- end
- end
- end
- end
- end
-
- #☆ 切換畫面時釋放窗口
- class Scene_Map
- include Sword
- alias sword_main4 main
- def main
- sword_main4
- SWORD_TEXT_DISP == 0 ? 0 : Interpreter.new.sword_text_dispose(nil)
- end
- end
复制代码 另附上可能有相關的參考腳本- module Sword
- #=======================================
- #★ 魔劍工舖 - 多功能對話框
- # 轉貼腳本請著名出處:[url]http://blog.yam.com/a870053jjkj/[/url]
- # 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
- #=======================================
- #● 使用者自定設置
- #○ 基本設置
- SWORD_MESS_POSI = [16, 0, 0] # 設定對話框的 [上, 中, 下]的Y座標,0為自動調整
- SWORD_MESS_PAUS = 10 # 設定暫停標誌的每格動畫的時間
- SWORD_MESS_SWIT = ['開', '關'] # 設定控制碼「\S」顯示的內容 ([ON,OFF)
- SWORD_MESS_SEVP = [80, 100] # 設定控制碼「\SE」預設的 [音量, 音調]
- SWORD_MESS_NACO = [192, 224, 255] # 設定用頭像+名稱控制碼的名稱文字顏色
- SWORD_MESS_HEAD = [120, 140] # 設定頭像 [寬度, 高度],0表示依圖片自動調整
- SWORD_MESS_NAME = '' # 設定對話框預設的字體,找不到該字體就用預設字體
- SWORD_MESS_SIZE = 22 # 設定對話框預設的文字大小,0表示使用預設大小
- SWORD_MESS_BOIT = [0, 0] # 設定對話框預設是否 [粗體, 斜體],0否、1是
- SWORD_MESS_COLO = [255, 255, 255] # 設定對話框預設的文字顏色 [紅, 綠, 藍]
- #--------------------------------------------------------------
- #○ 追蹤字詞添加設置
- # 找到指定內容,就在內容前後附加內容,'追蹤內容'=>['前附加內容', '後附加內容'],
- SWORD_MESS_TRAY = {
- '你好'=>['\c[6]', '\c[0]'],
- '阻止他'=>['\fs[32]', '\fs[22]'],
- } # 設置結束
- #=======================================
- #● 控制碼
- #○ 內容控制碼
- # \V[變數編號] : 顯示指定變數編號的數值,可當成其他控制碼的參數用(深度為5)
- # \S[開關編號] : 顯示指定開關編號目前的狀態文字,依設置SWORD_MESS_SWIT
- # \N[角色編號] : 顯示指定角色編號的角色名稱
- # \CN[職業編號] : 顯示指定職業編號的職業名稱
- # \SN[技能編號] : 顯示指定技能編號的技能名稱
- # \IN[物品編號] : 顯示指定物品編號的物品名稱
- # \WN[武器編號] : 顯示指定武器編號的武器名稱
- # \AN[防具編號] : 顯示指定防具編號的防具名稱
- # \EN[敵人編號] : 顯示指定敵人編號的敵人名稱
- # \GV : 顯示目前玩家持有的金錢
- # \EQ[角色編號,部位] : 顯示角色編號裝備的名稱,部位-0武、1盾、2頭、3身、4飾
- # \\ : 顯示「\」,通常被此控制碼顯示的左斜線通常不會被當成是控制碼而使用
- # \MA[地圖編號] : 顯示指定地圖編號的地圖名稱,設置0表示目前的地圖
- # \NN[角色編號] : 顯示指定角色編號的戰鬥圖檔案名稱(可配合頭像控制碼使用)
- # \NS[技能編號] : 顯示指定技能編號的圖標檔案名稱(可配合 \I 控制碼使用)
- # \NI[物品編號] : 顯示指定物品編號的圖標檔案名稱(可配合 \I 控制碼使用)
- # \NW[武器編號] : 顯示指定武器編號的圖標檔案名稱(可配合 \I 控制碼使用)
- # \NA[防具編號] : 顯示指定防具編號的圖標檔案名稱(可配合 \I 控制碼使用)
- # \I[檔案名稱] : 顯示Icons資料夾中指定檔案名稱的圖片
- # \HR : 顯示分隔線,會從此控制碼作為起點顯示到該行結束為止,會前進一行
- #--------------------------------------------------------------
- #○ 文字控制碼
- # \C[顏色代碼] : 變更預設的顏色,可在「Window_Base」腳本的text_color方法設置
- # \CR[紅,綠,藍] : 變更自定的顏色
- # \CU[紅,綠,藍] : 文字上下顏色漸層效果,會受變更顏色而取消此控制碼
- # \FN[字體名稱] : 變更指定的字體,如果該玩家電腦無該字體,則什麼都不做
- # \FS[大小] : 變更文字的大小,離下行的距離會受到影響,預設大小為22
- # \FB : 將文字變更為粗體表示,在使用一次會恢復原裝
- # \FI : 將文字往右斜倒表示,在使用一次會恢復原狀
- # \F_ : 將文字下面附加一條底線,在使用一次會恢復原狀
- # \F- : 將文字中央附加一條刪除線,在使用一次會恢復原狀
- # \FH : 將文字右下方附加上陰影,在使用一次會恢復原狀
- # \F : 回到無使用文字控制碼時的預設狀態
- #--------------------------------------------------------------
- #○ 頭像控制碼
- # \LS[檔案名稱] : 對話框左邊顯示指定檔案名稱的圖片,顯示內容寬度會減少
- # \LSU[角色名稱,檔案名稱] : 效果同 \LS 控制碼,只不過圖片上方加上角色名稱
- # \LSD[角色名稱,檔案名稱] : 效果同 \LS 控制碼,只不過圖片下方加上角色名稱
- #--------------------------------------------------------------
- #○ 聲音控制碼
- # \SE[檔案名稱] : 演奏指定檔案名稱的ME,音量和音調依SWORD_MESS_SEVP
- # \SE[檔案名稱,音量,音調] : 和上面的 \SE 控制碼一樣,但這可指定音量和音調
- # \SEX : 停止目前演奏的SE,可能會影響其他的SE,請找適當實機來使用
- #--------------------------------------------------------------
- #○ 功能控制碼
- # \G : 在右上方顯示金錢窗口
- # \M[幀數] : 變更每個字顯示的延遲時間,0表示1次全顯示,變更後會保存!!
- # \.[幀數] : 內容顯示到此控制碼會停止顯示,指定幀數到後才繼續顯示後面的內容
- # \! : 內容顯示到此控制碼會停止顯示,當按下確定鍵後才繼續顯示後面的內容
- # \> : 內容顯示到此控制碼後,則之後的內容會瞬間顯示完畢(暫時無效 \M 控制碼)
- # \^[幀數] : 內容顯示到此控制碼後開始計時,時間到時顯示下個事件指令
- # \L[編號] : 此控制碼視同指定編號的[設定記憶]的設置內容( \V 控制碼深度為2)
- # \XN : 增加1次無視換行標誌來防止換行(突破事件限制),但超過對話框則不適用
- # \SS[開關編號] : 該控制碼後面的內容隱藏,如果指定的開關為ON才會顯示
- # \SX : 使用 \SS 控制碼將後面的內容隱藏時,當執行到此控制碼就停止隱藏
- # \BR : 同Enter換行(突破事件換行限制用),此換行也會被 \XN 控制碼無效的可能
- # \P : 判斷下個事件是否為 [顯示文章],如果是就當做是同一個 [顯示文章] 事件
- # \SH[幀數] : 讓對話框震動指定的時間,後面內容會無法顯示(尚未找到解決方式)
- #=======================================
- #● 設置方法
- # 變更對話大小:$game_system.swordM_WidthHeight = [寬度, 高度]
- # 打字效果延遲:$game_system.swordM_rate = 延遲幀數
- # 存記憶控制碼:$game_system.swordM_save[編號] = '文字內容'
- # 變更按鍵顯示:$game_system.swordM_key
- #--------------------------------------------------------------
- $Sword ? $Sword[1] = true : $Sword = {1=>true} # 腳本使用標誌
- SWORD_MESS_INHE = 0 # 未完成物,請勿更動
- end
- # 詳細設置說明請參考:[url]http://blog.yam.com/a870053jjkj/article/[/url]
- #=======================================
- #■ 處理系統附屬資料的類別
- class Game_System
- alias sword5_initialize initialize
- attr_accessor :swordM_rate # 對話框打字延遲速度
- attr_accessor :swordM_save # 記憶控制碼的儲存庫
- attr_accessor :swordM_WidthHeight # 對話框大小
- #● 初始化狀態
- def initialize
- sword5_initialize
- @swordM_rate = 5
- @swordM_save = []
- @swordM_key = true
- @swordM_WidthHeight = [500, 160]
- end
- #-------------------------------------------------------------
- #● 更換按鍵輸入全部顯示的方法
- def swordM_key(a = false)
- @swordM_key = (not @swordM_key) unless a
- return @swordM_key if a
- end
- end
- #=======================================
- #■ 暫停標誌窗口
- class WSword_MessagePause < Window_Base
- include Sword
- #● 初始化狀態
- def initialize
- super($game_system.swordM_WidthHeight[0] / 2 - 4,
- 33 + $game_system.swordM_WidthHeight[1] - 32, 48, 48)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.visible = false
- self.opacity = 0
- self.z = 6010
- end
- #-------------------------------------------------------------
- #● 更新內容
- def refresh
- @pause[1] -= 1
- return unless @pause[1] == 0
- self.contents.clear
- cache = RPG::Cache.windowskin($data_system.windowskin_name)
- case @pause[0]
- when 1 # 左上
- rx = 0 and ry = 0 and @pause = [2, SWORD_MESS_PAUS+1]
- when 2 # 右上
- rx = 1 and ry = 0 and @pause = [3, SWORD_MESS_PAUS+1]
- when 3 # 左下
- rx = 0 and ry = 1 and @pause = [4, SWORD_MESS_PAUS+1]
- when 4 # 右下
- rx = 1 and ry = 1 and @pause = [1, SWORD_MESS_PAUS+1]
- end
- self.contents.blt(0, 0, cache, Rect.new(160 + 16 * rx, 64 + 16 * ry, 16, 16))
- end
- #-------------------------------------------------------------
- #● 顯示標誌(初始化暫停標記用)
- def visible=(visible)
- super(visible)
- @pause = [4, 1]
- case $game_system.message_position
- when 0 # 上
- self.y = SWORD_MESS_POSI[0] == 0 ? 16 : SWORD_MESS_POSI[0]
- when 1 # 中
- self.y = SWORD_MESS_POSI[1] == 0 ?
- 320 - $game_system.swordM_WidthHeight[1] : SWORD_MESS_POSI[1]
- when 2 # 下
- self.y = SWORD_MESS_POSI[2] == 0 ?
- 464 - $game_system.swordM_WidthHeight[1] : SWORD_MESS_POSI[2]
- end
- # 戰鬥時的場合
- if $game_temp.in_battle
- self.y = SWORD_MESS_POSI[0] == 0 ? 16 : SWORD_MESS_POSI[0]
- end
- self.y += $game_system.swordM_WidthHeight[1] - 32
- self.x = (640 - $game_system.swordM_WidthHeight[0]) / 2 +
- ($game_system.swordM_WidthHeight[0] / 2) - 24
- end
- end
- #=======================================
- #■ 對話框戰鬥圖(頭像)窗口
- class WSword_MessageCharacter < Window_Base
- include Sword
- #● 初始化物件
- def initialize(x, y)
- super(x - 48, y - 48, 640, 480)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 6005
- self.visible = false
- self.opacity = 0
- @name = ['', 0] # 記錄 [角色名稱, 頭像類型]
- end
- #-------------------------------------------------------------
- #● 更新內容
- def refresh(type = 0, battler = '', name = '')
- #○ 描繪圖片
- battler = RPG::Cache.battler(battler, 0)
- a = SWORD_MESS_HEAD[0] == 0 ? battler.width : SWORD_MESS_HEAD[0]
- b = SWORD_MESS_HEAD[1] == 0 ? battler.height : SWORD_MESS_HEAD[1]
- record = [type, battler.width, battler.height, 0]
- record[1] = SWORD_MESS_HEAD[0] if SWORD_MESS_HEAD[0] > 0
- record[2] = SWORD_MESS_HEAD[1] if SWORD_MESS_HEAD[1] > 0
- return record if @name[0] == name if type == @name[1]
- @name = [name, type]
- self.contents.clear
- y = 0 # 圖片Y座標修正用
- #○ 描繪角色名稱
- color = SWORD_MESS_NACO
- self.contents.font.color = Color.new(color[0], color[1], color[2])
- case type
- when 2 ; y = 32 ; self.contents.draw_text(0, 0, SWORD_MESS_HEAD[0], 32, name, 1)
- when 3
- self.contents.draw_text(0, record[2], SWORD_MESS_HEAD[0], 32, name, 1)
- end
- self.contents.blt(0, y, battler, Rect.new(0, 0, a, b))
- return record
- end
- end
- #=======================================
- #■ 顯示對話的訊息視窗
- class Window_Message < Window_Selectable
- include Sword
- attr_accessor :afresh # 重新產生窗口標誌
- #● 初始化物件
- def initialize
- super((640 - $game_system.swordM_WidthHeight[0]) / 2,
- 304, $game_system.swordM_WidthHeight[0], $game_system.swordM_WidthHeight[1])
- self.contents = Bitmap.new(width - 32, height - 32)
- self.visible = false
- self.z = 6000
- @fade_out = false
- @font = Font.exist?(SWORD_MESS_NAME) ? SWORD_MESS_NAME : Font.default_name
- @wait_count = -1 # 自動關閉對話框時間
- @delay_input = 0 # 按鍵全部顯示後的延遲時間
- @messagepause_wsword = WSword_MessagePause.new # 產生暫停標誌窗口
- @messagecharacter_wsword = WSword_MessageCharacter.new(self.x, self.y) # 頭像窗口
- self.opacity = 160
- self.index = -1 # 選擇項位置
- end
- #-------------------------------------------------------------
- #● 設定視窗位置與不透明度
- def reset_window
- # 更改對話框的情況
- unless $game_system.swordM_WidthHeight == [self.width, self.height]
- self.x = (640 - $game_system.swordM_WidthHeight[0]) / 2
- self.width = $game_system.swordM_WidthHeight[0]
- self.height = $game_system.swordM_WidthHeight[1]
- self.contents = Bitmap.new(width - 32, height - 32)
- end
- if $game_temp.in_battle
- self.y = SWORD_MESS_POSI[0] == 0 ? 16 : SWORD_MESS_POSI[0]
- else
- case $game_system.message_position
- when 0 # 上
- self.y = SWORD_MESS_POSI[0] == 0 ? 16 : SWORD_MESS_POSI[0]
- when 1 # 中
- self.y = SWORD_MESS_POSI[1] == 0 ?
- 320 - $game_system.swordM_WidthHeight[1] : SWORD_MESS_POSI[1]
- when 2 # 下
- self.y = SWORD_MESS_POSI[2] == 0 ?
- 464 - $game_system.swordM_WidthHeight[1] : SWORD_MESS_POSI[2]
- end
- end
- if $game_system.message_frame == 0
- self.opacity = 160
- else
- self.opacity = 0
- end
- self.back_opacity = 160
- end
- #-------------------------------------------------------------
- #● 更新內容
- def refresh
- self.contents.clear
- # 字體變更為預設值
- unless $game_switches[SWORD_MESS_INHE]
- self.contents.font.name = @font
- self.contents.font.size = SWORD_MESS_SIZE == 0 ?
- Font.default_size : SWORD_MESS_SIZE
- self.contents.font.bold = SWORD_MESS_BOIT[0] == 0 ?
- Font.default_bold : SWORD_MESS_BOIT[0]
- self.contents.font.italic = SWORD_MESS_BOIT[1] == 0 ?
- Font.default_italic : SWORD_MESS_BOIT[1]
- color = SWORD_MESS_COLO
- self.contents.font.color = Color.new(color[0], color[1], color[2])
- @record[0] = nil if @record
- end
- @cursor_width = [0, $game_system.swordM_WidthHeight[0] - 32]
- # 定義控制碼用的記錄空間
- # [瞬間顯示,瞬間顯示2,忽略換行,頭像記錄,開關隱藏,圖示,文字大小,該行大小]
- x = 0 and y = 0 and record = [false, false, 0, [0, 0, 0, 0], {}, nil, 0, []]
- # [漸層,底線,刪除線,陰影,底色]
- @record = [nil, false, false, false, nil]
- message_text = $game_temp.message_text
- #○ 追蹤字詞處理
- for i in SWORD_MESS_TRAY
- message_text.gsub!(/#{i[0]}/) { i[1][0] + i[0] + i[1][1] }
- end
- #○ 轉換控制碼
- message_text.gsub!(/\\[Vv]\[(\d+)\]/) { $game_variables[$1.to_i] } while
- /\\[Vv]\[\d+\]/ === message_text
- message_text.gsub!(/\\[Ss]\[([\d]+)\]/) do
- $game_switches[$1.to_i] ? SWORD_MESS_SWIT[0] : SWORD_MESS_SWIT[1]
- end
- message_text.gsub!(/\\[Nn]\[([\d]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Cc][Nn]\[([\d]+)\]/) do
- $game_classes[$1.to_i] != nil ? $game_classes[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Ss][Nn]\[([\d]+)\]/) do
- $game_skills[$1.to_i] != nil ? $game_skills[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Ii][Nn]\[([\d]+)\]/) do
- $game_items[$1.to_i] != nil ? $game_items[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Ww][Nn]\[([\d]+)\]/) do
- $game_weapons[$1.to_i] != nil ? $game_weapons[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Aa][Nn]\[([\d]+)\]/) do
- $game_armors[$1.to_i] != nil ? $game_armors[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Ee][Nn]\[([\d]+)\]/) do
- $game_enemies[$1.to_i] != nil ? $game_enemies[$1.to_i].name : ''
- end
- message_text.gsub!(/\\[Nn][Nn]\[([\d]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].character_name : ''
- end
- message_text.gsub!(/\\[Nn][Ss]\[([\d]+)\]/) do
- $data_skills[$1.to_i] != nil ? $data_skills[$1.to_i].icon_name : ''
- end
- message_text.gsub!(/\\[Nn][Ii]\[([\d]+)\]/) do
- $data_items[$1.to_i] != nil ? $data_items[$1.to_i].icon_name : ''
- end
- message_text.gsub!(/\\[Nn][Ww]\[([\d]+)\]/) do
- $data_weapons[$1.to_i] != nil ? $data_weapons[$1.to_i].icon_name : ''
- end
- message_text.gsub!(/\\[Nn][Aa]\[([\d]+)\]/) do
- $data_armors[$1.to_i] != nil ? $data_armors[$1.to_i].icon_name : ''
- end
- message_text.gsub!(/\\[Ee][Qq]\[([\d]+)\,([\d]+)\]/) do
- case $2.to_i
- when 0 # 武器
- $game_actors[$1.to_i].weapon_id != 0 ?
- $data_weapons[$game_actors[$1.to_i].weapon_id].name : ''
- when 1 # 盾
- $game_actors[$1.to_i].armor1_id != 0 ?
- $data_armors[$game_actors[$1.to_i].armor1_id].name : ''
- when 2 # 頭部防具
- $game_actors[$1.to_i].armor2_id != 0 ?
- $data_armors[$game_actors[$1.to_i].armor2_id].name : ''
- when 3 # 身體防具
- $game_actors[$1.to_i].armor3_id != 0 ?
- $data_armors[$game_actors[$1.to_i].armor3_id].name : ''
- when 4 # 裝飾品
- $game_actors[$1.to_i].armor4_id != 0 ?
- $data_armors[$game_actors[$1.to_i].armor4_id].name : ''
- end
- end
- message_text.gsub!(/\\[Mm][Aa]\[([\d]+)\]/) do
- load_data("Data/MapInfos.rxdata")[$1.to_i].name
- end
- # 頭像
- message_text.gsub!(/\\[Ll][Ss]\[([\w_\-]+)\]/) do
- next if record[3][0] > 0
- record[3] = @messagecharacter_wsword.refresh(1, $1)
- @messagecharacter_wsword.visible = true
- @cursor_width[0] = record[3][1] ; @cursor_width[1] -= record[3][2]
- ''
- end
- # 頭像,並上面加上名稱
- message_text.gsub!(/\\[Ll][Ss][Uu]\[([\w_\-]+)\,([\w_\-]+)\]/) do
- next if record[3][0] > 0
- record[3] = @messagecharacter_wsword.refresh(2, $1, $2)
- @messagecharacter_wsword.visible = true
- @cursor_width[0] = record[3][1] ; @cursor_width[1] -= record[3][2]
- ''
- end
- # 頭像,並下面加上名稱
- message_text.gsub!(/\\[Ll][Ss][Dd]\[([\w_\-]+)\,([\w_\-]+)\]/) do
- next if record[3][0] > 0
- record[3] = @messagecharacter_wsword.refresh(3, $1, $2)
- @messagecharacter_wsword.visible = true
- @cursor_width[0] = record[3][1] ; @cursor_width[1] -= record[3][2]
- ''
- end
- @messagecharacter_wsword.visible = false if record[3][0] == 0
- message_text.gsub!(/\\[Gg][Vv]/) { $game_party.gold }
- message_text.gsub!(/\\[Pp]/) { '' }
- message_text.gsub!(/\\[Bb][Rr]/) { "\n" }
- message_text.gsub!(/\\[Cc]\[([\d]+)\]/) { "\001[#{$1}]" }
- message_text.gsub!(/\\[Gg]/) { "\002" }
- message_text.gsub!(/\\\.\[([\d]+)\]/) { "\003[#{$1}]" }
- message_text.gsub!(/\\\!/) { "\004" }
- message_text.gsub!(/\\>/) { "\005" }
- message_text.gsub!(/\\[Mm]\[([\d]+)\]/) { "\006[#{$1}]" }
- message_text.gsub!(/\\[Cc][Rr]\[([\d]+)\,([\d]+)\,([\d]+)\]/) { "\007[#{$1},#{$2},#{$3}]" }
- message_text.gsub!(/\\\^\[([\d]+)\]/) { "\010[#{$1}]" }
- message_text.gsub!(/\\[Xx][Nn]/) { "\011" }
- message_text.gsub!(/\\[Ss][Ee]\[([\w_\-]+)\]/) { "\016[#{$1}]" }
- message_text.gsub!(/\\[Ss][Ee]\[([\w_\-]+)\,(\d+)\,(\d+)\]/) { "\017[#{$1},#{$2},#{$3}]" }
- message_text.gsub!(/\\[Ss][Ee][Xx]/) { "\037" }
- message_text.gsub!(/\\[Ss][Ss]\[(\d+)\]/) { "\020[#{$1}]" }
- message_text.gsub!(/\\[Ss][Xx]/) { "\021" }
- message_text.gsub!(/\\[Ii]\[([\w_\-]+)\]/) { "\022[#{$1}]" }
- message_text.gsub!(/\\[Ff][Nn]\[([\w_\-]+)\]/) { "\023[#{$1}]" }
- message_text.gsub!(/\\[Ff][Ss]\[(\d+)\]/) { "\024[#{$1}]" }
- message_text.gsub!(/\\[Ff][Bb]/) { "\025" }
- message_text.gsub!(/\\[Ff][Ii]/) { "\026" }
- message_text.gsub!(/\\[Ff]_/) { "\032" }
- message_text.gsub!(/\\[Ff]\-/) { "\033" }
- message_text.gsub!(/\\[Ff][Hh]/) { "\034" }
- message_text.gsub!(/\\[Ff]/) { "\027" }
- message_text.gsub!(/\\[Cc][Uu]\[(\d+)\,(\d+)\,(\d+)\]/) { "\030[#{$1},#{$2},#{$3}]" }
- message_text.gsub!(/\\[Hh][Rr]/) { "\031" }
- message_text.gsub!(/\\[Cc][Bb]\[(\d+)\,(\d+)\,(\d+)\]/) { "\035[#{$1},#{$2},#{$3}]" }
- message_text.gsub!(/\\[Ss][Hh]\[(\d+)\]/) { "\042[#{$1}]" }
- #message_text.gsub!(/ /) { "\034" }
- #○ 執行控制碼功能
- while ((c = message_text.slice!(/./m)) != nil)
- record[6] = self.contents.font.size + 10
- case c
- when "\n" # 換行
- if record[2] > 0 # 有無效換行標誌的場合
- record[2] -= 1
- next
- end
- x = 0 and y += record[6]
- next
- when "\001" # 換色
- message_text.sub!(/\[(\d+)\]/, '')
- self.contents.font.color = text_color($1.to_i)
- @record[0] = nil
- next
- when "\002" # 顯示金錢窗口
- if @gold_window == nil
- @gold_window = Window_Gold.new
- @gold_window.x = 560 - @gold_window.width
- if $game_temp.in_battle
- @gold_window.y = 192
- else
- @gold_window.y = self.y >= 128 ? 32 : 384
- end
- @gold_window.opacity = self.opacity
- @gold_window.back_opacity = self.back_opacity
- end
- next
- when "\003" # 等待
- message_text.sub!(/\[(\d+)\]/, '')
- for i in 1..$1.to_i
- Graphics.update
- end
- when "\004" # 等待按鍵
- loop do
- Graphics.update
- Input.update
- if Input.trigger?(Input::C)
- break
- end
- end
- Graphics.update
- Input.update
- when "\005" # 瞬間顯示內容
- record[0] = true
- when "\006" # 變更打字效果
- message_text.sub!(/\[(\d+)\]/, '')
- $game_system.swordM_rate = $1.to_i
- when "\007" # 變更自定顏色
- message_text.sub!(/\[(\d+),(\d+),(\d+)\]/, '')
- self.contents.font.color = Color.new($1.to_i, $2.to_i, $3.to_i)
- @record[0] = nil
- next
- when "\010" # 自動確定
- message_text.sub!(/\[(\d+)\]/, '')
- @wait_count = $1.to_i
- when "\011" # 無視換行
- record[2] += 1
- next
- when "\016" # 演奏SE(預設)
- message_text.sub!(/\[([\w_\-]+)\]/, '')
- next unless (FileTest.exist?('Audio/SE/' + $1) or (not record[0]))
- Audio.me_play('Audio/SE/' + $1, SWORD_MESS_SEVP[0], SWORD_MESS_SEVP[1])
- next
- when "\017" # 演奏SE(自定)
- message_text.sub!(/\[([\w_\-]+)\,(\d+)\,(\d+)\]/, '')
- next unless (FileTest.exist?('Audio/SE/' + $1) or (not record[0]))
- Audio.me_play('Audio/SE/' + $1, $2.to_i, $3.to_i)
- next
- when "\037" # 停止SE
- Audio.me_stop
- next
- when "\020" # 開啟開關隱藏
- message_text.sub!(/\[(\d+)\]/, '')
- i = 0 # 執行次數
- loop do
- i += 1
- if record[4][i] == nil # 檢查是否是空值
- $game_switches[$1.to_i] ? record[4][i] = false : record[4][i] = true
- break
- end
- end
- when "\021" # 中斷開關隱藏
- record[4].delete(record[4].keys.sort[record[4].size - 1])
- next
- when "\022" # 顯示圖示
- a = $game_system.swordM_WidthHeight[0] - Font.default_size - 32 - record[3][1]
- message_text.sub!(/\[([\w_\-]+)\]/, '')
- record[5] = Bitmap.new('Graphics/Icons/' + $1) rescue next
- when "\023" # 變更字體
- message_text.sub!(/\[([\w_\-]+)\]/, '')
- self.contents.font.name = [$1] if Font.exist?($1)
- next
- when "\024" # 變更文字大小
- message_text.sub!(/\[(\d+)\]/, '')
- self.contents.font.size = $1.to_i
- record[6] = $1.to_i + 10
- next
- when "\025" # 變更為粗體
- self.contents.font.bold = (not self.contents.font.bold)
- next
- when "\026" # 變更為斜體
- self.contents.font.italic = (not self.contents.font.italic)
- next
- when "\027" # 變回預設
- self.contents.font.name = Font.exist?(SWORD_MESS_NAME) ?
- SWORD_MESS_NAME : Font.default_name
- self.contents.font.size = SWORD_MESS_SIZE == 0 ?
- Font.default_size : SWORD_MESS_SIZE
- self.contents.font.bold = SWORD_MESS_BOIT[0] == 0 ?
- Font.default_bold : SWORD_MESS_BOIT[0]
- self.contents.font.italic = SWORD_MESS_BOIT[1] == 0 ?
- Font.default_italic : SWORD_MESS_BOIT[1]
- color = SWORD_MESS_COLO
- self.contents.font.color = Color.new(color[0], color[1], color[2])
- @record = [nil, false, false, false, nil]
- next
- when "\030" # 文字顏色上下漸變
- message_text.sub!(/\[(\d+)\,(\d+)\,(\d+)\]/, '')
- @record[0] = [self.contents.font.color.red, self.contents.font.color.green,
- self.contents.font.color.blue, $1.to_i, $2.to_i, $3.to_i]
- when "\031" # 分隔線
- a= $game_system.swordM_WidthHeight[0] - Font.default_size - 32 - record[3][1]
- if @record[0] # 漸層處理
- self.contents.fill_rect(x + 16 + record[3][1], y + self.contents.font.size / 2 - 1, a - x, 1,
- self.contents.font.color)
- self.contents.fill_rect(x + 16 + record[3][1], y + self.contents.font.size / 2, a - x, 1,
- Color.new(@record[0][3], @record[0][4], @record[0][5]))
- else # 一般處理
- self.contents.fill_rect(x+16+record[3][1], y+(self.contents.font.size + 10)/2 - 1,a - x, 2,
- self.contents.font.color)
- end
- y += self.contents.font.size + 10 and x = 0
- next
- when "\032" # 底線
- @record[1] = (not @record[1])
- next
- when "\033" # 刪除線
- @record[2] = (not @record[2])
- next
- when "\034" # 陰影
- @record[3] = (not @record[3])
- next
- when "\035" # 底色
- message_text.sub!(/\[(\d+)\,(\d+)\,(\d+)\]/, '')
- @record[4] = [$1.to_i, $2.to_i, $3.to_i]
- next
- when "\036" # 顯示「\」
- c = "\\"
- when "\042" # 震動
- message_text.sub!(/\[(\d+)\]/, '')
- x = self.x ; y = self.y # 記憶位置
- for i in 1..$1.to_i / 2
- a = [rand(21) - 10, rand(21) - 10]
- self.x += a[0] ; @messagecharacter_wsword.x += a[0]
- self.y += a[1] ; @messagecharacter_wsword.y += a[1]
- Graphics.update
- self.x -= a[0] ; @messagecharacter_wsword.x -= a[0]
- self.y -= a[1] ; @messagecharacter_wsword.y -= a[1]
- Graphics.update
- end
- self.x = x ; self.y = y # 還原位置
- next
- end
- next if record[4].values.include?(true) # 如果是在開關隱藏有效的內容就隱藏
- #○ 打字效果
- if $game_system.swordM_rate != 0 and record[0] == false
- for i in 1..$game_system.swordM_rate
- Input.update
- if Input.press?(Input::C) and $game_system.swordM_key(true) and record[1]
- record[0] = true
- elsif record[1] == false
- record[1] = true
- record[1] = false if Input.press?(Input::C)
- end
- Graphics.update
- end
- end
- #○ 描繪圖示或是內容
- self.contents.fill_rect(x + 3 + record[3][1], y + self.contents.font.size ,
- self.contents.font.size, 1, self.contents.font.color) if @record[1] # 底線
- self.contents.fill_rect(x + 3 + record[3][1], y + (self.contents.font.size ) / 2,
- self.contents.font.size, 1, self.contents.font.color) if @record[2] # 刪除線
- # 底色處理
- if @record[4]
- self.contents.fill_rect(4 + x + record[3][1], y + 5, self.contents.font.size,
- self.contents.font.size, Color.new(@record[4][0], @record[4][1], @record[4][2]))
- end
- if record[5] # 存在圖示時
- self.contents.blt(4 + x + record[3][1], y, record[5], Rect.new(0, 0, 640, 480))
- x += record[5].width
- record[5] = nil
- else # 不存在圖示時
- if @record[0] # 文字上下漸層顏色
- color = []
- text_size = self.contents.font.size / 2
- for i in 1..text_size
- @record[0][0] == @record[0][3] ? color[0] = @record[0][0] :
- color[0] = (@record[0][0] - @record[0][3]) / text_size * i
- @record[0][1] == @record[0][4] ? color[1] = @record[0][1] :
- color[1] = (@record[0][1] - @record[0][4]) / text_size * i
- @record[0][2] == @record[0][5] ? color[2] = @record[0][2] :
- color[2] = (@record[0][2] - @record[0][5]) / text_size * i
- self.contents.font.color = Color.new(color[0], color[1], color[2])
- #self.contents.draw_text(4 + x + record[3][1], y + 4, 40, self.contents.font.size - 2 * i, c)
- self.contents.draw_text(4 + x + record[3][1], y, 40, self.contents.font.size - 2 * i, c)
- end
- else # 一般文字顏色
- if @record[3] # 加上陰影
- a = [self.contents.font.color.red, self.contents.font.color.green,
- self.contents.font.color.blue]
- self.contents.font.color = Color.new(0, 0, 0)
- self.contents.draw_text(4 + x + record[3][1] + 1, y + 1, 40, self.contents.font.size, c)
- self.contents.font.color = Color.new(a[0], a[1], a[2])
- end
- self.contents.draw_text(4 + x + record[3][1], y, 40, self.contents.font.size, c)
- end
- x += self.contents.text_size(c).width
- end
- # 強制換行換行判定
- a= $game_system.swordM_WidthHeight[0] - Font.default_size - 32 - record[3][1]
- y += record[6] if x >= a
- x = 0 if x >= a
- end
- Graphics.update
- @messagepause_wsword.visible = true if $game_temp.choice_max == 0
- #○ 選擇項的情況
- if $game_temp.choice_max > 0
- @item_max = $game_temp.choice_max
- self.active = true
- self.index = 0
- end
- #○ 輸入數值的情況
- if $game_temp.num_input_variable_id > 0
- @messagepause_wsword.visible = false
- digits_max = $game_temp.num_input_digits_max
- number = $game_variables[$game_temp.num_input_variable_id]
- @input_number_window = Window_InputNumber.new(digits_max)
- @input_number_window.number = number
- @input_number_window.x = self.x + 8 + record[3][1]
- @input_number_window.y = self.y + $game_temp.num_input_start * 32
- end
- $game_temp.message_text = nil
- end
- #-------------------------------------------------------------
- #● 更新
- def update
- super
- #○ 當設置文章時就顯示對話框
- if $game_temp.message_text != nil
- self.visible = true
- self.opacity += 28 while self.opacity < 160
- reset_window
- refresh
- @delay_input = 5 # 設置顯示完畢後的延遲時間
- Graphics.frame_reset
- @contents_showing = true
- end
- @contents_showing = nil if @contents_showing == false
- #○ 輸入數值的情況下
- if @input_number_window != nil
- @input_number_window.update
- if Input.trigger?(Input::C) # 送出輸入的數值
- $game_system.se_play($data_system.decision_se)
- $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number
- $game_map.need_refresh = true
- # 釋放輸入數值窗口
- @input_number_window.dispose
- @input_number_window = nil
- terminate_message
- end
- return
- end
- #○ 當對話框開啟的場合
- if @contents_showing
- @wait_count -= 1 if @wait_count > 0 # 自動確定
- @delay_input -= 1 if @delay_input > 0 # 全部顯示後的延遲
- @messagepause_wsword.refresh # 更新暫停標誌
- if Input.trigger?(Input::B) or @wait_count == 0 and $game_temp.choice_max != 0
- if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
- $game_system.se_play($data_system.cancel_se)
- $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
- terminate_message
- end
- elsif Input.trigger?(Input::C) and @delay_input == 0 or @wait_count == 0
- @wait_count = -1
- @contents_showing = false
- @messagepause_wsword.visible = false
- if $game_temp.choice_max > 0
- $game_system.se_play($data_system.decision_se)
- $game_temp.choice_proc.call(self.index)
- end
- terminate_message
- end
- end
- #○ 當無內容時關閉對話框
- if @contents_showing == nil and self.visible
- @messagecharacter_wsword.visible = false
- self.opacity -= 48
- if self.opacity == 0
- self.visible = false
- end
- return
- end
- end
- #-------------------------------------------------------------
- #● 更新游標
- def update_cursor_rect
- if @index >= 0
- n = $game_temp.choice_start + @index
- self.cursor_rect.set(@cursor_width[0], n * 32, @cursor_width[1], 32)
- else
- self.cursor_rect.empty
- end
- end
- end
- #=======================================
- #■ 執行事件命令的解釋器
- class Interpreter
- #● 顯示文章
- def command_101
- if $game_temp.message_text != nil
- return false
- end
- # 設定訊息結束後待機和返回呼叫標誌
- @message_waiting = true
- $game_temp.message_proc = Proc.new { @message_waiting = false }
- # 設定為 1 行
- $game_temp.message_text = @list[@index].parameters[0] + "\n"
- line_count = 1
- # 循環
- loop do
- $game_temp.message_text.gsub!(/\\\\/) { "\036" }
- # 插入記憶控制碼
- $game_temp.message_text.gsub!(/\\[Ll]\[([\d]+)\]/) do
- $game_system.swordM_save[$1.to_i] != nil ? $game_system.swordM_save[$1.to_i] : ''
- end
- $game_temp.message_text.gsub!(/\\\\/) { "\036" }
- # 判斷下一個事件
- if @list[@index+1].code == 401
- $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
- line_count += 1
- else
- if @list[@index+1].code == 102 # 下個事件為 [顯示選擇項] 的場合
- @index += 1
- $game_temp.choice_start = line_count
- setup_choices(@list[@index].parameters)
- elsif @list[@index+1].code == 103 # 下個事件為 [數值輸入處理] 的場合
- @index += 1
- $game_temp.num_input_start = line_count
- $game_temp.num_input_variable_id = @list[@index].parameters[0]
- $game_temp.num_input_digits_max = @list[@index].parameters[1]
- elsif @list[@index+1].code == 101 # 下個事件為 [顯示文章] 的場合
- if /\\[Pp]/ === $game_temp.message_text # 有「\P」控制碼的場合
- $game_temp.message_text.gsub!(/\\[Pp]/) { '' }
- @index += 1
- $game_temp.message_text += @list[@index].parameters[0] + "\n"
- next
- end
- end
- return true
- end
- @index += 1
- end
- end
- end
复制代码 麻煩大大們幫忙想想辦法了 自己弄了半天還是不知所以@@ |
评分
-
查看全部评分
|