このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

口上作成について

必要なモノ

・Succubus Rhapsodia
・サクラエディタ(.rbファイルを編集できるものならなんでも可)
↑Ruby用の構文ハイライトを適用したい場合はこちら[外部リンク]
構文ハイライトってなんぞ?って人への説明[外部リンク]
・愛と根気と適度な休眠

作成に際して

最初に、Modフォルダ内にある”羊のメモ”を良く読んでおくこと。
特に口上記述用タグのとこ。

+  羊のメモ口上用タグ抜き出し

各種ファイル説明

口上ファイルは\Succubus Rhapsodia\System\talkの中にあるので、そこから改変したいものをコピーして、\Succubus Rhapsodia\Mod\Mod_Talkフォルダに貼り付けて書き換えると良いです。あとでエラー起こした時に泣きます。

改変したいキャラクターのフォルダを開くと山のようにファイルがあると思います。
テキストファイル名にキャラクター名と性格、色(OFEか否か)が書いてあります。

C_BattleEvent.rb(ベッドイン時や空腹戦闘中、契約時など)
C_MapChat.rb(マップでZキーなどを使った時)
C_MapEvent.rb(精の献上、空腹戦闘開始など)
C_Talk.rb(戦闘中にスキル”トーク”を使った時の反応)
F_Attack.rb(戦闘中に追撃が発動した時)
F_Attack_bedin.rb(ホームのベッドでの戦闘中に追撃が発動した時)
F_Crisis.rb(クライシスに状態変化した時)
F_Ecstasy.rb(相手が絶頂した時)
F_Ecstasy_Hold.rb(ホールドスキル中に絶頂した時)
F_Ecstasy_Self.rb(絶頂させられた時)
F_Resist_hold.rb(ホールドスキルが発動した時)
F_Resist_undress.rb(服を脱がすスキルが発動した時)
M_Attack.rb
M_Attack_bedin.rb
M_Crisis.rb
M_Ecstasy.rb
M_Ecstasy_Hold.rb
M_Ecstasy_Self.rb
M_Resist_hold.rb
M_Resist_undress.rb

F_は女(夢魔)に対しての反応、M_は男(ロウラット)に対しての反応になります。

羊のメモに載っていなかった情報

+  ランダム表現タグの中身
+  ゲーム内での基本的な表現
+  性格ごとに口上書き換えるのめんどいし、コピペしちゃおうって人への注意点

制作するときのポイント

・サキュバス等の既に完成されているデータと比較しつつ作業をすると、色々と楽
・手間がかかるけど、一つのファイルを完成させる度に起動テストをしてみる
↑一気にまとめて作成した場合、SyntaxErrorが出た時に大変
・SyntaxError時はセリフをきちんと””で囲んでいるか、when 1等の条件式を間違えて消していないかなどを確認してみる。この時元のデータがあると楽。
・”大切な人”とか”寵愛”のところは完成度をより求めないかぎりはまるまるコピーで良いかも。
・attackとattack_bedinとかところどころコピーが効く。いちいち全部書いてるとすごい手間かかっちゃう。
・改行とか♡とかをいちいち一つずつ\nとか書くのは面倒だから、ユーザー辞書に登録するなり、一旦そのまま♡、とか○、とかに置き換えて最後に置換するって手もある。

文章が長すぎる場合などは、

のように記述すれば、会話ウィンドウを二回に分けて表示することができます。

同様の条件でもランダムで台詞を変化させたい場合は

のように記述することで可能です。
(上記の場合は60%でパターンA、40%でパターンBの台詞が表示されます)

一例

サキュバスのM_Attack.rbの最初の方の文章を例にいくつか説明を致します。

+  基礎口上

基礎口上とは、後に出てくる tx["tx1"]="" などの、口上が設定されていない場合に使われるものです。出来る限り、どこの部位を攻めている等ではなく、応用が効くようなセリフにすることをおすすめします。

最初の2行は、「お互いのステータスが通常時」で「未設定口上を参照」の追撃時に用いられます。
if $game_variables[17] > 50 #パターンB という記述に関しては上のほうをご確認ください。

