「OnConversation」の編集履歴(バックアップ)一覧はこちら

OnConversation」(2005/12/01 (木) 21:25:44) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

---- ・OnConversationに入るスクリプト。 ・メッセージを聞いた時に発動する。 ---- #Contents **NWNデフォルト(翻訳付き) #include "nw_i0_generic" void main() { // 石になってる時は飛ばす if (GetHasEffect(EFFECT_TYPE_PETRIFY, OBJECT_SELF) == TRUE) { return; } // 死んでる時も飛ばす if (GetIsDead(OBJECT_SELF) == TRUE) { return; } // 特定のパターンを数値に変換して習得する // 話者を習得する int nMatch = GetListenPatternNumber(); object oShouter = GetLastSpeaker(); if (nMatch == -1) { // どのパターンの会話でも無い場合は普通にカンバセーションを始める if (GetCommandable(OBJECT_SELF)) { ClearActions(CLEAR_NW_C2_DEFAULT4_29); BeginConversation(); } else //チャーム状態ならカンバセーションを開始する if (GetHasEffect(EFFECT_TYPE_CHARMED) == TRUE) { ClearActions(CLEAR_NW_C2_DEFAULT4_29); BeginConversation(); } } // PC以外の仲間からの呼びかけに答える else if (GetIsObjectValid(oShouter) && !GetIsPC(oShouter) && GetIsFriend(oShouter)) { object oIntruder = OBJECT_INVALID; // もしあるなら侵入者を決定してください if(nMatch == 4) { //叫んだ仲間が持っている"NW_BLOCKER_INTRUDER"関数をoIntruderとして習得 oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER"); } else if (nMatch == 5) { //叫んだ仲間に最後に敵対行動をした相手をoIntruderとして習得 oIntruder = GetLastHostileActor(oShouter); if(!GetIsObjectValid(oIntruder)) { //見つからなかったら、自分が攻撃していた相手を習得します oIntruder = GetAttemptedAttackTarget(); if(!GetIsObjectValid(oIntruder)) { //それも駄目なら、呪文を唱えようとした相手を習得します oIntruder = GetAttemptedSpellTarget(); if(!GetIsObjectValid(oIntruder)) { oIntruder = OBJECT_INVALID; } } } } // oIntruderに警戒するように返事をします。 // 最初の敵を見失った仲間に戻って来いと言う。 RespondToShout(oShouter, nMatch, oIntruder); } // Send the user-defined event if appropriate if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE)); } }
---- ・OnConversationに入るスクリプト。 ・メッセージを聞いた時に発動する。 ---- #Contents **NWNデフォルト(翻訳付き) #include "nw_i0_generic" void main() { // 石になってる時は飛ばす if (GetHasEffect(EFFECT_TYPE_PETRIFY, OBJECT_SELF) == TRUE) { return; } // 死んでる時も飛ばす if (GetIsDead(OBJECT_SELF) == TRUE) { return; } // 特定のパターンを数値に変換して習得する // 話者を習得する int nMatch = GetListenPatternNumber(); object oShouter = GetLastSpeaker(); if (nMatch == -1) { // どのパターンの会話でも無い場合は普通にカンバセーションを始める if (GetCommandable(OBJECT_SELF)) { ClearActions(CLEAR_NW_C2_DEFAULT4_29); BeginConversation(); } else //チャーム状態ならカンバセーションを開始する if (GetHasEffect(EFFECT_TYPE_CHARMED) == TRUE) { ClearActions(CLEAR_NW_C2_DEFAULT4_29); BeginConversation(); } } // PC以外の仲間からの呼びかけに答える else if (GetIsObjectValid(oShouter) && !GetIsPC(oShouter) && GetIsFriend(oShouter)) { object oIntruder = OBJECT_INVALID; // もしあるなら侵入者を決定してください if(nMatch == 4) { //叫んだ仲間が持っている"NW_BLOCKER_INTRUDER"関数をoIntruderとして習得 oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER"); } else if (nMatch == 5) { //叫んだ仲間に最後に敵対行動をした相手をoIntruderとして習得 oIntruder = GetLastHostileActor(oShouter); if(!GetIsObjectValid(oIntruder)) { //見つからなかったら、自分が攻撃していた相手を習得します oIntruder = GetAttemptedAttackTarget(); if(!GetIsObjectValid(oIntruder)) { //それも駄目なら、呪文を唱えようとした相手を習得します oIntruder = GetAttemptedSpellTarget(); if(!GetIsObjectValid(oIntruder)) { oIntruder = OBJECT_INVALID; } } } } // oIntruderに警戒するように返事をします。 // 最初の敵を見失った仲間に戻って来いと言う。 RespondToShout(oShouter, nMatch, oIntruder); } // Send the user-defined event if appropriate if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DIALOGUE)); } }

表示オプション

横に並べて表示:
変化行の前後のみ表示: