La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 19:33:56


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 04/05/2004 19:57:22 Sujet du message : Objets maudit comme dans Baldur's Gate 2

Salutation...

Comme le titre l'indique le but est de créer des objets qui soient maudits, c'est à dire qu'une fois mis on ne puisse les enlever sauf grâce à l'aide d'un prêtre ou en utilisant le sort délivrance des Malédiction. Bien sûr lorsque l'objet est équipé son porteur subira des effets plus ou moins néfastes... Mais pour les propriétés je verai plutard.

Pour définir si l'objet est maudit j'utilise son blueprint : tout les objets maudits ont comme blueprint maudit_xxxx. On utilise ensuite un script que l'on place dans OnEquipeItem, alors via quelques manipes et une petite condition (if..)
, on peut créer des effets visuels et autres chosesl Lorsque le PJ s'équipe de l'objet. Pour l'instant tout va pour le mieux...

Mais les choses se compliquent vite.. En effet le but du jeu est de faire en sorte que le PJ ne puisse déséquiper l'objet maudit, comme quand on se transforme en guerrier Tenser. Mais comment y arriver ???

J'ai déjà chercher dans le script qui gére la transformation en tenser mais je n'ai rien trouvé... Je suis donc bloqué pour l'instant.. Donc si quelqu'un peut m'aider ?

Merci pour votre attention..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 04/05/2004 21:00:12 Sujet du message :

Hum, hum...

Je pense que la lecture de ce topic devrait t'aider
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
lalilo
Acolyte
Inscrit le: 18 Avr 2004
Messages: 35
Localisation: quelques par en france
Répondre en citant
Posté le : 04/05/2004 21:04:08 Sujet du message :


Longbow a écrit :
Hum, hum...

Je pense que la lecture de ce topic devrait t'aider
Bonjour à toi "Longbow" je n'est rien contre toi mais j'ai remarqué que tu ne disais jamais bonjour aux autres personnes...Dans la vie meme si t'est un boss en scripts, il faut rester poli...
@++ Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 04/05/2004 23:15:27 Sujet du message :


lalilo a écrit :
Bonjour à toi "Longbow" je n'est rien contre toi mais j'ai remarqué que tu ne disais jamais bonjour aux autres personnes...Dans la vie meme si t'est un boss en scripts, il faut rester poli...
@++ Cool
A l'avenir merci d'ecrire ce genre de remarques à la personne concernée en privé. Tes états d'âmes par rapport à la politesse des uns et des autres ne concernent pas ce forum. Considère ceci comme un avertissement.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 05/05/2004 08:42:00 Sujet du message :

Merci LongBow pour ton aide...

En fait dans mon script de départ, il me manquait juste un insignifiant AssigneCommand....
Voila ce que j'ai fait...

A mettre dans OnPlayerEquipeItem
NWScript :
//Script a placer dans OnEquipeItem
// Noter que les objets maudits doivent avoir un blueprint commencant par
// maudit_
//Les effets ont etaient choisis au hasard, vous pouvez les changer..
// la variables est definis pour eviter qu'a chaque fois que le joueur tente
//d'enlever l'objet le texte ne s'affiche.
//TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre
// lors de la creation de celui-ci cochez la case ne peut etre abandonne

object oItem=GetPCItemLastEquipped();
object oPerso=GetPCItemLastEquippedBy();
string sBlue=GetResRef(oItem);
string sMal= GetStringLeft(sBlue,6);
string sType=GetSubString(sBlue,8,16);


void main()
{
    if (sMal=="maudit")
    {
        if (GetLocalInt(oPerso,sBlue)==0)
        {
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0);
        FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE);
        DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE));
        SetDroppableFlag(oItem,FALSE);
        SetLocalInt(oPerso,sBlue,1);
              if (sType=="epee")
              {
              //Mettre les effets lorsque l'epee est mise//
              }
              if (sType=="armure")
              {
              //Mettre les effets pour l'armure//
              }
              //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type..
        }
        if (GetLocalInt(oPerso,sBlue)==1)
        {
        }
    }
    else
    {
    }


}
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.