3行目のこの文章は「サキュバスがクライシス状態」で、「未設定口上を参照」されたときに使われるセリフです。しかし、この場合は行の最初に#マークが使われているため、読み込まれません。よってサキュバスがクライシスの時に未設定口上が参照された場合は、上の通常時と同じものが使用されます。多分。

こちらも最初の2行と同じように、$game_variables[17]を使って文章が複数設定されていますが、今回は2つではなく3つに分けられています。おそらく、このように>○の数字を調整することで、最大99通りまで分けることが出来ます。(未検証+出来たとしても読み込みが重くなりそう)
また、「対象がクライシス」という条件と、「乱数が○以下」という2つの条件を一度に設定する場合、 if $msg.t_target.crisis? と if $game_variables[17] > ○ を重ねるのではなく、 if $msg.t_target.crisis? and $game_variables[17] > ○というように記述しましょう。

ここの文章については、理解できていない人は一切手を付けないようにしましょう。読み込み時の設定等を行っています。たぶん。

+  キス

基本的には基礎口上のところと一緒ですが、#○○等の説明がついてません。多分つけ忘れだと思います。
こういう場合は、文章最後の条件式を見比べながら、どの状態を指しているのか確認しましょう。
例えば「キス」で「サキュバスがクライシス」の場合は

のどちらかになります。

+  手攻め

この場合、下4行は行頭に#がつけられているため、読み込まれません。そのため、手攻めの際は最初の2行のみが読み込まれます。自分で下4行を記述した場合は行頭の#を消しましょう。

そして、最初の2行ですがセリフが一切記述されていません。
この場合、セリフは一番最初に設定した基礎口上から状況に応じて使用されます。
例えば「手攻め」で「対象が絶頂中」の場合は

が使用されます。

Ecstasy口上の"怒"について

Ecstasy口上にはif $msg.t_enemy.ecstasy_emotion == "怒"という表現が文末についていることがあります。
これらは夢魔が絶頂する、させる時にどのような感情を持つか?という分岐で、スクリプトTalk_Sys Baseによって決められており、性格、種族によって傾向が変わります。

+  絶頂時感情の傾向

例:"虚勢"の"ワーウルフ"の場合、"虚勢"なので"怒"が3つ、"喜"が1つ配置され、"ワーウルフ"なので"喜"が1つ、"怒"が5つ配置されます。
この中からランダムで絶頂時の感情が選ばれるので、"虚勢"の"ワーウルフ"は10回中2回は"喜"、8回は"怒"となります。

先述のif $game_variables[17] >XX でも確率での分岐は可能ですが、これを使う利点は
1.夢魔毎にすでに設定されているので、XXの割合を考える必要がない。
2.ホールドしているアクターが他の夢魔に絶頂させられる際、感情によって地の分が変わるので、それに連動した口上を作れる。
の二つです。

2について例を出すと、その夢魔がアクセプト状態の主人公が別の夢魔に絶頂させられる際、"喜"なら地の文は「#{coop_leader}に微笑み」"怒"なら「#{coop_leader}に負けじと」のような文が表示されますので、"喜"ならその夢魔と協調するような、"怒"ならその夢魔に対抗するような口上にすると、よりよいものになるかと思います。

相手の胸のサイズや年齢によってのセリフ変更

ミミックのF_Attackを開くと

といった記述があるのがわかります。
これは、相手の胸のサイズによって応じたセリフを用いる、というものです。
各キャラクターごとに固有の胸のサイズと、年齢の数値を持っています。
胸のサイズを利用する場合は $data_SDB[$msg.t_target.class_id].bust_size <= ○(<=が付いているのでこのサイズ以下、ということになります)
年齢を利用する場合は $data_SDB[$msg.t_target.class_id].years_type <= ○
となります。

+  各キャラクターの胸のサイズと年齢

ちなみに、
・years_type:目安 1:12以下, 2:15以下, 3:20以下, 4:29以下, 5:30以上
・bust_size :目安 1:A以下, 2:B, 3:C, 4:D, 5:E以上
だそうです。

