≡奥德赛公会≡ » 无冬之夜2 » D.T.E 无冬骑士制作组 » 哪位帮我解答一下脚本问题啊……多谢多谢~


2007-6-17 15:08 Metatron
哪位帮我解答一下脚本问题啊……多谢多谢~

想做个OnActivateItem的Epic Spell Book,不过遇到意外……

脚本可以正常作用,对自身、召唤生物和敌对生物同时造成伤害,豁免正常作用,法术范围正常作用。
可以看到自己的豁免情况,头顶可以看到伤害数字。
召唤生物可以看到伤害数字,貌似没有豁免信息。
敌人正常受伤,看不到伤害数字和豁免信息。

【附脚本】
void main ()
{
     object oItem = GetItemActivated();
     object oPC = GetItemActivator();
     object oTarget = GetItemActivatedTarget();
     location lTargetLocation = GetItemActivatedTargetLocation();
     float fDelay = 0.0;
     int nDamage01,nDamage02;
     effect eDamage01,eDamage02;
     int nCasterLevel;
     int nSpellDC = GetEpicSpellSaveDC(oPC);
     effect eVis01,eVis02;
     int nDuration = GetCasterLevel(oPC);
     effect eLink;
     effect eSpellEffect;

     if (GetHasFeat(FEAT_EPIC_WIZARD,oPC) == 1)
       {nCasterLevel = GetLevelByClass (CLASS_TYPE_WIZARD,oPC);}
     else if ((GetHasFeat(FEAT_EPIC_SORCERER,oPC) == 1))
       {nCasterLevel = GetLevelByClass (CLASS_TYPE_SORCERER,oPC);}
     else if ((GetHasFeat(FEAT_EPIC_CLERIC,oPC) == 1))
       {nCasterLevel = GetLevelByClass (CLASS_TYPE_CLERIC,oPC);}
     else if ((GetHasFeat(FEAT_EPIC_DRUID,oPC) == 1))
       {nCasterLevel = GetLevelByClass (CLASS_TYPE_DRUID,oPC);}

     //Epic Spell: Cataract of Fire
     if (GetTag(oItem) == "EPICSPELLCF")
       {
         if (GetHasFeat(FEAT_EPIC_WIZARD,oPC) == 1
            ||GetHasFeat(FEAT_EPIC_SORCERER,oPC) == 1
            ||GetHasFeat(FEAT_EPIC_CLERIC,oPC) == 1
            ||GetHasFeat(FEAT_EPIC_DRUID,oPC) == 1)
            {
            effect eEPICSPELLCF01 = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
            effect eEPICSPELLCF02 = EffectVisualEffect(VFX_FNF_SUMMONDRAGON);
            effect eEPICSPELLCF03 = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
            effect eVis01 = EffectVisualEffect(VFX_IMP_FLAME_M);
            effect eVis02 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE);
            DelayCommand(0.0,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eEPICSPELLCF01,lTargetLocation,1.0f));
            DelayCommand(0.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eEPICSPELLCF02,lTargetLocation,1.0f));
            DelayCommand(1.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eEPICSPELLCF03,lTargetLocation,1.0f));

            oTarget = GetFirstObjectInShape(SHAPE_SPHERE,RADIUS_SIZE_HUGE,lTargetLocation,TRUE,OBJECT_TYPE_CREATURE|OBJECT_TYPE_DOOR|OBJECT_TYPE_PLACEABLE);

            while (GetIsObjectValid(oTarget))
              {
               if (spellsIsTarget(oTarget,SPELL_TARGET_STANDARDHOSTILE,oPC))
                  {
                  SignalEvent(oTarget, EventSpellCastAt(oPC, SPELL_FIREBALL));

                  nDamage01 = d4(nCasterLevel);
                  nDamage02 = d4(nCasterLevel);

                  if (MySavingThrow(SAVING_THROW_REFLEX,oTarget,nSpellDC,SAVING_THROW_TYPE_SPELL,OBJECT_SELF,0.1f)>0)
                     {
                     nDamage01 = nDamage01/2;
                     nDamage02 = nDamage02/2;
                     }

                  eDamage01 = EffectDamage(nDamage01, DAMAGE_TYPE_FIRE);
                  eDamage02 = EffectDamage(nDamage02, DAMAGE_TYPE_MAGICAL);

                  DelayCommand(0.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage01, oTarget));
                  DelayCommand(0.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage02, oTarget));
                  DelayCommand(0.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eEPICSPELLCF01,oTarget,1.0f));
                  DelayCommand(0.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis01,oTarget,1.0f));
                  DelayCommand(0.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis02,oTarget,1.0f));
                  }

                  oTarget = GetNextObjectInShape(SHAPE_SPHERE,RADIUS_SIZE_HUGE,lTargetLocation,TRUE,OBJECT_TYPE_CREATURE|OBJECT_TYPE_DOOR|OBJECT_TYPE_PLACEABLE);

                }
              }
         }
}

define部分有很多废渣……是给别的段落准备的,不管它^_^。

请求达人解答,谢谢。

2007-6-17 20:17 Metatron
被转到这来了啊……好吧骑士~偶又来了。

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.