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

OnBlocked - (2005/11/10 (木) 21:27:43) の最新版との変更点

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

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

---- ・OnBlockedに入るスクリプトを置いていきます。 ・細かい区分けや導入方法はAIについてを参照して下さい。  ---- #Contents **NWNデフォルト(翻訳付き) ・知力5以下なら扉を閉められると何も出来ない&br()知力7以下の場合は扉を壊そうとする。&br()知力7以上の場合は扉を開けようとするが、開かない時は壊そうとする。 void main() { object oDoor = GetBlockingDoor(); //自分を妨害しているドアを習得 if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5) //知力が5以上の場合は真 { if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 ) //クリーチャーがドアを開けられる、かつ知力が7以上の場合は真 { DoDoorAction(oDoor, DOOR_ACTION_OPEN); //oDoorを開ける } else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH)) //クリーチャーがドアが開けられない、もしくは知力が7以下の場合はドアを壊そうとする。 { DoDoorAction(oDoor, DOOR_ACTION_BASH); } } } **スクリプトver1.00(翻訳付き) ・知力10以上の場合は開かない扉に阻まれた場合、&br()知力5以下と同じく扉を無視する。 ・一見馬鹿っぽいが、 void main() { object oDoor = GetBlockingDoor(); //自分を妨害しているドアを習得 if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5) //知力が5以上の場合は真 { if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 ) //知力が7以上の場合は真 { if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN)) //扉が開けられる場合は真 { DoDoorAction(oDoor, DOOR_ACTION_OPEN); //oDoorを開ける } } else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH)) //知力が7以下の場合はドアを壊そうとする。 { DoDoorAction(oDoor, DOOR_ACTION_BASH); } } }
---- ・OnBlockedに入るスクリプト。 ・扉に進路を邪魔された時に発動する。 ---- #Contents **NWNデフォルト(翻訳付き) void main() { // 妨害しているドアを習得 object oDoor = GetBlockingDoor(); if (GetObjectType(oDoor) == OBJECT_TYPE_CREATURE) { // * Increment number of times blocked //何かに3回ブロックされたら(身動きが取れなければ)飛び道具に持ち替えて攻撃する //オブジェクトの"X2_NUMTIMES_BLOCKED"を+1する。 /*SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED", GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") + 1); if (GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") > 3) { // ()の内容を喋る SpeakString("Blocked by creature"); // 自分のローカル関数"X2_NUMTIMES_BLOCKED"を0にセットする SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED",0); // 全てのアクションを止める ClearAllActions(); // 一番近い敵をoEnemyとして習得 object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY); // それが有効なら飛び道具を装備して攻撃する if (GetIsObjectValid(oEnemy) == TRUE) { ActionEquipMostDamagingRanged(oEnemy); ActionAttack(oEnemy); } return; } */ return; } //知能が5以上なら(逆に言うと5以下は扉を開けない) if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5) { // 知能が7以上でドアが開けられるならドアを開ける if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 ) { DoDoorAction(oDoor, DOOR_ACTION_OPEN); } // ドアが開かないならドアを攻撃する。 else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH)) { DoDoorAction(oDoor, DOOR_ACTION_BASH); } } } **スクリプトver1.000(翻訳付き) //:://///////////////////////////////////////////// //:: Remodeling On Blocked //:: VG_C1_ONBLOCK //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* 何かに自分の移動を妨げられた時に発動する。 1.知力5以下だと扉には何もしない 2.知力7以上なら扉を開けようとする 3.知力7以上で扉が開けられなければ壊す 4.扉が開かなければ無視する 5.何かに移動を邪魔された場合飛び道具に持ち変える */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Nov 23, 2001 //::////////////////////////////////////////////// void main() { // 妨害しているドアを習得 object oDoor = GetBlockingDoor(); if (GetObjectType(oDoor) == OBJECT_TYPE_CREATURE) { // * Increment number of times blocked //何かに3回ブロックされたら(身動きが取れなければ)飛び道具に持ち替えて攻撃する //オブジェクトの"X2_NUMTIMES_BLOCKED"を+1する。 *SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED", GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") + 1); if (GetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED") > 3) { // 自分のローカル関数"X2_NUMTIMES_BLOCKED"を0にセットする SetLocalInt(OBJECT_SELF, "X2_NUMTIMES_BLOCKED",0); // 全てのアクションを止める ClearAllActions(); // 一番近い敵をoEnemyとして習得 object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY); // それが有効なら飛び道具を装備して攻撃する if (GetIsObjectValid(oEnemy) == TRUE) { ActionEquipMostDamagingRanged(oEnemy); ActionAttack(oEnemy); } return; } return; } //知能が5以上なら(逆に言うと5以下は扉を開けない) if(GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 5) { // 知能が7以上でドアが開けられるならドアを開ける if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_OPEN) && GetAbilityScore(OBJECT_SELF, ABILITY_INTELLIGENCE) >= 7 ) { DoDoorAction(oDoor, DOOR_ACTION_OPEN); } // ドアが開かないならドアを攻撃する。 else if(GetIsDoorActionPossible(oDoor, DOOR_ACTION_BASH)) { DoDoorAction(oDoor, DOOR_ACTION_BASH); } } }

表示オプション

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