La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 18:53:09


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
omega
Grand Chevalier
Inscrit le: 09 Jan 2004
Messages: 116
Répondre en citant
Posté le : 11/03/2005 15:25:06 Sujet du message : composants

Salut, je repose la question, car j'ai eu une reponse, mais ca marche pas.

Voila, je voulais rajouter des composants aux sorts, pour eviter qu'ils soient lancés en boucle. On m'a conseille de mettre ca au debut :

NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


et ca a la fin :

NWScript :
SendMessageToPC(opc,"Il vous manque un composant");
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


ce qui fait, que pour un script de base, par exemple, benediction, ca donne :

NWScript :
//:Confused///////////////////////// /////////////////////
//:: Bless
//:: NW_S0_Bless.nss
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    All allies within 30ft of the caster gain a
    +1 attack bonus and a +1 save bonus vs fear
    effects

    also can be cast on crossbow bolts to bless them
    in order to slay rakshasa
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: July 24, 2001
//:Confused///////////////////////// ////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
//:: Added Bless item ability: Georg Z, On: June 20, 2001
#include "NW_I0_SPELLS"

#include "x2_inc_spellhook"

void main()
{
object opc = GetLastSpellCaster();

if (GetItemPossessedBy(opc,"rebelle") != OBJECT_INVALID)
{
    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

    // End of Spell Cast Hook


    //Declare major variables
    object oTarget = GetSpellTargetObject();
    int nDuration = 1 + GetCasterLevel(OBJECT_SELF);

    effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    // ---------------- TARGETED ON BOLT  -------------------
    if(GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
    {
        // special handling for blessing crossbow bolts that can slay rakshasa's
        if (GetBaseItemType(oTarget) == BASE_ITEM_BOLT)
        {
          SignalEvent(GetItemPossessor(oTarget), EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
          IPSafeAddItemProperty(oTarget, ItemPropertyOnHitCastSpell(123,1), RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_KEEP_EXISTING );
          ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oTarget));
          ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, GetItemPossessor(oTarget), TurnsToSeconds(nDuration));
          return;
        }
    }


    effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
    effect eAttack = EffectAttackIncrease(1);
    effect eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FEAR);

    effect eLink = EffectLinkEffects(eAttack, eSave);
    eLink = EffectLinkEffects(eLink, eDur);

    int nMetaMagic = GetMetaMagicFeat();
    float fDelay;
    //Metamagic duration check
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
        nDuration = nDuration *2; //Duration is +100%
    }

    //Apply Impact
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation());

    //Get the first target in the radius around the caster
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
    while(GetIsObjectValid(oTarget))
    {
        if(GetIsReactionTypeFriendly(oTarget) || GetFactionEqual(oTarget))
        {
            fDelay = GetRandomDelay(0.4, 1.1);
            //Fire spell cast at event for target
            SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BLESS, FALSE));
            //Apply VFX impact and bonus effects
            DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
            DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration)));
        }
        //Get the next target in the specified area around the caster
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
    }
    }
SendMessageToPC(opc,"Il vous manque un composant");
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Mais voila, ca marche pas !!!!

Merci de votre aide
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 10/04/2005 19:22:40 Sujet du message :

Euh cela m'interesse aussi donc si une ^^ame charitable pouvait se pancher sur la question, merci d'avance...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 11/04/2005 00:35:16 Sujet du message :

C'est vrai qu'écrit comme ça, ça risque d'avoir du mal à fonctionner.

Bon je propose un autre truc, non testé par contre.


NWScript :
void main(){

object opc = GetLastSpellCaster();
object oComposant=GetItemPossessedBy(opc,"tag_du_composant");

if (oComposant != OBJECT_INVALID)

{
DestroyObject(oComposant,0.0);

//Ici tu met le script de ton sort sans rien toucher

}

else SendMessageToPC(opc,"Il vous manque un composant");
          }
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Ce qu'on fait : on regarde s'il a le composant, s'il l'a, on le détruit, et on lance le sort, s'il l'a pas, on lui dit qu'il lui manque le composant.

