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 15:10:51


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 08/11/2005 00:46:46 Sujet du message : Fin de Transformation

:grin:Salut à tous! Et oui c'est encore moi et mes éternels problèmes de transformation même si cette fois c'est pour finir une transformation. En effet j'ai bien le script qui m'équipe un objet me donne de la force et tout mais je voudrais que si cet objet venait à être désequipé ou jeté par le pj tous les effets s'estompent. voici le script de ma transformation:
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.

J'aimerais également savoir s'il est possible de détruire un objet après un délai qui serait initié dans le script qui équipe ce même objet. Merci d'avance.
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 08/11/2005 01:10:50 Sujet du message :

pour ta deuxième question il y a ça :
NWScript :
// fonction permettant d'appliquer un delai a la destruction
void DestroyObjectVoid(object oDestroy,string sNewTag="")
{
    oDestroy = GetObjectByTag(sNewTag);
    DestroyObject(oDestroy);
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 08/11/2005 01:34:03 Sujet du message :

Déjà pourquoi les augmentations de caractéristiques tu ne les mets pas directement sur le casque ?
Après il n'y aurait plus que les points de vie et l'effet visuel à rajouter par script.

Je pense à ça, dans le script de ton dialogue :
Si tu veux que le casque soit détruit après 20 secondes (exemple)

NWScript :

object oPC=GetPCSpeaker();
float fDuree = 20.0; //Duree avant la destruction du casuqe en secondes
effect eEffect1 = EffectTemporaryHitpoints (3);
effect eEffect2 = EffectVisualEffect (VFX_DUR_ELEMENTAL_SHIELD);
object oCasque = CreateItemOnObject ("casque", oPC, 1);
AssignCommand(oPC, ActionEquipItem(oCasque, INVENTORY_SLOT_HEAD));

ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect1,oPC,fDuree);

ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect2,oPC,fDuree);
DestroyObject(oCasque,fDuree);
effect explosion1= EffectVisualEffect (VFX_FNF_MYSTICAL_EXPLOSION);
ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion1, 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.


Dans le OnPlayerUnEquipItem du module :

NWScript :


object oItem=GetPCItemLastUnequipped();
object oPC = GetPCItemLastUnequippedBy();
string sTag = GetTag(oItem);

if (sTag == "Casque")
{
effect eEffect = GetFirstEffect(oPC);
while (GetIsEffectValid(eEffect))
{
  object oCreator = GetEffectCreator(eEffect);
  if (GetTag(oCreator)=="TAGPNJ") RemoveEffect(eEffect); //remplacer TAGPNJ par le tag de l'objet qui donne le dialogue qui cree le casque
  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.


La ça devrait donner : le PJ équipe le casque (auquel tu as rajouté les modifs de carac, sinon il faut rajouter les lignes de script correspondantes), gagne les point de vie emporaires et l'effet visuel, puis le casque est détruit (qu'il soit déséquipé entre temps ou pas) Le casque est détruit en même temps que les effets s'arretent.

Si le PJ enlève le casque, les effets s'arretent (théoriquement...)

Problème (je viens d'y penser...) si il a trop chaud et qu'il enlève le casque, ça remet pas les effets si il le remet ensuite... flûte
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 08/11/2005 10:59:59 Sujet du message :

En fait c'est pas tout à fait ce que je veux pour le 1er script de sith vicious c'est bon mais en fait ce script n'est pas dans un dialogue mais avec un don et si j'ai mis getpcspeaker c'est pour tester le script desolé j'ai pas pensé à l'enlever donc ma question est: est-ce que ca marchera toujours le 2eme script et aussi comment fait-on pour détriure le casque dans le même script et pas dans l'autre.
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 08/11/2005 17:08:20 Sujet du message :

Effectivement, si c'est pas un dialogue le 2eme script ne va pas marcher, car le créateur de l'effet sera... je sais pas trop, le PJ ou le module je suis pas à fond la dessus (je vote le joueur mais bon...). Le problème que ça pose, c'est que quand tu voudras retirer l'effet créé par le casque, ben ça va être dur de pas enlever un autre effet (ex, si il a utilisé une potion d'aide, ça risque de lui virer tous les points de vie temporaires).

Mon idée ça serait un truc comme ça : lors de l'utilisation du don, tu équipes le casque et tu programme sa destruction en même temps (j'ai pas saisi quand tu voulais programmer ça dans quel script tu demandais ?).
Ensuite, tu modifie le OnEquipItem pour ajouter l'effet quand tu mets le casque, ce qui résoud le problème du type qui l'enlève et le remet, et l'inverse dans le UnEquipItem.
Seule question : est-ce que le script de UnEquipItem se déclanche quand le casque est détruit ? Ca c'est pas sur et c'est génant.

a mettre dans le EquipItem :

NWScript :

object oPC = GetPCItemLastEquippedBy();
object oItem = GetPCItemLastEquipped();
string sTag = GetTag(oItem);
float fDuree = 20.0; //Duree de l'effet

if (sTag=="Casque")
{
effect eVis = EffectVisualEffect (VFX_DUR_ELEMENTAL_SHIELD);
effect eLife = EffectTemporaryHitpoints (3);
effect eEffect = EffectLinkEffects(eVis,eLife);
effect eEffect = SupernaturalEffect(eEffect); //Ca c'est pour permettre de differencier les effets

ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEffect,oPC,fDuree);
effect explosion1= EffectVisualEffect (VFX_FNF_MYSTICAL_EXPLOSION);
ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion1, oPC);
DestroyObject(oItem,fDuree);
}
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 dans le UnEquip :

