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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 02/03/2004 21:10:17 Sujet du message : Potion un peu spéciale

Bon, je progresse ! Mais j'ai encore quelques questionnements et je suis sûr que vous pourrez m'aider.

Voilà, je cherche à faire un nuage de brouillard qui puisse téléporter un joueur SI et SEULEMENT SI le joueur a, au préalable, bu la potion apropriée. Dans le cas contraire, le nuage doit blesser le joueur tant qu'il reste à l'intérieur de celui-ci.

Mon problème concerne principalement la potion... J'ai trouvé comment faire des potions "custom", mais je n'ai aucune possibilité d'y ajouter mes scripts ! Tout ce qui m'est offert, c'est d'y insérer des sorts déjà présents, ce qui n'est pas mon but.

Ensuite, le fameux nuage... J'ai pensé mettre dans le OnHeartBeat du trigger une petite fonction qui fait le tour des créatures présentes et de leur enlever un nombre aléatoire de points de vie. Si quelqu'un connait une meilleure façon qui prendrait moins de ressource, je suis preneur. Mon problème est que je n'arrive pas à infliger des dégâts aux créatures. La seule fonction que j'ai trouvée qui peut peut-être correspondre, je ne trouve pas la façon de l'attribuer à la créature. Avez-vous des idées ?

Merci !
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 : 02/03/2004 22:56:07 Sujet du message :

Hum, hum...

Pour une potion avec des effets gérés par un script, il te faut créer un script dans [propriétés du module/évènements/OnActiveItem]

du type: si tu veux que l'action ai lieu juste après avoir bu...
sinon remplace les effets désirés par
un
SetLocalInt(GetModule(), "potionbue", 10);
et un test dans le script du trigger de téléportation...
if (GetLocalInt(GetModule(), "potionbue") >= 10 )
{
// effets désirés
}
else
{effets en cas de non ingestion de la potion
}


NWScript :
void main()
{
object oPC = GetItemActivator();// celui active un objet (pour toi qui boit la potion)
object oItem = GetItemActivated();
object oCibleStase = GetItemActivatedTarget(); // inutile pour ta potion

if(GetTag(oItem) == "mettre ici le tag de ta potion")
{

SendMessageToPC(oPC, "");
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON), oPC));
        DelayCommand(1.5, AssignCommand (oPC, ActionJ umpToObject(GetWaypointByTag("WP_Passerelle"))));
}

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


Je ne sais pas si j'ai été très clair....
_________________
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
 
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 03/03/2004 19:47:54 Sujet du message :

Je crois avoir bien compris, d'accord... Je vais essayer ça, merci.

Maintenant, pour le nuage qui inflige des dégâts, tu as des idées ?

Merci encore
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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/03/2004 13:48:52 Sujet du message :

Hum, hum...

Dans le Dernier Outrage, j'utilise l'effet de zone suivant:

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.


As-toi de modifier AOE_PER_FOGACID...AOE_PER_FOGMIND... etc...

C'est donc un nuage qui crée des dégats spécifiques pendant une durée donnée.
_________________
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
 
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 04/03/2004 19:21:05 Sujet du message :

Hum je vais tester ça, merci.

Cependant, pour la potion, je me retrouve encore avec le même problème : je suis forcé d'assigner un sort à la potion via le panneau des propriétés. D'accord, je peux scripter quelques trucs par-dessus, mais il serait plus intéressant que la potion ne fasse pas d'autres effets que celui désiré, c'est-à-dire assigner la variable pour indiquer que le Pc l'a bue et un petit effet visuel. Ce doit être possible, forcément..

Merci encore pour ton aide.
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 05/03/2004 06:37:13 Sujet du message :

Je vais te montrer les scripts que j'ai fait à date, et t'expliquer ce qui ne marche pas, peut-être que ça ira mieux pour le coup de main et ainsi tu sauras peut-être me dire si mon scripts est optimal, ce dont je doute.

NWScript :
//Dans le OnEnter du nuage
void main()
{
if (GetIsPC(GetEnteringObject()))
  {
  SetLocalInt(GetEnteringObject(), "vBrume", 1);
  }

//Dans le OnExit du nuage
void main()
{
if (GetIsPC(GetExitingObject()))
  {
  SetLocalInt(GetExitingObject(), "vBrume", 0);
  }
}

//Dans le HeartBeat du nuage
void main()
{
int iCounterCreature;
iCounterCreature = 1;
// On set l'objet sur la creature la plus proche qui soit vivante
object oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, GetObjectByTag("tr_myst"), iCounterCreature);
object oVictime;
while (GetIsPC(oCreature))
    {
        // On applique les degats a la creature
        if (oCreature != oVictime && vBrume != 0) //Ici, il ne reconnait pas ma variable vBrume
          {
          ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(1, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL), oCreature);
          }
    iCounterCreature = iCounterCreature++;
    oVictime = oCreature;
    oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, GetObjectByTag("tr_myst"), iCounterCreature);
    }
}
/* 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.


Si tu es capable de me dire ce qui ne fonctionne pas.. Ça serait grandement aprécié. Merci !
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 05/03/2004 09:00:40 Sujet du message :

Et si tu remplace ta ligne :
if (oCreature != oVictime && vBrume != 0)

par :
if (oCreature != oVictime && GetLocalInt(oCreature,"vBrume") != 0)

C pas mieux??? Surprised
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 05/03/2004 17:16:22 Sujet du message :

Non, le compilateur me répond : "ERROR: UNKNOWN STATE IN COMPILER"
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 05/03/2004 18:27:54 Sujet du message :

Attend, je comprend pas, ça compile chez moi! Surprised

NWScript :

//Dans le OnEnter du nuage
void main()
{
int iCounterCreature;
iCounterCreature = 1;

// On set l'objet sur la creature la plus proche qui soit vivante
object oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, GetObjectByTag("tr_myst"), iCounterCreature);

object oVictime;
while (GetIsPC(oCreature))
    {
        // On applique les degats a la creature
        if (oCreature != oVictime && GetLocalInt(oCreature,"vBrume") != 0)
          {
          ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(1, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL), oCreature);
          }

    iCounterCreature = iCounterCreature++;
    oVictime = oCreature;
    oCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, GetObjectByTag("tr_myst"), iCounterCreature);

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

_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Harpie
Acolyte
Inscrit le: 10 Nov 2003
Messages: 22
Répondre en citant
Posté le : 05/03/2004 18:43:26 Sujet du message :

Oui, tu as raison, ça compile... Je ne comprends pas... Ou plutôt, je ne vois pas la différence entre ton code et le mien... Enfin, au moins maintenant, ça compile. Mais j'ai encore une erreur, à l'exécution du script dans le module cette fois-ci. Il me lance un message disant "TOO MANY INSTRUCTIONS". Tu as une idée pourquoi il me dit ça ? Se pourrait-il que ce soit mon while qui ne soit pas interprété correctement ?
_________________
Life's tough. It's tougher if you're stupid.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 63.658ms