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.