MOD作成指南

MOD製作環境の構築

  • サキュラプのフォルダは通常プレイ用とMOD開発用で分けておくことを推奨。

必要なソフトウェア

  • テキストエディタ
    • サクラエディタがおすすめ。
      • フリーでGrep(ファイルを中身ごと検索&リストアップ&置換)やDiff(差分の比較)、スクリプトを色分け・強調表示などの機能が揃っているため強力。
    • スクリプトは基本的にRubyで記述されるため、こちらの言語の知識が有ると開発がスムーズ。
    • 以下の編集についてはテキストエディタのみで大体事足りるため、ツクールの導入は不要。
      • 夢魔の口上
      • ダメージ計算、スキルの効果、画像読み込みなどのバトル中の挙動
      • メニュー画面の挙動
      • アビリティ・スキル・アイテムの挙動(新規スキル・アイテムの追加はツクールが必要。新規アビリティは可能。)
      • 夢魔の種族値・習得スキル
      • その他スクリプトを組めば何とかなりそうなこと
  • 画像編集ソフト
    • 夢魔画像の改変・新規夢魔画像など。
  • RPGツクールXP
    • 以下の内容を弄りたい場合は必須。
      • アニメーション・サウンドの挙動
      • 既存もしくは新しいアイテム・スキル(スキルの属性、スキルと対応するステート変化、参照する能力値はテキストエディタのみでは編集不可)
      • マップ全般
      • イベント全般
      • 敵データ(トループやイベント戦・ボス戦などの敵の特殊行動パターンもこちら)

RPGツクールXPの導入

  • RPGツクールXPの購入・インストール
    RPGツクールXPは今だと3,000円ほどでDL版を買うことができる。
    http://tkool.degica.com/a/rpgmaker/xp
    なお、Steam版のRPG Maker XPはたびたびセールが行われており上記より廉価で手に入る可能性があるが、日本語化することができないので注意(イベントデータが文字化けして表示されるため編集が困難になる)。
  • サキュラプフォルダの準備
    1. 当WikiもしくはMOD製作スレに上がっている最新のMOD環境を構築しておく
    2. Mod/Mod_Dataフォルダ内の中身を全てDataフォルダに移動&上書きする(コピーではない)
      • ツクールXPではテストプレイ時を除きMODフォルダの中身が読み込まれない。これを忘れた場合、編集・保存したはずなのにテストプレイで(Mod_Dataを優先して読み込むため)変更が反映されていないという事態が起こる。

以上でツクールXPは導入完了。以後、サキュラプフォルダ直下の「Game.rxproj」を開けば編集できるようになる。

注意事項

  • MODフォルダの扱いとファイルの頒布について
    基本的にサキュラプはModフォルダ以外のファイル→Modフォルダの順にファイルを読み込み、MODフォルダ外とMODフォルダ内で重複するファイルやスクリプト(特に夢魔の口上やスクリプト内のクラスとメソッド)がある場合はModフォルダの中身を優先する。
    なので、MODデータは(GraphicsフォルダとAudioフォルダを除き)基本的にModフォルダ内の中身を編集・追加するだけで完結させられる。
    制作したファイルを頒布する時は元からあったファイル(特にDataフォルダとSystemフォルダ)には手を出さず、Graphic, Audio, Modフォルダの上書きのみで済むようにするのが望ましい。
    例えば以下のようにする。
    • ツクールでDataフォルダの中身を編集した場合、更新されたファイルをMod_Dataに移動した上で頒布する。
    • Mod_TalkもしくはSystem/talkフォルダ以下の夢魔の口上ファイルを編集した場合、Mod_Talkフォルダ内に同じディレクトリを作って頒布する。
      例えばレッサーサキュバス(橙)の口上C_BattleEvent.rbを頒布する場合、
      Mod/Mod_Talk/05_LesserSuccubus_00フォルダ内のファイルを編集した場合はそのままのフォルダの階層で頒布可能。
      System/talk/05_LesserSuccubus_00フォルダ内のファイルを編集した場合は、Mod/Mod_Talk/05_LesserSuccubus_00フォルダにファイルを移動してから頒布。
  • スクリプトファイル
    • スクリプトのファイルの形式はrbファイル。文字コードはUTF-8とすること
    • 有志が作成した構文チェッカーがあるので、こちらを使うとミスの修正が楽かもしれない。

