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 21:34:05
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 |
nwar_dezir Ecuyer Messages: 61 |
Alors voilà je cherche un script pour créer des monstres à partir d'un objet (plaçable, créatures...)
étant donné que je n'ai aucune connaissances en scripts il m'est difficile d'y arriver... L'idée serait de faire en sorte que l'objet en question créer par exemple jusqu'a 5 monstres (sans trigger, le joueur n'a pas besoin d'être à côté) et dés qu'un ou plusieurs monstres sont détruit l'objet en recréer (il faudrait mettre un petit intervalle quand même entre les créations, qqch comme 20s). Pour supprimer les monstres il faudrait alors détruire l'objet créateur.. Je sais aps si c'est possible où s'il existe déja qqch de ce type sur le Vault, mais je savais pas trop sur quel critère rechercher... Merci |
Revenir en haut | |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
Le problème d'un telscript, c'est qu'il est sûrement a mettre dans le OnHertBeat ... donc demandeur de ressources ....
_________________ Rejoignez nous sur notre forum Aelor, module en construction Vive Gimli |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Ça peut se faire sans être trop gourmand. Voici l'hypothèse et ce qui est nécessaire :
- L'objet génère X monstres de même type. Le tag de cet objet est "GENERATEUR_MONSTRES". - Prévoir un monstre spécial dans la palette, avec un resref perso. - Prévoir un Waypoint au point de spawn des monstres, dont le tag sera "WP_SPAWN_GOBS" - Les monstres sont re - générés 20 secondes après que les X précédents aient été tués. Il faut prévoir 2 scripts : - OnHeartBeat de l'objet - OnDeath des monstres Et maintenant, les scripts en eux-mêmes : --> OnDeath des monstres : NWScript :
void main() { object oItem = GetObjectByTag("GENERATEUR_MONSTRES"); int nCompteur = GetLocalInt(oItem, "compteur_monstres"); int nNb_Monstres = GetLocalInt(oItem, "nb_monstres"); nCompteur++; SetLocalInt(oItem, "compteur_monstres", nCompteur); if(nCompteur == nNb_Monstres) { SetLocalInt(oItem, "spawn_actif", FALSE); SetLocalInt(oItem, "compteur_monstres", 0); } } --> OnHeartBeat de l'objet : NWScript :
void spawn_monstres() { int i; int nNb_Monstres = GetLocalInt(OBJECT_SELF, "nb_monstres"); string sResRef = "resref_du_monstre"; for(i=0;i<nNb_Monstres;i++) CreateObject(OBJECT_TYPE_CREATURE, sResRef, GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); } void main() { float fDelay = 20.0; // Delai, en secondes, avant respawn des monstres int nNb_Monstres = 5; // Nombre de monstres SetLocalInt(OBJECT_SELF, "nb_monstres", nNb_Monstres); if(GetLocalInt(OBJECT_SELF, "spawn_actif") == FALSE) { DelayCommand(fDelay, spawn_monstres()); SetLocalInt(OBJECT_SELF, "spawn_actif", TRUE); } } Voilà, un truc dans le genre (j'ai pas testé, donc il est possible que ça ne fonctionne pas). _________________ » 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 | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Bon j'ai testé, ça marche
_________________ » 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 | |
nwar_dezir Ecuyer Messages: 61 |
merci beaucoup !
|
Revenir en haut | |
nwar_dezir Ecuyer Messages: 61 |
j'ai récemment repris ce script, mais je voudrais qu'un petit effet d'invocation soit appliqué lors du spawn des monstres, dans un souci d'esthétisme...
NWScript :
void spawn_monstres() { int i; int nNb_Monstres = GetLocalInt(OBJECT_SELF, "nb_monstres"); string sResRef = "resref_du_monstre"; for(i=0;i<nNb_Monstres;i++) CreateObject(OBJECT_TYPE_CREATURE, sResRef, GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); } void main() { float fDelay = 20.0; // Delai, en secondes, avant respawn des monstres int nNb_Monstres = 5; // Nombre de monstres SetLocalInt(OBJECT_SELF, "nb_monstres", nNb_Monstres); if(GetLocalInt(OBJECT_SELF, "spawn_actif") == FALSE) { DelayCommand(fDelay, spawn_monstres()); SetLocalInt(OBJECT_SELF, "spawn_actif", TRUE); } } Serait-ce possible de modifier ce script pour qu'un tel effet apparaisse ? je vous laisse faire ce que vous voulez, rien de trop compliqué non plus, 5 "ombres" (hostiles, naturellement) doivent apparaître dans une gerbe d'étincelle (si possible, rouge mais prenez les effets de sorts de base si c'est plus simple) voilà (moi je sais là encore pas faire...) _________________ A la recherche de gens... |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Pour les effets visuels je sais pas, mais pour les intégristes de l'optimisation en ressource, j'ai une solution sans HeartBeat (un script de plus par contre)
OnSpawn du placeable 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. Dans le UserDefined du placeable NWScript :
void SpawnMonstre(location lLoc) { string sResRef = "resrefcreature"; object oMonstre = CreateObject(OBJECT_TYPE_CREATURE,sResRef,lLoc); SetLocalObject(oMonstre,"GENERATEUR",OBJECT_SELF); } void main() { int nEvent = GetUserDefinedEventNumber(); float fDelay = 20.0; location lPointSpawn = GetLocation(GetNearestObjectByTag("WP_SPAWN_GOBS")); if (nEvent==73212) //on spawn, je cree tous mes monstres { int nMaxMonstres = 5; float fDelay = 20.0; int i; for(i=0;i<nMaxMonstres;i++) { DelayCommand(fDelay+i/10,SpawnMonstre(lPointSpawn)); } } if (nEvent == 73211) //un de mes petits est mort, j'en refais un { DelayCommand(fDelay,SpawnMonstre(lPointSpawn)); } } Dans le OnDeath des monstres NWScript :
void main() { object oPapa = GetLocalObject(OBJECT_SELF,"GENERATEUR"); SignalEvent(oPapa,EventUserDefined(73211)); } doit fournir le même résultat théoriquement. |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Non car les plaçables n'ont pas de OnSpawn ^^ (mais il y a une multitude de possibilité de contourner le problème)
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
nwar_dezir Ecuyer Messages: 61 |
|
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Pour le p'tit effet visuel rien de plus facile tu rajoute :
NWScript :
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_CE_QUE_TUVEUX), GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); NWScript :
void spawn_monstres() { int i; int nNb_Monstres = GetLocalInt(OBJECT_SELF, "nb_monstres"); string sResRef = "resref_du_monstre"; for(i=0;i<nNb_Monstres;i++) CreateObject(OBJECT_TYPE_CREATURE, sResRef, GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_CE_QUE_TUVEUX), GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); } void main() { float fDelay = 20.0; // Delai, en secondes, avant respawn des monstres int nNb_Monstres = 5; // Nombre de monstres SetLocalInt(OBJECT_SELF, "nb_monstres", nNb_Monstres); if(GetLocalInt(OBJECT_SELF, "spawn_actif") == FALSE) { DelayCommand(fDelay, spawn_monstres()); SetLocalInt(OBJECT_SELF, "spawn_actif", TRUE); } } je suppose qu'il faut le mettre là mais apres... Sinon tu peux mofifier les arguments du ApplyEffectToObject (la durée de l'effet (instant, temporary, permanent) et remplace VFX_CE_QUE_TUVEUX par l'effet que tu veux (VFX_FNF_FIREBALL...)) _________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | |
nwar_dezir Ecuyer Messages: 61 |
ok merci je vais essayer de personnaliser ça maintenant que je sais comment ça marche..
_________________ A la recherche de gens... |
Revenir en haut | |
nwar_dezir Ecuyer Messages: 61 |
y veut pas compiler, y'a un bug qqpart, jtrouve pas...
(au niveau de la ligne rajoutée justement) _________________ A la recherche de gens... |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
En fait il voulait dire ApplyEffectAtLocation() et pas ApplyEffectToObject(). Avec ces même paramètres ça marche.
|
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
A oui en effet j'ai confondu
Tu as 2 possibilités : NWScript :
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_CE_QUE_TUVEUX), GetWaypointByTag("WP_SPAWN_GOBS")); ou NWScript : ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_CE_QUE_TUVEUX), GetLocation(GetWaypointByTag("WP_SPAWN_GOBS"))); _________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
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