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 01/11/2024 04:45:32
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 |
Justice Ecuyer Messages: 60 |
Bonjour à vous chers dévellopeurs...
Je suis à la recherche d'un système qui me permettrait de limiter les objet spawnant dans les coffres de mon module. Je voudrais en effet pouvoir limité les trésor à disons +3. La raison de cela est simple, les objets sont limités à +3 partout dans le module sauf à mon grand désarois dans mon système de script de génération de trésor... Pour l'instant, j'ai mis mon set de script à generate low treasure ce qui me permet de ne pas me retrouver avec des dizaines d'objets +5 et +4... Mais cela reste une solution temporaire puisque ce n'Est pas interressant pour mes joueurs de ne trouver dans les coffres que 14 po ... Je vous mets si -dessous le script présentement utilisé, si vous savez comment le modifier tant mieux, mais je serais aussi pour l'utilisation d'un autre système si vous avez des idées Merci d'avance à vous chers confrères NWScript : //---------------------------- ------------------------------ -------// // Container Respawn // by Ahaneon // // Respawn container if it has been at least "respawntime" seconds // after the last time the container spawned. // // Script error: containter respawns at midnight too even if it last // respawned a second before midnight, might fix this later //---------------------------- ------------------------------ -------// #include "NW_O2_CONINCLUDE" void main() { object oItem = OBJECT_INVALID; int respawntime = 21600; // Check object for the time it was last opened and see if it is time to respawn int lastopened = GetLocalInt(OBJECT_SELF,"CS_Opened"); // CS_Openend = 0 on not found, GetLocalInt error return int currenttime = GetTimeSecond()+60*GetTimeMinute()+3600*GetTimeHour(); if (currenttime > lastopened + respawntime) { // respawntime seconds passed? DeleteLocalInt(OBJECT_SELF,"NW_DO_ONCE"); } if (lastopened > currenttime) { // maybe a whole day passed? or it's midnight? DeleteLocalInt(OBJECT_SELF,"NW_DO_ONCE"); } // Respawn chest if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") == 0) { oItem = GetFirstItemInInventory(); while ( oItem != OBJECT_INVALID ) { DestroyObject( oItem, 0.0 ); oItem = GetNextItemInInventory(); } object oLastOpener = GetLastOpener(); // See NW_O2_CONINCLUDE for more Treasure generating scripts, // Thisone generates high treasure depending on the lastopener level GenerateMediumTreasure(oLastOpener, OBJECT_SELF); SetLocalInt(OBJECT_SELF,"CS_Opened",currenttime); SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1); } } //---------------------------- ------------------------------ -------// |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Change de système ^^
Je pense qu'il est plus simple soit de trouver un système approprié sur le vault, soit d'utiliser le système Bioware, mais celui de SoU, qui a ses défauts mais est pas si mal que de modifier la génération de trésor de NWN original, qui est une véritable usine à gaz, pas à jour qui plus est (prend pas en compte les classes de prestige, des coffre s'ouvrent avec rien dedans...) Le système de SoU est assez simple : tu as des coffres de qualité croissante, tu mets ce qu'on peut trouver dedans en fonction de la qualité, après il va tirer au sort dedans. Regarde les scripts (x0_i0_treasure un truc comme ça) et les descriptions des coffres à trésor de la palette (catégorie tresors) pour mieux comprendre. |
Revenir en haut | |
Justice Ecuyer Messages: 60 |
Bha en fait le truc c'est que j'aimerais bien ne pouvoir changer que le script... Car je l'avoue étant un peu paresseux, je n'ai pas trop envie de retoucher les 3000 coffres de mon modules
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Ben c'est toi qui voit. Mais quel que soit le système tu peux garder le même script pour tous tes coffres (bon tu te passera alors des possibilités d'ajuster la qualité si tu veux pas les refaire). Là tu peux garder ce script grosso modo en changeant l'include et la fonction de génération de trésor, mettre celle de SoU à la place (les CTGenerateTreasureMachin) juste le truc à savoir c'est que ces fonctions comprennent la fixation de variable et la vérification pour savoir si le coffre a déjà été ouvert, donc faut un peu bricoler mais pas des masses.
Garder ton script et le système de la première campagne, ça veut dire trifouiller dans NW_O2_CONINCLUDE, et c'est pas de la tarte (4500 lignes de script). En plus t'as pas beaucoup de choix : soit tu te retape les listes d'item à la main (bon courage, t'auras plus vite fait de changer les 3000 coffres) soit tu filtre tes objets crées pour vérifier les propriétés, que c'est pas plus que du +3 (et là aussi c'est chaud) et les changer. |
Revenir en haut | |
Justice Ecuyer Messages: 60 |
Bha en fait je me dis que je pourrais trouver des scripts tout fait et seulement les renommer avec le nom des scripts que j'utilise présentement... Je pourrais de cette façon ne pas avoir à tout changer mes coffres La seule chose c'est que ma scripteuse est en vac et moi ben j'ai de la difficulté à tout piger Comme le module est en ligne, je galère pas mal
Donc pour faire simple, ma question est : Connaissez-vous un système efficace simple à intégrer qui répondrait à mes attentes ? Merci d'avance |
Revenir en haut | |
lylver Héros Messages: 274 |
Scripts & Plaçables Trésor
extrait du coninclude : NWScript :
int nHD = GetFactionAverageLevel(oAdventurer) + nModifier; nHD += QSHIFT + GetLocalInt(GetArea(oAdventurer),"BONUS_ZONE"); int nHDMax = QSHIFT + GetLocalInt(GetArea(oAdventurer),"NIVEAU_ZONE"); oAdventurer = RandomizeMember(oAdventurer); if( nHD > nHDMax ){ nHD = nHDMax ; SendMessageToAllDMs("Blocage du niveau d'objet genere par la zone : " + GetTag(GetArea(oAdventurer)) + " au niveau : " + IntToString(nHD)) ; } Le coeur de la limitation : c'est une variable à mettre sur la zone "NIVEAU_ZONE" si tu ne souhaites que du +3, bloque aux alentours de 12-13 |
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