La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 28/04/2024 11:04:13


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Attention ! Vous êtes en train de lire un message hors de son contexte. Veuillez lire le sujet probleme sur deux teleportations en entier avant de répondre à ce message.
arfost
Acolyte
Inscrit le: 24 Fév 2007
Messages: 20
Répondre en citant
Posté le : 01/08/2007 20:16:34 Sujet du message :

Alors... Voila déjà le script complet gerant les effets nefastes de la magie (il est grand)
Ca permet 13 effets critiques differents, j'ai commenté uniquement les deux avec teleportation, ceux qui nous interessent.

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 :

#include "X0_I0_SPELLS"

location Decalage(location lLoc, float fRayon = 10.0) //permet un decalage de 10 metre de rayon
{
    vector vPos = GetPositionFromLocation(lLoc);

    float fR = IntToFloat(Random(100)+1)/100 * fRayon;          //Definition des coordonnes polaires du nouveau point
    float fTheta = IntToFloat(Random(360));

    vPos.x += fR*cos(fTheta);                                  //Calcul des modifications faites aux coordonnes initiales
    vPos.y += fR*sin(fTheta);

    lLoc = Location(GetAreaFromLocation(lLoc), vPos, 0.0);      //Redefinition de la location apres application du decalage

    return lLoc;
}

void degats(object oMage)
{
    effect eDam;
    int nMetaMagic = GetMetaMagicFeat();
    switch (nMetaMagic)
    {
    case METAMAGIC_EMPOWER:
        eDam = EffectDamage(d12(15),DAMAGE_TYPE_SLASHING,DAMAGE_POWER_PLUS_TWENTY);
    break;
    case METAMAGIC_MAXIMIZE:
        eDam = EffectDamage(12*10,DAMAGE_TYPE_SLASHING,DAMAGE_POWER_PLUS_TWENTY);
    break;
    default:
        eDam = EffectDamage(d12(10),DAMAGE_TYPE_SLASHING,DAMAGE_POWER_PLUS_TWENTY);
    break;
    }

    effect eVis = EffectVisualEffect(234);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oMage);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oMage);
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'energie qui vous echappe se retourne contre vous et vous la sentez parcourir et dechirer votre corps.";
}

void deat_soul(object oMage)
{
    effect eVis = EffectVisualEffect(VFX_IMP_DEATH_L);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oMage);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oMage);
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'energie qui vous echappe se retourne contre vous, vous sentez votre ame s'etirer et se tordre comme si l'on vous l'arrachait avant de vous effondrer, mort.";

}

void deat_implo(object oMage)
{
    object oTarget;
    float fDelay;
    //effect eDeath = EffectDeath();
    //eDeath = SupernaturalEffect(eDeath);
    effect eImplode= EffectVisualEffect(VFX_FNF_IMPLOSION);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImplode, GetLocation(oMage));
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oMage),FALSE, OBJECT_TYPE_CREATURE);
    while (GetIsObjectValid(oTarget))
    {
          fDelay = GetRandomDelay(0.4, 1.2);
                //Make Constit save
                if(!MySavingThrow(SAVING_THROW_FORT, oTarget, 30, SAVING_THROW_TYPE_CHAOS, OBJECT_SELF, fDelay))
                {
                    //Apply death effect and the VFX impact
                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget));
                }
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oMage));
    }
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'energie qui vous echappe se retourne contre vous et dechiquete votre corps et tout ceux aleantours.";
}

void knoc_down(object oMage)
{
    int nMetaMagic = GetMetaMagicFeat();
    float fDuration;
    switch (nMetaMagic)
    {
    case METAMAGIC_EMPOWER:
        fDuration = (d6(3) - GetAbilityModifier(ABILITY_CONSTITUTION,oMage))*1.0;
        if (fDuration<3.0) fDuration = 3.0;
    break;
    case METAMAGIC_EXTEND:
        fDuration = (d6(2)*2.0 - GetAbilityModifier(ABILITY_CONSTITUTION,oMage));
        if (fDuration<6.0) fDuration = 6.0;
    break;
    case METAMAGIC_MAXIMIZE:
        fDuration = (6*2.0 - GetAbilityModifier(ABILITY_CONSTITUTION,oMage));
        if (fDuration<3.0) fDuration = 3.0;
    break;
    default:
        fDuration = (d6(2) - GetAbilityModifier(ABILITY_CONSTITUTION,oMage))*1.0;
        if (fDuration<3.0) fDuration = 3.0;
    break;
    }
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'energie qui vous echappe parcours votre corps et vous assome pour une courte duree (" +FloatToString(fDuration,2,0)+ " rounds)";
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectStunned(),oMage,fDuration*6.0);
}

