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 11/11/2024 22:04:02
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 |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bien le bonjour, je souhaiterais resoudre un petit probleme et je pense pouvoir trouver de l'aide ici !
voilà, je voudrais utiliser un feu de camp pour mettre de la viande crue dedans, refermer, et en ressortir de la viande cuite. j'ai fait un script (avec un editeur) et ça marche, mais j'arrive a le faire avec un seul type de viande crue... voilà mon script, surement trop complexe d'ailleurs NWScript :
int lsn=1; //lsstype=2 void SetItemLocals() { SetLocalString(OBJECT_SELF, "lsn1", "ration"); //resref de mon objet final (viande cuite) SetLocalInt(OBJECT_SELF, "lsc_ration", 1); SetLocalString(OBJECT_SELF, "lsi1_ration", "ATS_R_BCAT_N_MEAT");//tag de mon composant (viande crue) SetLocalInt(OBJECT_SELF, "lss_ration", -10); SetLocalInt(OBJECT_SELF, "lsv_ration", -10); } void CreateGold(object oTarget, int nAmount) { CreateItemOnObject("nw_it_gold001", oTarget, nAmount); } void main() { object oOwner=OBJECT_SELF; if (!GetLocalInt(OBJECT_SELF, "lsvar_set")) { SetItemLocals(); SetLocalInt(OBJECT_SELF, "lsvar_set", TRUE); } if (lsn==0) return; object oItem; int bOkay, nGold, nCount, nNum, nLoop, nLoops, nHasGold, nVis; string sCur, sReq; for (nLoop=1; nLoop<=lsn; nLoop++) { sCur=GetLocalString(OBJECT_SELF, "lsn"+IntToString(nLoop)); nNum=GetLocalInt(OBJECT_SELF, "lsc_"+sCur); for (nLoops=1; nLoops<=nNum; nLoops++) { sReq=GetLocalString(OBJECT_SELF, "lsi"+IntToString(nLoops)+"_"+sCur); if (GetStringLeft(sReq, 8)==" gold ") { nGold=StringToInt(GetStringRight(sReq, GetStringLength(sReq)-8)); if (GetGold(oOwner)>=nGold) nCount++; } else if (GetItemPossessedBy(oOwner, sReq)!=OBJECT_INVALID) { SetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops), GetItemPossessedBy(oOwner, sReq)); nCount++; } } if (GetLocalInt(OBJECT_SELF, "lss_"+sCur)==-10) bOkay=TRUE; else if (GetLastSpell()==GetLocalInt(OBJECT_SELF, "lss_"+sCur)) bOkay=TRUE; else bOkay=FALSE; if (bOkay && (nCount==nNum)) bOkay=TRUE; else bOkay=FALSE; if (bOkay==TRUE) { if (nGold>0) { nHasGold=GetGold(oOwner); DestroyObject(GetItemPossessedBy(oOwner, "NW_IT_GOLD001")); DelayCommand(0.2, CreateGold(oOwner, nHasGold-nGold)); } for (nLoops=1; nLoops<=nNum; nLoops++) { oItem=GetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops)); DestroyObject(oItem); } CreateItemOnObject(sCur, oOwner); int nVis=GetLocalInt(OBJECT_SELF, "lsv_"+sCur); if (nVis!=-10) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVis), oOwner); } oItem=OBJECT_INVALID; bOkay=FALSE; nGold=0; nCount=0; sCur=""; sReq=""; nNum=0; } } j'ai en fait une dizaine de viandes crues differentes, et je voudrais qu'elles me donnent toutes un seul type de viande cuite (mon resref "ration") donc celui ci marche mais avec un seul type de viande crue, et je ne vois pas comment mettre mes autres viandes crues ici...je commence a etre moins clair ! voilà, si quelqu'un pouvais m'aider, j'aprecierais vraiment, merci d'avance ! _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Ton script me paraît en effet bien compliqué, j'ai pas tout compris d'ailleurs (il est vrai que j'ai pas trop creusé non plus). Mais pour ton problème :
Si tous tes types de viande crue ont le même tag et que tu récupère l'objet "viande_cru" par le tag, il n'y a pas de raison pour que ça marche pas, non ? _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
oui, mais le probleme justement c'est qu'elles n'ont pas le meme tag, et je ne peux pas les changer car is servent a d'autres aplications....voilà pourquoi je suis bloqué
il est compliqué oui, je l'ai fait avec un editeur de script sur le modele 'blacksmith' et il y a une histoire de PO qui neme sert pas du tout, j'ai essayé d'en supprimer, mais je ne compile plus apres, alors je l'ai laissé tel quel ! _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Bon, une idée comme ça, au lieu d'essayer de faire un script compliqué, pourquoi ne pas passer par un dialogue ? Du genre :
Dans le OnUse du feu, tu mets un script qui lance le dialogue du feu (dialogue qui se place dans un des onglets, n'ayant pas le jeu sous la main, je ne peux te dire où exactement). NWScript :
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 dans le dialogue : Citation : [PROPRIETAIRE] Quel beau feu bien chaud ! - "Et si je faisais cuir ce beau roti" (condition d'exécution 1) [PROPRIETAIRE] "Ma viande est cuite" (action conséquente 1) - "Et si je faisais cuir ce lapin" (condition d'exécution 2) ... - "Si j'ai de la viande à faire cuir, je reviendrai ici" action conséquente 1 : utilise l'assisatant de script pour supprimer le roti cru et donner le roti cuit. Voilà, ce ne serait pas mieux ? Sinon sur la base de ton script, il faudrait récuperer le tag de l'objet placé dans le feu (il doit bien y avoir une fonction pour ça du genre GetTag mais il faut bien identifier l'objet placé dans le feu (là je sais pas trop, peut-être une fonction du genre GetNextItemInInventory) et vérifier si le tag fait partie de la liste des 10 viandes crues autorisée, si c'est le cas, on détruit l'objet et on crée la viande cuite... Un peu compliquer et très simple à faire via le dialogue. Ca te va ? _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
oui, merci, je vais regarder ça, ça va peut etre aller.
mais si quelqu'un peut m'aider pour le faire sans dialoque, qu'il le dise, j'en serais ravi ! en tout cas merci pour le coup de main _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
Sans dialogue :
NWScript : void main() { int nCount = 0; string sRation = "ration"; //resref de l'objet produit string sViande1 = "tag_viande_1"; string sViande2 = "tag_viande_2"; string sViande3 = "tag_viande_3"; string sViande4 = "tag_viande_4"; string sViande5 = "tag_viande_5"; string sViande6 = "tag_viande_6"; string sViande7 = "tag_viande_7"; string sViande8 = "tag_viande_8"; string sViande9 = "tag_viande_9"; string sViande10 = "tag_viande_10"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) ) { DestroyObject( oItem, 0.0 ); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { CreateItemOnObject( sRation, oCreateur ); } } _________________ ... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
ah, merci bien, j'essaierais ça, mais je dois dire que le dialogue a aussi un certain charme.je trouve par ce script une façon plus rp...on met sa viande, on discute autour du feu, et on se sert, en tout cas merci a vous deux ! vous m'aidez grandement
_________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bon, excusez moi de faire le , mais je voudrais mettre un DelayCommand pour simuler le temps de cuisson. j'ai fait plusieurs essais, et ça marche pas, faut dire je sais pas comment parametrer un delai... bref je vous montre ce que j'ai fait, si quelqu'un peut m'aider, merci d'avance
NWScript :
void main() { int nCount = 0; string sRation = "ration"; //resref de l'objet produit string sViande1 = "ATS_R_BADG_N_MEAT"; string sViande2 = "ATS_R_DEER_N_MEAT"; string sViande3 = "ATS_R_WSTA_N_MEAT"; string sViande4 = "ATS_R_BBAT_N_MEAT"; string sViande5 = "ATS_R_BCAT_N_MEAT"; string sViande6 = "ATS_R_CCAT_N_MEAT"; string sViande7 = "ATS_R_COUG_N_MEAT"; string sViande8 = "ATS_R_WWOL_N_MEAT"; string sViande9 = "ATS_R_BEAR_N_MEAT"; string sViande10 = "ATS_R_BLAB_N_MEAT"; string sViande11 = "ATS_R_POLB_N_MEAT"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) || ( GetTag( oItem ) == sViande11 ) ) { DestroyObject( oItem, 0.0 ); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { CreateItemOnObject( sRation, oCreateur ); } DelayCommand(6.0f,ExecuteScript(sRation,oCreateur)); } a mon avis j'ai tout faux dans la commande que j'ai ecrite(genre je demande executescript, mais je mets sRation...je suis paumé)....mais bon, si vous pouvez me montrer un bonne version merci a vous _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
NWScript : void CreateItemOnObject2( string sResRef, object oTarget ) { CreateItemOnObject( sResRef, oTarget ); } void main() { int nCount = 0; string sRation = "ration"; //resref de l'objet produit string sViande1 = "ATS_R_BADG_N_MEAT"; string sViande2 = "ATS_R_DEER_N_MEAT"; string sViande3 = "ATS_R_WSTA_N_MEAT"; string sViande4 = "ATS_R_BBAT_N_MEAT"; string sViande5 = "ATS_R_BCAT_N_MEAT"; string sViande6 = "ATS_R_CCAT_N_MEAT"; string sViande7 = "ATS_R_COUG_N_MEAT"; string sViande8 = "ATS_R_WWOL_N_MEAT"; string sViande9 = "ATS_R_BEAR_N_MEAT"; string sViande10 = "ATS_R_BLAB_N_MEAT"; string sViande11 = "ATS_R_POLB_N_MEAT"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sViande1 ) || ( GetTag( oItem ) == sViande2 ) || ( GetTag( oItem ) == sViande3 ) || ( GetTag( oItem ) == sViande4 ) || ( GetTag( oItem ) == sViande5 ) || ( GetTag( oItem ) == sViande6 ) || ( GetTag( oItem ) == sViande7 ) || ( GetTag( oItem ) == sViande8 ) || ( GetTag( oItem ) == sViande9 ) || ( GetTag( oItem ) == sViande10 ) || ( GetTag( oItem ) == sViande11 ) ) { DestroyObject( oItem, 0.0 ); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { DelayCommand( 6.0, CreateItemOnObject2( sRation, oCreateur ) ); } } _________________ ... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bonjour et merci pour cette reponse rapide. bon j'etais vraiment loin du compte, j'avais pas mis de void suplementaire...
je viens de l'essayer, ça marche merci, mais y a-t-il possibilité de retarder l'ensemble, je veux dire la destruction au meme delai que la creation, voila, merci d'avance...( je sais, desolé d'etre un ) _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Bien sur, il suffit d'ajouter un DelayCommand devant ton DestroyObject() comme cela est fait avec le CreateItemOnObject2.
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
ok, merci beaucoup !!!
_________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
ok, merci beaucoup !!!
euh, il va falloir que je refasse un void DestroyObject aussi ? desolé, je suis pas tres doué lol PS: desolé pour le double post rePS: ma question est nulle, je merci d'effacer mon dernier post _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Non pas la peine.
En fait le DelayCommand prend en paramètre un float pour le temps et une action, CreateObject n'est pas considéré comme une action, c'est pourquoi on passe par une fonction de création qu'on appelle ensuite dans le DelayCommand car la fonction est considérée comme une action. Par contre le DestroyObject est bien considéré comme une action, tu peux donc mettre directement : DelayCommand(6.0, DestroyObject(ton_objet_a_detruire); _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
rectification :
DelayCommand(6.0, DestroyObject(ton_objet_a_detruire)); _________________ ... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
oui, merci, pour le code j'avais trouvé, mais j'ai tendance a parler avant de reflechir
par contre merci pour l'explication ! a bientot _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bonjour, je viens de prendre ce modele de script pour une autre application...j'ai veriffié mon ResRef mais il ne le crée pas, alors que mes objets eux sontbien detruits...je vous laisse le code, mais je vois franchement pas, pour moi ça viens du resref, mais il est bon....
NWScript :
void CreateItemOnObject2( string sResRef, object oTarget ) { CreateItemOnObject( sResRef, oTarget ); } void main() { int nCount = 0; string sCuir = "it_cmat_leath001"; //resref de l'objet produit string sPeau1 = "ATS_R_BADG_N_PEL"; string sPeau2 = "ATS_R_DEER_N_PEL"; string sPeau3 = "ATS_R_WSTA_N_PEL"; string sPeau4 = "ATS_R_BBAT_N_PEL"; string sPeau5 = "ATS_R_BCAT_N_PEL"; string sPeau6 = "ATS_R_CCAT_N_PEL"; string sPeau7 = "ATS_R_WWOL_N_PEL"; string sPeau8 = "ATS_R_BEAR_N_PEL"; string sPeau9 = "ATS_R_BLAB_N_PEL"; string sPeau10 = "ATS_R_POLB_N_PEL"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sPeau1 ) || ( GetTag( oItem ) == sPeau2 ) || ( GetTag( oItem ) == sPeau3 ) || ( GetTag( oItem ) == sPeau4 ) || ( GetTag( oItem ) == sPeau5 ) || ( GetTag( oItem ) == sPeau6 ) || ( GetTag( oItem ) == sPeau7 ) || ( GetTag( oItem ) == sPeau8 ) || ( GetTag( oItem ) == sPeau9 ) || ( GetTag( oItem ) == sPeau10 )) { DelayCommand(6.0, DestroyObject( oItem, 0.0 )); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { DelayCommand( 6.0, CreateItemOnObject2( sCuir, oCreateur ) ); } } voilà, j'ai essayé avec un autre ResRef, ça marche, si quelqu'un sait pourquoi ça ne marche pas avec celui là ! (c'est un item craftable d'HotU, cuir) merci d'avance _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Fantilir Chevalier Messages: 80 |
Tu serais pas un scripteur de CTM toi par le plus pur des hasard ?
|
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
CTM ? non, desolé
bon, j'ai recuperé le tag au lieu du resref et ça marche a bientot _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bon, j'en remets une couche !
voilà, sur la meme base, est-il possible de demander selon le composant, un produit particulier, car j'ai essayeé quelquechose qui me parraissait logique, mais ça ne marche pas...je vous montre NWScript :
void CreateItemOnObject2( string sTag, object oTarget ) { CreateItemOnObject( sTag, oTarget ); } void main() { int nCount = 0; string sBarre1 = "x2_it_cmat_iron"; //Tag de l'objet produit string sBarre2 = "x2_it_cmat_mith"; string sBarre3 = "x2_it_cmat_adam"; string sMinerai1 = "ATS_R_ORE1_N_IRO"; string sMinerai2 = "ATS_R_ORE1_N_MIT"; string sMinerai3 = "ATS_R_ORE1_N_ADA"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sMinerai1 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur ) ); } { if ( ( GetTag( oItem ) == sMinerai2 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur ) ); } { if ( ( GetTag( oItem ) == sMinerai3 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); nCount++; } oItem = GetNextItemInInventory( oCreateur ); } for( nLoop=0; nLoop<nCount; nLoop++ ) { DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur ) ); } } voilà, en faisant ça, si je mets le minerai3, ça me le detruit mais je n'obtiens pas la barre 3, pareil pour le 2...par contre pour le minerai 1, ça me donne les 3 barres, donc si quelqu'un pouvait m'expliquer ! merci d'avance _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Perso je comprends pas bien l'intérêt de faire une première boucle pour vérifier les item puis une seconde pour créer. C'est du 1 pour 1 non ?
Moi je ferai plutôt ça : NWScript :
void CreateItemOnObject2( string sTag, object oTarget ) { CreateItemOnObject( sTag, oTarget ); } void main() { int nCount = 0; string sBarre1 = "x2_it_cmat_iron"; //Tag de l'objet produit string sBarre2 = "x2_it_cmat_mith"; string sBarre3 = "x2_it_cmat_adam"; string sMinerai1 = "ATS_R_ORE1_N_IRO"; string sMinerai2 = "ATS_R_ORE1_N_MIT"; string sMinerai3 = "ATS_R_ORE1_N_ADA"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sMinerai1 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur )); } if ( ( GetTag( oItem ) == sMinerai2 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur )); } if ( ( GetTag( oItem ) == sMinerai3 )) { DelayCommand(2.0, DestroyObject( oItem, 0.0 )); DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur )); } oItem = GetNextItemInInventory( oCreateur ); } } Si j'ai bien compris ce que tu veux faire, ça devrait marcher non ? _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
voir meme
NWScript : void CreateItemOnObject2( string sResRef, object oTarget ) { CreateItemOnObject( sResRef, oTarget ); } void main() { int nCount = 0; string sBarre1 = "x2_it_cmat_iron"; //ResRef de l'objet produit string sBarre2 = "x2_it_cmat_mith"; string sBarre3 = "x2_it_cmat_adam"; string sMinerai1 = "ATS_R_ORE1_N_IRO"; string sMinerai2 = "ATS_R_ORE1_N_MIT"; string sMinerai3 = "ATS_R_ORE1_N_ADA"; object oCreateur = OBJECT_SELF; object oItem = GetFirstItemInInventory( oCreateur ); int nLoop; while ( GetIsObjectValid( oItem ) ) { if ( ( GetTag( oItem ) == sMinerai1 )) { DestroyObject( oItem, 2.0 ); DelayCommand( 2.0, CreateItemOnObject2( sBarre1, oCreateur )); } else if ( ( GetTag( oItem ) == sMinerai2 )) { DestroyObject( oItem, 2.0 ); DelayCommand( 2.0, CreateItemOnObject2( sBarre2, oCreateur )); } else if ( ( GetTag( oItem ) == sMinerai3 )) { DestroyObject( oItem, 2.0 ); DelayCommand( 2.0, CreateItemOnObject2( sBarre3, oCreateur )); } oItem = GetNextItemInInventory( oCreateur ); } } _________________ ... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
j'avais essayer avec les else if, mais il ne me compilais pas, en me disant else without if chaipukoi...bref, vu que j'avais la boucle 3 fois, ça devait gener pas mal, je vais essayer ça, merci a vous
_________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Moi je ne suis pas un fervent des elseif, ça complique toujours un peu et ça fait exactement la même chose que la série de if (dans le cas présent évidemment), le seul gain c'est la performance en temps d'exécution mais là on s'en moque un peu...
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
il est quand même mieux d'utiliser les else, car ca evite que plusieurs conditions se chevauchent malencontreusement.
_________________ ... |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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