A mettre dans OnPlayerUnEquipeItem
NWScript :
// Script a placer dans OnUnequitem


object oItem=GetPCItemLastUnequipped();
object oPerso=GetPCItemLastUnequippedBy();
string sBlue=GetResRef(oItem);
string sMal= GetStringLeft(sBlue,6);


#include "sys_maudit_bib"


void main()
{
    if (sMal=="maudit")
    {
    EquipUnEquipItem(oItem,oPerso);
    FloatingTextStringOnCreature("Impossible d'enlever cet objet..",oPerso,TRUE);
    DelayCommand(2.0,FloatingTextStringOnCreature("Il fait maintenant parti de vous..",oPerso,TRUE));

    }
}
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 enfin un petit script et bibliothèque.. enfin je pense que c'est comme cela que l'on dit..
NWScript :

object oObjet;
object oPC;

///Definition d'une nouvelle foncyion permettant de se reequiper d'un
///objet que l'on vient d'enlever..

void EquipUnEquipItem(object oObjet,object oPC)

{

      if (GetItemInSlot(INVENTORY_SLOT_ARMS,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_ARMS));
      }

      if (GetItemInSlot(INVENTORY_SLOT_ARROWS,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_ARROWS));
      }

      if (GetItemInSlot(INVENTORY_SLOT_BELT,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BELT));
      }

      if (GetItemInSlot(INVENTORY_SLOT_BOLTS,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BOLTS));
      }

      if (GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BOOTS));
      }
      if (GetItemInSlot(INVENTORY_SLOT_BULLETS,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_BULLETS));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CARMOUR));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CHEST,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CHEST));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CLOAK));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CWEAPON_B));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_CWEAPON_L));
      }
      if (GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oItem,INVENTORY_SLOT_CWEAPON_R));
      }
      if (GetItemInSlot(INVENTORY_SLOT_HEAD,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_HEAD));
      }
      if (GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_LEFTHAND));
      }
      if (GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_LEFTRING));
      }
      if (GetItemInSlot(INVENTORY_SLOT_NECK,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_NECK));
      }
      if (GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_RIGHTRING));
      }
      if (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC)==oObjet)
      {
      AssignCommand(oPC,ActionEquipItem(oObjet,INVENTORY_SLOT_RIGHTHAND));
      }




}
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, le résultat est pas mal.. il manque plus qu'à trouver quels effets mettre aux armes..
Remarque : Comme je suis maniac, je chercherai voir s'il y a pas moyen de faire comme la transformation de Tenser, c'est à dire qu'on ne puisse pas du tout déséquiper l'objet...

Enfin merci pour votre aide...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 05/05/2004 09:13:25 Sujet du message :

Hum.. Une petit correction a apporté.. En effet la fonction GetSubString n'est pas terrible... Mieux vaut utiliser GetSringbyRight et donner un BluePrint a l'objet maudit du type maudit_xxxxxxxxx, avec 9 caractère aprés maudit_..

Ce qui donne :
NWScript :
//Script a placer dans OnEquipeItem
// Noter que les objets maudits doivent avoir un blueprint commencant par
// maudit_xxxxxxxxx    il faut 9 caractere apres _
//Les effets ont etaient choisis au hasard, vous pouvez les changer..
// la variables est definis pour eviter qu'a chaque fois que le joueur tente
//d'enlever l'objet le texte ne s'affiche.
//TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre
// lors de la creation de celui-ci cochez la case ne peut etre abandonne

object oItem=GetPCItemLastEquipped();
object oPerso=GetPCItemLastEquippedBy();
string sBlue=GetResRef(oItem);
string sMal= GetStringLeft(sBlue,6);
string sType=GetStringRight(sBlue,9);


void main()
{
    if (sMal=="maudit")
    {
        if (GetLocalInt(oPerso,sBlue)==0)
        {
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0);
        FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE);
        DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE));
        SetDroppableFlag(oItem,FALSE);
        SetLocalInt(oPerso,sBlue,1);

              if (sType=="epeecourt")
              {
              ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_COW),oPerso);
              //Mettre les effets lorsque l'epee est mise//
              }
              if (sType=="armurecui")
              {

              //Mettre les effets pour l'armure//
              }
              //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type..
        }
        if (GetLocalInt(oPerso,sBlue)==1)
        {
        }

    }
    else
    {
    }


}
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.