void confused(object oMage)
{
    int nMetaMagic = GetMetaMagicFeat();
    float fDuration;
    switch (nMetaMagic)
    {
    case METAMAGIC_EMPOWER:
        fDuration = (d6(3) - GetAbilityModifier(ABILITY_CONSTITUTION,oMage))*1.0;
        if (fDuration<3.0) fDuration = 3.0;
    break;
    case METAMAGIC_EXTEND:
        fDuration = (d6(2)*2.0 - GetAbilityModifier(ABILITY_CONSTITUTION,oMage));
        if (fDuration<6.0) fDuration = 6.0;
    break;
    case METAMAGIC_MAXIMIZE:
        fDuration = (6*2.0 - GetAbilityModifier(ABILITY_CONSTITUTION,oMage));
        if (fDuration<3.0) fDuration = 3.0;
    break;
    default:
        fDuration = (d6(2) - GetAbilityModifier(ABILITY_CONSTITUTION,oMage))*1.0;
        if (fDuration<3.0) fDuration = 3.0;
    break;
    }
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'energie qui vous echappe parcours votre corps et vous rend confus pour une courte duree (" +FloatToString(fDuration,2,0)+ " rounds)";
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectConfused(),oMage,fDuration*6.0);
}

void aveugle(object oMage)
{
  int nVfxGenreRace;
  if (GetGender(oMage) == GENDER_FEMALE)
  {
        switch (GetRacialType(oMage))
        {
        case RACIAL_TYPE_HUMAN:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HUMAN_FEMALE;
            break;
        case RACIAL_TYPE_ELF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_ELF_FEMALE;
            break;
        case RACIAL_TYPE_HALFORC:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFORC_FEMALE;
            break;
        case RACIAL_TYPE_HALFELF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFELF_FEMALE;
            break;
        case RACIAL_TYPE_HALFLING:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFLING_FEMALE;
            break;
        case RACIAL_TYPE_DWARF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_DWARF_FEMALE;
            break;
        case RACIAL_TYPE_GNOME:
                nVfxGenreRace = VFX_EYES_RED_FLAME_GNOME_FEMALE;
            break;
        default:
                SendMessageToPC(OBJECT_SELF,"Une exception dans la determination de votre race  eu lieu. Merci de prevenir le MD Arfost le plus vite possible.");
            break;
        }
  }
  else
  {
        switch (GetRacialType(oMage))
        {
        case RACIAL_TYPE_HUMAN:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HUMAN_MALE;
            break;
        case RACIAL_TYPE_ELF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_ELF_MALE;
            break;
        case RACIAL_TYPE_HALFORC:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFORC_MALE;
            break;
        case RACIAL_TYPE_HALFELF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFELF_MALE;
            break;
        case RACIAL_TYPE_HALFLING:
                nVfxGenreRace = VFX_EYES_RED_FLAME_HALFLING_MALE;
            break;
        case RACIAL_TYPE_DWARF:
                nVfxGenreRace = VFX_EYES_RED_FLAME_DWARF_MALE;
            break;
        case RACIAL_TYPE_GNOME:
                nVfxGenreRace = VFX_EYES_RED_FLAME_GNOME_MALE;
            break;
        default:
                SendMessageToPC(OBJECT_SELF,"Une exception dans la determination de votre race  eu lieu. Merci de prevenir le MD Arfost le plus vite possible. C'est vrai quoi, ne pas avoir de race c'est le bordel.");
            break;
        }
  }
  effect eYeux = SupernaturalEffect(EffectVisualEffect(nVfxGenreRace));
  effect eBlindness = SupernaturalEffect(EffectBlindness());
  eBlindness  = EffectLinkEffects(eYeux,eBlindness);
  ApplyEffectToObject(DURATION_TYPE_PERMANENT,eBlindness,oMage);
  sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "vous sentez vos yeux vous bruler soudainement, puis tout deviens sombre autours de vous.";
}
void invocation (object oMage)
{

    effect eVis;
    string sBlueprint;
    location lLoc;
    lLoc = GetLocation(oMage);
    int iNbSpawn = d2(1);
    int i;
    for (i = 1; i <= iNbSpawn; i++)
    {
        switch (d10(1))
        {
        case 1:
                sBlueprint = "NW_S_SUCCUBUS";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL,FALSE);
            break;
        case 2:
                sBlueprint = "NW_S_VROCK";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL,FALSE);
            break;
        case 3:
                sBlueprint = "NW_S_CTRUMPET";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL,FALSE);
            break;
        case 4:
                sBlueprint = "NW_S_SLAADDETH";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3,FALSE);
            break;
        case 5:
                sBlueprint = "NW_S_BALOR";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_GATE,FALSE);
            break;
        case 6:
                sBlueprint = "NW_S_SUCCUBUS";
                eVis = EffectVisualEffect(VFX_FNF_SUMMON_GATE,FALSE);
            break;
        default:
            //
        break;
        }

        lLoc = Decalage(lLoc,8.0);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eVis,lLoc);
        CreateObject(OBJECT_TYPE_CREATURE,sBlueprint,lLoc,TRUE);
        sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "une legere faille s'ouvre sous vos yeux. Vous arrivez a la controler mais le temps que vous le fassiez quelques creatures en sont sortie.";
    }
}

