AddJournalQuestEntry(string, int, object, int, int, int)
プレイヤーのジャーナルに登録事項を追加します。(日記エディタで、エントリーを作成するのが先決です。)
void AddJournalQuestEntry( string sCategoryTag, int nEntryID, object oCreature, int bAllPartyMembers = TRUE, int bAllPlayers = FALSE, int bAllowOverrideHigher = FALSE );
Parameters
sCategoryTag
ジャーナルカテゴリーのタグ(ファイル名での大文字と小文字は区別されます)
nEntryID
ジャーナルエントリーのID
oCreature
ジャーナルエントリーを受け取らせたいPC
bAllPartyMembers
TRUEならば、エントリーはoCreatureのいるパーティのジャーナルに追加されます。
(デフォルト:TRUE)
bAllPlayers
TRUEならば、エントリーはモジュール内の全てのプレイヤーのジャーナルに表示されます。
(デフォルト:FALSE)
bAllowOverrideHigher
TRUEならば、nState(エントリーのID)を現在のジャーナルエントリーに可逆に上書きするに違いないでしょう。(デフォルト:FALSE)
Description
AddJournalQuestEntry()はまさにその名の通りに、プレイヤーの日記画面の「クエスト」または「完了したクエスト」のページにエントリーを追加します。
ただ1人のPC、PCのパーティメンバーの全て、またはモジュール内の全ての駐留者に対して、エントリーを追加しフラグを立てることができます。
関数はジャーナルエントリーを参照する為に、szPlotIDとnStateという、2つのパラメーターを参照します。
sCategoryTagはジャーナルカテゴリーのタグです。例えば、"ボブの素敵なブチ蹴り靴"という名前のクエストを作り、それに"isk_jrnl_bbbbk"というタグを与え、ジャーナルエントリーに割り当てる場合、そのタグを利用してください。
iEntryIDは特定のジャーナルエントリーのIDです。これは日記エディタのID欄に入力した数字で、ジャーナルエントリーを表示する順番を表す数字でもあります。デフォルトでは、AddJournalQuestEntry()を使用した場合、ジャーナルエントリーの数字は増えなければいけません。
このコマンドのジャーナル更新が行われたとき、ジャーナルカテゴリーの名前を無記名のチャットメッセージとして表示します。
Remarks
conversation内でジャーナルエントリーを更新するための、スクリプトを作る必要はありません。「その他のアクション」タブで、望みのジャーナルカテゴリーとジャーナルエントリーを選択するだけでいいのです。
bAllowOverrideHigherをTRUEにする際は注意してください。最終段階である「完了したクエスト」エントリーを、それより前の段階である「クエスト」エントリーへと、矛盾して移行することが簡単にできてしまいます。
日記エディタ内の「カテゴリー終了」チェックボックスで、日記タブのエントリーは固定されて表示されます。完遂した「クエスト」タブの他のものは「完了したクエスト」タブに移ります。「ユーザーメモ」タブにはメッセージを追加することは出来ません。
前にあったジャーナルエントリーは自動的に除去されます。同タイトルのクエストの効果を使いたいならば、異なるタグをカテゴリーに使って、名前だけを同じにします。
PvPトーナメントでの戦いの軌跡を残す為に、上書きフラグは有効に利用出来るかもしれません。
このコマンドはXPの指定は「行いません」。指定したいのであれば、GetJournalQuestExperience()、もしくはGiveXPToCreature()を使ってください。
AddJouralQuestEntryは大/小文字の区別されないsCategoryTagを見つけるでしょう。しかし、同じsCategoryTagではあるものの、異なる大/小文字を使用したクエストは、個々の異なるクエストを追加するでしょう。(同じクエストではありません)
PCのアイテム取得で、ジャーナルエントリーを追加させるようにするにはモジュールのOnItemAcquiredで、この関数を使う必要があります。下記のサンプルを見てください。
ジャーナルエントリーをPCにセットするときに、LocalIntegerは"NW_JOURNAL_ENTRY*"(*は追加されたエントリー名)という名前で、同一のPCに記憶させられます。integer value(整数値)は記憶したジャーナルエントリーのIDです。
Version
1.28
Example
// ジャーナルカテゴリー"isk_jrnl_bbbbk"に3のエントリーを登録: // 1 - 始動メッセージ // 100 - 中盤メッセージ // 200 - 終了メッセージ (エディターの「カテゴリー終了」にチェック) // oPCを有効なPC objectと仮定する // 実行の順序: // 参加してきたPCの日記に、ジャーナルカテゴリー"isk_jrnl_bbbbk"の // ID 1のジャーナルエントリーを追加する // 他人のジャーナルは影響されない AddJournalQuestEntry("isk_jrnl_bbbbk", 1, oPC, FALSE, FALSE, FALSE); // これはそのPCのジャーナルだけをID 100のエントリーに更新する AddJournalQuestEntry("isk_jrnl_bbbbk", 100, GetEnteringObject(), FALSE, FALSE, FALSE); // ジャーナルは既にエントリー100になっているため、これらは何も起きない AddJournalQuestEntry("isk_jrnl_bbbbk", 100, oPC, FALSE, FALSE, FALSE); AddJournalQuestEntry("isk_jrnl_bbbbk", 1, oPC, FALSE, FALSE, FALSE); // これはPCの日記画面の「完了したクエスト」タブに // 終了メッセージを追加する AddJournalQuestEntry("isk_jrnl_bbbbk", 200, oPC, FALSE, FALSE, FALSE); // これはクエストの終了メッセージを取り消し // 「クエスト」タブに中盤メッセージを追加する AddJournalQuestEntry("isk_jrnl_bbbbk", 100, oPC, FALSE, FALSE, TRUE); // ----- Completely different example ----- // アイテムを拾う際にエントリーを追加する // スクリプトをOnAcquireItemに入れる: // (Thomas Daugaard氏の好意に感謝) // // "my_item_tag"と"my_item_quest"とが、 // チェックするアイテムのタグと、適切なジャーナルエントリーのカテゴリー・タグ、 // それぞれが一致するように修正する void main() { // 拾ったobjectを取得する object itemAcquired = GetModuleItemAcquired(); if(itemAcquired != OBJECT_INVALID) { // 拾ったアイテムのタグを取得する // "my_item_tag"であれば、正しいアイテムである if ( GetTag(itemAcquired) == "my_item_tag") { // アイテムを持っているオブジェクト(プレーヤー)を取得する object oPC = GetItemPossessor(itemAcquired); // そのプレーヤーのジャーナルに適切なエントリーを追加する AddJournalQuestEntry ("my_item_quest", 100, oPC); } } }
See Also
functions: | GetJournalQuestExperience | GiveXPToCreature | RemoveJournalQuestEntry | RewardPartyXP |
categories: | Conversation Functions | Experience Functions | Journal Functions |
events: | OnAcquireItem Event | OnActivateItem Event | OnAreaTransitionClick Event | OnEnter Event | OnUsed Event | OnUserDefined Event |
author: Iskander Merriman, editor: Charles Feduke, additional contributor(s): Dave Dursley, Kenneth Cummins, Gabriel Weiss, JP team: geshi, Rainie
Send comments on this topic.