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 13:13:42


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 23/01/2003 18:17:32 Sujet du message : Destruction des monstres après la sortie du joueur de l'area

Bon heu ben je m'explique ^^


J'aimerais que, dès qu'il n'y a plus de joueurs dans une zone, que tous les monstres disparaissent, pour éviter qu'ils passent de zone en zone (car c'est lourd de voir des monstres partout en ville)...
Je pense qu'il faut mettre le script dans le OnExit de la zone, mais quel script ? Razz


Merci pour vos réponses Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 26/01/2003 21:51:56 Sujet du message :

Bah merci pour vos nombreuses réponses Very Happy

Mais heureusement j'ai trouvé en cherchant un peu (comme quoi Confused )


Code :
void main()
{
//DECLARATION DES VARIABLES
object oPCexiting=GetExitingObject();
object oAreaLeaved = OBJECT_SELF;
object oObjetaDetruire = GetFirstObjectInArea(oAreaLeaved);
object oFirstPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
int nNBdePC = GetLocalInt(oAreaLeaved,"nNBdePC");

//Mise a jour du Compteur
if (GetIsPC(oPCexiting))
    {
    nNBdePC = nNBdePC-1;
    SetLocalInt(oAreaLeaved,"nNBdePC",nNBdePC);
    }

//TEST POUR VERIFIER SI IL RESTE DES PC DANS L'Area

if (nNBdePC == 0)
   {

//BOUCLE DE DESTRUCTION DES CREATURES/ITEM
   while (GetIsObjectValid(oObjetaDetruire))
       {
       if (
       (GetObjectType(oObjetaDetruire)== OBJECT_TYPE_CREATURE)||
       (GetObjectType(oObjetaDetruire)== OBJECT_TYPE_ITEM)
          )
             {
             DestroyObject (oObjetaDetruire);
             }
       oObjetaDetruire=GetNextObjectInArea();
        }
    }

//LOG~DEBUG
}


Pas testé encore, mais normalement ça marche Very Happy
A mettre sur le OnExit Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 27/01/2003 12:29:47 Sujet du message :

N'oublie pas de mettre le script correspondant dans le OnEnter.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 27/01/2003 12:43:38 Sujet du message :

Il est obligatoire pour faire fonctionner celui du OnExit ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 27/01/2003 12:51:53 Sujet du message :

je dirai en 'aveugle' (vu que j'ai pas vu le script du OnEnter), oui car il doit compter les joueurs entrants dans la zone, maintenant, histoire de titiller Jedaï, est ce que le script prévoit la déco des joueurs ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 27/01/2003 13:00:04 Sujet du message :

Ca donne ça sur le OnEnter:

Code :
//Script d'area_enter qui cree des monstres
#include "ro_createmonster"

void main()
{
//Declaration des variables
object oPCentering = GetEnteringObject();
object oAreaEntered = OBJECT_SELF;
int nNBdePC = GetLocalInt(oAreaEntered,"nNBdePC");

//Incrementation du compteur de PC dans l'area
if (GetIsPC(oPCentering))
    {
    nNBdePC = nNBdePC+1;
    SetLocalInt(oAreaEntered, "nNBdePC",nNBdePC);


//Si c'est le premier PC a entrer, generation des monstres en fonction de l'area
    if (nNBdePC==1)
        {
        CreateMonsters(oAreaEntered);
        }
    else
        {
        WriteTimestampedLogEntry(GetName(oPCentering)+GetTag(oAreaEntered)+"enter correct");
        }
//LOG~DEBUG
    }
}
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 27/01/2003 13:25:41 Sujet du message :

Et hum, autre petite question, si par exemple il y a des npc dans l'area...
Et qu'à la sortie du pc de l'area, le npc est détruit...
Quand un pc reviendra, le npc sera recréé au même endroit ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaha Effect
Acolyte
Inscrit le: 31 Déc 2002
Messages: 39
Répondre en citant
Posté le : 27/01/2003 15:23:28 Sujet du message :

Il est bien joli ton scripte mais y'a quelques trucs qui y manque pour que celà fonctionne correctement. (Je le connais bien ce scripte, c'est celui de eMRaistlin mais vous l'avez salement épuré, surtout mal épuré dirais je)

1 - Si tu veux pas que tes NPC ne soit détruits, il faudra les mettre en plot, et bien sur indiquer que les objets en plot ne soit pas détruits ou les recréer dans le OnEnter de ta zone Smile
2 - Si tu possède un pet, ben il passera a la casserole avec ces copains les gros méchants monstres Smile

Jaha Effect Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 27/01/2003 16:37:51 Sujet du message :

ben comme ca se produit sur le dernier pj qui sort y a pas de problème de familiers, mais par contre effectivement, tous les PNJs non plots sont détruits !(ca peut poser des problèmes ..)

Beau script, j'ai pas vu la patte de eMRaistlin mais je te crois sur parole.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaha Effect
Acolyte
Inscrit le: 31 Déc 2002
Messages: 39
Répondre en citant
Posté le : 27/01/2003 16:58:10 Sujet du message :

Si la patte de eMRaistlin est flagrante, regarde le #include "ro_createmonster" dans le script du OnEnter, c'est un include de Ragnarok, le module de eM. Et il n'a aucun interet placé ici, il fait partir d'une structure complète de spawn lié à des noms d'area formaté pour que ça marche Smile
Randons à César, ce qui est à César Very Happy
Le script du OnExit doit ressembler a ça pour gerer les plot et les pets Smile

Code :
void main()
{
//DECLARATION DES VARIABLES
object oPCexiting=GetExitingObject();
object oAreaLeaved = OBJECT_SELF;
object oObjetaDetruire = GetFirstObjectInArea(oAreaLeaved);
object oFirstPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
int nNBdePC = GetLocalInt(oAreaLeaved,"nNBdePC");

//Mise a jour du Compteur
if (GetIsPC(oPCexiting))
    {
    nNBdePC = nNBdePC-1;
    SetLocalInt(oAreaLeaved,"nNBdePC",nNBdePC);
    }

//TEST POUR VERIFIER SI IL RESTE DES PC DANS L'Area

if (nNBdePC == 0)
   {

//BOUCLE DE DESTRUCTION DES CREATURES/ITEM
   while (GetIsObjectValid(oObjetaDetruire))
       {
       if (
       (GetObjectType(oObjetaDetruire)== OBJECT_TYPE_CREATURE)||   // nettoyage de la zone des creatures de la zone
       (GetObjectType(oObjetaDetruire)== OBJECT_TYPE_ITEM)         // nettoyage de la zone des objets qui la jonche
          )
             {
             AssignCommand(oObjetaDetruire, ClearAllActions()); // pour initialisation des actions PNJ
             if (!GetPlotFlag(oObjetaDetruire))                 // verifie si il y a des creatures en plot
                 {
                    if (GetName(GetMaster(oObjetaDetruire))=="")  // pour eviter la mort du pet
                    DestroyObject (oObjetaDetruire);
                 }
             }
       oObjetaDetruire=GetNextObjectInArea();
        }
    }

//LOG~DEBUG
}


Jaha Effect Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jacky
Ecuyer
Inscrit le: 12 Jan 2003
Messages: 42
Localisation: Là, sur ma chaise devant l'écran de mon ordi.
Répondre en citant
Posté le : 27/01/2003 18:07:10 Sujet du message :

Bah je l'ai trouvé tel quel ici: http://forums.jeuxonline.info/showthread.php?s=&threadid=128864

J'ai rien changé Very Happy


Mais alors je sais pas si c'est très intéressant, vu les changements et les problèmes que ça peut causer sur les respawn de monstres et autres rencontres... Confused


Et question bête: qu'appelez vous par "plots", s'il vous plait ? Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaha Effect
Acolyte
Inscrit le: 31 Déc 2002
Messages: 39
Répondre en citant
Posté le : 27/01/2003 19:12:57 Sujet du message :

Il en existe plusieures versions sur le forum Jeuxonline de ce systeme de spawn, pour ce qui est du OnEnter pour l'utilisation dans ton module, tu vas devoir l'adapter par contre le OnExit que je t'ai mis iras très bien.
Tu peux très bien t'inspirer du système d'eMR sans prob mais tu pourras pas l'utiliser tel quel.
Un plot c'est une créature ou un objet qui as la case intrigue de ces propriétés cochée pour éviter que le premier joueur venu te l'explose.
J'espère que ça répond a ta question Smile

Jaha Effect Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 28/01/2003 00:43:32 Sujet du message :

moi je ne fais qu'aider, je ne sais d'où est tiré le cript, et je ne fréquente que très peu JOL ...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaha Effect
Acolyte
Inscrit le: 31 Déc 2002
Messages: 39
Répondre en citant
Posté le : 28/01/2003 01:59:06 Sujet du message :

C'est pas un reproche, ce qui me dérangeais c'est que le scripte ne soit pas complet (j'avais jamais vu cette version sur JOL d'ailleur) Smile

Jaha Effect Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Zyzko
Novice
Inscrit le: 28 Nov 2002
Messages: 10
Répondre en citant
Posté le : 15/07/2003 17:24:15 Sujet du message :

Un autre plutot simple et efficace :

Code :

void main()
{
object oAreaEntered = OBJECT_SELF;
object oEntering = GetEnteringObject();
object oChecked = GetFirstObjectInArea(oAreaEntered);
if(GetIsPC(oEntering))
{
while(GetIsObjectValid(oChecked))
  {
    if(GetIsPC(oChecked) && oChecked != oEntering)
    {
        oChecked = OBJECT_INVALID;
        break;
    }
    else
    {
        oChecked = GetNextObjectInArea(oAreaEntered);
    }
  }

oChecked = GetFirstObjectInArea(oAreaEntered);

while(GetIsObjectValid(oChecked))
  {
    if(GetIsEncounterCreature(oChecked))
    {
        DestroyObject(oChecked);
        oChecked = GetNextObjectInArea(oAreaEntered);
    }
    else
    {
        oChecked = GetNextObjectInArea(oAreaEntered);
    }
  }
}
}

_________________
------------------------------------------
Arcantia Builder @ 1formatik server
------------------------------------------
 
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 31.251ms