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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 17/04/2008 00:32:52 Sujet du message : Lancer un dialogue au levelup

Salut à tous

J'ai besoin de lancer un dialogue au passage de level d'un joueur suivant certaines conditions, soit :
- le personnage est de sexe feminin
- la classe qu'elle vient de passer est ensorceleur ou barde

J'ai fait ce qui me semblait logique, à savoir, dans un include :


NWScript :
void EnsorceleusesNoob()
{
    object oPC = GetPCLevellingUp();
    object oItem = GetItemPossessedBy(oPC, "item_quete");
    int bBard = FALSE;
    int bSorc = FALSE;
    if(GetClassByPosition(1, oPC)== CLASS_TYPE_SORCERER ||
      GetClassByPosition(2, oPC)== CLASS_TYPE_SORCERER ||
      GetClassByPosition(3, oPC)== CLASS_TYPE_SORCERER)
    {
        bSorc = TRUE;
    }
    if(GetClassByPosition(1, oPC)== CLASS_TYPE_BARD ||
      GetClassByPosition(2, oPC)== CLASS_TYPE_BARD ||
      GetClassByPosition(3, oPC)== CLASS_TYPE_BARD)
    {
        bBard = TRUE;
    }
    if(GetLocalInt(oItem, "ensorceleuse_regle") ==0)
    {
        if(bBard && GetGender(oPC) == GENDER_FEMALE)
        {
            BeginConversation("spells_regles", oPC);
        }
        else if(bSorc && GetGender(oPC) == GENDER_FEMALE)
        {
            BeginConversation("spells_regles", oPC);
        }
    }
}
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 j'ai appelé la fonction ici dans le onplayerlevelup


NWScript :
void main()
{
    object oPC = GetPCLevellingUp();
    object oBon = GetFirstItemInInventory(oPC);
    object oItem = GetItemPossessedBy(oPC, "item_quete");
    string sPC = GetName (oPC);
    int iLevel = GetHitDice(oPC);
    int iTest = 0 ;
    int iStopXP = ((iLevel * (iLevel - 1)) / 2) * 1000 -1;
    location iLoc = GetLocation(oPC);
    string sLevel = IntToString(iLevel);
    string sAreaName = GetName(GetArea(oPC));
    // autorisation pour lvl
    if (( iLevel == 8 ||
    iLevel == 10 ||
    iLevel == 15 ||
    iLevel == 20 ||
    iLevel == 25 ||
    iLevel == 30 ) && ( GetItemPossessedBy(oPC, "Passniveau" + IntToString(iLevel)+ "NODROP") == OBJECT_INVALID ))
        {
        SetXP(oPC,iStopXP);
        SendMessageToPC(oPC,"Il vous manque l'autorisation pour passer ce niveau.");
        }
    EnsorceleusesNoob();
    string sResbon;
    FloatingTextStringOnCreature("test5", oPC);
    while(oBon != OBJECT_INVALID)
        {
        sResbon = GetResRef(oBon);
        if(GetStringLeft(sResbon, 7) == "Passniveau")
            {
            if(StringToInt(GetStringRight(sResbon, GetStringLength(sResbon)-7)) <= iLevel)
                DestroyObject(oBon);
            }
        oBon = GetNextItemInInventory(oPC);
        }
    SetLocalLocation(oPC, "lLocation", iLoc);
    ExportSingleCharacter(oPC);
}
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 bien sûr... Ca ne marche pas. J'ai essayé de mettre un floating text string "test" à différent endroits, ça marche tout dans le script, mais aucun dans l'include. Si j'essaie de copier le bout de script utilise de l'include dans le onplayerlevelup, nwn plante après le passage de niveau (testé 7 fois).

Je n'ai vraiment aucune idée de pourquoi ça fait ça. Vous y voyez plus clair que moi ?
Merci ++
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 17/04/2008 19:14:41 Sujet du message :

Salut,
ça plante que quand les conditions sont validées ou dans tout les cas ?

Sinon en survolant j'ai vu ça, les Resref c'est sans majuscules il me semble, et en plus Passniveau il colle pas avec le test des 7 premiers caractères de la chaîne, c'est trop long...
NWScript :
if(GetStringLeft(sResbon, 7) == "Passniveau")
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.


Essaie plutôt de renvoyer ce que donne tes opérations sur les strings, car tu renvoie surement des trucs que tu veux pas.


Sinon petit détail, pour le test du niveau du joueur, tu peut faire une petite fonction, c'est beaucoup plus clair et facile a modifier, et vu le peux d'appel dessus en terme puissance ça va ^^, quelque chose dans ce genre :
NWScript :
int LevelByPass(int iLevel)
{
int i = FALSE;

switch(iLevel)
{
  case 08 :
  case 10 :
  case 15 :
  case 20 :
  case 25 :
  case 30 :
  i = TRUE;
  break;

  default :
  i = FALSE;
  break;
}

return i;
}
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.



A+ je regarderais ça un peut mieu ce week-end
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
warpShadow
Légende vivante
Inscrit le: 01 Fév 2005
Messages: 363
Localisation: Perpignan
Répondre en citant
Posté le : 17/04/2008 21:00:31 Sujet du message :

Salut Ivellios

Lol ok, mais cette partie du script fonctionne très bien. C'est vraiment le moment où EnsorceleusesNoob() est lancé qui plante.

Merci ^^
_________________
Asphia
Module RP Médiéval Fantastique pour Neverwiner Nights
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 18/04/2008 11:54:03 Sujet du message :

Il me semble bien que les tags sont sensibles à la casse, à vérifier.
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
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 34.047ms