void effe_lampion (object oMage)
{
    effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
    eVis = SupernaturalEffect(eVis);
    int nDuration = GetCasterLevel(oMage);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMage,TurnsToSeconds(nDuration));
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "la magie que vous tentiez de maitriser se concentre en vous et vous illumine d'une lueur etrange.";
}

void tele_self (object oMage)
{
    SetLocalInt(OBJECT_SELF,"nBugTeleporte",1);  //variable de bidouille pour couper les sorts dans le spell hooking et stopper le bug
    effect eko = EffectKnockdown();
    AssignCommand(oMage, ClearAllActions(TRUE));
    AssignCommand(oMage,JumpToLocation(Decalage(GetLocation(oMage),6.0)));
    //DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eko, oMage,IntToFloat(d6(1))));        //Application du ko en commentaire
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "sans que vous ayez le temps de comprendre vous vous teleportez  une courte distance, sonne sous le choc.";
}

void tele_dime (object oMage)
{
    SetLocalInt(OBJECT_SELF,"nBugTeleporte",1);  //variable de bidouille pour couper les sorts dans le spell hooking et stopper le bug
    effect eko = EffectKnockdown();
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_LIGHTNING_M),oMage);
    string sTag_dest = "WpTeleMage0"+IntToString(Random(6)+1);
    AssignCommand(oMage, ClearAllActions(TRUE));

    object oDest = GetObjectByTag(sTag_dest);  //solution de Flumby mise en oeuvre
    AssignCommand(oMage,JumpToLocation(GetLocation(oDest)));      //solution de Flumby mise en oeuvre
    //AssignCommand(oMage,JumpToObject(GetObjectByTag(sTag_dest)));  //tous les anciens essais
    //AssignCommand(oEntering,JumpToObject(GetObjectByTag(sWPTag)));
    //DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eko, oMage,1.0));      //Application du ko en commentaire
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "sans que vous ayez le temps de comprendre vous vous teleportez dans un endroit lointaint. Heureusement vos esprit vous reviennent tres rapidement.";
}

void lampion_disparition (object oMage)
{
    effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_GATE);
    effect eVis2 = EffectVisualEffect(VFX_FNF_PWKILL);
    effect eInvi = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
    effect eInvi2 = EffectInvisibility(INVISIBILITY_TYPE_NORMAL);
    eInvi2 = EffectLinkEffects(eInvi,eInvi2);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oMage);
    DelayCommand(2.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis2,oMage));
    float fDelay;
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, GetLocation(oMage),FALSE, OBJECT_TYPE_CREATURE);
    while (GetIsObjectValid(oTarget))
    {
          fDelay = GetRandomDelay(0.4, 1.2);
                if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, 30, SAVING_THROW_TYPE_CHAOS, OBJECT_SELF, fDelay))
                {
                    //Apply death effect and the VFX impact
                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectKnockdown(), oTarget, IntToFloat(d6(1))));
                }
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oMage));
    }
    DelayCommand(4.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvi2,oMage,100.0+d100(1)));
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "... pouf";
}

