La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2024 00:54:25


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
nikles
Novice
Inscrit le: 02 Nov 2002
Messages: 18
Répondre en citant
Posté le : 20/12/2002 21:09:34 Sujet du message : Magasinà à inventaire variable

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 Razz

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 Very Happy

Merci d'avance Cool


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 Wink (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 Wink) Bon courage !
_________________
La mort n'est rien d'autre que le long et froid passage vers une autre vie .
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
nikles
Novice
Inscrit le: 02 Nov 2002
Messages: 18
Répondre en citant
Posté le : 21/12/2002 11:08:14 Sujet du message :

Y'aurait t'il une ame genereuse pour aidait un newbie Embarassed

merci Very Happy
_________________
La mort n'est rien d'autre que le long et froid passage vers une autre vie .
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 21/12/2002 19:33:10 Sujet du message :

Hi!


J'y travaille de mon côté...
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
PetitPrince
Super-Mouton
Inscrit le: 12 Sep 2002
Messages: 2043
Localisation: Asteroïde B-612 actuellement crashé en Suisse
Répondre en citant
Posté le : 21/12/2002 19:38:07 Sujet du message :

(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 Smile (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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 21/12/2002 19:57:47 Sujet du message :

Exact!


Et je cherche par ailleurs à conditionner efficacement le Script en fonction des 'Périodicités' (genre "Tous les Mois"!)... Wink

...
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
nikles
Novice
Inscrit le: 02 Nov 2002
Messages: 18
Répondre en citant
Posté le : 22/12/2002 13:06:40 Sujet du message :

OK , Quand t'auras la solution coolstar tu pourait m'en faire part stp Very Happy
par ce que ca m'interesse aussi
Merci Very Happy
_________________
La mort n'est rien d'autre que le long et froid passage vers une autre vie .
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 28/12/2002 03:22:29 Sujet du message :

Désolé d'avoir tardé autant, il faut dire que je suis vraiment débordé... Very Happy


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... Wink


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;
    }
}

_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
Dernière édition par coolstar le 28/12/2002 07:23:44; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 28/12/2002 06:32:33 Sujet du message :

Bon, voilà une petite avancée compilant les 2 Scripts précédents... Cool


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à! Wink
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! Very Happy
-------------------

_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
Dernière édition par coolstar le 30/12/2002 19:32:51; édité 3 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
nikles
Novice
Inscrit le: 02 Nov 2002
Messages: 18
Répondre en citant
Posté le : 29/12/2002 15:32:06 Sujet du message :

Merci pour ton aide coolstar Very Happy
_________________
La mort n'est rien d'autre que le long et froid passage vers une autre vie .
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 29/12/2002 16:54:24 Sujet du message :

Wink
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Gorkk
Site Admin
Inscrit le: 12 Sep 2002
Messages: 1768
Localisation: Ici et ailleurs
Répondre en citant
Posté le : 30/12/2002 14:46:48 Sujet du message :

Hé Bé !
Quel boulot ! A boire

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 Wink) ç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 Wink
_________________
Sacred - FR - La Bibliothèque de Neverwinter - Titan Quest - FR Cool
Bloqué dans SoU ? La solution n'est pas loin...
HotU vous pose des problèmes ? Une seule solution Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 30/12/2002 19:26:18 Sujet du message :

Avec plaisir! Wink


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é… Very Happy

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!! Very Happy

...
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 30.336ms