I put this on a NPC for buffing PCs, it works fine except it will cause lag. I would like to get all the spells benifits put on the PC with maybe just one FX instead of all the spells FXs at once. I am not good at scripting, I cut/paste and use Lilac's generator. Is what I want to achieve possible?
void main()
{
object oPC = GetPCSpeaker();
AssignCommand(oPC, TakeGoldFromCreature(500, oPC, TRUE));
object oTarget;
oTarget = oPC;
ActionCastSpellAtObject(SPELL_AID, oTarget, METAMAGIC_ANY, TRUE, 15, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_BULLS_STRENGTH, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_CATS_GRACE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_DARKFIRE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_EAGLE_SPLEDOR, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_ENDURANCE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_FOXS_CUNNING, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_NEGATIVE_ENERGY_PROTECTION, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
}
A buffing script for NPC
Débuté par
PreyingMantis
, avril 05 2011 07:11
#1
Posté 05 avril 2011 - 07:11
#2
Posté 05 avril 2011 - 08:20
here you go i put a 2 second delay on each spell after the previous was casted, added spacing and removed unneeded lines and your script will still cast the spells at the player.
if you want more of a delay just change the number in front of the peroid
void main()
{
object oPC = GetPCSpeaker();
AssignCommand(oPC, TakeGoldFromCreature(500, oPC, TRUE));
DelayCommand(2.0,ActionCastSpellAtObject(SPELL_AID, oPC, METAMAGIC_ANY, TRUE, 15, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(4.0, ActionCastSpellAtObject(SPELL_BULLS_STRENGTH, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(6.0, ActionCastSpellAtObject(SPELL_CATS_GRACE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(8.0, ActionCastSpellAtObject(SPELL_DARKFIRE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(10.0, ActionCastSpellAtObject(SPELL_EAGLE_SPLEDOR, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(12.0, ActionCastSpellAtObject(SPELL_ENDURANCE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(14.0, ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(16.0, ActionCastSpellAtObject(SPELL_FOXS_CUNNING, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(18.0, ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(20.0, ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(22.0, ActionCastSpellAtObject(SPELL_NEGATIVE_ENERGY_PROTECTION, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(24.0, ActionCastSpellAtObject(SPELL_HASTE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
}
if you want more of a delay just change the number in front of the peroid
void main()
{
object oPC = GetPCSpeaker();
AssignCommand(oPC, TakeGoldFromCreature(500, oPC, TRUE));
DelayCommand(2.0,ActionCastSpellAtObject(SPELL_AID, oPC, METAMAGIC_ANY, TRUE, 15, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(4.0, ActionCastSpellAtObject(SPELL_BULLS_STRENGTH, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(6.0, ActionCastSpellAtObject(SPELL_CATS_GRACE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(8.0, ActionCastSpellAtObject(SPELL_DARKFIRE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(10.0, ActionCastSpellAtObject(SPELL_EAGLE_SPLEDOR, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(12.0, ActionCastSpellAtObject(SPELL_ENDURANCE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(14.0, ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(16.0, ActionCastSpellAtObject(SPELL_FOXS_CUNNING, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(18.0, ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(20.0, ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(22.0, ActionCastSpellAtObject(SPELL_NEGATIVE_ENERGY_PROTECTION, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(24.0, ActionCastSpellAtObject(SPELL_HASTE, oPC, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
}
#3
Posté 05 avril 2011 - 08:58
Thank you.
#4
Posté 05 avril 2011 - 09:07
no problem
#5
Posté 06 avril 2011 - 01:51
Thanks for the response Ryuhi200, but I couldn't get yours to work. And I am really trying to get the enhancements all at once instead of something drawn out. I did cut my amount of buffs in half hoping to reduce lag, and it works... almost always. 
Here is what I have so far...
void main()
{
object oPC = GetPCSpeaker();
if (GetGold(oPC) >= 250)
{
AssignCommand(oPC, TakeGoldFromCreature(250, oPC, TRUE));
oTarget = oPC;
ActionCastSpellAtObject(SPELL_AID, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, FALSE);
ActionCastSpellAtObject(SPELL_DARKFIRE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
}
else
{
AssignCommand(GetObjectByTag("Marisa"), ActionSpeakString("I'm sorry, but that is not enough gold for a donation."));
}
}
Everything seems to be working as I would like.. except, once in about 4 tries, the NPC takes the gold starts to cast spell and stops... nothing else happens. So PC loses gold and gets no buff.
Does anybody have any ideas what could be the problem?
Thanks in advance for any help.
Here is what I have so far...
void main()
{
object oPC = GetPCSpeaker();
if (GetGold(oPC) >= 250)
{
AssignCommand(oPC, TakeGoldFromCreature(250, oPC, TRUE));
oTarget = oPC;
ActionCastSpellAtObject(SPELL_AID, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, FALSE);
ActionCastSpellAtObject(SPELL_DARKFIRE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
}
else
{
AssignCommand(GetObjectByTag("Marisa"), ActionSpeakString("I'm sorry, but that is not enough gold for a donation."));
}
}
Everything seems to be working as I would like.. except, once in about 4 tries, the NPC takes the gold starts to cast spell and stops... nothing else happens. So PC loses gold and gets no buff.
Does anybody have any ideas what could be the problem?
Thanks in advance for any help.
#6
Posté 06 avril 2011 - 02:39
PreyingMantis wrote...
Everything seems to be working as I would like.. except, once in about 4 tries, the NPC takes the gold starts to cast spell and stops... nothing else happens. So PC loses gold and gets no buff.
Does anybody have any ideas what could be the problem?
Thanks in advance for any help.
It sounds like something is clearing the action Que before he has a chance to cast.
Try this.
void main()
{
object oTarget= GetPCSpeaker();
if (GetGold(oTarget) >= 250)
{
/* no reason to assign this -- AssignCommand(oPC,*/ TakeGoldFromCreature(250, oTarget, TRUE)/*)*/;
ActionCastSpellAtObject(SPELL_AID, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, FALSE);
ActionCastSpellAtObject(SPELL_DARKFIRE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_ENDURE_ELEMENTS, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_VESTMENT, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionCastSpellAtObject(SPELL_MAGIC_WEAPON, oTarget, METAMAGIC_ANY, TRUE, 12, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
ActionDoCommand( SetCommandable(TRUE));
SetCommandable(FALSE);
}
else
{
/* Again no resion to assign -- AssignCommand(GetObjectByTag("Marisa"),*/ ActionSpeakString("I'm sorry, but that is not enough gold for a donation.")/*)*/;
}
}
#7
Posté 06 avril 2011 - 03:12
Wow, I am a long ways from understanding all this scripting stuff. After some testing it hasn't failed once now. Thanks again Lightfoot8 for making it simple for us simpletons.
I think this is just what I want, I really appreciate your help.
I think this is just what I want, I really appreciate your help.





Retour en haut