Bien, en fait maintenant, il ne reste plus qu'a trouver un moyen pour se débarasser de l'objet maudit...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 05/05/2004 14:08:28 Sujet du message :

Rebonjour à tout le monde...

Afin de pouvoir se débarraser de l'objet maudit, mon but est de créer une fonction qui récupère le BluePrint de l'objet quand celui-ci est équiper...
Mes recherches m'ont conduits à ce script :


NWScript :
string CheckMaudit(object oPoss)
{
      object oPoss;
      object oItem1=GetItemInSlot(INVENTORY_SLOT_ARMS,oPoss);
      object oItem2=GetItemInSlot(INVENTORY_SLOT_ARROWS,oPoss);
      object oItem3=GetItemInSlot(INVENTORY_SLOT_BELT,oPoss);
      object oItem4=GetItemInSlot(INVENTORY_SLOT_BOLTS,oPoss);
      object oItem5=GetItemInSlot(INVENTORY_SLOT_BOOTS,oPoss);
      object oItem6=GetItemInSlot(INVENTORY_SLOT_BULLETS,oPoss);
      object oItem7=GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPoss);
      object oItem8=GetItemInSlot(INVENTORY_SLOT_CHEST,oPoss);
      object oItem9=GetItemInSlot(INVENTORY_SLOT_CLOAK,oPoss);
      object oItem10=GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPoss);
      object oItem11=GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPoss);
      object oItem12=GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPoss);
      object oItem13=GetItemInSlot(INVENTORY_SLOT_HEAD,oPoss);
      object oItem14=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPoss);
      object oItem15=GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPoss);
      object oItem16=GetItemInSlot(INVENTORY_SLOT_NECK,oPoss);
      object oItem17=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPoss);
      object oItem18=GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPoss);



      if ((GetStringLeft(GetResRef(oItem1),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_ARMS,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem2),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_ARROWS,oPoss));
      }

      else if ((GetStringLeft(GetResRef(oItem3),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_BELT,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem4),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_BOLTS,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem5),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_BOOTS,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem6),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_BULLETS,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem7),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem8),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_CHEST,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem9),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_CLOAK,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem10),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem11),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem12),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem13),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_HEAD,oPoss));

      }
      else if ((GetStringLeft(GetResRef(oItem14),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem15),6))=="maudit")
      {
      return GetResRef(GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem16),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_NECK,oPoss));

      }

      else if ((GetStringLeft(GetResRef(oItem17),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPoss));

      }

        else if ((GetStringLeft(GetResRef(oItem18),6))=="maudit")
      {
        return GetResRef(GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPoss));

      }
      else
      {
        return "rien";
      }
/* warning: 1 unclosed block {} */
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.


Voilà c'est un peu lourd, mais normalement cela devrai récupèrer le BluePrint d'un objet maudit équipé.. Mais voilà cela ne fonctionne pas et je ne comprend pas pourquoi.. La seul valeur que la fonction donne c'est "rien"...
Là j'ai besoin d'un peu d'aide je vois pas où est mon erreur...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 08/05/2004 08:08:39 Sujet du message :

Pour ce qui étaient ou qui sont toujours intéressé par le sujet voilà ce que j'espère être la version finale du script...
Ce script permet de créer des objets magiques maudits que l'on ne peut enlever.. De plus le PJ ne peut prendre plus d'un objet maudit en même temps... Enfin un script permet de détruire cet objet et d'enlever tout les efet pervers du à celui-ci..

Voilà les scripts, le script à mettre en bibliothèque n'as pas à être touché mais il est toujours nécessaire au bon fonctionement de la chose !