どこを編集すればいいの?

夢魔の口上を編集したい

  • 夢魔の口上ファイルはMod/Mod_Talkフォルダ(無ければSystem/talkフォルダ)に夢魔の種類・性格ごとに格納されています。例えば、レッサーサキュバス(橙)の口上はそのフォルダ直下の05_LesserSuccubus_00内にあるrbファイルが該当します。

マップチップ・イベントを編集したい

  • ツクールを開くとマップのツリーが表示されるので、該当するマップ・イベントを探して編集しましょう。変更を保存したらDataフォルダのMap○○○.rxdataというファイルが更新されているはずです。

バトル中の挙動・メッセージの挙動を変えたい

  • Mod/Mod_scriptsフォルダ内で該当する処理を行うスクリプトが無いか探してみましょう。(バトル中の挙動を改造するのであれば、既に有志の方が作成したMod_Scriptsフォルダ内のrbファイルを編集すればほとんどの場合可能だと思います。)

夢魔の画像の差分を追加したい

  • ここを書いた筆者に絵のセンスは無いので描き方はお任せします。
  • 画像ファイルの形式、寸法などを確認しておくこと。
  • 使用する箇所・夢魔の種族・脱衣・ホールドなどによってファイルの命名規則があるので注意すること。
  • 単に画像を差し替える場合は該当するファイルを見つけて上書きすればOK。

  • 既存の夢魔の差分を追加個性として実装する場合
    • おっぱいコスプレ差分が適用済みであること推奨。
    • Graphics/Battlers/O_MODフォルダ内に該当する夢魔用のフォルダが無いか確認する。例えばレッサーサキュバス(橙)の追加個性であれば、lesser_succubus1-1フォルダが該当する。
    • アルファベット1文字のフォルダを作成し、そのフォルダに差分画像をコピーする。ただし、以下のアルファベットは用途が決まっている、またはスクリプト上で特殊な判定をする場合があるので差分を更新する際は注意すること。
      アルファベット内容
      G褐色差分
      Kカットイン付きの差分
      U・V・Wロリ化差分。設定で幼児化をオンにしていなければ出現しない
      X・Yその他特殊な差分
      Zシスター、イマジナリーフレンドなどにあるような、特定の条件を満たすことで出現する個性
    • ボーナス取得画面で追加の説明(例えば「追加差分」「褐色」など)をする場合、Ability.rbというファイルを作成し、中に数文字(10文字程度以内?)の説明を書けば反映される。
    • 現状、フォルダ内に通常時の立ち絵の画像がないと差分が読み込まれないので注意。(着衣、着衣時クライシス、脱衣、脱衣時クライシス、着衣時精液、脱衣時精液の6つ?)無い場合はBattlersフォルダからコピーしてこよう。

その他よくありそうな質問

ツクールXP持ってないけどバニラ版のスクリプトを見たい

DataフォルダのScripts.rxdataにひとまとめになっています。「RGSS Editor」などのフリーウェアを使えば中身を確認できます。ただし上記の注意事項にある通り、編集するのは避けたほうが良いでしょう。

テストプレイ中にエラー吐いた/思い通りの挙動にならない

筆者の経験上、以下が原因であることが多い気がします。どうしても原因が分からない場合はMOD製作スレで質問してみましょう。

  • スクリプトの記述ミス(構文エラー、スペルミス、文字コードが違う、クラス外のメソッドや変数を呼び出した、など)
  • フォルダの構造かファイルの場所が間違っている
    • サキュラプのスクリプトにはファイルのパスを判定するものが含まれるので、新しいファイルやフォルダを作成する必要がある場合は注意。

エラー吐いたけどerror_log.txtが更新されてない

