La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 14:57:58
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
BlackMagik Acolyte Messages: 22 |
J'aimerai faire un script d'eboueur placé sur le OnExit de mes zones. Biensur, il supprime les drops seulement si il n'y a aucun PC dans la zone proprement dite. Mais tout ceci ne fonctionne pas, voila mon script :
NWScript :
int GetIsPCInArea (object oArea) { object oIntru = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oIntru)) { if(GetIsPC(oIntru)) { return TRUE; } oIntru = GetNextObjectInArea(oArea); } return FALSE; } void main() { object oZone = OBJECT_SELF; object oObjet = GetFirstObjectInArea( oZone ); if(!GetIsPCInArea(oZone)) { while ( GetIsObjectValid(oObjet) ) { if ( GetObjectType(oObjet) == OBJECT_TYPE_ITEM ) { DestroyObject ( oObjet ); oObjet = GetNextObjectInArea( oZone ); } else { oObjet = GetNextObjectInArea(oZone); } } } } Merci d'avance pour votre aide |
Revenir en haut | |
Dreams Ecuyer Messages: 41 Localisation: val de marne |
Je ne sais pas ce qui est faut dans ton script, mais je peux t'en proposer un qui marche normalement
à mettre dans le OnExit de ta zone NWScript : int GetIsPCInArea (object oArea) { object oIntru = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oIntru)) { return TRUE; oIntru = GetNextObjectInArea(oArea); } return FALSE; } void main() { object oArea = OBJECT_SELF; //Si il n'y a plus de PJ dans la zone if(!GetIsPCInArea(oArea)) { object oIntru = GetFirstObjectInArea(oArea); //Tant que l'objet est valide et n'est pas un PJ while(GetIsObjectValid(oIntru) && !GetIsPC(oIntru)) { int nType = GetObjectType(oIntru); switch(nType) { case OBJECT_TYPE_CREATURE: //Si la creature n'est pas en combat if(!GetIsInCombat(oIntru)) { //Si elle provient d'une rencontre, elle est detruite if(GetIsEncounterCreature(oIntru)) { DestroyObject(oIntru); } //Sinon elle se repose et se soigne else { AssignCommand(oIntru, ActionRest()); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oIntru)), oIntru); } } break; case OBJECT_TYPE_ITEM: //Si l'objet n'est pas un objet de quete et qu'il n'est pas possede par un PJ if(!GetPlotFlag() && !GetIsPC(GetItemPossessor(oIntru))) { //DeleteLocalFloat(oIntru, "Durabilite"); DestroyObject(oIntru); } break; case OBJECT_TYPE_PLACEABLE: int nN = 1; for(nN = 1; nN > 6; nN++) { if(GetTag(oIntru) == "LootBag"+IntToString(nN)) { DestroyObject(oIntru); } } break; } oIntru = GetNextObjectInArea(oArea); } } } _________________ La raison de la réussite des gens du mal est l'inaction des gens du bien |
Revenir en haut | |
Kétil Dimzad Ecuyer Messages: 62 Localisation: Fijj'Bool City |
NWScript :
case OBJECT_TYPE_PLACEABLE: int nN = 1; for(nN = 1; nN > 6; nN++) { if(GetTag(oIntru) == "LootBag"+IntToString(nN)) { DestroyObject(oIntru); } /* warning: 1 unclosed block {} */ Je capte pas ce passage du script. Tu détruis les placeables lootbag ( les loots des monstres quoi...) et leurs tags vont de "LootBag1" à "LootBag6" ? C'est ça ? |
Revenir en haut | |
daedra Novice Messages: 17 |
Je sais pas si c'est ca l'erreur mais bon :
Tu ecris NWScript :
int GetIsPCInArea (object oArea) { object oIntru = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oIntru)) { if(GetIsPC(oIntru)) { return TRUE; } oIntru = GetNextObjectInArea(oArea); } return FALSE; } Avec 3 objets dans la zone 1 table 1 joueur Une chaise donc ton while va retourner FALSE TRUE FALSE puis on sort de la boucle while et on retourne FALSE. On detecte donc jamais le joueur. Essai cela NWScript : int GetIsPCInArea (object oArea) { int iretour = FALSE ; object oIntru = GetFirstObjectInArea(oArea); while(GetIsObjectValid(oIntru)) { if(GetIsPC(oIntru)) { iretour = TRUE; } oIntru = GetNextObjectInArea(oArea); } return iretour; } _________________ Daedra Dernière édition par daedra le 26/01/2005 13:55:50; édité 1 fois
|
Revenir en haut | |
BlackMagik Acolyte Messages: 22 |
Toujours rien, je viens d'essayer avec le script de Daedra, mais les objets ne disparaissent pas. allez savoir pourquoi !
|
Revenir en haut | |
daedra Novice Messages: 17 |
Bon et bien apres avoir cherché un peu partout j'ai trouvé le script sur ce forum !
http://www.system-tek.com/nwinter/phpbb2/viewtopic.php?t=4793&highlight=nettoyer+zone J'espère que c'est ce qu'il te faut. _________________ Daedra |
Revenir en haut | |
BlackMagik Acolyte Messages: 22 |
J'ai finalement fini mon script mais d'une autre facon en fait ^^ voila ma solution ( testée ):
NWScript :
int GetIsPCInArea (object oArea) { object oPC = GetFirstPC(); while (oPC != OBJECT_INVALID) { if (OBJECT_SELF == GetArea(oPC)) {return TRUE; } else {oPC = GetNextPC();} } return FALSE; } void main() { object oZone = OBJECT_SELF; object oObjet = GetFirstObjectInArea( oZone ); if(!GetIsPCInArea(oZone)) { while ( GetIsObjectValid(oObjet) ) { if ( GetObjectType(oObjet) == OBJECT_TYPE_ITEM ) { DestroyObject ( oObjet ); oObjet = GetNextObjectInArea( oZone ); } else { oObjet = GetNextObjectInArea(oZone); } } } } Voila pour ceux qui veulent, à placer sur le OnExit de la zone. |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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