各キャラクターの一人称、二人称変更

・サキュバスの例
キャラクターの一人称、二人称は全てSuccubus_Rhapsodia\System\talk\00_System内のBase_○○.rbで決められています。
今回はサキュバスなので、Base_10を開きます。

+  Base_10

対味方戦闘時でないとき、というのがエネミーとして出てきた時。対味方戦の場合、というのがベッドの時になります。

改めて見てみると対味方戦闘時出ない場合のところに
@target = "キミ" #主人公への二人称
という記述があるのがわかると思います。これはそのまま、戦闘時の主人公の呼び方になります。
主人公の呼び方を「君」にしたい場合は @target = "キミ" #主人公への二人称 から @target = "君" #主人公への二人称 に書き換えます。

そして一人称ですが、ここには一切の記載がありません。そこで、自分で付け足しましょう。今回は一人称を「アタシ」にさせようと思います。
先ほど書き換えたところの上の行にでも
@myname = "アタシ"
と書き足して下さい。これで、#{myname}を読み上げる時に「アタシ」と言うようになります。

特殊な記法として、"夢魔名""主人公名"はそれぞれその夢魔の名前、主人公の名前に置換されます。
例えば主人公の名前がロウラットの時、@target = "主人公名様"とすると、その夢魔は主人公のことを"ロウラット様"と呼ぶようになります。

これで、敵対戦闘時の一人称及び二人称の書き換えが終了しました。
次にベッドでの呼称を書き換えようと思います。
こちらには、一切記載がないので同じく書き足すことになります。

から

にします。これでベッドの時も同じように「君」「アタシ」と言うようになります。お疲れ様でした。

また、RPGツクールXPをお持ちの方はゲーム内スクリプトRPG::SDB(種族値・設定用)からでも
夢魔の一人称および仲間になった後の主人公への二人称を設定することが可能です。

現在不具合報告がある箇所

・各キャラクターの睾丸愛撫セリフが出ない

  • 「if $msg.tag == "対象:睾丸" #袋攻め」から「if $msg.at_parts == "対象:睾丸" #袋攻め」に書き換えたら動作確認

・主人公追撃時(パートナー追撃は未確認)のキス、ヒップ等の専用口上が使われない

  • Ver1.10にて修正済み

・絶頂時のセリフが専用以外が出る場合がある

  • 汎用の中身をif文で分岐させることで可 when 1 #初撃 if $msg.at_type == "キッス" tx["tx1"] = "口上" else tx["tx1"] = "口上" end

・undress(脱衣)で「if $game_variables[17] > 50 #パターンB」での追加口上が使われない

  • Ver1.10にて修正済み?(ただ未確認だっただけかもしれないです・・・)

・MapEvent(精の献上)で「if $game_variables[17] > 50 #パターンB」での追加口上が使われない

  • 戦闘以外では$game_variables[17]は使用できないようです。MapChatの汎用口上と同様に間にms.push(tx)を挟んで格納していくことでパターンを増やすことが可能です。

公式更新履歴(口上のみ)

Ver1.12
・アルラウネ、ナイトメアの一部口上の記述ミスを修正。
・ギャングコマンダーの口上の記述ミスなどを修正、一部口上を追加。
・多数の夢魔の口上ファイルの脱字を修正。
・羊のメモを更新。

コメント

