La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2025 15:06:15


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 17/11/2005 15:27:23 Sujet du message : Zone blessante sauf avec object

J'utilise ce script infligeant des dommages de froid dans ma zone, ceci placé dans le onHeartbeat, ça fonctionne bien.
Cependant, je voudrai en équipant un vêtement chaud appelé "vfroid" qu'il n'y ai aucun dégât (donc le script ne se lance pas).
Merci pour la soluce.

NWScript :

void main()

{
  int iCk = GetLocalInt(GetModule(),"Rounds");
  if (iCk < 1)
    SetLocalInt(GetModule(),"Rounds",++iCk);
  else
    {
        SetLocalInt(GetModule(),"Rounds",0);
    // Cherche le PJ.
    object oPC=GetFirstPC();

    while(GetIsObjectValid(oPC))
    {
        if(GetArea(oPC) == OBJECT_SELF)
        {
       
   
    SendMessageToPC(oPC, "Vous etes frigofifie...");
    effect eDam = EffectDamage(d10(2), DAMAGE_TYPE_COLD);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oPC);

        }
        oPC = GetNextPC();
    }

    }
}
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
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 17/11/2005 15:52:56 Sujet du message :

Bon j'ai trouvé avec ceci (héhé je me répond tout seul.
Juste si quelqu'un pouvait regarder dans els deux script pour OPC=GetNextPC() si j'ai bien placé tout ça car je n'ai pas testé à plusieurs et comme il est présent dans le 1er script si il faut le laisser dans le second?

NWScript :

void main()

{
  object oPC = GetFirstPC();
  object oTest = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
  if (GetTag(oTest) == "vfroid") { oPC = GetNextPC();

  }
  else {ExecuteScript("froid1", OBJECT_SELF);

}
}
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 : 17/11/2005 17:14:16 Sujet du message :

Pourquoi tu fusionnes pas les 2 scripts ? le premier à l'air pas mal, il suffit de rajouter le test de l'armure :

NWScript :

void main()

{
  int iCk = GetLocalInt(GetModule(),"Rounds");
  if (iCk < 1)
    SetLocalInt(GetModule(),"Rounds",++iCk);
  else
    {
        SetLocalInt(GetModule(),"Rounds",0);
    // Cherche le PJ.
    object oPC=GetFirstPC();

    while(GetIsObjectValid(oPC))
    {
        object oTest = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
        if(GetArea(oPC) == OBJECT_SELF && GetTag(oTest) != "vfroid" )
        {

          SendMessageToPC(oPC, "Vous etes frigofifie...");
          effect eDam = EffectDamage(d10(2), DAMAGE_TYPE_COLD);
          ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oPC);

        }
        oPC = GetNextPC();
    }

    }
}
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
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 17/11/2005 17:47:56 Sujet du message :

Un truc : Il ne faut pas oublier que le HB ne reconnais pas un joueur sauf en utilisant GetFirstPC(); donc quand tu fait un script tu doit faire une "boucle" donc le precise Sith Vicious, ne jamais oublier le While.

NWScript :
while(GetIsObjectValid(oPC))
{
object oTest = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
if(GetArea(oPC) == OBJECT_SELF && GetTag(oTest) != "vfroid" )
{

SendMessageToPC(oPC, "Vous etes frigofifie...");
effect eDam = EffectDamage(d10(2), DAMAGE_TYPE_COLD);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oPC);

}
oPC = GetNextPC();
}
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.


(Avec a la fin GetNextPC(); )
_________________
[http]
 
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 : 18/11/2005 09:04:18 Sujet du message :

Oui voilà effectivement ça marche. Les lignes que tu dis pouvoir être supprimées c'est vrai on peut le faire et ça marche. Elles servent justes à tempérer les dégâts en les faisant moins souvent.
Merci à vous deux pour les conseils.
 
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 53.104ms