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:17:41


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 27/04/2007 22:10:38 Sujet du message : Système RemoveEffect

Bonjour.

Bon voila, je suis entrain de créer une des fonctions pour mon Blacksmith (je le refais entièrement), mais je bloque sur un problème.

NWScript :
void BS_AddProp(object oPC, itemproperty iProperty)
{
object oItem = BS_GetItem(oPC);
//Caracteristique:
int CaracNow = 12;
int CaracMax = 6;
int b = 1;
    while(b <= CaracMax)
    {
    int nCarac;
        if(b==1){nCarac = StringToInt("IP_CONST_ABILITY_STR");}
        else if(b==2){nCarac = StringToInt("IP_CONST_ABILITY_DEX");}
        else if(b==3){nCarac = StringToInt("IP_CONST_ABILITY_CON");}
        else if(b==4){nCarac = StringToInt("IP_CONST_ABILITY_WIS");}
        else if(b==5){nCarac = StringToInt("IP_CONST_ABILITY_CHA");}
        else if(b==6){nCarac = StringToInt("IP_CONST_ABILITY_INT");}
        int a = 1;
        while(a <= CaracNow)
        {
            if(IPGetItemHasProperty(oItem, ItemPropertyAbilityBonus(nCarac, a), -1)==TRUE)
            {
            RemoveItemProperty(oItem, ItemPropertyAbilityBonus(nCarac, a));
            }
        a++;
        }
    b++;
    }
IPSafeAddItemProperty(oItem, iProperty, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
}
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.


Bon, cette fonction sert à ajouter iProperty à la LocalObject de oPC (enfin ça c'est mon système, il marche très bien =)). Le problème, c'est qu'en faite, dans cette fonction, si l'on repère une propriété "égale" on la détruit pour la remplacer par une nouvelle.

En exemple ici, mon Blacksmith peut ajouter les propriétés d'abilité (Force, Constitution, etc...). Dans la fonction, je regarde d'abord si il y a pas déjà des bonus aux caractéristiques ;
Si il y a, on détruit le bonus
Si il y a pas, bein on continue lol
Simple problème : ca n'enleve pas le bonus.

Exemple: j'ajoute +5 en force, dès que je recommence, et que je mets +3 en constitution, l'objet en question aura "+5 force, +3 constitution" or moi je veux qu'il est au bout du compte "+3 constitution" (donc que le bonus à la force soit enlever).

Je suis sur que c'est la fonction RemoveEffect qui me fait ça. Par contre, moi je la trouve louche cette fonction, regardez, on est obligé de mettre par exemple, la fonction qui ajoute un bonus aux caracs (ItemPropertyAbilityBonus) et on doit TOUT voir ! Si il y a pas l'abilité force avec +1, +2, +3, etc... si il y a pas l'abilité constitution avec +1, +2, +3, etc... Est ce normal??

Merci si quelqu'un peut me dire qu'est ce qu'il ne va pas la dedans Smile

Sbizz

Edit: Bah j'suis trop idiot ! Au moment ou j'post, j'me souviens qu'il y avait une fonction FirstProperty machin, alors j'ai cherché et j'ai trouvé ma réponse =)

NWScript :
void BS_AddProp(object oPC, itemproperty iProperty)
{
object oItem = BS_GetItem(oPC);
//Caracteristique:
itemproperty ipFirst = GetFirstItemProperty(oItem);
    while(GetIsItemPropertyValid(ipFirst))
    {
        if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ABILITY_BONUS)==TRUE)
        {
        RemoveItemProperty(oItem, ipFirst);
        }
    ipFirst = GetNextItemProperty(oItem);
    }
IPSafeAddItemProperty(oItem, iProperty, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
}
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 script par contre sera 10 fois plus grand, puisque j'dois ajouter toutes les fonctions possiblent de mon BS Razz

Par contre, j'vois pas pourquoi il removait pas avant ...
_________________
[http]
 
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 37.024ms