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 16:46:52
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 |
Silverwave Ecuyer Messages: 69 |
Salut belle compagnie? Vous venez pour l'aventure? (Naheulbeuk rulez!)
Bon, alors, question. Si je met un Random Encounter (Rencontre Aléatoire... er, un spawn à créatures en fin de compte ) sur toute la grandeur de la map en continue, il se passe koi? Des créatures qui spawn tlt, ouais, c'est p-e ce que je veux. Mais est-ce que les créatures qui spawned apparrâissent tous à la meme endroit (par exemple, au milieu de la zone) ou elles apparraîssent aléatoirement dans la zone? Par la meme occasion, un encounter continue, ca fait apparaître des créatures toute le temps ou seulement à toutes les X secondes, par exemple? Merci de votre précieux temps! |
Revenir en haut | |
Dark Schneider Ecuyer Messages: 47 Localisation: Belgique |
Normalement tu peut définir des points de spawn (autant que tu veux) pour les créatures.
Pour le respawn c'est a toi de configurer correctement si je ne m'abuse,tu peut choisir le temps d'interval entre deux spawn tout en sachant que le compteur ne se met en route qu'a partir dumoment ou toute les créature du spwan précédent sont morte. _________________ Nouveau Module persistant en préparation => www.hetoria.fr.st |
Revenir en haut | |
Tyrion Ecuyer Messages: 43 |
Cette solution est lourde je te conseil d'utiliser ce code ensuite tu as juste a placer tes monstres la ou tu veux qu'ils spawnent puis quand tu les tuera ils respawneront x secondes (que tu regle) à l'endroit ou tu les as placé lors de la construction du module.
tu rajoute ces deux ligne au script OnSpawn qui a sur tes monstres (en le sauvegardant sous un autre nom que celui par defaut de Bioware) Code : object oSelf = OBJECT_SELF;
SetLocalLocation( oSelf, "lSpawn", GetLocation( oSelf ) ); Et tu met ça dans le OnDeath de tes monstres Code : #include "NW_I0_GENERIC"
void VoidCreateObject(string sTemplate, location lLoc, int bUseAppearAnimation=TRUE); void main() { if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); } object oSelf = OBJECT_SELF; location lLoca = GetLocalLocation( oSelf, "lSpawn"); float fSeconds = 10.0; //temps en secondes pour le respawn string sTemplate = GetResRef( oSelf ); AssignCommand( GetArea( oSelf ) , DelayCommand( fSeconds, VoidCreateObject( sTemplate, lLoca ) ) ); } void VoidCreateObject(string sTemplate, location lLoc, int bUseAppearAnimation=TRUE) { CreateObject(OBJECT_TYPE_CREATURE, sTemplate,lLoc, bUseAppearAnimation); } Une fois que tu as fait cela tu n'a plus qu'a poser tes creature sur tes tileset pas besoins de Waypoints _________________ Ce n'est pas parce que les choses sont difficiles que l'on ose pas les faire. C'est parce que l'on ose pas les faire qu'elles sont difficile. |
Revenir en haut | |
Silverwave Ecuyer Messages: 69 |
Ouais mais le problème c'est justement que je ne désire pas qu'ils spawn à chaque fois à la meme endroit. Je veux qu'elles spawn alléatoirement sur la map...
sauf qu'en fin de compte sa marchera pas si le script ne génère des créatures que lorsque les autres sont mortes. J'vais voir ce que je peux faire. Merci. |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Ce serait vraiment bien que le déclencheur respawn les créatures suivant le NOMBRE de bestioles existentes et non pas suivant si toute les précédentes sont mortes.
Je pense que c'est faisable par script, reste à savoir où le mettre |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Cependant pour ton prob Silverwave, tu peux utiliser le script de Tyrion tout de même, en mettant les créatures devant des portes ou à l'entrée d'une foret ou chais pas quoi, enfin des endroits où les créatures sont susceptibles d'apparaitre, cela donnera plus de réalisme que si tu mettais ces "spawn" au milieu d'un champs par exemple
Et puis après rien ne t'en empêche de les faire se déplacer aléatoirement ( dans le OnSpawn aussi en ajoutant des lignes de codes au script de Tyrion ). Je pense que ca pourrait bien le faire... Bien sur le problème c'est que ces monstres seront solitaires, pas de déplacement en bande! Ou alors tu peux les faire bouger avec des WP, dans ce cas tu régleras le problème des déplacements en bandes mais ce ne sera plus aléatoire forcément! On peut pas tout avoir... Si tu veux aléatoire + déplacement en bande je crois qu'il existe une solution. Attention c'est du corsé! lol!... Va sur le Vault, et cherche un truc comme NPC Activities v5.1. Dedans tout est expliqué, en fait c'est un pack de scripts qui est censé donner beaucoup plus de vie à tes PNJ. Je suis en train de regarder ca mais c'est pas simple comme bonjour! lol! |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Voici un joli script pour récupérer la taille de l'area, à partir de là on peut générer un vecteur et une position aléatoire pour placer des monstres. Je mets un script pour générer ça en utilisant cette fonction, mais je pense que ça doit pas mal tirer sur les ressources.
Code : //--> Recuperer la largeur de la zone
int GetAreaXDim(object oArea) { int nX; int nEnd; location lLoc; vector vPos; nEnd = FALSE; while ((nX<=31) && (!nEnd)) { vPos = Vector(IntToFloat(nX), 0.0, 0.0); lLoc = Location(oArea, vPos, 0.0); int nCol = GetTileSourceLight1Color(lLoc); if (nCol == 519) { nEnd = TRUE; nX--; } else { nX++; } } return nX+1; } //--> Recuperer la profondeur de la zone int GetAreaYDim(object oArea) { int nY; int nEnd; location lLoc; vector vPos; nEnd = FALSE; while ((nY<=31) && (!nEnd)) { vPos = Vector(0.0, IntToFloat(nY), 0.0); lLoc = Location(oArea, vPos, 0.0); int nCol = GetTileSourceLight1Color(lLoc); if (nCol == 519) { nEnd = TRUE; nY--; } else { nY++; } } return nY+1; } void main() { object oPC = GetFirstPC(); int x = GetAreaXDim(GetArea(oPC))*10; int y = GetAreaYDim(GetArea(oPC))*10; // definition d'un vecteur aleatoire sur l'area : vector vRandomPos; vRandomPos.x = IntToFloat(Random(x)); vRandomPos.y = IntToFloat(Random(y)); vRandomPos.z = 0.0; // location correspondante au vecteur aleatoire : location lLoc = Location(GetArea(oPC), vRandomPos, 0.0); /* */ /* ici la commande de création de monstres ou d'Encounter */ /* sur la location aléatoire lLoc */ /* */ } Ce script n'a pas été testé ! _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Silverwave Ecuyer Messages: 69 |
Ouf! C'est lourd tout ca!
Mais pour le déplacement aléatoire en groupe c'est pas si dur que ca. T'as qu'à faire déplacer une créature aléatoirement et les autres n'ont qu'à être implantée avec un script qui leur faire suivre cette créature. Donc t'as une bandes qui suit une "chef" qui se déplace aléatoirement. Le problème c'est que j'ai tester le déplacement aléatoire et il semble que le script empêche la créature d'aller trop loin de son point d'origine. Probablement qu'il calcul un maximum de déplacement à partir de son point d'origine et s'il le dépasserait avec un déplacement, il recalcule le déplacement pour l'ammener dans une autre direction. Mais le truc des entrées et tout, c'est une bonne idée ! Et c'est moins lourd sur le system que tout ca, héhéhé. Déjà que dans le mod que je créé, c'est lourd, ya beaucoup d'objets et de créature et la map est très grande. |
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