PS : vous me direz si cela fonctionne.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 11/04/2005 01:29:40 Sujet du message :

Il est inutile d'aller modifier les scripts des sorts. Il existe désormais un outil FA-BU-LEUX pour ce genre de chose, le spell-hooking.

Pour tous les détails, voir cette adresse : [http]

Ça permet en quelques lignes d'ajouter des conditions aux scripts qu'on veut, en un seul script global. Faut bien lire comme ça fonctionne, et ça vaut le coup de s'y intéresser, vraiment Very Happy
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 11/04/2005 01:47:31 Sujet du message :

On a hate de voir ton tutorial traduit en francais Very Happy

Merci Laughing
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 11/04/2005 10:45:11 Sujet du message :

Même moi qui suit pas une bête en anglais je comprend le lexicon, il font claire et la présentation fait remarquer les éléments important.
Rapidement sa marche comme sa :
On mets cette variable dans le OnModuleLoad (on peut la mettre ailleur, mais sa depend des cas)
NWScript :
SetLocalString(GetModule(), "X2_S_UD_SPELLSCRIPT", "nom_script");
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Ensuite il faut faire un script nommer "nom_script"
Dedans tu met ce que tu veux en utilisant les fonctions encadrer et commenter sur le lexicon, et utilisé de preférence un switch comme dans l'exemple.

Voilà c'est plus simple qu'il n'y parait.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 11/04/2005 11:28:03 Sujet du message :

C'est même encore mieux que ça : la variable X2_S_UD_SPELLSCRIPT on la met tout bêtement sur le module en cliquant sur le bouton [...] proposant les variables dans le menu des propriétés du module Cool