void haunted (object oMage)
{
    location lLoc = GetLocation(oMage);
    string sFinTag = GetStringLeft(GetName(oMage),5);
    int nNbGhost = d4(1);
    int i;
    for (i = 1; i <nNbGhost; i++)
    {
        CreateObject(OBJECT_TYPE_CREATURE,"ameenpeine",Decalage(lLoc,10.0),FALSE,"ghost_"+sFinTag);
    }
    AdjustFactionReputation(GetObjectByTag("ghost_"+sFinTag),oMage,-50);
    SetLocalString(oMage,"sTagGhost","ghost_"+sFinTag);
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "des creatures ethere viennent vous hanter.";
}

void coupure_magie (object oMage)
{
    SetLocalInt(oMage,"nCoupMagi",1);
    sMessageEffetMagiqueIncontrole = sMessageEffetMagiqueIncontrole + "l'etrange impression d'un manque vous envahis.";
}

string sMessageEffetMagiqueIncontrole;

void main()
{

    int nEffet = GetLocalInt(OBJECT_SELF,"nEffet");
    sMessageEffetMagiqueIncontrole = "Pendant l'incantation vous perdez le controle de votre magie et ";
    if (nEffet == 0) nEffet = d12(1) + d10(1);

    switch (nEffet)
    {
    case 0:
        // statements ...
        // condition would also evaluate as true if x == 0, which should not happen . . .
        // but . . . lets put this in here just as a safety device Smile
        break;
    case 1:
        // statements ...
        // condition would also evaluate as true if x == 0, which should not happen . . .
        // but . . . lets put this in here just as a safety device Smile
        break;
    case 2:
            degats(OBJECT_SELF);
        break;
    case 3:
            degats(OBJECT_SELF);
        break;
    case 4:
            deat_soul(OBJECT_SELF);
        break;
    case 5:
            deat_implo(OBJECT_SELF);
        break;
    case 6:
            knoc_down(OBJECT_SELF);
        break;
    case 7:
            knoc_down(OBJECT_SELF);
        break;
    case 8:
            knoc_down(OBJECT_SELF);
        break;
    case 9:
            knoc_down(OBJECT_SELF);
        break;
    case 10:
            confused(OBJECT_SELF);
        break;
    case 11:
            confused(OBJECT_SELF);
        break;
    case 12:
            confused(OBJECT_SELF);
        break;
    case 13:
            confused(OBJECT_SELF);
        break;
    case 14:
            aveugle(OBJECT_SELF);
        break;
    case 15:
            aveugle(OBJECT_SELF);
        break;
    case 16:
            invocation(OBJECT_SELF);
        break;
    case 17:
            invocation(OBJECT_SELF);
        break;
    case 18:
            effe_lampion(OBJECT_SELF);
        break;
    case 19:
            effe_lampion(OBJECT_SELF);
        break;
    case 20:
            effe_lampion(OBJECT_SELF);
        break;
    case 21:
            effe_lampion(OBJECT_SELF);
        break;
    case 22:
            tele_dime(OBJECT_SELF);
        break;
    case 23:
            lampion_disparition(OBJECT_SELF);
        break;
    case 24:
            lampion_disparition(OBJECT_SELF);
        break;
    case 25:
            haunted(OBJECT_SELF);
        break;
    case 26:
            haunted(OBJECT_SELF);
        break;
    case 27:
            tele_self(OBJECT_SELF);
        break;
    case 28:
            //DelayCommand(1.8,tele_self(OBJECT_SELF));
            tele_self(OBJECT_SELF)
        break;
    case 29:
            //DelayCommand(1.8,tele_dime(OBJECT_SELF));
            tele_dime(OBJECT_SELF)
        break;
    case 30:
            coupure_magie(OBJECT_SELF);
        break;
    default:

        break;
    }
    SendMessageToPC(OBJECT_SELF,sMessageEffetMagiqueIncontrole);
}
Le code a colorer syntaxiquement est trop long (plus de 10240 caractères) et risque de ne pas s'afficher du tout. Vous pouvez le voir en version colorée ici.


