Project1
标题:
关于“对话框出现选项”的脚本,有谁解释下怎么用?
[打印本页]
作者:
孤客
时间:
2013-2-9 03:45
标题:
关于“对话框出现选项”的脚本,有谁解释下怎么用?
本帖最后由 孤客 于 2013-2-9 21:27 编辑
最下面就是那个“对话框选项”的脚本了,用过的来说明一下吧???谢谢!
看得我头晕眼花了。。而且还是日文的我搞不懂啊。。
还有听说这脚本有图片素材的,谁能给我个啊?或者给我个工程范本吧,谢谢了!
#==============================================================================
# □ 選択肢の作成 (for VX Ace)
#------------------------------------------------------------------------------
# Version : 1_20120112
# by サリサ・タイクーン
# http://www.tycoon812.com/rgss/
#==============================================================================
#==============================================================================
# □ 素材スイッチ
#==============================================================================
$rgsslab = {} if $rgsslab == nil
$rgsslab["選択肢の作成"] = true
if $rgsslab["選択肢の作成"]
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module RGSSLAB end
module RGSSLAB::Choices_Make
#--------------------------------------------------------------------------
# ○ 選択肢の作成
# 記述方法:
# "呼び出しの文字列" => [ "選択肢",
# "選択肢",
# …,
# ],
# (最後の設定のみ、後ろのカンマを省略できます)
#
# 呼び出しの文字列は、その選択肢を呼び出す時のキーで
# イベントコマンドのスクリプトにおいて
# 「call_choices("呼び出しの文字列")」
# と言うように記述する為にあるものです。
#
# 選択肢の数の範囲は、2~7まで対応します。
#
# 尚、MODEが1の場合に限り、制御文字が扱えますが
# 扱う場合は、\を1つ多く記述して下さい。
#
# 例:\N[1]の場合→ \\N[1] と言う風にして下さい。
#--------------------------------------------------------------------------
SETTING = {
# 1:選択肢画面
"選択肢画面" => [
"1番目の選択肢",
"2番目の選択肢",
"3番目の選択肢",
"4番目の選択肢",
"5番目の選択肢",
"6番目の選択肢",
"7番目の選択肢",
],
###
}
end
# カスタマイズポイントは、ここまで
#==============================================================================
# □ RGSSLAB::Choices_Make [module]
#==============================================================================
module RGSSLAB::Choices_Make
#--------------------------------------------------------------------------
# ○ 素材設定用の定数定義
#--------------------------------------------------------------------------
MATERIAL_NAME = "選択肢の作成"
VERSION = 1
RELEASE = 20120112
end
#==============================================================================
# ■ Game_Interpreter [class]
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052_2 = RGSSLAB::Choices_Make
end
#==============================================================================
# □ Scene_Choices [class]
#==============================================================================
class Scene_Choices
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052_2 = RGSSLAB::Choices_Make
end
end
复制代码
#==============================================================================
# □ 選択肢画面 (for VX Ace)
#------------------------------------------------------------------------------
# Version : 2_20120223
# by サリサ・タイクーン
# http://www.tycoon812.com/rgss/
#==============================================================================
#==============================================================================
# □ 素材スイッチ
#==============================================================================
$rgsslab = {} if $rgsslab == nil
$rgsslab["選択肢画面"] = true
if $rgsslab["選択肢画面"]
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module RGSSLAB end
module RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ 結果内容を受け取る変数
# 受け取る変数を指定します。
#
# 注意:
# 変数拡張の変数に設定する事はできません。
#--------------------------------------------------------------------------
RESULT_VARIABLE = 3
#--------------------------------------------------------------------------
# ○ 選択肢の番号表示
# 0 : アラビア数字
# 1 : アルファベット
# 2 : ローマ数字
# 3 : 漢数字
#
# 上記以外は、0として扱われます。
#--------------------------------------------------------------------------
DRAW = 0
#--------------------------------------------------------------------------
# ○ モードの選択(New!)
# この素材のモードを選択します。
#
# 0 : 通常モード(制御文字は使えません)
# 1 : 制御文字モード
#
# これら以外の数値は0として扱われます。
#
# 使えない制御文字もありますので、ご注意下さい。
#--------------------------------------------------------------------------
MODE = 0
end
# カスタマイズポイントは、ここまで
#==============================================================================
# □ RGSSLAB::Scene_Choices [module]
#==============================================================================
module RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ 素材設定用の定数定義
#--------------------------------------------------------------------------
MATERIAL_NAME = "選択肢画面"
VERSION = 2
RELEASE = 20120223
#--------------------------------------------------------------------------
# ○ 操作エラー
# error_number : エラー番号
#--------------------------------------------------------------------------
def self.operate_error(error_number)
text = "【RGSS研究所:#{MATERIAL_NAME}】"
case error_number
when 1
msgbox_p text,
"呼び出しの文字列を記述して下さい。"
when 2
msgbox_p text,
"呼び出しの文字列:#{string}は存在しない為、実行できません。"
when 3
msgbox_p text,
"選択肢の数が2よりも小さい為、実行できません。"
when 4
msgbox_p text,
"選択肢の数が7よりも多い為、実行できません。"
end
end
end
#==============================================================================
# ■ Game_Interpreter [class]
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052 = RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ 選択肢画面の呼び出し
# index : 選択肢の種類
#--------------------------------------------------------------------------
def call_choices(index)
if index == nil
RGSSLAB_052.operate_error(1)
return
end
if RGSSLAB_052_2::SETTING[index] == nil
RGSSLAB_052.operate_error(2, index)
return
end
if RGSSLAB_052_2::SETTING[index].size < 2
RGSSLAB_052.operate_error(3)
return
end
if RGSSLAB_052_2::SETTING[index].size > 7
RGSSLAB_052.operate_error(4)
return
end
SceneManager.call(Scene_Choices)
SceneManager.scene.prepare(index)
Fiber.yield
end
end
#==============================================================================
# □ Window_Dummy_052 [class]
#==============================================================================
class Window_Dummy_052 < Window_Base
#--------------------------------------------------------------------------
# ○ オブジェクト初期化 [オーバーライド]
#--------------------------------------------------------------------------
def initialize
if $rgsslab["XP画面サイズ"]
super(48, 288, 544, 160)
else
super(0, 256, 544, 160)
end
end
end
#==============================================================================
# □ Window_Choices_Display [class]
#==============================================================================
class Window_Choices_Display < Window_Base
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052 = RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ オブジェクト初期化 [オーバーライド]
# text : 最初に描画させる選択肢の文字列
#--------------------------------------------------------------------------
def initialize(text = "")
if $rgsslab["XP画面サイズ"]
super(48, 288, 544, 80)
else
super(0, 256, 544, 80)
end
self.opacity = 0
refresh(text)
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
# text : 現在選択中の選択肢の文字列
#--------------------------------------------------------------------------
def refresh(text)
contents.clear
contents.font.color = normal_color
case RGSSLAB_052::MODE
when 0 ; contents.draw_text(4, 0, self.width - 40, 32, text)
when 1 ; draw_text_ex(4, 0, text)
else ; contents.draw_text(4, 0, self.width - 40, 32, text)
end
end
end
#==============================================================================
# □ Window_Label_Display [class]
#==============================================================================
class Window_Label_Display < Window_Selectable
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052 = RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ オブジェクト初期化 [オーバーライド]
# item_max : 候補数
#--------------------------------------------------------------------------
def initialize(item_max)
@item_max = item_max
if $rgsslab["XP画面サイズ"]
super(48, 368, 544, 80)
else
super(0, 336, 544, 80)
end
self.index = -1
self.opacity = 0
case RGSSLAB_052::DRAW
when 1 ; @label = ["A", "B", "C", "D", "E", "F", "G"]
when 2 ; @label = ["Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ"]
when 3 ; @label = ["一", "二", "三", "四", "五", "六", "七"]
else ; @label = ["1", "2", "3", "4", "5", "6", "7"]
end
refresh
end
#--------------------------------------------------------------------------
# ○ 桁数の取得 [オーバーライド]
#--------------------------------------------------------------------------
def col_max
return 7
end
#--------------------------------------------------------------------------
# ○ 項目数の取得 [オーバーライド]
#--------------------------------------------------------------------------
def item_max
@item_max
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ○ 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
rect = Rect.new(10 + index * 32, 0, 32, 32)
self.contents.draw_text(rect, @label[index])
end
#--------------------------------------------------------------------------
# ○ カーソルの矩形更新 [オーバーライド]
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(4 + @index * 32, 0, 32, 32)
end
end
end
#==============================================================================
# □ Scene_Choices [class]
#==============================================================================
class Scene_Choices < Scene_Base
#--------------------------------------------------------------------------
# ○ モジュールの設定
#--------------------------------------------------------------------------
RGSSLAB_052 = RGSSLAB::Scene_Choices
#--------------------------------------------------------------------------
# ○ 準備
# index : 選択肢の種類
#--------------------------------------------------------------------------
def prepare(index)
@index = RGSSLAB_052_2::SETTING[index]
@item_max = RGSSLAB_052_2::SETTING[index].size
end
#--------------------------------------------------------------------------
# ○ 開始処理 [オーバーライド]
#--------------------------------------------------------------------------
def start
super
create_spriteset
create_all_windows
end
#--------------------------------------------------------------------------
# ○ スプライトセットの作成
#--------------------------------------------------------------------------
def create_spriteset
@spriteset = Spriteset_Map.new
end
#--------------------------------------------------------------------------
# ○ 全ウィンドウの作成
#--------------------------------------------------------------------------
def create_all_windows
[url=home.php?mod=space&uid=37298]@Window[/url] = Window_Dummy_052.new
@choices_window = Window_Choices_Display.new(@index[0])
@label_window = Window_Label_Display.new(@item_max)
@label_window.index = 0
@label_window.active = true
end
#--------------------------------------------------------------------------
# ○ フレーム更新 [オーバーライド]
#--------------------------------------------------------------------------
def update
super
update_choices
update_input
end
#--------------------------------------------------------------------------
# ○ 選択肢の更新
#--------------------------------------------------------------------------
def update_choices
@choices_window.refresh(@index[@label_window.index])
end
#--------------------------------------------------------------------------
# ○ 入力
#--------------------------------------------------------------------------
def update_input
if Input.trigger?(:C)
Sound.play_ok
$game_variables[RGSSLAB_052::RESULT_VARIABLE] = @label_window.index + 1
return_scene
end
end
#--------------------------------------------------------------------------
# ○ 終了処理 [オーバーライド]
#--------------------------------------------------------------------------
def terminate
super
dispose_spriteset
end
#--------------------------------------------------------------------------
# ○ スプライトセットの解放
#--------------------------------------------------------------------------
def dispose_spriteset
@spriteset.dispose
end
end
end
复制代码
= =我发现这脚本后半段有问题啊。。
如图,那个【/url】后的部分。。。= =要怎么才能变正常啊。。
360软件小助手截图20130209212142.jpg
(309.97 KB, 下载次数: 20)
下载附件
保存到相册
2013-2-9 21:25 上传
作者:
布里蓝
时间:
2013-2-9 15:05
记得有工程下载的,你搜索下选项加强
作者:
tseyik
时间:
2013-2-9 18:34
【自定義點】
接收結果的變量
指定接收結果的變量。
顯示數字的選擇
0 : 阿拉伯數字
1 : 字母
2 : 罗马数字
3 : 中国数字
除了以上描述的那些,其他被视为0。
モードの選択
この素材のモードを選択します。
0 : 正常模式(控制字符不能使用)
1 : 控制字符模式
除了以上描述的那些,其他被视为0。
请注意,有些制御文字可能不能使用。
【選択肢の作成】
次に、選択肢の作成で選択肢を作ります。
(これがないと、選択肢画面は扱う事ができません)
有关编写,请参阅的内部的脚本。
【如何调用屏幕上的选择】
在事件中编辑,脚本中使用call_choices("選択肢")。
"選択肢"、す選択肢の作成で作った選択肢キーで。
接下来,根据自定義变量的値在条件分支选择指令,
因为完成后,屏幕上的选项,事件停止再次恢复
你不需要在每一种情况下完成事件。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1