「便利スクリプト」の編集履歴(バックアップ)一覧はこちら

便利スクリプト」(2006/01/01 (日) 21:39:15) の最新版変更点

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

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

---- ・便利スクリプト一覧 判る人は分かると思う ---- #Contents **炎ダメージエリア(OnEnterOn&HeartBeat) /**********************[炎ダメージエリア]********************* 入って来た対象に指定属性のダメージを指定数与える。 OnEnter OnHeartBeatの二種類があることに注意、間違えるとヤバい。 int VG_AREA_DMG_REFLEX 反応セーブDC デフォルトは14 成功するとダメージ半減、身かわし強化があるならダメージ無し。 int VG_AREA_DMG_AMOUNT ダメージの量 デフォルトは10 int VG_AREA_DMG_CONDITION 1以上ならダメージを与える、0なら無反応 ***********************************************************************/ //OnEnter 単独で使うと特定トリガー内に入った対象に一度だけ影響を及ぼす void main() { int nCondition = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_CONDITION"); if(nCondition >= 1) { object oCreature = GetEnteringObject(); int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDamageType = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_TYPE"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); } } //OnHeartBeat 単独で使うと特定トリガー内に入った対象にだけ影響を及ぼす void main() { int nCondition = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_CONDITION"); if(nCondition >= 1) { object oCreature = GetFirstInPersistentObject(); while (GetIsObjectValid(oCreature)) { int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); oCreature = GetNextInPersistentObject(); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); } } } **炎ビームバリア(炎ダメージエリアのOnEnterと併用) /******************************[炎ビームバリア]***************************** 指定のメッセージがに反応してビームを撃つ 一定時間でメッセージを喋る(これでビームを撃たせる) ビームの照射中のみ指定ダメージトリガーをONにする。 この3点で構築されたビームバリアスクリプト。 int VG_BEAM_CONDITION 現在のビームの状態 0で起動前 1で起動 int VG_BEAM_DURATION 1ステップ目のビーム照射時間 string VG_BEAM_START 開始オブジェクト ここがエフェクトの開始地点 string VG_BEAM_TARGET 目標オブジェクト ここがエフェクトの目標 それと同時に指定トリガーの中に居るクリーチャー全てにダメージを与える string VG_AREA_NAME 指定トリガーの名前 int VG_AREA_DMG_REFLEX 反応セーブDC デフォルトは14 成功するとダメージ半減、身かわし強化があるならダメージ無し。 int VG_AREA_DMG_AMOUNT ダメージの量 デフォルトは10 ***********************************************************************/ //OnHeartBeatに入れるべき void AreaDamage() { //範囲トリガー名と、その中に居る一体目のクリーチャーを習得 string sPerObject = GetLocalString(OBJECT_SELF,"VG_AREA_NAME"); object oPerObject = GetObjectByTag(sPerObject); object oCreature = GetFirstInPersistentObject(oPerObject); while (GetIsObjectValid(oCreature)) { int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); oCreature = GetNextInPersistentObject(); } } void main() { //ダメージを与える int nCondition = GetLocalInt(OBJECT_SELF, "VG_BEAM_CONDITION"); if (nCondition >= 1) { float fDuration = GetLocalFloat(OBJECT_SELF, "VG_BEAM_DURATION"); //ビームの起点、ビームの終点を習得する。 string sStartName = GetLocalString(OBJECT_SELF, "VG_BEAM_START"); object oStart = GetObjectByTag(sStartName); string sTargetName = GetLocalString(OBJECT_SELF, "VG_BEAM_TARGET"); object oTarget = GetObjectByTag(sTargetName); //ビームエフェクトを作成する effect eEffect = EffectBeam(VFX_BEAM_FIRE, oStart, BODY_NODE_CHEST); //トリガーを習得 string sPerObject = GetLocalString(OBJECT_SELF,"VG_AREA_NAME"); object oPerObject = GetObjectByTag(sPerObject); SetLocalInt(oPerObject, "VG_AREA_DMG_CONDITION", 1); DelayCommand(fDuration, SetLocalInt(oPerObject, "VG_AREA_DMG_CONDITION", 0)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration); AreaDamage(); } }
---- ・便利スクリプト一覧 判る人は分かると思う ---- #Contents **炎ダメージエリア(OnEnterOn&HeartBeat) /**********************[炎ダメージエリア]********************* 入って来た対象に指定属性のダメージを指定数与える。 OnEnter OnHeartBeatの二種類があることに注意、間違えるとヤバい。 int VG_AREA_DMG_REFLEX 反応セーブDC デフォルトは14 成功するとダメージ半減、身かわし強化があるならダメージ無し。 int VG_AREA_DMG_AMOUNT ダメージの量 デフォルトは10 int VG_AREA_DMG_CONDITION 1以上ならダメージを与える、0なら無反応 ***********************************************************************/ //OnEnter 単独で使うと特定トリガー内に入った対象に一度だけ影響を及ぼす void main() { int nCondition = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_CONDITION"); if(nCondition >= 1) { object oCreature = GetEnteringObject(); int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDamageType = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_TYPE"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); } } //OnHeartBeat 単独で使うと特定トリガー内に入った対象にだけ影響を及ぼす void main() { int nCondition = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_CONDITION"); if(nCondition >= 1) { object oCreature = GetFirstInPersistentObject(); while (GetIsObjectValid(oCreature)) { int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); oCreature = GetNextInPersistentObject(); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); } } } **炎ビームバリア(炎ダメージエリアのOnEnterと併用) /******************************[炎ビームバリア]***************************** 指定のメッセージがに反応してビームを撃つ 一定時間でメッセージを喋る(これでビームを撃たせる) ビームの照射中のみ指定ダメージトリガーをONにする。 この3点で構築されたビームバリアスクリプト。 int VG_BEAM_CONDITION 現在のビームの状態 0で起動前 1で起動 int VG_BEAM_DURATION 1ステップ目のビーム照射時間 string VG_BEAM_START 開始オブジェクト ここがエフェクトの開始地点 string VG_BEAM_TARGET 目標オブジェクト ここがエフェクトの目標 それと同時に指定トリガーの中に居るクリーチャー全てにダメージを与える string VG_AREA_NAME 指定トリガーの名前 int VG_AREA_DMG_REFLEX 反応セーブDC デフォルトは14 成功するとダメージ半減、身かわし強化があるならダメージ無し。 int VG_AREA_DMG_AMOUNT ダメージの量 デフォルトは10 ***********************************************************************/ //OnHeartBeatに入れるべき void AreaDamage() { //範囲トリガー名と、その中に居る一体目のクリーチャーを習得 string sPerObject = GetLocalString(OBJECT_SELF,"VG_AREA_NAME"); object oPerObject = GetObjectByTag(sPerObject); object oCreature = GetFirstInPersistentObject(oPerObject); while (GetIsObjectValid(oCreature)) { int nDamageAmount = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_AMOUNT"); int nDC = GetLocalInt(OBJECT_SELF, "VG_AREA_DMG_REFLEX"); int nSave = ReflexSave(oCreature, nDC); //セーブ成功か、身かわし強化でダメージ半減 if(nSave >= 1 || GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) { nDamageAmount = nDamageAmount / 2; //身かわし強化でセーブに成功したらダメージ0 if(GetHasFeat(FEAT_IMPROVED_EVASION, oCreature)) nDamageAmount = 0; } //炎属性のダメージをnDamageAmountだけクリーチャーに与える effect eDamage = EffectDamage(nDamageAmount, DAMAGE_TYPE_FIRE, DAMAGE_POWER_ENERGY); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oCreature); //炎のエフェクトを与える ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_S), oCreature); oCreature = GetNextInPersistentObject(); } } void main() { //ダメージを与える int nCondition = GetLocalInt(OBJECT_SELF, "VG_BEAM_CONDITION"); if (nCondition >= 1) { float fDuration = GetLocalFloat(OBJECT_SELF, "VG_BEAM_DURATION"); //ビームの起点、ビームの終点を習得する。 string sStartName = GetLocalString(OBJECT_SELF, "VG_BEAM_START"); object oStart = GetObjectByTag(sStartName); string sTargetName = GetLocalString(OBJECT_SELF, "VG_BEAM_TARGET"); object oTarget = GetObjectByTag(sTargetName); //ビームエフェクトを作成する effect eEffect = EffectBeam(VFX_BEAM_FIRE, oStart, BODY_NODE_CHEST); //トリガーを習得 string sPerObject = GetLocalString(OBJECT_SELF,"VG_AREA_NAME"); object oPerObject = GetObjectByTag(sPerObject); SetLocalInt(oPerObject, "VG_AREA_DMG_CONDITION", 1); DelayCommand(fDuration, SetLocalInt(oPerObject, "VG_AREA_DMG_CONDITION", 0)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration); AreaDamage(); } }

表示オプション

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