Ensuite, on peut (comme dans l'exemple donné par le tutorial anglais) par exemple empêcher tous les sorts d'être utilisés durant le jour, et ce en 2 ou 3 lignes de code. Avant, il aurait fallu ouvrir tous les scripts de sort un par un et les changer.

On peut faire des zones de non magie...

On peut faire des sorts à composantes...

On peut multiplier ou diminuer la puissance des sorts dans certaines zones...

On peut créer des effets de sorts aléatoires ou dangereux pour l'utilisateur...

Et tant d'autre encore ! Et le plus beau, c'est qu'on peut très facilement sélectionner tous les sorts pour chacun des exemples ci-avant, ou un seul sort, ou 3 seulement. Ça ouvre des perspectives vraiment géniales Laughing
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14066
Localisation: Quadran Alpha
Répondre en citant
Posté le : 11/04/2005 12:53:52 Sujet du message :

Attention: une erreur dans le parsing du nwscript provoquait &&&& au lieu de &&. C'est corrigé.
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 11/04/2005 20:25:44 Sujet du message :

Bon pour stan, ça ne fonctionne pas. J'ai essayé sur boule de feu, on voit l'effet visuelle, mais la BDF n'éclate pas et aucun dégât, même si on a le composant.

Sinon, Ce spell-hooking modifie l'ensemble des sorts si j'ai bien compris. Mais là si je veux juste un composant pour ce sort est-il possible de l'utiliser?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 11/04/2005 20:40:17 Sujet du message :


Citation :
Bon pour stan, ça ne fonctionne pas. J'ai essayé sur boule de feu, on voit l'effet visuelle, mais la BDF n'éclate pas et aucun dégât, même si on a le composant.
Oula euh là ça ne peut pas venir de la minucule modif que je conseillais.Là il faut t'en prendre à ton sort, soit t'as lancé une boule de feu à retardement, soit t'as pas les bons réglages de ton module et les boules de feu font pas de dégats aux non hostile.Ou tu as mal placé les modifs à faire Very Happy



Mais vive le spell-hooking
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 11/04/2005 22:20:20 Sujet du message :

Avec le spell hooking, tu peux modifier d'un seul coup l'ensemble des sorts, comme tu peux si tu le souhaites ne modifier qu'un seul sort parmi tous ceux existant. Suffit de lire le tutorial Very Happy
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 12/04/2005 12:44:08 Sujet du message :

Oui j'ai lu le tutorial, pour moi ça reste complexe, désolé. J'ai bien compris le début, mais c'est pour faire mon script sur un seul sort que je nage...

Sinon c'est bien le script en plus qui fait bugger. Ca doit venir de l'endroit ou je l'ai mis.
Voilà mon script:

NWScript :
void main(){

object opc = GetLastSpellCaster();
object oComposant=GetItemPossessedBy(opc,"tag_du_composant");

if (oComposant != OBJECT_INVALID)

{
DestroyObject(oComposant,0.0);

    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

// End of Spell Cast Hook


    //Declare major variables
    object oCaster = OBJECT_SELF;
    int nCasterLvl = GetCasterLevel(oCaster);
    int nMetaMagic = GetMetaMagicFeat();
    int nDamage;
    float fDelay;
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
    effect eDam;
    //Get the spell target location as opposed to the spell target.
    location lTarget = GetSpellTargetLocation();
    //Limit Caster level for the purposes of damage
    if (nCasterLvl > 10)
    {
        nCasterLvl = 10;
    }
    //Apply the fireball explosion at the location captured above.
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
    //Declare the spell shape, size and the location.  Capture the first target object in the shape.
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    //Cycle through the targets within the spell shape until an invalid object is captured.
    while (GetIsObjectValid(oTarget))
    {
        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
        {
            if((GetSpellId() == 341) || GetSpellId() == 58)
            {
                //Fire cast spell at event for the specified target
                SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
                //Get the distance between the explosion and the target to calculate delay
                fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
                if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
                {
                    //Roll damage for each target
                    nDamage = d6(nCasterLvl);
                    //Resolve metamagic
                    if (nMetaMagic == METAMAGIC_MAXIMIZE)
                    {
                        nDamage = 6 * nCasterLvl;
                    }
                    else if (nMetaMagic == METAMAGIC_EMPOWER)
                    {
                      nDamage = nDamage + nDamage / 2;
                    }
                    //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
                    nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
                    //Set the damage effect
                    eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
                    if(nDamage > 0)
                    {
                        // Apply effects to the currently selected target.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                        //This visual effect is applied to the target object not the location as above.  This visual effect
                        //represents the flame that erupts on the target not on the ground.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
                    }
                }
            }
        }
      //Select the next target within the spell shape.
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    }
    }

}

else SendMessageToPC(opc,"Il vous manque un composant");
}/* suspect block end found !*/

Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
Dernière édition par Yan the salor le 12/04/2005 12:47:40; édité 2 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 12/04/2005 12:44:31 Sujet du message :

Euh...ce

/* suspect block end found !*/

ne fait pas parti de mon script...j'arrive pas à le virer, n'en tenez pas compte svp.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 12/04/2005 15:29:51 Sujet du message :

Effectivement ça ne fonctionnait pas.Il ne devait pas aimer le getlastspellcaster je suppose.

