La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 16:40:36
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Semcatala Grand Sage du Conseil Messages: 951 |
Bonsoir ,
Alors voila , je bute sur un pb , je souhaite choisir une feuille d'arbre placée dans inventaire du joueur , et augmenter le poids de cette feuille d'arbre. Jusque là , pas de pb , je le fais avec ce script en demandant au joueur de toucher un levier qui à ce script : NWScript :
void main() { object oPC = GetLastUsedBy(); object feuille = GetItemPossessedBy(oPC,"feuillearbre"); AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyWeightIncrease(IP_CONST_WEIGHTINCREASE_5_LBS),feuille); // feuillearbre } Là ou je ne trouve pas , c'est pour faire l'opération inverse , c'est a dire RETIRER 5 livres a chaque fois que le joueur touche un autre levier !!! J'ai bien essayé ce script : NWScript :
void main() { object oPC = GetLastUsedBy(); object feuille = GetItemPossessedBy(oPC,"feuillearbre"); AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_5_LBS),feuille); // feuillearbre } Mais ça ne fonctionne pas... ! Quelqu'un aurait une idée ? _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Je pense que le type de constante correspond pas.
Pour le poids d'un item tu as 2 options : -l'augmenter (par pallier de 5 livres) -le réduire (par pourcentage du poids) C'est pas tout à fait la même chose, et pas très logique à mon avis. Au final ça done des trucs pas très pratiques à manier. Pour ton problème soit retire le poids supplementaire (RemoveItemProperty()), soit ajoute une réduction du poids pour faire comme si. (sachant que c'est encore super clair mais la propriété "réduction du poids 80%" c'est en fait baisser le poids de l'item de 20%, c'est 80% du poids total) |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Je pense que ton problème est tout simple, tu demandes à ton deuxième script d'enlever du poid et d'en ajouter en même temps, le PC ne peut pas comprendre.
Tu peux essayer ceci, je ne l'ai pas testé, mais cela doit marcher : NWScript :
void main() { object oPC = GetLastUsedBy(); object feuille = GetItemPossessedBy(oPC,"feuillearbre"); AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_20_PERCENT),feuille); // feuillearbre } Seulement, tu ne peux pas choisir exactement de combien ta feuille doit "maigrir". Voilà ! |
Revenir en haut | |
lylver Héros Messages: 274 |
NWScript :
//:: //:: Created 2005-12-12 Lylver //:: Fonctions sur les ajouts/retraits d'effets et de proprietes //:: lors de la fonction s'equiper d'un objet //:: int RemoveSpecificProp(object oItem, int iItemProp){ itemproperty ipItem = GetFirstItemProperty(oItem) ; int bBonus = FALSE ; while( GetIsItemPropertyValid(ipItem) ){ if( GetItemPropertyType(ipItem) == iItemProp ){ RemoveItemProperty(oItem,ipItem); bBonus = TRUE ; break ; } ipItem = GetNextItemProperty(oItem) ; } return bBonus ; } // void main() {} NWScript :
//:: //:: Updated 2005-12-21 Lylver //:: //:: Created 2005-12-12 Lylver //:: Script de retrait de proprietes //:: sur l'item passe en object du script //:: #include "ly_lib_itprop" void main() { object oItem = OBJECT_SELF ; string sItem = GetTag(oItem) ; if( sItem == "TagdeMonItem" ) RemoveSpecificProp(oItem,ITEM_PROPERTY_WEIGHT_INCREASE) ; } Inspire-toi des scripts ci-dessus Dernière édition par lylver le 11/01/2006 01:22:52; édité 1 fois
|
Revenir en haut | |
lylver Héros Messages: 274 |
Post à effacer (doublon)
|
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Bon , apparement ce que je craignait depuis le début est bel et bien vrai , il est possible d'augmenter définitivement le poids d'un objet , mais pas de le réduire de la même maniére...... !
Il ne me reste plus qu'a ruser en utilisant le DURATION_TYPE_TEMPORARY a la place du DURATION_TYPE_PERMANENT _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Sinon tu as toujours la bonne vieille methode de créer 2 templates pour la feuille, une avec +5lbs et l'autre sans, et de les interchanger dans l'inventaire par le script.
|
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Sith Vicious> vi je sais bien , j'y ai pensé dés le départ , mais j'essaie d'éviter autant que possible au joueur que les magouilles des scripteurs ne lui sautent au visage a chaque ligne de script !
En parlant de magouille génante pendant le jeu , je parles bien sûr des messages serveurs incontrolables qui vont passer leur temps a apparaitre du genre " vous avez gagné une feuille " , " vous venez de perdre une feuillle " , ce qui n'a aucun sens pour le joueur qui veut juste jouer et ne pas être embêté ! Pi j'ai pas tout a fait tort , je viens d'essayer ma solution et elle fonctionne parfaitement ! Tout fonctionne et reste totalement invisible pour le joueur ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Citation : Pi j'ai pas tout a fait tort , je viens d'essayer ma solution et elle fonctionne parfaitement ! Tout fonctionne et reste totalement invisible pour le joueur ! Le message serveur comme quoi je suis surchargé arrête pas d'apparaitre , et de plus comme je l'ai craint au début , le lag dû a un seul joueur est terrible a cause des boucles , alors j'ose mmême pas immaginer a une vingtaine de joueurs ... ! Ils abusent de ne pas mettre de fonctions inverse ..... Ca marche , mais ça marche mal ... ! GGGrrrr ! Ca m'apprendra a faire des tests plus poussés ... ! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Essaye ça :
NWScript :
void main() { object oPC = GetLastUsedBy(); object feuille = GetItemPossessedBy(oPC,"feuillearbre"); itemproperty ipTruc = GetFirstItemProperty(feuille); while (GetIsItemPropertyValid(ipTruc)) { if (GetItemPropertyType(ipTruc) ==ITEM_PROPERTY_WEIGHT_INCREASE) { RemoveItemProperty(feuille,ipTruc);break; } ipTruc = GetNextItemProperty(oItem); } } (en regardant bien c'est exactement ce que Lylver avait posté plus haut en fait ^^, mais je l'ai fait tout seul comme un grand) |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Sith Vicious & Lyver > merci a vous 2 , ça marche nikel !
_________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Sith Vicious> une question , a quoi sert le " break " dans le script ?
_________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Anthraxcite Légende vivante Messages: 372 Localisation: Belgique |
Les break dans les boucles ça permet d'en sortir, ce qui n'est pas très propre selon moi.
|
Revenir en haut | |
lylver Héros Messages: 274 |
Cela ne sert à rien d'aller plus avant d'une boucle d'exploration de telle ou telle propriété quand tu l'as trouvée, le break est là pour dire que l'on a fini le travail : on rend le contrôle au moteur de jeu au plus tôt.
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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