Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Help : Script sur des pouvoirs pseudo-magiques
Help : Script sur des pouvoirs pseudo-magiques
Par Caillou PierreSang le 16/10/2002 à 19:46:17 (#2347855)
Alors, j'ai créée mon objet, sans problème, j'ai réglé ses propriétés sur "Lancer Sort : Pouvoir Unique, sur soi uniquement". Ok, jusque là tout va bien. Ensuite, je vais dans le OnActivateItem du module. Là je rentre tous les trucs préliminaires, GetItemActivator, et compagnie. Pas de problème. Mais là où ça coince, c'est que je sais pas quoi mettre pour lancer cet "effet". J'ai essayer plusieurs choses, mais ça marche pas !!!ActionCastSpellAtObject(SPELLABILITY_BARBARIAN_RAGE, oPC);
Ca, ça me semblait bon, mais ça marche pas !!:sanglote:
Sinon, j'ai essayé ça... mais ça marche pas mieux....ApplyEffectToObject(DURATION_TYPE_PERMANENT, MagicalEffect(SPELLABILITY_BARBARIAN_RAGE), oPC);
Par Ozzy Deadcrab le 16/10/2002 à 21:34:20 (#2348534)
//::///////////////////////////////////////////////
//:: Barbarian Rage
//:: NW_S2_Rage.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
//:: [Placeholder Script]
//:://////////////////////////////////////////////
//:: Created By: [Your Name]
//:: Created On: [date]
//:://////////////////////////////////////////////
void main()
{
SpeakString("Barbarian Rage");
}
Par Caillou PierreSang le 16/10/2002 à 21:57:32 (#2348702)
Ce qu'indique ce script, c'est plutôt d'écrire "Barbarian Rage" lorsque le personnage entre dans sa rage de barbare.... Enfin, ce n'est que mon avis....:)
Par Tyn' le 16/10/2002 à 22:15:59 (#2348809)
//::///////////////////////////////////////////////
//:: Barbarian Rage
//:: NW_S1_BarbRage
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
The Str and Con of the Barbarian increases,
Will Save are +2, AC -2.
Greater Rage starts at level 15.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Aug 13, 2001
//:://////////////////////////////////////////////
void main()
{
if(!GetHasFeatEffect(FEAT_BARBARIAN_RAGE))
{
//Declare major variables
int nLevel = GetLevelByClass(CLASS_TYPE_BARBARIAN);
int nIncrease;
int nSave;
if (nLevel 0)
{
//Apply the VFX impact and effects
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, RoundsToSeconds(nCon));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF) ;
}
}
}
Par Caillou PierreSang le 16/10/2002 à 22:28:07 (#2348882)
Merci beaucoup Tyn' !!!:merci:
Je pense que je pourrais m'en tirer avec ça... ^_^
Le seul problème, c'est que je voulais justement que celui qui lance la rage ne soit pas un barbare, mais t'inquiète, tu m'as donné un bon départ, et à défaut de ne pas être bon scripteur, j'arrive à tripatouiller à partir de scripts déjà faits.
J'essaye demain, là je suis occupé à scripter les quêtes...
Encore merci !!! :merci: :merci:
Par Tyn' le 16/10/2002 à 22:34:12 (#2348919)
Tous les sorts commencent par NW_S0 ou 1, en général les S2 sont des scripts de template.
Par Caillou PierreSang le 17/10/2002 à 21:10:17 (#2354156)
J'ai bien mis le tag de l'objet dans le OnActivateItem du module et j'ai ajouté la propriété du script de la rage du barbare (en changeant le Getlevelbyclass, et en virant la condition "if GetHasFeat...") en dessous du tag de mon objet.
Rien n'y fait, lorsque je clique, y a marqué "xxx utilise le pouvoir spécial d'un objet" mais rien ne se passe...
Alors j'ai copié/collé entièrement, sans le changer le scipt de la rage du barbare en dessous du tag de mon objet. Je prend un persos barbare, et même en activant l'objet, la rage ne se lance pas....:aide: :confus:
M'en vais re-tripatouiller....:lit:
Par Caillou PierreSang le 17/10/2002 à 21:54:48 (#2354369)
En fait, c'était une accolade ("}") d'un autre script du OnItemActivated (faut dire que j'en ai plein dedans :D) qui se baladait et faisait tout foirer...
Moralité, je m'étais lancé dans un débuggage qui servait à rien !!:eek:
Enfin, j'ai légèrement simplifié le script de la rage de barbare, mais ça marche bien... Je vous le mets à disposition si y en a que ça intéresse.
Et je remercie bien Tyn' !! :merci: ;)
void main()
{
object oPC = GetItemActivator();
string sTag = GetTag(oItem);
if (sTag == "objet_qui_décleche_la_rage")
{
//Declare major variables
int nLevel = GetHitDice(oPC);
int nIncrease;
int nSave;
int nCon = 3 + GetAbilityModifier(ABILITY_CONSTITUTION) + nIncrease;
if (nLevel 0)
{
PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
//Determine the duration by getting the con modifier after being modified
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAbilityIncrease(ABILITY_CONSTITUTION, nIncrease), oPC, RoundsToSeconds(nCon));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAbilityIncrease(ABILITY_STRENGTH, nIncrease), oPC, RoundsToSeconds(nCon));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSavingThrowIncrease(SAVING_THROW_WILL, nSave), oPC, RoundsToSeconds(nCon));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectACDecrease(2, AC_DODGE_BONUS), oPC, RoundsToSeconds(nCon));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE), oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE), oPC);
}
}
C'est le script simplifié, je vais voir si celui "officiel" marche aussi bien. Mais en tout cas, celui là marche bien !;)
Par Ozzy Deadcrab le 18/10/2002 à 10:39:45 (#2356330)
JOL Archives 1.0.1
@ JOL / JeuxOnLine