NWScript :

object oItem=GetPCItemLastUnequipped();
object oPC = GetPCItemLastUnequippedBy();
string sTag = GetTag(oItem);

if (sTag == "Casque")
{
effect eEffect = GetFirstEffect(oPC);
while (GetIsEffectValid(eEffect))
{

  if (GetEffectType(eEffect)==EFFECT_TYPE_TEMPORARY_HITPOINTS && GetEffectSubType(eEffect) == SUBTYPE_SUPERNATURAL) RemoveEffect(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.

Finalement dans le script du don, tu ne fais plus que donner le casque et le faire équiper.
C'est ptet un peu tiré par les cheveux, et je sais pas si c'est vraiment ça que tu veux mais si ça peut aider Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 08/11/2005 18:49:04 Sujet du message :

J'ai eu une autre idée et voilà ce que ça donne pour ceux que ça interesse.
NWScript :
void main()

{
object oItem=GetPCItemLastUnequipped();
object oPC = GetPCItemLastUnequippedBy();
string sTag = GetTag(oItem);
effect explosion = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION);

if (sTag == "Casque")
{
effect eCarracAAugmenter= EffectAbilityDecrease (ABILITY_STRENGTH, 5);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter, oPC);

effect eCarracAAugmenter1= EffectAbilityDecrease (ABILITY_CONSTITUTION, 5);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter1, oPC);

effect eCarracAAugmenter2= EffectAbilityDecrease (ABILITY_DEXTERITY, 5);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter2, oPC);

effect eCarracAAugmenter3= EffectDamage (3);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter3, oPC);

effect eCarracAAugmenter4= EffectAbilityDecrease (ABILITY_WISDOM, 5);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCarracAAugmenter4, oPC);

DestroyObject(oItem);
effect eEffect = GetFirstEffect(oPC);
while (GetIsEffectValid(eEffect))
  {
  if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT)
  {
  RemoveEffect(oPC, eEffect);
  eEffect=GetNextEffect(oPC);
  ApplyEffectToObject(DURATION_TYPE_INSTANT, explosion, 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.

et pour répondre à ta question si je mets les carac sur le casque je ne peux pas dépasser les 12 (je compte faire des transfo plus puissantes).
_________________
Heldar qui tue tous les monstres du soir.
 
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 58.053ms