「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);
}
}
}