最新の10件を表示しています。 コメントページを参照

  • 口上書いてると、前にどっかで読んだ「エロを作るのは禁欲的な行為である」ってのを実感する -- 2016-09-09 (金) 10:46:25
  • M_Attack_bedin編集してて気が付いたんだけど、420行から始まる「★追撃:主人公への追撃を行う口上群」って、「主人が追撃した時」の口上だよね? コレ「主人公への」ってなってるけど -- 2016-09-16 (金) 05:25:00
    • 主人公からの追撃って700いくつとかからじゃない? 自分のは編集して変わっちゃってるから正確にはわかんないけど。420行あたりのは攻撃部位の違いなハズ -- 2016-09-16 (金) 05:32:58
    • 同じく行数増えちゃってるからなんとも言えないけど、前戯追撃、ホールド技追撃、被追撃の順番だよ -- 2016-09-16 (金) 08:33:25
  • 確率分岐で、片側だけ行数増やしたい場合ってどうすればいいのだろか。上の例だとtx["tx1"] = "パターンB" if $game_variables[17] > 60 の後にtx["tx2"]~って感じでいいのかな? -- 2016-09-19 (月) 06:38:13
    • その時は、tx["tx1"] = "" if $game_variables[17] > 60 #パターンBの次にtx["tx2"] = "" if $game_variables[17] > 60 #パターンBでいいよ この乱数って毎回参照されてるわけじゃなくて、一回にスキル使うごとに一回だから -- 2016-09-19 (月) 09:06:12
    • なるほど。ありがとう。 -- 2016-09-20 (火) 03:08:44
  • オーラルインサート使った時の台詞ってどういう参照してるんだろ? クライシス状態になると「アクター自慰」の台詞出たりするし・・・ -- 2016-09-23 (金) 03:39:48
    • リバウンド自爆じゃない辺り、ホールド扱いではないっぽい……のか? 口攻め追撃の口上なんかも出ないし、よくわからんなぁ。 -- 2016-09-30 (金) 06:56:53
  • どの夢魔のにも、Talkの中に"好意"っていう口上あるじゃない?あれって、ちゃんと実行されてる?プレイしてて出てきた記憶ないんだけど… -- 2016-09-30 (金) 03:04:01
    • 俺もないなぁ。要求系の率が高すぎるとか? そもそも、どのタイミングで出るものなのか分からないけども -- 2016-09-30 (金) 06:52:50
  • Rubyの経験など一切無い初心者なのですが、ベッドインの回数ga"" if $msg.t_enemy.bedin_count >= 30 -- 2016-10-08 (土) 01:18:04
  • 失礼、途中送信してしまいました。戦闘開始時、ベッドインの回数を30回以上で別の口上を言うようにしたいのですが、素人の浅知恵で "" if $msg.t_enemy.bedin_count >= 30 というふうにしてみたところ、上手く行きません。どうかご指導をいただけるとありがたいです。 -- 2016-10-08 (土) 01:20:53
    • 度々すいません。 if $msg.t_enemy.bedin_count >= 30 単体の条件付与は問題ありませんでした。問題だったのは  if $msg.t_enemy.have_ability?("大切な人") and if $msg.t_enemy.bedin_count >= 30 とした部分だったようです -- 質問者? 2016-10-08 (土) 01:27:34
      • 「大切な人」持ってて「ベッドイン回数30回以上」なら、andの後のifいらなくないかな?試したわけじゃないけど。あと遅い返信で申し訳ないですが。 -- 2016-11-26 (土) 12:14:40
      • ↑ありがとうございます! -- 質問者? 2016-11-27 (日) 09:01:42
  • 当方、口上作成の初心者なんですが、#{pleasure_s}みたいなランダム台詞の内容はいじれないんですかね? -- 2016-11-26 (土) 21:37:32
    • ランダムセリフ自体はrbファイルじゃなくて、ゲームのスクリプトで設定されてるから いじれないこともないけどその時はRPGツクールが必要ですね (体験版でも出来ないことはない) -- 2016-11-26 (土) 22:05:14
      • なるほど…頑張ってみます。ありがとうです! -- 2016-11-26 (土) 22:26:16
  • この胸サイズデータはどこで変えれるんだ? -- 2016-12-25 (日) 15:35:36
  • ちょっと試しに口上をいじってみたのですが、いじったファイルの部分が丸ごと読み込まれなくなりました。修正したいのですが特に確認すべきところがあれば教えていただきたいです -- 2017-05-31 (水) 07:24:43
    • メモ帳とかで編集すると文字コードの関係で読み込めないんでそのせいかも 例えばサクラエディタとかのテキストエディタを使う必要がある -- 2017-06-01 (木) 04:14:40
お名前:





トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-17 (土) 07:05:48