La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 06:36:32


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
flmg
Novice
Inscrit le: 02 Sep 2004
Messages: 13
Répondre en citant
Posté le : 02/09/2004 09:08:15 Sujet du message : Coffres persistants

J'aimerais bien qu'on m'explique comment faire des coffres persistants pour les joueurs... désolée si pour vous ca parais simple pour moi ca l'est moin... Very Happy
Merci d'avance
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Blackblood
Chevalier
Inscrit le: 20 Juil 2004
Messages: 80
Localisation: France
Répondre en citant
Posté le : 02/09/2004 10:11:10 Sujet du message :

Je crois que c'est assez compliqué à réaliser. Tu devrais en trouver des tout prêts sur le Vault. Ainsi tu n'auras plus qu'à essayer et si tu veux savori comment cela fonctionne, il te suffira de jeter un oeil aux scripts.

Bonne recherche
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
pierrot laLune
Acolyte
Inscrit le: 15 Aoû 2004
Messages: 22
Répondre en citant
Posté le : 09/09/2004 22:42:03 Sujet du message :

Alors j'ai fait un script pour cela si tu veux.
Mais il a quelque defauts:
voila la bibliotheque.

NWScript :

//:Confused///////////////////////// /////////////////////
//:: pier_lib_inv
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
  cette bibliotheque permet de gerer la sauvegarde
  de l'inventaire d'un objet dans la database.
  ainsi l'inventaire du coffre par exemple reste le meme
  d'un reboot du module a l'autre.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: pierre Chabiland aka "pierrot laLune"
//:: Created On: 7 septembre 2004
//:Confused///////////////////////// ////////////////////


//:Confused///////////////////////// /////////////////////
//:: saveInventory
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
cette fonction permet de sauver le contenu d'un inventaire
dans la base de donnee. A placer sur l'evenement onClose du coffre
- string sCampaignName: le nom de la campagne.
- object oPlacable: l'objet contenant l'inventaire
- return int: retourne TRUE si l'inventaire est sauvegarder
  FALSE sinon.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: pierre Chabiland aka "pierrot laLune"
//:: Created On: 7 septembre 2004
//:Confused///////////////////////// ////////////////////
int saveInventory(string sCampaignName,object oPlacable){
    if(GetHasInventory(oPlacable)){

        int iCounter = 0;
        string sTagPlacable = GetTag(oPlacable);
        // on supprime toute les reference dans la base au item mis dans l'inventaire
        string sItem = GetCampaignString(sCampaignName,sTagPlacable+IntToString(iCounter));
        while (!(sItem == ""))
        {
            DeleteCampaignVariable(sCampaignName,sTagPlacable+IntToString(iCounter));
            DeleteCampaignVariable(sCampaignName,"int"+sTagPlacable+IntToString(iCounter));
            iCounter++;
            sItem = GetCampaignString(sCampaignName,sTagPlacable+IntToString(iCounter));
        }
        // puis on inscrit dans la base les blueprint des objet de l'inventaire
        object oItem = GetFirstItemInInventory(oPlacable);
        iCounter = 0;
        while (!(oItem == OBJECT_INVALID))
        {
            SetCampaignString(sCampaignName,sTagPlacable+IntToString(iCounter),GetResRef(oItem));
            SetCampaignInt(sCampaignName,"int"+sTagPlacable+IntToString(iCounter),GetItemStackSize(oItem));
            oItem = GetNextItemInInventory(oPlacable);
            iCounter++;
        }
        return TRUE;
    }else{
        return FALSE;
    }
}

//:Confused///////////////////////// /////////////////////
//:: loadInventory
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
  permet de charger le contenu d'un inventaire
  sauvgarder dans la base de donnee.
  a placer dans l'evenement OnModuleLoad du module
  - string sCampaignName: le nom de la campagne.
  - object oPlacable: le conteneur
  - return int: TRUE si l'inventaires est charger
    FALSE sinon.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: pierre Chabiland aka "pierrot laLune"
//:: Created On: 7 septembre 2004
//:Confused///////////////////////// ////////////////////
int loadInventory(string sCampaignName,object oPlacable){
  if(GetHasInventory(oPlacable)){
        string sTagPlacable = GetTag(oPlacable);
        int iCounter = 0;
        string sItem = GetCampaignString(sCampaignName,sTagPlacable+IntToString(iCounter));
        while (!(sItem == ""))
        {
            CreateItemOnObject(sItem,oPlacable,GetCampaignInt(sCampaignName,"int"+sTagPlacable+IntToString(iCounter)));
            SendMessageToPC(GetFirstPC(),sItem);
            iCounter++;
            sItem = GetCampaignString(sCampaignName,sTagPlacable+IntToString(iCounter));
        }
        return TRUE;
    }else{
        return FALSE;
    }
}



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.


voila il suffit d'ecrire des script assez simple du genre
ça pour le onClose:
NWScript :

#include "pier_lib_inv"

void main()
{
    saveInventory("pri_son_test",GetObjectByTag("coffreGardes"));
}
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.

et ça pour le OnModuleLoad:
NWScript :

#include "pier_lib_inv"
void main(){
    loadInventory("pri_son_test",GetObjectByTag("coffreGardes"));
}
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.

le principe est simple. a la fermeture du coffre.
le contenu du coffre est sauvegarder dans la base de donnée.
au charment du module on recupere les objet contenu dans la base et on les met da,s le coffre
alors le point noire c'est quoi?
il y en a un. je n'ai pas trouver comment stocker un objet dans la base de donnée de campagne.
donc je ne stock que le blueprint de l'objet et son nombre d'exmplaire.
ce qui signifie au chargmenet du module le coffre ne contiendra que des objets prevu initialement dans le module.
(qui ont un blueprint reconnu).
les autres seront mal interpreter voir non interpreté.
autre point noir. si le server plante alors que le coffre n'est pas fermer les objet ne seront pas sauvegarder. donc adieu les items nouvellement mis dans le coffre.
le probleme pourrais etre resolu en activant la sauvegarde a chaque item ajouter ou retirer. mais je ne connais pas l'evenement associer. si quelqu'un connais je suis preneur Smile

voila
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 47.422ms