NWScript :
//Script a placer dans OnEquipeItem
// Noter que les objets maudits doivent avoir un blueprint commencant par
// maudit_xxxxxxxxx    il faut 9 caractere apres _
//Les effets ont etaient choisis au hasard, vous pouvez les changer..
// la variables est definis pour eviter qu'a chaque fois que le joueur tente
//d'enlever l'objet le texte ne s'affiche.
//TRES IMPORTANT : pour eviter que le joueur depose l'objet maudit par terre
// lors de la creation de celui-ci cochez la case ne peut etre abandonne

object oItem=GetPCItemLastEquipped();
object oPerso=GetPCItemLastEquippedBy();
string sBlue=GetResRef(oItem);
string sMal= GetStringLeft(sBlue,6);
string sType=GetStringRight(sBlue,9);
string sTag=GetTag(oItem);


void main()
{
    if (sMal=="maudit")
    {
        if (GetLocalInt(oPerso,"malediction")==0)
        {
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_DESTRUCTION),oPerso,3.0);
        FloatingTextStringOnCreature("vous venez de vous equiper d'un objet maudit",oPerso,TRUE);
        DelayCommand(2.0,FloatingTextStringOnCreature("vous sentez l'objet prendre emprise sur vous...",oPerso,TRUE));
        SetDroppableFlag(oItem,FALSE);
        SetLocalInt(oPerso,"malediction",1);
        SetLocalString(oPerso,"Objet_maudit",sTag);

              if (sType=="epeecourt")
              {

              ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityDecrease(ABILITY_CHARISMA,6),oPerso);
              ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityDecrease(ABILITY_INTELLIGENCE,6),oPerso);
              ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectAbilityIncrease(ABILITY_CONSTITUTION,6),oPerso);

              //Mettre les effets lorsque l'epee est mise//
              }
              if (sType=="armurecui")
              {
              ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_SUPER_CHICKEN),oPerso);
              //Mettre les effets pour l'armure//
              }
              //if (sType=="xxx"// on peut ainsi rajouter des objets maudit de tout type..
        }
        // Pour appliquer les effets une seule fois...
        if (GetLocalInt(oPerso,"malediction")==1 && GetTag(oItem)==GetLocalString(oPerso,"Objet_maudit"))
        {

        }
        ///Pour que le joueur puisse s'equiper d'un seul item maudit..
        if (GetLocalInt(oPerso,"malediction")==1 && GetTag(oItem)!=GetLocalString(oPerso,"Objet_maudit"))
        {
        DelayCommand(3.0,FloatingTextStringOnCreature("Vous portez deja un objet maudit, vous ne supporterez pas une nouvelle malediction..",oPerso,TRUE));
        AssignCommand(oPerso,ActionUnequipItem(oItem));

        }


    }
    else
    {
    }


}
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.


NWScript :
// Script a placer dans OnUnequitem


object oItem=GetPCItemLastUnequipped();
object oPerso=GetPCItemLastUnequippedBy();
string sBlue=GetResRef(oItem);
string sMal= GetStringLeft(sBlue,6);


#include "sys_maudit_bib"


void main()
{
//reequipe l'item maudit...
    if (sMal=="maudit" && GetLocalString(oPerso,"Objet_maudit")==GetTag(oItem))
    {
    EquipUnEquipItem(oItem,oPerso);
    FloatingTextStringOnCreature("Impossible d'enlever cet objet..",oPerso,TRUE);
    DelayCommand(2.0,FloatingTextStringOnCreature("Il fait maintenant parti de vous..",oPerso,TRUE));

    }
}
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.


NWScript :
//Script a place ans un dialogue afin de demaudir un PJ...

object oPC=GetPCSpeaker();
int iMaudit=GetLocalInt(oPC,"malediction");
string sTag=GetLocalString(oPC,"Objet_maudit");
effect eEffect=GetFirstEffect(oPC);

void main()

{
    if (iMaudit==1)
    {

    DestroyObject(GetItemPossessedBy(oPC,sTag));
    SetLocalInt(oPC,"malediction",0);
    SetLocalString(oPC,"Objet_maudit","");
          while (GetIsEffectValid(eEffect))
    {
          if (GetEffectDurationType(eEffect)==DURATION_TYPE_PERMANENT)
          {
          RemoveEffect(oPC,eEffect);
          }
          eEffect=GetNextEffect(oPC);
      }
    }
}
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.