Je vous livre ensuite le script de spell hooking

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 :
#include "x2_inc_switches"
#include "inc_perso"

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(!GetLocalInt(OBJECT_SELF,"nBugTeleporte"))
  {
      SetActionMode(OBJECT_SELF,ACTION_MODE_EXPERTISE,FALSE);
      SetActionMode(OBJECT_SELF,ACTION_MODE_IMPROVED_EXPERTISE,FALSE);



          if (!GetLocalInt(OBJECT_SELF,"nSubit") && (nClass == CLASS_TYPE_BARD || nClass == CLASS_TYPE_ARCANE_ARCHER || nClass == CLASS_TYPE_ASSASSIN || nClass == CLASS_TYPE_OUTSIDER || nClass == CLASS_TYPE_PALE_MASTER || nClass == CLASS_TYPE_SORCERER || nClass == CLASS_TYPE_WIZARD) )
          {
            int nPuiss_magie = GetLocalInt(GetArea(OBJECT_SELF),"puiss_magie");
            if ((d100(1) < nPuiss_magie) || GetLocalInt(OBJECT_SELF,"nCoupMagi") == 1)
            {
                FloatingTextStringOnCreature("Vous n'arrivez pas percevoir une quantite de magie suffisante pour etre manipulee",OBJECT_SELF,FALSE);
            }
            else
            {
                string sPropID = Get2DAString("des_crft_spells","IPRP_SpellIndex",nSpell);
                int nInnateLevel = StringToInt(Get2DAString("des_crft_spells","Level",nSpell));
                int nPropID = StringToInt(sPropID);
                if (nPropID == 0)
                {
                    WriteTimestampedLogEntry("***X2UseMagicDevice (Warning): Found no property matching SpellID "+ IntToString(nSpell));
                }
                int nMeta = 0;
                if (GetMetaMagicFeat() != METAMAGIC_NONE) nMeta = d10(1);
                int nHasa = d6(2);
                int nModifJoueur = GetLocalInt(OBJECT_SELF,"nModiSecret");
                if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("Les valeurs sont: lvl de sort = ("+ IntToString(nInnateLevel)+") base du DD = (" + IntToString(20) +") jet de des au hasard (" + IntToString(nHasa)+") difficulte de metamagie = (" + IntToString(nMeta)+") modificateur de zone = (" + IntToString(nPuiss_magie) +")",OBJECT_SELF);
                if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("DD = ("+ IntToString(nInnateLevel + 20 + nHasa + nMeta + nPuiss_magie) +")",OBJECT_SELF);
                int nResult = check_comp(GetSkillRank(SKILL_SPELLCRAFT,OBJECT_SELF,FALSE),nInnateLevel + 20 + nHasa + nMeta + nPuiss_magie + nModifJoueur,OBJECT_SELF);
                if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("result = ("+IntToString(nResult)+")",OBJECT_SELF);
                if (nResult == -99){
                    SetModuleOverrideSpellScriptFinished();
                    ExecuteScript("nefa_magi",OBJECT_SELF);
                    }else if(nResult <=-5){
                        SetModuleOverrideSpellScriptFinished();
                        ExecuteScript("nefa_magi",OBJECT_SELF);
                        }else if (nResult <=0){
                            SetModuleOverrideSpellScriptFinished();
                            FloatingTextStringOnCreature("Vos talents vous font defauts. Vous n'arrivez pas a sculpter la magie et a produire un effet efficace.",OBJECT_SELF,FALSE);
                }
            }
        }
    }
    else
    {
        SetLocalInt(OBJECT_SELF,"nBugTeleporte",0);
        SetModuleOverrideSpellScriptFinished();
    }
}
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.


Voila les deux script en rapport avec l'affaire. Je vous met l'include du spell hooking en bonus au cas ou ça aurait un rapport

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 :
int check_comp (int nComp, int nDD, object oMage) //renvoie 1 en cas de reussite, 0 en echec, et 2 en echec critique.
{
    if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("tranfere comp = ("+IntToString(nComp)+") transfert DD = ("+IntToString(nDD)+")",oMage);
    int nDes = d20(1);
    if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("Jet de des = ("+IntToString(nDes)+")",oMage);
    if (nDes == 1) return -99;
    if (nDes == 20)return 99;
    int nMarge = nDes + nComp -nDD;
    return nMarge;
}

int check_carac (int nCarac, int nDD, object oMage) //renvoie 1 en cas de reussite, 0 en echec, et 2 en echec critique.
{
    if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("tranfere comp = ("+IntToString(nCarac)+") transfert DD = ("+IntToString(nDD)+")",oMage);
    int nDes = d10(1);
    if (GetLocalInt(GetModule(),"Debug")) FloatingTextStringOnCreature("Jet de des = ("+IntToString(nDes)+")",oMage);
    if (nDes == 1) return 99;
    if (nDes == 20)return -99;
    int nMarge = nDes + nCarac -nDD;
    return nMarge;
}

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.


Voila l'ensemble des scripts. Si vous trouviez une solution je vous jure que vous aurez une statue a votre nom sur le module ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé
 
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 78.591ms