以下が原因であることが多い。

  • スクリプトの構文が間違っている(endや括弧の数・位置がおかしい)
    • 直近の編集を見直してみよう。
  • ディレクトリの構成が間違っている、何らかのファイルが欠落・破損している
    • ファイルの位置が正しいか確認してみよう。
    • MODをうまく導入できなかった時によく起こる。
  • プラグインやソフトウェア自体に不具合があるorサキュラプの環境と対応していない
    • 外部から持ってきた、あるいはバニラ版では使用されていないプラグインやスクリプトを用いる場合に発生し得る。

掲示板でエラー報告があったけどログの見方がわからない

(サキュラプMODスレ18 >>206の報告を引用)

エラー報告です。
追憶シスター戦中に脱衣済みのサーヴァント(敵)が行動するときに落ちました。
味方側は主人公とヴァルキュリアで、主人公がカームブレス、ヴァルキュリアがイリスコロナをしようとした時だったのですが・・・

バージョン :
200530
パッチ :
200912f
エラーの種類 :
NoMethodError
メッセージ :
undefined method `holding?' for "":String
マップ:
ID:523
トループ
ID: 966
Enemies: [672,670,671]
ステータス状況/エネミー側がアクション
クラスID:
241
コモン呼び出し履歴:
[]
バックトレース :
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 1125行目 : in `make_skill_action_result'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 1064行目 : in `loop'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 2326行目 : in `make_skill_action_result'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_4.rb : 692行目 : in `update_phase4_step2'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_4.rb : 29行目 : in `update_phase4'
./Mod/Mod_Scripts/PR_基本設定強化.rb : 812行目 : in `update'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 400行目 : in `main'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 394行目 : in `loop'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 405行目 : in `main'
Main : 16行目
--------------------------------
  • バージョン
    • MODメインデータのバージョンです。
  • パッチ
    • パッチのバージョンです。Mod/Mod_Scripts/エラーログ.rbで確認・編集できます。
  • エラーの種類・メッセージ
    • 何のエラーが起きたのか記載されています。特に、「メッセージ」はプログラムがエラーを起こしたときに表示されるメッセージボックスの内容と同一です。
  • マップ・トループ
    • どのマップで、どの敵トループと戦闘していた時にエラーが起きたかを示しています。対応するIDについてはツクールで確認する必要があります。
  • ステータス状況
    • 戦闘中に起きたエラーの場合に記載されます。
    • 味方の行動時に起きたエラーであれば「アクター側がアクション」、敵の行動時あるいはそれ以外のエラーについては「エネミー側がアクション」と記載されます。
    • エラー出力用の変数が更新されるタイミングとエラーログが出力されるタイミングが異なるため、稀に当てにならないことがあります。
  • クラスID
    • 行動したキャラのクラスIDです。ツクールで確認できます。
    • ステータス状況と同じく、稀に当てにならないことがあります。
  • コモン呼び出し履歴
  • バックトレース
    • スクリプトの呼び出し履歴で、上から新しい順に記載されています。特に、1行目はエラーが発生した箇所を示しているのでまずはここを確認してみましょう。
+  エラーの詳細(参考までに)

キャラ追加方法(新OFE導入modのtxtより、一部改変)

[メモ]2018/7/22時点の情報なので、要更新?

data

● Map
Map(各マップ番号)(イベントを追加したマップのみでいい)
Mapinfo(上記の変更を加えるのに必要?)

● Class
161以下の開いている場所に追加したいキャラの名前を"名前/色"という形式で入れる
色は既に使われているもの、例えばサキュバスでは橙と桃は新しく使用できません
例:161(名前を"プリーステス/紫"に変更)

● Enemy
313以下の空いている場所に
追加キャラ名/入れた161以下の番号/レベルの項目を作り
グラフィック・ステータス等を決定する
(色違いを作るなら原色のものをコピーして使用するのが良い)
このとき属性125【OFE】をAにすると、敵として出てきたときOFE相当のステータスになります
例:313("プリーステス/161/18"に名前を変更、グラフィックも変更、ステータスは属性125,【OFE】をAに。他は元の画像のキャラのまま)
581以下の空いている場所に
【data】追加キャラ名/入れた161以下の番号/レベルの項目を作る
(色違いを作るなら現職のものをコピーして使用するのが良い)
例:546:【data】プリーステス白/118/1〉をコピー後、名前を"【data】プリーステス紫/161/1"に変更、
グラフィックを"priestess1-2"に変更、行動パターンから逃げるを削除)

● troop
621以下の空いている場所に
追加キャラ名/入れた161以下の番号/レベルの項目を作り
Enemyで追加したキャラを追加する
このとき、トループ名冒頭に【OFE】を加えると出現時に喋ってくれます
例:621("プリーステス/161/30"という名前のenemy313が一体入ったトループ)

スクリプト

文頭に#がついているものはメモ
ゲームには影響を与えない
●RPG::SDB(種族値・設定用)

追加したいキャラのデータのところの
when条件文にそれぞれのdateのClassで追加した番号を追加。
例:プリーステス・紫なら
when 118,161
とすればいい。
また、それぞれのキャラの呼び出すgraphicsおよび呼び方を設定する
(when 161~"少年"までが追加分)

#------------------------------------------
    when 118 # 白
     @graphics = "priestess1-1"
     @default_name_self = "私"
     @default_name_hero = "貴公"
    when 161 # 紫
     @graphics = "priestess1-2"
     @default_name_self = "私"
     @default_name_hero = "少年"
    end

#-------------------------------------------

●RPG::Class(習得スキル)

  • プリーステス種のシェルマッチ、スクラッチ、【アクセプト】の
    未収得設定を通常種(白)のみにする場合

プリーステス種の

#------------------------------------------
group.delete([1, 0, 5])
group.delete([1, 0, 52])
group.delete([1, 1, 302])

#------------------------------------------
の文末に

#------------------------------------------
if self.color == "白"

#------------------------------------------
を加え、(colorが白の場合のみ適応するようにする)

#------------------------------------------
group.delete([1, 0, 5]) if self.color == "白"
group.delete([1, 0, 52]) if self.color == "白"
group.delete([1, 1, 302]) if self.color == "白"

#------------------------------------------
とする

  • スキルを追加する場合

エンジェル種に

#------------------------------------------
# Lv1.ディルドインサート(赤)
group.push([1, 0, 20]) if self.color == "赤"
# Lv1.ディルドインマウス(赤)
group.push([1, 0, 21]) if self.color == "赤"

#------------------------------------------
を追加。

●RPG::Class(ボーナス)

ここでは契約の珠で習得できるスキルを変更できる。
新OFE導入modでは現在は変更していない。

●★Scene_Title ($data改変)

ドロップアイテムのところにそれぞれのクラスを追記。
例:それぞれ

#--------------------------------
when 118,161 # プリーステス

#--------------------------------
とすればOK

404行目あたりの
case class_id
から480行目あたりの
end
までの間に

#-------------------------------------------------------------------
when 161; copy_data_numbers.push(581) # プリーステス・紫

#-------------------------------------------------------------------
を追加。新OFE導入modではリリム・桃とネイジュレンジの間に入れてます
push右の()には● Enemyで追加した【data】~の番号を入れる。

●Game_Enemy (設定用)

それぞれの
case self.class_color
から
end
の間に
when "色" ; [1, "性格", "性格", "性格"]
を追加
色はClassで設定したもので、性格は新しく追加も可能ですが{ 好色、上品、高慢、淡泊、柔和、勝ち気、内気、陽気、意地悪、天然、従順、虚勢、倒錯、甘え性、不思議 }から選ぶといいでしょう。

口上データの性格IDも元のものからコピーしている場合、忘れずに変更しましょう
上品→甘え性に変更するなら各口上の def msg_XXX_01 を def msg_XXX_13 に変更します
(この場合"_01"を"_13"に置換するとミスなく早いです)
性格IDが分からない場合、"口上メソッド(基本)"の160行以降を見ましょう
例:プリーステス・紫なら

when "紫" ; [1, "好色", "好色", "好色"]
を追加
性格IDを00に変更

●SR_Util Files

ゲームトループの改変のところに
when クラスID; member.enemy_id = 1
を追加、クラスIDはClassで設定したものを。

例:プリーステス・紫の場合
when 161; member.enemy_id = 1

を追加、これは特定マップのランダムエンカウントで使われるものと思われるので、必要ないとは思いますが念のため。

●Talk_Sys Base
@msg[クラス番号] = Db_種族名_アルファベット.newを追加
色変えの場合は元の奴をコピー、クラス番号をClassで設定したものに変更、アルファベットを使われていないものに変更すると早いです

例:プリーステス・紫の場合
それっぽいのが並んでいるところに

#------------------------------------
@msg[161] = Db_Priestess_B.new

#------------------------------------
を追加。

(追加した口上データ内の表記もMsgPriestess_A⇒MsgPriestess_Bにすること)

●口上メソッド(全夢魔用のDb)

他のclassの中以外であればどこでもいいので
例;プリーステス/紫なら

#----------------------------------------------------------
#プリーステス/紫
class Db_Priestess_B
 attr_accessor :personality
 def initialize
  @personality = Array.new(50)
  per_max = 50 # 性格数
  for i in 0...per_max #
   @personality[i] = MsgPriestess_B.new(i)
  end
 end
end

#----------------------------------------------------------
を追加
元のものをコピー、アルファベット二か所を変更するのが早いです
新OFE追加modではそれぞれの元の色の後ろに追加しています。

●口上メソッド(全夢魔用のMsg空箱)

他のclassの中以外であればどこでもいいので
例;プリーステス/紫なら

#----------------------------------------------------------
# プリーステス/紫
class MsgPriestess_B < MsgBase
end

#----------------------------------------------------------
を追加。
元のをコピーしてアルファベットを変更するのが早いです
 
 

talkフォルダの編集

●00_Systemの変更

今までのものはツクールで弄れるものでしたが、これは口上ファイル内にあるRBファイルです。テキストエディタで編集しましょう

・Base_classidの作成(classidはツクール内ClassのIDと同じもの、紫プリーステスなら161を使っています)
主人公以外への二人称や、敵として出てきた際の主人公への二人称を設定できます
元のキャラからコピーしてファイル名とクラスのアルファベットを変更(紫プリーステスなら MsgPriestess_Aを MsgPriestess_Bに)し、呼び方を変更したいところのみ変更するのが確実です。

・Talk_Sys_Defaultnameの編集
レアな一人称、二人称を設定できます
それぞれの種族のところに、一人称ならば
b_name = "一人称" if battler.personality == "性格"
二人称ならば
b_name = "二人称" if battler.personality == "性格"
を追加しましょう(性格は上述のGame_Enemy (設定用)で設定したもの)

例;紫プリーステスなら
a_name = "わたくし" if battler.personality == "好色" #OFE
b_name = "坊や" if battler.personality == "好色" #OFE
の二つを追加しています

●クラスNo_夢魔名_性格Noの変更

  • 色違いを作る場合原色のものをコピーしフォルダ名を変更。
    • rbファイル内のclassをTalk_Sys Baseで設定したものに変更
      ひとつのファイルに複数個所存在するものもあるので注意
    • rbフォルダ内のdef ~ _数字(好色の場合00)の数字を
      設定した性格に合わせ変更する。こちらは各ファイルにつき1か所のみ。

コメント

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

  • コードの構文ハイライトが効いて無いようですね。 -- 2018-08-04 (土) 17:57:15
  • プロジェクトを使わずに元からある.rxdataをツクールを使って編集することってできますか? -- 2018-09-01 (土) 14:05:51
  • modの分だけ弄りたい -- 2018-09-22 (土) 05:42:20
  • やりたい事はあるのに、理解しきれずできない悲しみ -- 2019-05-04 (土) 20:26:53
お名前:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-01 (水) 22:53:32 (21d)