Voilà.. S'il y a un bug faites le savoir...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Drazhar
Voyageur
Inscrit le: 12 Juin 2004
Messages: 3
Répondre en citant
Posté le : 12/06/2004 23:27:09 Sujet du message :

Super l'idée mais pourquoi ne pas Implanter la delivrance dans le sort: délivrances des maledictions (nw_s0_remeffect) ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 14/06/2004 13:52:32 Sujet du message :


Citation :
Super l'idée mais pourquoi ne pas Implanter la delivrance dans le sort: délivrances des maledictions (nw_s0_remeffect) ?
Hé bien, tout simplement parceque je ne savais quel script il fallait modifier... Mais maintenant que je le sais, c'est tout à fait faisable, il suffit d'adapter le script pour lever la malédiction au script qui gèrent le sort délivrances des malédictions..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Drazhar
Voyageur
Inscrit le: 12 Juin 2004
Messages: 3
Répondre en citant
Posté le : 14/06/2004 13:57:03 Sujet du message :

Sad tu pourra me dire ce qu'il en est j'ai éssayé mais j'ai pô reussi...si t'y arrive tu me fait signe Smile ! dac ? Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 14/06/2004 16:24:47 Sujet du message :

En fait le script qui gère délivrance des malédictions est a nom avis celui-ci nw_s0_rmvcurse.
Ce script permet d'enlever des effets du type : EFFECT_TYPE_CURSE. Donc en fait pour que le script agisse aussi dans le cas où le joueur est équiper d'un objet maudit, il faut que les effets produits par l'objet soit des effets du type EFFECT_TYPE_CURSE. Il faut ensuite rajouter une ligne de commande qui détruit l'objet.

Ce qui donne pour le script de la délivrance :
NWScript :
//:Confused///////////////////////// /////////////////////
//:: Remove Curse
//:: NW_S0_RmvCurse.nss
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    Goes through the effects on a character and removes
    all curse effects.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Aug 7, 2001
//:Confused///////////////////////// ////////////////////
//:: VFX Pass By: Preston W, On: June 22, 2001

void main()
{
    //Declare major variables
    object oTarget = GetSpellTargetObject();
    int nType;
    effect eRemove = GetFirstEffect(oTarget);
    effect eVis = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);
    //Fire cast spell at event for the specified target
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_REMOVE_CURSE, FALSE));
    //Get the first effect on the target
    while(GetIsEffectValid(eRemove))
    {
        //Check if the current effect is of correct type
        if (GetEffectType(eRemove) == EFFECT_TYPE_CURSE)
        {
            //Remove the effect and apply VFX impact
            RemoveEffect(oTarget, eRemove);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
        }
        //Get the next effect on the target
        GetNextEffect(oTarget);
    }
    if (GetLocalInt(oTarget,"malediction")==1)
    {
    DestroyObject(GetItemPossessedBy(oTarget,GetLocalString(oTarget,"Objet_maudit")));
    SetLocalInt(oTarget,"malediction",0);
    SetLocalString(oTarget,"Objet_maudit","");
    }

}
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.


Pour créer des effets de type curse il faut utiliser la fonction EffectCurse() et la mettre dans le OnequipeItem, là où il faut appliquer les effets.
Le problème c'est que l'on est limité à des diminutions de caractérisques et l'on ne peut rien faire d'autre. Pour résoudre ce problème, il faudrait créer d'autres effets du type curse pour avoir un plus grand choix dans la malédiction.... Mais ça j'y ai pas encore réfléchi....

P.S. : j'ai pas vérifier si le script que j'ai donné fonctionne...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 14/06/2004 17:38:47 Sujet du message :

Visiblement mon script ne marche quand parti. Les effets néfastes sont bien dissipés mais l'objet maudit n'est pas détruit... En plus je n'arrive pas à voir où j'ai fait l'erreur..

Si quelqu'un touve, je suis preneur...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 101.576ms