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 28/12/2024 10:12:27
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 |
nikles Novice Messages: 18 |
Suite aux recomendations de coolstar je fais un nouveau topic ou j'espere poster mes futurs problemes .
En premier lieu merci a vous j'ai essayer le coup de l'antichambre ca marche impec Ma 2eme question concerne un magasin . J'aimerais que ce dernier vendent des objets qui ne soit jamais les meme (une sorte de bazar) . Je solicite encore une fois votre aide Merci d'avance Edit de Gorkk : j'ai modifié ton titre pour qu'il soit plus évocateur, et ça permettra de le retrouver plus facilement plus tard si d'autres personnes ont le même problème (d'ailleurs en règle général essaye de mettre un titre qui évoque bien le problème rencontré, ça aide aussi pour que les personnes compétentes puissent répondre, sachant que certaines personnes non compétentes en script peuvent avoir la réponse en l'ayant trouvé ailleurs ) Bon courage ! _________________ La mort n'est rien d'autre que le long et froid passage vers une autre vie . |
Revenir en haut | |
nikles Novice Messages: 18 |
Y'aurait t'il une ame genereuse pour aidait un newbie
merci _________________ La mort n'est rien d'autre que le long et froid passage vers une autre vie . |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
|
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
(ya toujours une solution de secours qui consiste en ça en gros:
créer plusieurs marchand et les faire "tourner" dans le dialogue au moyen d'un lancer de dès dans les scripts (mais ne connaissant rien au moyen de le faire, v laisser Coolstar dire sa solution (peut-être qu'il pense au même truc que moi si ça se trouve ^^ ) ) ) _________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Exact!
Et je cherche par ailleurs à conditionner efficacement le Script en fonction des 'Périodicités' (genre "Tous les Mois"!)... ... _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
nikles Novice Messages: 18 |
OK , Quand t'auras la solution coolstar tu pourait m'en faire part stp
par ce que ca m'interesse aussi Merci _________________ La mort n'est rien d'autre que le long et froid passage vers une autre vie . |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Désolé d'avoir tardé autant, il faut dire que je suis vraiment débordé...
Quoi qu'il en soit j'ai fait de ce Script l'une de mes préoccupations principales... Cependant, pour faire au plus simple, je ne te propose que 2 solutions légères pour lors... Mais si tu tiens à affiner l'idée je ferais un effort... Voilà donc un Script de fourniture Variable en fonction des 'Semaines'... Code : /* Scritp 'variable_store' : Génère une boutique différente selon la semaine en cours. NOTE: Attention, 1Semaine représente tout de même 5h36mn (1h valant 2mn par défaut)... - By coolstar - A mettre dans les 'Actions conséquentes' du Dial du Marchand : */ void main() { object oPC = GetPCSpeaker(); // PC en cours de Conversation int iDay = GetCalendarDay(); // Date du Jour en cours if (iDay >= 1 && iDay <= 7) // Si c'est la 1e semaine : OpenStore(GetObjectByTag("Guerrier"), oPC); // Ouvrir la Boutique "Guerrier" if (iDay >= 8 && iDay <= 14) // Si c'est la 2e semaine : OpenStore(GetObjectByTag("Mage"), oPC); // Ouvrir la Boutique "Mage" if (iDay >= 15 && iDay <= 21) // Si c'est la 3e semaine : OpenStore(GetObjectByTag("Voleur"), oPC); // Ouvrir la Boutique "Voleur" if (iDay >= 22 && iDay <= 28) // Si c'est la 4e semaine : OpenStore(GetObjectByTag("Pretre"), oPC); // Ouvrir la Boutique "Pretre" } Et voici une autre version prenant plutôt en compte un phénomène 'Aléatoire'... Code : /* Scritp 'random_store' : Génère une boutique différente selon un Tirage (Aléatoire). NOTE: Le hic est que la Marchandise changera là à chaque nouvelle sollicitation... - By coolstar - A mettre dans les 'Actions conséquentes' du Dial du Marchand : */ void main() { object oPC = GetPCSpeaker(); // PC en cours de Conversation int iRoll = d4(); // Tirage d’un D4 pour déterminer le 'Tirage' switch (iRoll) // Tirage au sort parmi 4 possibilités : { // NOTE: Les "CODES" de la Bibliothèque empêchent l'insertion des ':' (à 'Décommenter'!) case 1//: // (A Décommenter) OpenStore(GetObjectByTag("Guerrier"), oPC); // Ouvrir la Boutique "Guerrier" break; case 2//: // (A Décommenter) OpenStore(GetObjectByTag("Mage"), oPC); // Ouvrir la Boutique "Mage" break; case 3//: // (A Décommenter) OpenStore(GetObjectByTag("Voleur"), oPC); // Ouvrir la Boutique "Voleur" break; case 4//: // (A Décommenter) OpenStore(GetObjectByTag("Pretre"), oPC); // Ouvrir la Boutique "Pretre" break; } } _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard Dernière édition par coolstar le 28/12/2002 07:23:44; édité 1 fois
|
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Bon, voilà une petite avancée compilant les 2 Scripts précédents...
Code : /* Script 'store' : Génère un Tirage Aléatoire renouvelé chaque nouvelle semaine. Il est bien entendu possible d'étirer le champ des possibilités... NOTE: Ce Script rencontre encore un problème, puisque si le PC revient chaque fois 1 Mois plus tard il obtiendra toujours le même 'Tirage' (mais bon, c'est plutôt rare!)... - By coolstar - A mettre dans les 'Actions conséquentes' du Dial du 'Marchand' : */ void main() { // DECLARATION DES VARIABLES : object oPC = GetPCSpeaker(); // PC en cours de Conversation object oNPC = OBJECT_SELF; // NPC Marchand int iDay = GetCalendarDay(); // Date du Jour en cours int iNew = 1; // Validation du Renouvellement de Marchandises int iRoll = d4(); // Tirage d'un 'D4' pour déterminer le 'Tirage' // Chapelet de Variables servant a alléger la 'Lecture' du Script... object oFighterStore = GetObjectByTag("Guerrier"); // Boutique "Guerrier" object oWizardStore = GetObjectByTag("Mage"); // Boutique "Mage" object oRogueStore = GetObjectByTag("Voleur"); // Boutique "Voleur" object oClericStore = GetObjectByTag("Pretre"); // Boutique "Pretre" string sFighterSpeak = "Voilà une affaire pour les Guerriers !"; // Dial "Guerrier" string sWizardSpeak = "Des Alambics et des Cornus pour les Mages !"; // Dial "Mage" string sRogueSpeak = "J'ai une marchandise parfaite pour les Voleurs !"; // Dial "Voleur" string sClericSpeak = "Les Prêtres me rendront grâce de ces Reliques !"; // Dial "Pretre" string sVarStore = "Store"; // Dénomination de la Variable "Store" string sVarSpeak = "Replique"; // Dénomination de la Variable "Réplique" string sVarRoll = "Tirage"; // Dénomination de la Variable "Tirage" string sVarVisit = "Visite"; // Dénomination de la Variable "Visite" object oStoreValue = GetLocalObject(oNPC, sVarStore); // Dernière Boutique retenue string sSpeakValue = GetLocalString(oNPC, sVarSpeak); // Dernière Réplique retenue int iRollValue = GetLocalInt(oNPC, sVarRoll); // Dernier Tirage retenu int iVisitValue = GetLocalInt(oNPC, sVarVisit); // Dernière Visite retenue // Mise en Condition préalable du 'Tirage' (renouvellement 1 seule fois par Semaine)... if(iVisitValue >= 1 && iVisitValue <= 7 && iDay >= 1 && iDay <= 7) // Semaine 1 visitée : iNew = 0; // Invalidation du Renouvellement de Marchandises pour la Semaine en cours... if(iVisitValue >= 8 && iVisitValue <= 14 && iDay >= 8 && iDay <= 14) // Semaine 2 visitée : iNew = 0; // Idem if(iVisitValue >= 15 && iVisitValue <= 21 && iDay >= 15 && iDay <= 21) // Semaine 3 : iNew = 0; // Idem if(iVisitValue >= 22 && iVisitValue <= 28 && iDay >= 22 && iDay <= 28) // Semaine 4 : iNew = 0; // Idem // Vérification préalable tout d'abord du Renouvellement possible des Marchandises : if (iNew == 1) { // On vérifie ensuite que l'on ne va pas obtenir le même Tirage 2 Semaines d'affilée : if (iRoll != iRollValue) { switch (iRoll) // On poursuit alors par le 'Tirage' au sort parmi 4 possibilités : { case 1//: // (A Decommenter) OpenStore(oFighterStore, oPC); // Ouvrir la Boutique "Guerrier" SpeakString(sFighterSpeak); SetLocalObject(oNPC, sVarStore, oFighterStore); // Retenir la Dernière Boutique SetLocalString(oNPC, sVarSpeak, sFighterSpeak); // Réplique pour la Boutique break; case 2//: // (A Decommenter) OpenStore(oWizardStore, oPC); // Ouvrir la Boutique "Mage" SpeakString(sWizardSpeak); SetLocalObject(oNPC, sVarStore, oWizardStore); // Retenir la Dernière Boutique SetLocalString(oNPC, sVarSpeak, sWizardSpeak); // Réplique pour la Boutique break; case 3//: // (A Decommenter) OpenStore(oRogueStore, oPC); // Ouvrir la Boutique "Voleur" SpeakString(sRogueSpeak); SetLocalObject(oNPC, sVarStore, oRogueStore); // Retenir la Dernière Boutique SetLocalString(oNPC, sVarSpeak, sRogueSpeak); // Réplique pour la Boutique break; case 4//: // (A Decommenter) OpenStore(oClericStore, oPC); // Ouvrir la Boutique "Pretre" SpeakString(sClericSpeak); SetLocalObject(oNPC, sVarStore, oClericStore); // Retenir la Dernière Boutique SetLocalString(oNPC, sVarSpeak, sClericSpeak); // Réplique pour la Boutique break; } // Retenues des résultats des derniers 'Opérations' : SetLocalInt(oNPC, sVarRoll, iRoll); // Retenue du Dernier 'Tirage'... SetLocalInt(oNPC, sVarVisit, iDay); // Retenue du Dernier Jour de 'Visite'... } else // Autrement, si c'est bien le même tirage que précédemment : ExecuteScript("store", oNPC); // On 'Relance'... } else // Si le renouvellement n'est possible, on maintient les résultats du dernier 'Tirage' : { OpenStore(oStoreValue, oPC); // Ouvrir la Dernière Boutique visitée SpeakString(sSpeakValue); // Dernière Réplique prononcée } } Pour le Tester tu peux utiliser ce Script-là! Code : /* Script 'grand_horloger' : Permet d'avancer le temps selon les paramètres prédéfinis... - By coolstar - A mettre dans le OnUsed de n'importe quel 'Plaçable' : */ void main() { // DECLARATION DES VARIABLES : int iTimeYear = 0; int iTimeMonth = 0 int iTimeDay = 1 // Incrémentation (: 1 Jour) int iCalendarYear = GetCalendarYear(); // Année en cours int iCalendarMonth = GetCalendarMonth(); // Mois en cours int iCalendarDay = GetCalendarDay(); // Jour en cours int nYear = iCalendarYear+iTimeYear; // L''Année' + "Incrémentation désire"... int nMonth = iCalendarMonth+iTimeMonth; // Le 'Mois' + "Incrémentation désire"... int nDay = iCalendarDay+iTimeDay; // Le 'Jour' + "Incrémentation désire"... string sSpeak01 = "Vous venez d'avancer de 1 Jour et nous somme maintenant le "; // Dial string sSpeak02 = " "; // 'Fin' du Dial... string sSpeak03 = " !"; // 'Espace' à insérer entre chaque information de 'Date'... string sYear = IntToString(iCalendarYear); // Insertion de l''Année' dans le Dial string sMonth = IntToString(iCalendarMonth); // Insertion du 'Mois' dans le Dial string sDay = IntToString(iCalendarDay); // Insertion du 'Jour' dans le Dial // Convertion préalable de la 'Valeur Numérique' des Mois en 'Nom' : switch (iCalendarMonth) { case 1//: sMonth = "Janvier"; break; // (A Décomenter!) case 2//: sMonth = "Février"; break; // (A Décomenter!) case 3//: sMonth = "Mars"; break; // (A Décomenter!) case 4//: sMonth = "Avril"; break; // (A Décomenter!) case 5//: sMonth = "Mai"; break; // (A Décomenter!) case 6//: sMonth = "Juin"; break; // (A Décomenter!) case 7//: sMonth = "juillet"; break; // (A Décomenter!) case 8//: sMonth = "Août"; break; // (A Décomenter!) case 9//: sMonth = "Septembre"; break; // (A Décomenter!) case 10//: sMonth = "Octobre"; break; // (A Décomenter!) case 11//: sMonth = "Novembre"; break; // (A Décomenter!) case 12//: sMonth = "Décembre"; break; // (A Décomenter!) } // Modification du Temps avec Annonce des Modifications : SetCalendar(nYear, nMonth, nDay); // On Impose l'Incrémentation désirée a la Date en cours SpeakString(sSpeak01+sDay+sSpeak02+sMonth+sSpeak02+sYear+sSpeak03); // Annonce... } EDIT ------------------- Parce que je suis trop Naze! ------------------- _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard Dernière édition par coolstar le 30/12/2002 19:32:51; édité 3 fois
|
Revenir en haut | |
nikles Novice Messages: 18 |
Merci pour ton aide coolstar
_________________ La mort n'est rien d'autre que le long et froid passage vers une autre vie . |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
|
Revenir en haut | |
Gorkk Site Admin Messages: 1768 Localisation: Ici et ailleurs |
Hé Bé !
Quel boulot ! Si jamais à l'occasion tu as le temps de mettre ces scripts dans le topic 'Vos Scripts' (qu'il va falloir que j'écume pour mettre les dits scripts sur le site, histoire qu'ils soient plus accessibles ) ça me permettra de les retrouver plus facilement pour les mettre sur le site, et permettra aussi de les rendre plus accessibles pour ceux qui les recherchent _________________ Sacred - FR - La Bibliothèque de Neverwinter - Titan Quest - FR Bloqué dans SoU ? La solution n'est pas loin... HotU vous pose des problèmes ? Une seule solution |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Avec plaisir!
Je travaille sur de nombreux projets personnalisés et suis très largement disposé à les partager (c d'ailleurs pour ça que je m'applique à rajouter les 'Commentaires' les plus Didactiques!)... et quand je reçois un accueil comme celui-ci je ne peux être que d'autant plus motivé… Alors si vous souahitez la contribution d'un Flooder… ce sera avec plaisir que je me joindrais au mouvement de l'Expansion Ludique de votre Site!! ... _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
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