赞 | 0 |
VIP | 8 |
好人卡 | 0 |
积分 | 1 |
经验 | 6835 |
最后登录 | 2018-2-5 |
在线时间 | 173 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 75
- 在线时间
- 173 小时
- 注册时间
- 2010-10-6
- 帖子
- 43
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
就是如何使任务在特定的开关打开后再出现?关闭后消失?
#==============================================================================
# ■ VXAce-RGSS3-4 クエストシステム [Ver.1.0.0] by Claimh
#------------------------------------------------------------------------------
#・クエスト(依頼)を受けて、イベントを進行するシステムを構築します
#・クエストはイベントから発生させるかギルドで依頼を受けることで発生
#・クエストリストで確認できる内容
# 現在進行中のクエスト、クリアしたクエスト、失敗したクエスト
#・クエストのランクは10段階。初期ランクは1
# 自分のランクが低い場合はギルドからの依頼は受けれない
#・ギルドで受けたクエストは基本的にギルドに報告することで完了となる
# (イベントから完了させることも可能)
#・ギルドで受けるクエストは表示状態がtrueになったら、受けることができる
#・【定義】よりも下のセクションに配置する必要があります
#------------------------------------------------------------------------------
#【クエスト名、依頼主、クエスト内容 で使える制御文字】
# \\n[n] : ID:nのアクター名
# \\e[n] : ID:nのエネミー名
# \\j[n] : ID:nのクラス名
# \\s[n] : ID:nのスキル名
# \\t[n] : ID:nのアイテム名
# \\w[n] : ID:nの武器名
# \\a[n] : ID:nの防具名
# \\m[n] : ID:nのマップ名
# \\q[n] : ID:nのクエスト名
#【クエスト内容 で使える制御文字】
# \\c[n] : 文字色変更
# \\+ : ボールド表示 開始/終了
# \\- : イタリック表示 開始/終了
# \\x[n] : X軸方向 n の場所から描画
# \\n : 改行
# \\p : 改ページ
#==============================================================================
module Quest
#==============================================================================
#【全般設定】
#==============================================================================
# 同時進行可能なクエスト数
# 初期状態にStGuildクラスを設定したクエストのみカウントする
# これを超えると、ギルドでの受付ができない
# イベントからのクエスト発生は可能
# nilにすると制限なし
MAX = nil
# クエスト成功時の音(BGMを止めたくなければSEで)
CLR_A_FILE = RPG::ME.new("Victory1")
# CLR_A_FILE = RPG::SE.new("Chime1")
# クエスト失敗時の音(BGMを止めたくなければSEで)
FAIL_A_FILE = RPG::ME.new("Gameover1")
# FAIL_A_FILE = RPG::SE.new("Buzzer1")
# ランクの表示
SHOW_RANK = true
# クエストのランク名称
RANK={1=>"G",2=>"F",3=>"E",4=>"D",5=>"C",6=>"B",7=>"A",8=>"A+",9=>"S",10=>"SS"}
# ランクごとの文字色
RANK_CLR = {
1 => Color.new(255, 255, 255, 128),
2 => Color.new(255, 255, 255, 255),
3 => Color.new(128, 255, 255, 255),
4 => Color.new(128, 128, 255, 255),
5 => Color.new(255, 255, 128, 255),
6 => Color.new(128, 255, 128, 255),
7 => Color.new(255, 128, 128, 255),
8 => Color.new(255, 255, 0, 255),
9 => Color.new(255, 0, 255, 255),
10 => Color.new(255, 0, 0, 255)
}
# 職業変更をが発生するクエストで経験値を引き継ぐ
CLASS_EXP = true
# クエストリストの種別(3種類まで自由選択 & 順序も自由)
# PLAYING : 進行中クエスト
# CLEAR : クリア済みクエスト
# FAIL : 失敗クエスト
QUEST_LIST = [PLAYING, CLEAR, FAIL] ## [PLAYING] -> 進捗中のみ表示
# クエストリストの表示名称
LIST_NAME = {
PLAYING => "任务进展",
CLEAR => "完成的任务",
FAIL => "失败任务"
}
# ギルドの種別(3種類まで自由選択 & 順序も自由)
# REPORT : クエストの報告
# SHOP : クエストを受ける
# EXIT : ギルドを出る
GUILD_LIST = [SHOP, REPORT, EXIT] ## [SHOP] -> クエスト受付のみ表示
# ギルドの種別の表示名称
GUILD_NAME = {
REPORT => "任务报告",
SHOP => "接受任务",
EXIT => "离开公会"
}
#==============================================================================
#【クエスト設定】 ※クエストIDに0は使えません
#==============================================================================
QUEST = {
=begin
[説明]
クエストごとの設定をします。
Rank、StXXX、CondXXX、RsltXXX、Swの詳細(何かが使えるか、引数など)については
【定義】のセクションをよく見てください
[記述形式]
クエストID => {
# クエスト名,
# 依頼主(""なら表示なし),
# ランク Rank.new(quest, r_next, r_down),
# 初期状態 StXXX.new,
# 前提条件[CondXXX.new, …],
# クリア条件[CondXXX.new, …],
# 報酬[RsltXXX.new, …],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
# クエスト内容
},
=end
#=begin ## 設定サンプル[START]
#-----------------------------------------------------------------------------
1 => [
# クエスト名
"缴纳金币",
# 依頼主(""なら表示なし),
"冒险者公会",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(1, 0), # 成功時にランク上昇
# 初期状態 StXXX.new,
StGuild.new, # イベントによるクエスト
# 前提条件[CondXXX.new, …],
[], # 条件なし
# クリア条件[CondXXX.new, …],
[CondMoney.new(1000)], # 条件なし
# 報酬[RsltXXX.new, …],
[RsltItem.new(20, 1),
RsltItem.new(1, 5)],
# 成功時:アイテム[1]×5
# 开关操作Sw.new(play, clear, fail),
Sw.new(1, 2, 3), # 開始時SW[1]、成功時SW[2]、失敗時SW[3]
# 任务内容
"冒险者公会现在急需大量金币,请上交1000金币"
#"\\c[5]にしのどうくつ\\c[0]にいくの\\n"+
#"こわいまものがいっぱいでちょっとこわいけど、"+
#"\\c[3]ママ\\c[0]のだいすきな\\c[4]\\+きょうりゅうのたまご\\+\\c[0]"+
#"をとってきて、びっくりさせるんだ!」\\n\\n"+
#"という置き手紙を残して、行方が分からなくなった娘をどうか探してください!"
],
#-----------------------------------------------------------------------------
2 => [
# クエスト名,
"漆黒の狼",
# 依頼主(""なら表示なし),
"妖精シェリー",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(1, 0), # 成功時にランク上昇
# 初期状態 StXXX.new,
StEv.new, # イベントによるクエスト
# 前提条件[CondXXX.new, …],
[CondQuestT.new(1)], # クエスト[1]が完了(成功)していること
# クリア条件[CondXXX.new, …],
[], # 条件なし
# 報酬[RsltXXX.new, …],
[RsltMoney.new(100), # 成功時:100G
RsltLevel.new(0, 1), # 成功時:全員 Lv+1
RsltCmnEvP.new(1)], # 失敗時:コモンイベント[1]
# スイッチ操作Sw.new(play, clear, fail),
Sw.new(4, 5, 6), # 開始時SW[4]、成功時SW[5]、失敗時SW[6]
# クエスト内容
"深夜、妖精の村で\\c[3]フェンリル\\c[0]という狼が暴れまわっています\\n"+
"私たち妖精族には\\c[3]フェンリル\\c[0]に立ち向かう力はありません\\n"+
"どうか、\\c[3]フェンリル\\c[0]を討伐し、"+
"私たちの村に平穏な夜を取り戻してください!!\\p"+
"\\c[3]フェンリル\\c[0]は漆黒の毛並みと真紅の眼を持ち、"+
"その体は通常の狼の3倍もあるそうです\\n"+
"それだけではなく、爪や牙は鋭く、口からは炎までも放つ恐ろしい狼です\\n\\n"+
"\\c[3]フェンリル\\c[0]を倒せる程の強者を探しています"
],
#-----------------------------------------------------------------------------
3 => [
# クエスト名,
"香草的采集任务",
# 依頼主(""なら表示なし),
"米修大婶",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(1, 0), # 成功時排名上昇
# 初期状態 StXXX.new,
StGuild.new(true), # 行会的任务,初期表示OFF
# 前提条件[CondXXX.new, …],
[], # 条件なし
# クリア条件[CondXXX.new, …],
[CondItem.new(20, 5)], #道具[ 1 ]×2拥有
# 報酬[RsltXXX.new, …],
[RsltMoney.new(500), # 成功時:500G
RsltItem.new(2), # 成功時:アイテム[2]
RsltCmnEv.new(1), # 成功時:コモンイベント[1]
RsltLevel.new(0, 1, false)], # 成功時:全員Lv+1、報酬欄には表示しない
# スイッチ操作Sw.new(play, clear, fail),
Sw.new, # SW操作しない
# クエスト内容
"游击公会 紫苑之馆厨房的米修大婶委托。"+
""
],
#-----------------------------------------------------------------------------
4 => [
# クエスト名,
"初級試練@2",
# 依頼主(""なら表示なし),
"ギルドマスター",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(4, 0), # 成功時にランク+1
# 初期状態 StXXX.new,
StGuild.new(true), # ギルドのクエスト、初期表示ON
# 前提条件[CondXXX.new, …],
[CondQuestT.new(2), # クエスト[2]が完了(成功)していること
CondQuestT.new(3)], # クエスト[3]が完了(成功)していること
# クリア条件[CondXXX.new, …],
[CondItem.new(1, 2), # アイテム[1]×2、クリア時に減らす
CondEv.new("話かける")], # イベントからquest_clear/quest_failをする必要あり、進捗欄の表示名称"話しかける"
# 報酬[RsltXXX.new, …],
[RsltMoney.new(1000)], # 成功時:1000G
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new, # SW操作しない
# クエスト内容
"この程度な仕事"
],
#-----------------------------------------------------------------------------
5 => [
# クエスト名,
"中級試練@1",
# 依頼主(""なら表示なし),
"ギルドマスター",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(5, 0), # 成功時にランク+1
# 初期状態 StXXX.new,
StGuild.new, # ギルドのクエスト、初期表示OFF
# 前提条件[CondXXX.new, …],
[CondQuestT.new(4)], # クエスト[4]が完了(成功)していること
# クリア条件[CondXXX.new, …],
[CondWeapon.new(1, 2, false)], # 武器[1]×2、クリア時に減らさない
# 報酬[RsltXXX.new, …],
[RsltMoney.new(2500)], # 成功時:2500G
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new, # SW操作しない
# クエスト内容
"出来て当然の仕事"
],
#-----------------------------------------------------------------------------
6 => [
# クエスト名,
"中級試練@2",
# 依頼主(""なら表示なし),
"ギルドマスター",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(6, 0),
# 初期状態 StXXX.new,
StGuild.new,
# 前提条件[CondXXX.new, …],
[CondQuestT.new(5)],
# クリア条件[CondXXX.new, …],
[CondArmor.new(1, 2),
CondEv.new("話しかける")],
# 報酬[RsltXXX.new, …],
[RsltMoney.new(5000)],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new,
# クエスト内容
"ようやく一人前な仕事"
],
#-----------------------------------------------------------------------------
7 => [
# クエスト名,
"上級試練@1",
# 依頼主(""なら表示なし),
"ギルドマスター",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(7, 0),
# 初期状態 StXXX.new,
StGuild.new,
# 前提条件[CondXXX.new, …],
[CondQuestT.new(6)],
# クリア条件[CondXXX.new, …],
[CondMoney.new(50)],
# 報酬[RsltXXX.new, …],
[RsltMoney.new(10000)],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new,
# クエスト内容
"お前に任せたっ仕事"
],
#-----------------------------------------------------------------------------
8 => [
# クエスト名,
"上級試練@2",
# 依頼主(""なら表示なし),
"ギルドマスター",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(8, 0),
# 初期状態 StXXX.new,
StGuild.new,
# 前提条件[CondXXX.new, …],
[CondQuestT.new(7)],
# クリア条件[CondXXX.new, …],
[CondMoney.new(500),
CondEv.new("話しかける")],
# 報酬[RsltXXX.new, …],
[RsltMoney.new(25000)],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new,
# クエスト内容
"お前じゃなきゃできないっ仕事"
],
#-----------------------------------------------------------------------------
9 => [
# クエスト名,
"神への冒涜",
# 依頼主(""なら表示なし),
"マフート",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(9, 0, 0), # 成功時:ランク+1、失敗時:ランク-1
# 初期状態 StXXX.new,
StEv.new,
# 前提条件[CondXXX.new, …],
[],
# クリア条件[CondXXX.new, …],
[],
# 報酬[RsltXXX.new, …],
[RsltMoney.new(50000)],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new(21, 22, 23),
# クエスト内容
"神\\c[3]アヌビス\\c[0]が冥界の使徒を引き連れ、地上界へ攻めこんでくるらしい\\n"+
"冥界の力は強大、このままでは地上界は崩壊してしまうのは確実・・・\\n\\n"+
"神\\c[3]アヌビス\\c[0]の野望を阻止し、この地上界を守ってくれ!!"
],
#-----------------------------------------------------------------------------
10 => [
# クエスト名,
"深紅の魔王",
# 依頼主(""なら表示なし),
"水棲ウンディーネ",
# ランク Rank.new(quest, r_next, r_down),
Rank.new(10, nil, 1), # 成功時:変動なし、失敗時:ランク1へダウン
# 初期状態 StXXX.new,
StEv.new,
# 前提条件[CondXXX.new, …],
[CondQuestT.new(9)],
# クリア条件[CondXXX.new, …],
[],
# 報酬[RsltXXX.new, …],
[RsltMoney.new(100000)],
# スイッチ操作Sw.new(play_sw, clear_sw, fail_sw),
Sw.new(24, 25, 26),
# クエスト内容
"魔王\\c[3]ディアボロス\\c[0]を倒してください"
],
}
#==============================================================================
#【イベント追記用 自由記述欄】
# イベントスクリプトで入力できる文字数に制限があるので
# ここに固定値を用意しておくことで長い文章も入力可能になる
#==============================================================================
#=begin ## 設定サンプル[START]
Q_1_CLEAR = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"娘は無事かえってきました\\nありがとうございます"
Q_1_FAIL = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"・・・私から言うことは何もありません"
Q_2_CLEAR = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"\\c[3]フェンリル\\c[0]を討伐して頂き、ありがとうございました\\n"+
"これで私たちの村にも平穏な日々が帰ってきます"
Q_2_FAIL = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"村が・・・\\nはやり、人間なんかに助けを求めたのが間違いだったのですね・・・"
Q_9_CLEAR = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"神\\c[3]アヌビス\\c[0]を倒すことはできなかったが、冥界からの侵略は阻止することができた\\n"+
"天界を代表し、心から礼を言おう"
Q_9_FAIL = "\\p\\c[1]【クエスト結果】\\c[0]\\n"+
"やはり人間風情には荷が重かったか・・・\\nこの地上界はもう終わりだ"
#=end ## 設定サンプル[END]
#==============================================================================
# ■ スクリプトによる条件チェック(上級者向け)
# 前提条件、クリア条件でCondScriptクラスを設定した場合のみ設定必要です
#==============================================================================
class Condition
#--------------------------------------------------------------------------
# ● 条件チェック
#【説明】
# 条件に適合しているか?
#【引数】
# id : 設定時に入れたid
# num : 設定時に入れたnum
#【戻り値】
# true : 条件に適合
# false : 条件に不適合
#--------------------------------------------------------------------------
def script_clear?(id, num)
=begin # 例
case id
when 0 # パーティー人数チェック
return ($game_party.members.size >= num) # 人数がnum以上なら条件適合
when 1 # パーティー人数チェック
return ($game_party.members.size <= num) # 人数がnum以下なら条件適合
end
=end
return true
end
#--------------------------------------------------------------------------
# ● 条件不適合時のメッセージ
#【説明】
# 条件に適合していないかった場合のメッセージ
#【引数】
# type : 前提条件未適合(0) or クリア条件未適合(1)
# id : 設定時に入れたid
# num : 設定時に入れたnum
#【戻り値】
# メッセージ表示する文章
#--------------------------------------------------------------------------
def script_cause(type, id, num)
=begin # 例
case id
when 0 # パーティー人数チェック
return "パーティー人数が\\nあと#{(num - $game_party.members.size)}人、足りません"
when 1 # パーティー人数チェック
return "パーティー人数を\\n#{num}人以下にする必要があります"
end
=end
return (type==0 ? "開始" : "クリア") + "条件不满足"
end
end
end
|
|