Je met ici un code qui fonctionne sur ce sort : (en spoiler car c'est long)

Ce message est un spoiler, et risque de vous informer de choses que vous auriez dû apprendre par vous même (fin d'un jeu, film, etc). À vos risques et périls (ludiques), vous pouvez le voir en cliquant sur cet avertissement.
Spoiler :
NWScript :
//:Confused///////////////////////// /////////////////////
//:: Fireball
//:: NW_S0_Fireball
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
// A fireball is a burst of flame that detonates with
// a low roar and inflicts 1d6 points of damage per
// caster level (maximum of 10d6) to all creatures
// within the area. Unattended objects also take
// damage. The explosion creates almost no pressure.
*/

#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main(){

object opc = OBJECT_SELF;
object oComposant=GetItemPossessedBy(opc,"compo");

if (oComposant != OBJECT_INVALID)

{


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

// End of Spell Cast Hook


    //Declare major variables
    object oCaster = OBJECT_SELF;
    int nCasterLvl = GetCasterLevel(oCaster);
    int nMetaMagic = GetMetaMagicFeat();
    int nDamage;
    float fDelay;
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
    effect eDam;
    //Get the spell target location as opposed to the spell target.
    location lTarget = GetSpellTargetLocation();
    //Limit Caster level for the purposes of damage
    if (nCasterLvl > 10)
    {
        nCasterLvl = 10;
    }
    //Apply the fireball explosion at the location captured above.
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
    //Declare the spell shape, size and the location.  Capture the first target object in the shape.
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    //Cycle through the targets within the spell shape until an invalid object is captured.
    while (GetIsObjectValid(oTarget))
    {
        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
        {
            if((GetSpellId() == 341) || GetSpellId() == 58)
            {
                //Fire cast spell at event for the specified target
                SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
                //Get the distance between the explosion and the target to calculate delay
                fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
                if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
                {
                    //Roll damage for each target
                    nDamage = d6(nCasterLvl);
                    //Resolve metamagic
                    if (nMetaMagic == METAMAGIC_MAXIMIZE)
                    {
                        nDamage = 6 * nCasterLvl;
                    }
                    else if (nMetaMagic == METAMAGIC_EMPOWER)
                    {
                      nDamage = nDamage + nDamage / 2;
                    }
                    //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
                    nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
                    //Set the damage effect
                    eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
                    if(nDamage > 0)
                    {
                        // Apply effects to the currently selected target.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                        //This visual effect is applied to the target object not the location as above.  This visual effect
                        //represents the flame that erupts on the target not on the ground.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
                    }
                }
            }
        }
      //Select the next target within the spell shape.
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    }
    DestroyObject(oComposant,0.0);
    }



else SendMessageToPC(opc,"Il vous manque un composant");
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Encore désolé pour le code qui buggait Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 12/04/2005 15:49:47 Sujet du message :

Tu es le meilleur Stan...si je monte un persistant, je t'embauche Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 12/04/2005 16:00:11 Sujet du message :

Merci mais je suis bien loin d'être le meilleur, j'ai commencé les scripts nwn depuis 3semaines grand max Laughing
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 12/04/2005 18:26:43 Sujet du message :

Avec le spell hooking :

1 - Placer sur le module la variable :
X2_S_UD_SPELLSCRIPT - string - sort_alternatif

2 - Créer un script qui servira pour tous les sorts "modifiés", qui se nommera donc "sort_alternatif" dans notre exemple. Ce sort sera ensuite toujours le même, quel que soit le sort que l'on désire modifier.

3 - Différents exemples de ce qu'il est possible de faire avec ce script :

NWScript :
#include "x2_inc_switches"

void main()
{
 
  int nSpell = GetSpellId();

  // retourne le niveau du lanceur
  int nLevel = GetCasterLevel(OBJECT_SELF);

  // retourne la classe du lanceur
  int nClass = GetLastSpellCastClass();

 
  int nSpellDC = GetSpellSaveDC();

 
  location lLoc = GetSpellTargetLocation();

 
  object oCible = GetSpellTargetObject();

  // si un objet lance le sort, cette fonction retourne l'objet en question
  object oItemUsed = GetSpellCastItem();

 



 
  if(nSpell = SPELL_FIREBALL)
  {
    if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "COMPO_BDF")))
    {
      SetModuleOverrideSpellScriptFinished();
      SendMessageToPC(OBJECT_SELF, "");
    }
  }


 
  if(GetTag(GetArea(OBJECT_SELF)) == "ZONE_ANTIMAGIE")
  {
    SetModuleOverrideSpellScriptFinished();
    SendMessageToPC(OBJECT_SELF, "La magie ne semble pas exister dans cet endroit...");
  }


 
  if(nSpell = SPELL_HEAL)
  {
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oCible);
  }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 91.336ms