對話框腳本相關
2 posters
對話框腳本相關
這應該不算問題, 就類別上應該屬於求腳本(倒
但是不知道這種東西要怎麼問
我現在只會調整視窗大小、增加選單選項、還有透明度處理而已Orz
嗯...我想做一個對話腳本, 內容如下 :
↓
1.生成一個新的訊息欄, 該欄位為顯示角色名字用
2.對話框內生成臉圖, 對話框後顯示半身圖
3.訊息顯示的方式同2k3
4.訊息顯示途中可變換臉圖&半身圖
5.文字可中途放大或縮小
6.對話skip的功能
7.一行內能容納的字數擴張到整個畫面的橫幅, 如配合臉圖顯示即自動換行
8.對話途中按下Esc可開啟存檔選單(可無視)
↑
如果太過強人所難的話, 請問能否告訴我這些相關是在哪設定或新增@@...
另外...可以請教圖片生成的原理嗎?
總覺得這部分比重佔很大
還有就是一行裡的字數限制是在哪裡做調整?
以上, 麻煩您了, 愚零先生(跪
但是不知道這種東西要怎麼問
我現在只會調整視窗大小、增加選單選項、還有透明度處理而已Orz
嗯...我想做一個對話腳本, 內容如下 :
↓
1.生成一個新的訊息欄, 該欄位為顯示角色名字用
2.對話框內生成臉圖, 對話框後顯示半身圖
3.訊息顯示的方式同2k3
4.訊息顯示途中可變換臉圖&半身圖
5.文字可中途放大或縮小
6.對話skip的功能
7.一行內能容納的字數擴張到整個畫面的橫幅, 如配合臉圖顯示即自動換行
↑
如果太過強人所難的話, 請問能否告訴我這些相關是在哪設定或新增@@...
另外...可以請教圖片生成的原理嗎?
總覺得這部分比重佔很大
還有就是一行裡的字數限制是在哪裡做調整?
以上, 麻煩您了, 愚零先生(跪
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
TO Q—S.T.
噢....不需要這樣,你去R界向所謂的眾神人跪吧XD,OOXX不搞這套的@@
第一個問題就是求腳本了,不過因為對話框的東西很難搞而且幾乎不研究(啥?
因為在下認為對話控制並不是遊戲的重點(其實是弱項Orz....
所以你叫我完全幫您寫是不大可能
不過您可以找一個功能差不多的現成腳本依照您需要追加的功能在下幫忙修改(給個菜市場連結和註明要求就行了)
圖片生成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.picture(圖檔名)
你可以設定@sprite的x.y.z透明度,旋轉角度等等參數
圖片釋放
@sprite.bitmap.dispose
@sprite.dispose
上面是直接生成的例子
如果要在視窗裡生成用
w1 = RPG::Cache.picture(圖檔名)
self.contents.blt(x, y, w1, Rect.new(0, 0, 圖寬, 圖高))
其實都是一些死背的東西毫無難度可言@@
一行裡的字數在Window_Message裡本來就沒限制
假設視窗寬480,那他能顯示的最大寬範圍就是480-32=448
一行文字累積的數量超過448就顯示不出來了
如果你用self.contents.font.size = n的方式將字調小就能全部顯示
但是你要求的效果是會做文字縮放,所以基本上滿複雜的
噢....不需要這樣,你去R界向所謂的眾神人跪吧XD,OOXX不搞這套的@@
第一個問題就是求腳本了,不過因為對話框的東西很難搞而且幾乎不研究(啥?
因為在下認為對話控制並不是遊戲的重點(其實是弱項Orz....
所以你叫我完全幫您寫是不大可能
不過您可以找一個功能差不多的現成腳本依照您需要追加的功能在下幫忙修改(給個菜市場連結和註明要求就行了)
圖片生成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.picture(圖檔名)
你可以設定@sprite的x.y.z透明度,旋轉角度等等參數
圖片釋放
@sprite.bitmap.dispose
@sprite.dispose
上面是直接生成的例子
如果要在視窗裡生成用
w1 = RPG::Cache.picture(圖檔名)
self.contents.blt(x, y, w1, Rect.new(0, 0, 圖寬, 圖高))
其實都是一些死背的東西毫無難度可言@@
一行裡的字數在Window_Message裡本來就沒限制
假設視窗寬480,那他能顯示的最大寬範圍就是480-32=448
一行文字累積的數量超過448就顯示不出來了
如果你用self.contents.font.size = n的方式將字調小就能全部顯示
但是你要求的效果是會做文字縮放,所以基本上滿複雜的
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
腳本連結 http://members.jcom.home.ne.jp/cogwheel/script/face_message.html
這是欲使用的腳本內容http://members.jcom.home.ne.jp/cogwheel/script/face_message.txt
要和這個http://members.jcom.home.ne.jp/cogwheel/script/face_base.txt並用
並以此追加生成姓名框&顯示半身圖
然後這是有生成姓名框的對話腳本..., 用這腳本的半身圖似乎會和上面起衝突...
http://www.66rpg.com/htm/news29.htm
生成姓名框的部分 :
# 开放姓名窗口
if @name_window != nil
@name_window.dispose
@name_window = nil
end
# 显示人物姓名
name_window_set = false
if (/\\[Mm]([0-9]*?)\[(.+?)\]/.match(text)) != nil
name_window_set = true
if $1 == ""
color = 0
else
color = $1.to_i
end
if color >= 0 and color <= 7
name_color = color
end
name_text = $2
text.sub!(/\\[Mm]([0-9]*?)\[(.*?)\]/) { "" }
end
我將對話框的橫幅擴張到最大的結果會變成這樣Orz↓
以上, 不好意思麻煩了@@
這是欲使用的腳本內容http://members.jcom.home.ne.jp/cogwheel/script/face_message.txt
要和這個http://members.jcom.home.ne.jp/cogwheel/script/face_base.txt並用
並以此追加生成姓名框&顯示半身圖
然後這是有生成姓名框的對話腳本..., 用這腳本的半身圖似乎會和上面起衝突...
http://www.66rpg.com/htm/news29.htm
生成姓名框的部分 :
# 开放姓名窗口
if @name_window != nil
@name_window.dispose
@name_window = nil
end
# 显示人物姓名
name_window_set = false
if (/\\[Mm]([0-9]*?)\[(.+?)\]/.match(text)) != nil
name_window_set = true
if $1 == ""
color = 0
else
color = $1.to_i
end
if color >= 0 and color <= 7
name_color = color
end
name_text = $2
text.sub!(/\\[Mm]([0-9]*?)\[(.*?)\]/) { "" }
end
愚零鬥武多 寫到:
一行裡的字數在Window_Message裡本來就沒限制
假設視窗寬480,那他能顯示的最大寬範圍就是480-32=448
一行文字累積的數量超過448就顯示不出來了
如果你用self.contents.font.size = n的方式將字調小就能全部顯示
但是你要求的效果是會做文字縮放,所以基本上滿複雜的
我將對話框的橫幅擴張到最大的結果會變成這樣Orz↓
以上, 不好意思麻煩了@@
先謝過了@@愚零鬥武多 寫到:嗯,收到
因為最近比較忙,會找時間幫您設置修改的
Q—S.T. 在 周日 五月 18, 2008 9:46 pm 作了第 1 次修改
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
1.改版後追加代碼說明
對話顯示半身圖(讀取Graphics\Battlers裡的圖檔)
\x[戰鬥圖像名,圖像X座標,圖像Y座標]
例:
◆文字:\X[薇薇安,120,80]
顯示文字時圖像會顯示在畫面座標(120,80)的位置
◆文字:\D
消去圖像
顯示姓名窗口
\M[顏色代碼0~9,要顯示的名字]
例:
◆文字:\M[2,薇薇安]
顯示文字時會顯示姓名窗口,姓名為紅字(薇薇安)
2.其他追加功能
加大對話框可以顯示編輯一整行的所有文字功能
基本功能都維持不變
但66版的衝突超級大因此不做整合
3.腳本設置方法
在Main上方插入以下兩個腳本
http://members.jcom.home.ne.jp/cogwheel/script/face_message.txt
http://members.jcom.home.ne.jp/cogwheel/script/face_base.txt
最後在Main上方再插入以下所有內容(也就是說此段腳本務必插在在上面兩個腳本下方才會有效果)
腳本長度超過論壇限制所以分成兩段
對話顯示半身圖(讀取Graphics\Battlers裡的圖檔)
\x[戰鬥圖像名,圖像X座標,圖像Y座標]
例:
◆文字:\X[薇薇安,120,80]
顯示文字時圖像會顯示在畫面座標(120,80)的位置
◆文字:\D
消去圖像
顯示姓名窗口
\M[顏色代碼0~9,要顯示的名字]
例:
◆文字:\M[2,薇薇安]
顯示文字時會顯示姓名窗口,姓名為紅字(薇薇安)
2.其他追加功能
加大對話框可以顯示編輯一整行的所有文字功能
基本功能都維持不變
但66版的衝突超級大因此不做整合
3.腳本設置方法
在Main上方插入以下兩個腳本
http://members.jcom.home.ne.jp/cogwheel/script/face_message.txt
http://members.jcom.home.ne.jp/cogwheel/script/face_base.txt
最後在Main上方再插入以下所有內容(也就是說此段腳本務必插在在上面兩個腳本下方才會有效果)
腳本長度超過論壇限制所以分成兩段
- 代碼:
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
# 文章表示に使うメッセージウィンドウです。
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(64, 304, 512, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
# 顔グラフィックの作成
@face = Sprite.new(self.viewport)
@face.bitmap = Bitmap.new(10, 10)
@face.visible = false
# 身體圖像做成
@body = Sprite.new
@body.bitmap = Bitmap.new(10, 10)
@body.visible = false
@text = ""
@fade_in = false
@fade_out = false
@contents_showing = false
@contents_showed = false
@cursor_width = 0
self.active = false
self.index = -1
# 履歴ウィンドウの作成
@h_window = Window.new(self.viewport)
@h_window.x = 77
@h_window.y = 64
@h_window.z = 10001
@h_window.width = 486
@h_window.height = 352
@h_window.opacity = 0
@h_window.back_opacity = 160
@h_window.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
@h_window.active = false
@h_window.visible = false
@c_h = 0
# メッセージスピードの初期化
unless $game_player.message_speed.is_a?(Numeric)
$game_player.message_speed = 1
end
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
@face.dispose
@body.bitmap.dispose
@body.dispose
if @input_number_window != nil
@input_number_window.dispose
end
@h_window.dispose
super
end
#--------------------------------------------------------------------------
# ● メッセージ終了処理
#--------------------------------------------------------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
# 表示中フラグをクリア
@contents_showing = false
@contents_showed = false
# メッセージ コールバックを呼ぶ
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
# 文章、選択肢、数値入力に関する変数をクリア
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
# ゴールドウィンドウを開放
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
if @name_window != nil
@name_window.dispose
@name_window = nil
end
if @name_airtext != nil
@name_airtext.dispose
@name_airtext = nil
end
end
#--------------------------------------------------------------------------
# ● テキスト初期化設定
#--------------------------------------------------------------------------
def text_initialize
# メッセージウィンドウ初期化設定
@text = $game_temp.message_text
@back_up = @text.clone
@rubi = ""
@speed = $game_player.message_speed
font_size = 22
@wait = 0
@push_enter = false
@contents_close = false
@cursor_width = 0
# 制御文字処理
begin
last_text = @text.clone
@text.gsub!(/\\[Vv]\[(\d+)\]/) { $game_variables[$1.to_i] }
end until @text == last_text
@text.gsub!(/\\[Nn]\[(\d+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 便宜上、"\\\\" を "\000" に変換
@text.gsub!(/\\\\/) { "\000" }
# "\\C" を "\001" に、"\\G" を "\002" に変換
@text.gsub!(/\\[Cc]\[(\d+)\]/) { "\001[#{$1}]" }
@text.gsub!(/\\[Gg]/) { "\002" }
# 制御文字をそれぞれバックスラッシュ記法に変換
@text.gsub!(/\\[Ss]\[(\d+)\]/) { "\003[#{$1}]" }
@text.gsub!(/\\\./) { "\004" }
@text.gsub!(/\\\;/) { "\005" }
@text.gsub!(/\\\|/) { "\006" }
@text.gsub!(/\\\!/) { "\010" }
@text.gsub!(/\\\>/) { "\016" }
@text.gsub!(/\\\</) { "\017" }
@text.gsub!(/\\\^/) { "\020" }
@text.gsub!(/\\[Ii]/) { "\021" }
@text.gsub!(/\\[Ll][Tt]/) { "\022" }
@text.gsub!(/\\[Cc][Tt]/) { "\023" }
@text.gsub!(/\\[Rr][Tt]/) { "\024" }
@text.gsub!(/\\[Ff]\[(\d+)\]/) { "\025[#{$1}]" }
@text.gsub!(/\\[Aa]\[(\-*\d+),?(\d*?)\]/) { "\026[#{$1},0#{$2}]" }
@text.gsub!(/\\[Rr]\[(.+?),(.+?)\]/) { "\027[#{$1},#{$2}]" }
@text.gsub!(/\\[Oo]\[(.+?)\]/) { "\030[#{$1}]" }
@text.gsub!(/\<[Bb]\>/) { "\031" }
@text.gsub!(/\<\/[Bb]\>/) { "\033" }
@text.gsub!(/\<[Ii]\>/) { "\034" }
@text.gsub!(/\<\/[Ii]\>/) { "\035" }
@text.gsub!(/\\[Ss][Tt]/) { "" }
@text.gsub!(/\\[Nn]/) { "\n" }
@text.gsub!(/\\[Pp](.*?)\n/) { $1 }
# 追加半身圖
@text.gsub!(/\\[Xx]\[(.+?),(.+?),(.+?)\]/) { "\036[#{$1},#{$2},#{$3}]" }
# 追加名字窗口
@text.gsub!(/\\[Mm]\[(\-*\d+),(.+?)\]/) { "\037[#{$1},#{$2}]" }
# 清除圖像
@text.gsub!(/\\[Dd]/) { "\d" }
@x = @i = 4
@fi = @y = @py = 0
# 最初の行がルビ付きの場合、字下げを行う
@text = "\n" if @text == ""
text = @text[/^.*?\n/]
r_height = 0
while ((c = text.slice!(/./m)) != nil)
# \F[n] の場合、フォントサイズの変更
if c == "\025"
text.sub!(/\[([0-9]+)\]/, "")
font_size = $1.to_i
next
end
# ルビが存在した場合
if c == "\027"
text.sub!(/\[(.+?),(.+?)\]/, "")
# ルビのテキストサイズを格納
r_height = [r_height, font_size].max
next
end
end
# 字下げの設定
@py = [(r_height + [(r_height + 66) / 8, r_height * 2 / 3].min - 5) -
max_height(@text), 0].max
# 選択肢なら字下げを行う
if $game_temp.choice_start == 0
@x = 4
end
# "\\E[n]" がある場合、イベントnに吹き出し表示
unless self.contents.disposed?
self.contents.dispose
end
# 吹き出し表示の場合
if @text.gsub!(/\\[Ee]\[(\-*?\d+),?(\d*?)\]/) { "" }
# メッセージの幅、高さの読み込み
@event = $game_system.map_interpreter.get_character($1.to_i)
self.contents = Bitmap.new(10, 10)
self.contents.font.size = font_size
self.width = text_width(@text) + 32
self.height = [text_height(@text) + 32 + @py, 32].max
# 数値入力の場合、高さと幅の調整
if $game_temp.num_input_variable_id > 0
dummy_bitmap = Bitmap.new(32, 32)
i_width = dummy_bitmap.text_size("0").width + 8
dummy_bitmap.dispose
self.width=[self.width,i_width*$game_temp.num_input_digits_max+48].max
self.height += 32
# 高さが数値分しかない場合、数値入力を繰り上げる
$game_temp.num_input_start -= 1 if self.height == 64
end
@w_pos = $2.to_i
window_position
self.contents.dispose
else
@event = nil
self.x = 64
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # 上
self.y = 16
when 1 # 中
self.y = 160
when 2 # 下
self.y = 304
end
end
self.width = 512
self.height = 160
end
# ウィンドウ内容の初期化
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.size = font_size
self.contents.font.color = normal_color
self.contents.font.bold = false
self.contents.font.italic = false
# メッセージ履歴に文章を挿入
history_write(@text.clone)
# 第一行目のフォントサイズが基準フォントサイズと異なる場合の体裁を整える
@h = @c_h = max_height(@text) - self.contents.font.size
@c_w = 0
end
end
愚零鬥武多 在 周一 9月 15, 2008 4:36 pm 作了第 7 次修改
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
- 代碼:
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# ● 改行
#--------------------------------------------------------------------------
def new_line
# 選択肢ならカーソルの幅を更新
if @h_window.active == false and @y >= $game_temp.choice_start
@cursor_width = [@cursor_width, @x].max
end
# y に 1 を加算
@y += 1
# 次の行の最大テキスト高さ + ルビ分の字下げ
height = max_height(@text)
@h += height + [(height + 66) / 8, height * 2 / 3].min - 1
@x = @fi + @i
# 選択肢なら字下げを行う
if @h_window.active == false and @y >= $game_temp.choice_start
@x = @fi + @i
# ルビ付きの場合、字下げを行う
text = @text[/^.*?\n/]
font_size = self.contents.font.size
r_height = 0
while text != "" and text != nil
c = text.slice!(/./m)
# \F[n] の場合、フォントサイズの変更
if c == "\025"
text.sub!(/\[([0-9]+)\]/, "")
font_size = $1.to_i
next
end
# ルビが存在した場合
if c == "\027"
text.sub!(/\[(.+?),(.+?)\]/, "")
# ルビのテキストサイズを格納
r_height = [r_height, font_size].max
next
end
end
# 字下げの設定
@py = [(r_height + [(r_height + 66) / 8, r_height * 2 / 3].min - 5) -
max_height(@text), 0].max
end
# 次の文字へ
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
if @body_visible
@body.opacity += 24 if @body.opacity < 254
else
@body.opacity -= 48 if @body.opacity > 0
end
# メッセージ履歴の呼び出し
if @h_window.active == false and (@contents_showed or
$game_system.map_interpreter.running? == false) and
(Input.trigger?(Input::L) or Input.trigger?(Input::R)) and
not $game_player.message_history.empty?
history_start
end
if @h_window.active
if @h_window.opacity < 255
@h_window.opacity += 24
@h_window.contents_opacity += 24
@bar.opacity += 24
return
end
history_update
return
end
# メッセージ履歴消去中の場合
if @h_window.opacity > 0
# 透過度を増やす
@h_window.opacity -= 48
@h_window.contents_opacity -= 48
@bar.opacity -= 48
# メッセージ履歴が完全透過状態になった場合
if @h_window.opacity == 0
@h_window.visible = false
@h_window.contents.dispose
@bar.bitmap.dispose
@bar.dispose
if @contents_showed == false
$game_temp.message_window_showing = false
end
end
return
end
super
# 吹き出し表示の場合、ウィンドウ位置設定
window_position if @event != nil
# フェードインの場合
if @fade_in
self.contents_opacity += 24
@face.opacity += 24 if FADE
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
end
# 数値入力中の場合
if @input_number_window != nil
@input_number_window.update
# 決定
if Input.trigger?(Input::C)
if @push_enter
self.pause = false
@push_enter = false
@contents_showed = false
return
end
$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 and @contents_showed == false
if (ENTER and Input.trigger?(Input::C)) or
(SHIFT >= ($DEBUG ? 0 : 1) and Input.press?(Input::SHIFT))
@wait = 0
end
if @wait > 0
@wait -= 1
return if @wait > 0
end
refresh
return
end
# メッセージ表示終了の場合
if @contents_showed
# 選択肢の表示中でなければポーズサインを表示
if $game_temp.choice_max == 0
self.pause = true
end
# キャンセル
if Input.trigger?(Input::B)
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
end
# 決定
if Input.trigger?(Input::C)
if @push_enter
self.pause = false
@push_enter = false
@contents_showed = false
return
end
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
if SHIFT == 2 and Input.press?(Input::SHIFT) and
$game_temp.choice_max == 0
if @push_enter
self.pause = false
@push_enter = false
@contents_showed = false
return
end
terminate_message
end
if @contents_close and $game_temp.choice_max == 0
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
return
end
# フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
text_initialize
self.visible = true
self.contents_opacity = 0
@face.bitmap = nil
@face.visible = true
if FADE
@face.opacity = 0
else
@face.opacity = 255
end
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
refresh
Graphics.frame_reset
return
end
# 表示すべきメッセージがないが、ウィンドウが可視状態の場合
if self.visible
@fade_out = true
self.opacity -= 48
@face.opacity -= 48
if self.opacity == 0
self.visible = false
@face.visible = false
@body.visible = false if @body_visible == false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
#--------------------------------------------------------------------------
# ● 制御文字処理
#--------------------------------------------------------------------------
def control(c)
# \\ の場合
if c == "\000"
# 本来の文字に戻す
c = "\\"
return true
end
# \C[n] の場合
if c == "\001"
c_change
return false
end
# \G の場合
if c == "\002"
gold
return false
end
# \S[n] の場合
if c == "\003"
@text.sub!(/\[(\d+)\]/, "")
@speed = $game_player.message_speed * $1.to_i
return false
end
# \. の場合
if c == "\004"
@wait = 10
c.sub!("\004", "")
return true
end
# \: の場合
if c == "\005"
@wait = 20
c.sub!("\005", "")
return true
end
# \| の場合
if c == "\006"
@wait = 40
c.sub!("\006", "")
return true
end
# \! の場合
if c == "\010"
self.pause = true
@push_enter = true
@contents_showed = true
c.sub!("\010", "")
return true
end
# \> の場合
if c == "\016"
@temp_speed = @speed
@speed = 0
return false
end
# \< の場合
if c == "\017"
@speed = @temp_speed
c.sub!("\017", "")
return true
end
# \^ の場合
if c == "\020"
@contents_close = true
return false
end
# \I の場合
if c == "\021"
@i = @x - @fi
if @y >= $game_temp.choice_start
@i = @x - @fi - 8
end
return false
end
# \LT の場合
if c == "\022"
@i = @x = @fi + 4
return false
end
# \CT の場合
if c == "\023"
@text[(/(.+?)\n/)]
width = max_width($1)[0]
@x = (@fi + self.contents.width - width) / 2
return false
end
# \RT の場合
if c == "\024"
@text[(/(.+?)\n/)]
width = max_width($1)[0]
@x = self.contents.width - width - 4
return false
end
# \F[n] の場合
if c == "\025"
s_change
return false
end
# \A[n,m] の場合
if c == "\026"
@text.sub!(/\[(\-*\d+),(\d+)\]/, "")
actor($1.to_i, $2.to_i)
return false
end
# \R[n,m] の場合
if c == "\027"
@text.sub!(/\[(.+?),(.+?)\]/) { rubi_set($1, $2) }
return false
end
# \O[i] の場合
if c == "\030"
@text.sub!(/\[(.+?)\]/, "")
letter($1.to_i)
return false
end
# <B> の場合
if c == "\031"
self.contents.font.bold = true
return false
end
# </B> の場合
if c == "\033"
self.contents.font.bold = false
return false
end
# <I> の場合
if c == "\034"
self.contents.font.italic = true
return false
end
# </I> の場合
if c == "\035"
self.contents.font.italic = false
return false
end
# \X[n,m,o] の場合
if c == "\036"
@text.sub!(/\[(.+?),(.+?),(.+?)\]/, "")
show_body($1,$2,$3)
return false
end
# \M[n,m] の場合
if c == "\037"
@text.sub!(/\[(\-*\d+),(.+?)\]/, "")
show_name($1,$2)
return false
end
# \* の場合
if c == "\d"
c.sub!("\d", "")
@body_visible = false
return false
end
# 改行文字の場合
if c == "\n"
new_line
return false
end
return true
end
#--------------------------------------------------------------------------
# ● 半身圖表示
#--------------------------------------------------------------------------
def show_body(name,x=0,y=0)
@body_visible = true
@body.bitmap.clear
@body.bitmap = Bitmap.new("Graphics/Battlers/"+name)
@body.opacity = 0
@body.x = x.to_i
@body.y = y.to_i
@body.z = self.z - 1
@body.visible = true
end
#--------------------------------------------------------------------------
# ● 姓名表示
#--------------------------------------------------------------------------
def show_name(name_color,name_text)
color = name_color.to_i
text = name_text.to_s
w = text.size * 11
xn = self.x
yn = self.y >= 40 ? self.y - 40 : self.y + self.height
@name_window = Window_Name.new(xn, yn, w)
@name_window.z = self.z + 1
@name_airtext = Window_AirText.new(xn-16, yn + 8, text, color, w+32)
@name_airtext.z = self.z + 2
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = @c_h + @py - ($game_temp.choice_max - 1) * 32
cw = self.width-32-@fi-8
self.cursor_rect.set(@fi+4, n + @index * 32, cw, 32)
else
self.cursor_rect.empty
end
end
end
#==============================================================================
# ■ Window_Name
#==============================================================================
class Window_Name < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize(x, y, width)
super(x, y, width, 40)
self.contents = nil
self.back_opacity = 160
end
end
#==============================================================================
# ■ Window_AirText
#==============================================================================
class Window_AirText < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize(x, y, designate_text, color, cw)
super(x, y-16, cw, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.size = 22
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text, 1)
end
end
愚零鬥武多 在 周一 9月 15, 2008 4:37 pm 作了第 5 次修改
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
萬分感激...
不過請問有沒有方法在讓指令不會影響到對話顯示的情況使用?
呃...也就是說忽視"顯示對話"裡面的框架, 是採用實際設定的對話框大小來換行
還有半身圖有辦法自行決定何時消失嗎?每顯示一次對話半身圖就閃一次總覺得怪怪的@@...
不過請問有沒有方法在讓指令不會影響到對話顯示的情況使用?
呃...也就是說忽視"顯示對話"裡面的框架, 是採用實際設定的對話框大小來換行
還有半身圖有辦法自行決定何時消失嗎?每顯示一次對話半身圖就閃一次總覺得怪怪的@@...
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
Q—S.T. 寫到:萬分感激...
不過請問有沒有方法在讓指令不會影響到對話顯示的情況使用?
呃...也就是說忽視"顯示對話"裡面的框架, 是採用實際設定的對話框大小來換行
還有半身圖有辦法自行決定何時消失嗎?每顯示一次對話半身圖就閃一次總覺得怪怪的@@...
第一個問題我完全看不懂(倒....
第二個問題既然這樣你乾脆就在顯示文字之前用內建指令顯示圖片放入你想要的圖片
不想要顯示就直接讓圖片消失這樣最好控制而且又自然
顯示圖片指令強加在對話控制裡就一定會有這種瞬間切換的現象(就連齒車之城的對話腳本顯示臉圖也是如此)
雖然也可以在文字裡加控制碼作手動消除的動作,但一般都是人物說完對話才會有消失的情形,所以加了沒意義
就算加了,如果輸入文字後忘記輸入消除控制碼圖片就會消不掉....消不掉就變成程式上的一個bug
因此這樣乾脆就用圖片來作顯示就好了
(因為顯示圖片z的深度是低於對話框,為了解決臉圖的z深度要高於對話框的問題才有使用腳本的必要)
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
愚零鬥武多 寫到:
第一個問題我完全看不懂(倒....
第二個問題既然這樣你乾脆就在顯示文字之前用內建指令顯示圖片放入你想要的圖片
不想要顯示就直接讓圖片消失這樣最好控制而且又自然
顯示圖片指令強加在對話控制裡就一定會有這種瞬間切換的現象(就連齒車之城的對話腳本顯示臉圖也是如此)
雖然也可以在文字裡加控制碼作手動消除的動作,但一般都是人物說完對話才會有消失的情形,所以加了沒意義
就算加了,如果輸入文字後忘記輸入消除控制碼圖片就會消不掉....消不掉就變成程式上的一個bug
因此這樣乾脆就用圖片來作顯示就好了
第一個問題如下圖所示
召喚獸精華區有提到似乎可以調整文字的換行, 但是沒相關教學Orz
第二個問題
其實原本是想要臉圖和半身圖一起綁定, 臉圖有變半身圖就跟著改變這樣...
既然如此...可以請教一下對話顯示中途 改變/消除圖片顯示 的語法嗎@@?
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
第一個問題齒車之城的腳本本來就有這功能了(太混了吧?藍藍路)
使用\p即可防止換行
第二個問題有在上兩樓作修改rgss,腳本請再重複製即可
使用\D消去半身圖
但不用此命令圖片會一直存在,除非開選單
使用\p即可防止換行
第二個問題有在上兩樓作修改rgss,腳本請再重複製即可
使用\D消去半身圖
但不用此命令圖片會一直存在,除非開選單
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
再次感謝...愚零鬥武多 寫到:第一個問題齒車之城的腳本本來就有這功能了(太混了吧?藍藍路)
使用\p即可防止換行
第二個問題有在上兩樓作修改rgss,腳本請再重複製即可
使用\D消去半身圖
但不用此命令圖片會一直存在,除非開選單
還有就是對不起,
我應該養成先閱讀使用說明書的好習慣. 給您造成無謂的困擾...|||Orz
------------題外------------
藍藍路變成我的綽號了嗎(; ゚д゚)
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
Q—S.T. 寫到:
再次感謝...
還有就是對不起,
我應該養成先閱讀使用說明書的好習慣. 給您造成無謂的困擾...|||Orz
------------題外------------
藍藍路變成我的綽號了嗎(; ゚д゚)
to Q—S.T
嗯,不會,舉手之勞而已@@
話說我也藉由您這次的發問大致了解到菜市場對話框是在搞啥了(以前根本連摸都沒摸過)
所以解答問題對在下而言也是有好處的
------------題外------------
藍藍路?
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
嗯,樓上腳本又修改過,麻煩再試一次吧@@
之前的是全部整段對話講完才會消失,就算插在文章中間也一樣
很抱歉沒有兼顧到您的需求Orz
麥當勞叔叔真是多才多藝啊,還是個格鬥高手?
誠心建議
您乾脆改名為藍藍路好了,知名度會大增喔XD
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
不會不會, 我才是一直在麻煩您Orz愚零鬥武多 寫到:
嗯,樓上腳本又修改過,麻煩再試一次吧@@
之前的是全部整段對話講完才會消失,就算插在文章中間也一樣
很抱歉沒有兼顧到您的需求Orz
麥當勞叔叔真是多才多藝啊,還是個格鬥高手?
誠心建議
您乾脆改名為藍藍路好了,知名度會大增喔XD
這個....請問可以再問一個問題嗎, 該怎麼控制圖片(或者視窗)的顯現速度@@?
因為您設定過後的腳本圖片是一瞬間就冒出來, 我希望是和原本的顯示方式一樣(從透明漸變到不透明)
============================
我充其量不過是信徒而已, 無法和本尊並駕齊驅的@@
所以基本上我是來傳教...(誤
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
回復: 對話框腳本相關
Q—S.T. 寫到:
不會不會, 我才是一直在麻煩您Orz
這個....請問可以再問一個問題嗎, 該怎麼控制圖片(或者視窗)的顯現速度@@?
因為您設定過後的腳本圖片是一瞬間就冒出來, 我希望是和原本的顯示方式一樣(從透明漸變到不透明)
============================
我充其量不過是信徒而已, 無法和本尊並駕齊驅的@@
所以基本上我是來傳教...(誤
樓上腳本已修改過圖片顯示消失淡入淡出的效果,麻煩再試一次吧
老實說藍藍路洗腦對在下是完全無效的(啥?
因為我本來就有這種傾向,屬於不正常人類研究中心的一份子
只有正常人才會受影響XD
愚零鬥武多- 不正常人類研究中心自慰隊員
- 文章數 : 421
注冊日期 : 2008-04-06
回復: 對話框腳本相關
不好意思...把舊文推上來...Orz
現在又有兩個問題
1.
只要字體放大就會讓姓名框延長,請問有沒有辦法讓兩者不會互相影響(試過固定姓名框大小但是名字不會置中...Orz)
還有就是這腳本字體是"一起"放大的,有辦法只放大其中一小段字嗎?
2.
出現選項時,如果使用臉圖就會被選項的光棒蓋掉
請問可以調整成2003這種形式嗎?↓
現在又有兩個問題
1.
只要字體放大就會讓姓名框延長,請問有沒有辦法讓兩者不會互相影響(試過固定姓名框大小但是名字不會置中...Orz)
還有就是這腳本字體是"一起"放大的,有辦法只放大其中一小段字嗎?
2.
出現選項時,如果使用臉圖就會被選項的光棒蓋掉
請問可以調整成2003這種形式嗎?↓
Q—S.T.- 精通豆漿拳的正義漢
- 文章數 : 326
注冊日期 : 2008-04-21
這個論壇的權限:
您 無法 在這個版面回復文章
|
|