La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 04:25:18


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 22/09/2004 00:44:23 Sujet du message : Changer de "peaux" du PJ

Bonjour, désolé pour le titre bizaroide, mais c'était ce qui me paraissait le plus pertinent à mon problème!

Je m'explique : Je voudrais que tous les trois niveaux, mon PJ change de peaux (pas la couleur de peau, mais bien un item de type 'peau de bête' que le PJ porte mais que le joueur qui le contrôle ne voit jamais dans l'inventaire) Ce type de bidouille permet d'attribuer des améliorations permanentes au PJ (ex: constitution +1, sauvegarde +2, etc...)

J'arrive à le faire équiper de la première peau quand il commence la partie. Ca c'est OK. Mais ensuite je veux qu'au fur et à mesure qu'il gagne de l'expérience, il change son ancienne peau pour une autre. Pourquoi ne pas changer directement les propriétés de la peau me direz vous. Ben j'ai mes raisons (une histoire de transe mais j'entre pas dans les détails parce que c'est pas là que ca beugge et ca fait rien qu'embrouiller! lol!). Bref! En fait je voudrais changer le tag de la peau et rien de plus!

Bon mon script marche une fois sur deux... c'est ce qui est le plus intriguant! lol! Je vous le poste :
NWScript :
// sous fonction qui renvoie le niveau actuel du PC
int LevelOfCreature (object oCreature)
{
    int iLevel1 = GetLevelByPosition (1, oCreature);
    int iLevel2 = GetLevelByPosition (2, oCreature);
    int iLevel3 = GetLevelByPosition (3, oCreature);

    return (iLevel1 + iLevel2 + iLevel3);
}


void main()
{
    object oPC = GetPCLevellingUp ();

    // tous les 3 niveaux, le PC change de peau
    if (LevelOfCreature(oPC)%3==0)
    {
        // variable qui nous indique quelle peau porte le PJ actuellement
        int iTranse = (GetLocalInt (oPC, "transe_niv")) + 1;

        // ancienne peau
        object oAncien = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC);

        // nouvelle peau
        object oNouveau = CreateItemOnObject ("transe_" + IntToString(iTranse), oPC, 1);

        // on recopie les proprietes de l'ancienne peau dans la nouvelle
        itemproperty itAncien = GetFirstItemProperty (oAncien);

        while (GetIsItemPropertyValid (itAncien) != FALSE)
        {
            AddItemProperty (DURATION_TYPE_PERMANENT, itAncien, oNouveau);
            itAncien = GetNextItemProperty (oAncien);

            if (GetIsItemPropertyValid(itAncien)==FALSE)
                break;
        }

        //test
        SpeakString ("transe_" + IntToString(iTranse) , TALKVOLUME_TALK);

        // on met a jour la variable indiquant quelle peau on porte
        DelayCommand(0.2, SetLocalInt (oPC, "transe_niv", iTranse));
        // on enleve l'ancien, on met le nouveau
        DestroyObject (oAncien, 0.2);
        DelayCommand(0.5, AssignCommand(oPC, ActionEquipItem(oNouveau, INVENTORY_SLOT_CARMOUR)));
    }

}
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 voila! Ce script ne marche évidemment pas, et quand il beugge, il fait planter tout le jeu! snif! Merci de vos suggestions!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Heldar
Seigneur
Inscrit le: 09 Sep 2004
Messages: 169
Localisation: France
Répondre en citant
Posté le : 22/09/2004 18:17:53 Sujet du message :

je suis désolée de te faire un faux espoir de réponse parcequ'en fait j'ajoute une question à ton attention: peux-tu me donner le script que tu as utiliser pour donner la peau à ton PJ?
_________________
Heldar qui tue tous les monstres du soir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 23/09/2004 10:52:36 Sujet du message :

Je l'ai posté dans un autre sujet
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 70.415ms