
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 04/05/2025 00:44:30
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 |
Viduc de Papironda Grand Chevalier Messages: 119 |
bonjour, voilà je viens juste de me mettre aux scripts... j'essais de comprendre comment tout celà fonctionne, j'ai donc créer un premier script pour faire apparaitre une créature en un lieu donner en plaçant un objet dans un autel... voici le script:
NWScript :
void main() { object oItem = GetObjectByTag ("ObjetInvocTerre"); string sItem = "ObjetInvocTerre"; object oCoffre = OBJECT_SELF; location oLoc = GetLocation(GetWaypointByTag ("ApparitionTerre")); if(GetIsObjectValid(GetItemPossessedBy(oCoffre,sItem))) CreateObject(OBJECT_TYPE_CREATURE, "elementalTerre", oLoc); } le srcipt marche parfaitement, et j'ai mit 5 autels qui font chacun apparaitre une créature différente grace à un objet identifier pour chaque (ObjetInvocTere, ObjetInvocAir etc...). tout ceci fonctionne a merveille. Maintenant j'aimerais faire en sorte que une fois que toutes les créatures sont invoquées une autre apparaisse (au centre d'un pentacle). Mais là je sèche.... Si vous pouviez me donner des pistes ce serait cool^^ Merci Viduc Dernière édition par Viduc de Papironda le 24/05/2006 17:43:30; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
Salut viduc.
Pour faire ce que tu dit il faut placer une variable. a chaque fois que tu clique sur un autel "la variable=la variable+1".Sur les scripts de tes autels tu met un "if" avec pour condition que la variable soit egale à 5. si la variable est egale a 5 alors la creature apparait. sinon le pj doit activer les autres autels ![]() P.S.: N'oublit pas de metre a la fin de ton script un "DestroyObject(OBJECT_SELF");" sinon le pjh pourra tous les activer avec le memme autel ![]() Et oila le travail ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Viduc de Papironda a écrit : NWScript : void main() { object oItem = GetObjectByTag ("ObjetInvocTerre"); string sItem = "ObjetInvocTerre"; object oCoffre = OBJECT_SELF; location oLoc = GetLocation(GetWaypointByTag ("ApparitionTerre")); if(GetIsObjectValid(GetItemPossessedBy(oCoffre,sItem))) CreateObject(OBJECT_TYPE_CREATURE, "elementalTerre", oLoc); } ![]() Les deux premiers lignes sont écrites dans le sens inverse, ca aurait été plus cohérent de faire: 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. Par contre le reste est bien scripté sauf qu'il aurait mieux que tu mettre lLoc au lieu de oLoc. (La lettre devant indique la classe de variable. s = string, i = int, l = location, o = object.) Après n'hésite pas a prendre l'habitude de mettre des acolades pour tes boucles parce que sur un code plus long c'est plus propre. NWScript :
if(condition1 > condition2) { } Et des commentaires. hi hi, faut toujours que je mette mon grain de sel partout moi ! _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
oki merci bp à vous deux, c'est cool^^
j'avais oublié de dire que j'avais mit mon script sur le onclosed... mais je vois pour la variable je vais adpater et tester pour vous dire ce qu'il en ait^^ (j'aurais surement besoin de vos conseil pour finaliser ça^^ sure même mais je vais déjà essayer) Et au contraire pas de problème pour les remarques ça permet de mieux comprendre alors hésitez pas^^ et justement... pourquoi inverser ces deux lignes??? si j'ai bien pigé le truc, l'une sert à indentifier l'objet et l'autre à le mettre en tant que variable..? donc pour moi (dans ma logique actuelle) j'identifie l'objet et après je donne la variable non?? si vous pouvez m'expliqé le pourquoi du comment... Viduc |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
en faite voilà mon idée pour l'instant... j'aimerais définir une variable sur chaque créature invoquée...
j'ai commencé sur une voilà ce que j'ai mit dans son onspawn: 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. mais bon ça ne passe pas au compilateur... donc je me dis que je m'y prend mal pour définir cette variable... Ce que je veux réussir à faire ensuite c'est faire en sorte que sur un placable (par exemple) on puisse mettre dans son unused (par exemple) un condition.... si nVar1+nVar2+etc=5 alors créé une créature... Viduc |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Tu confond.
Déjà il manque un point virgule à la fin de ton instruction mais même la déclaration est pas bonne. Tu ne peux pas stocker un void dans un int. Autrement dit tu ne verra jamais de int iNombre = Set...; Tu dois directement mettre ta ligne d'éxecution comme : 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. Ensuite ton idée de mettre cette local dans le OnSpawn des monstre n'est pas bonne parce que tu déclare une local sur un monstre qui est destiné à mourir. C'est possible mais à ton niveau tu te complique. Indication : -met tout les scripts dans le placeable (mode intrigue) qui sera toujours présent. -met dans le OnDead des monstre l'ancien nombre des monstres tués + 1 tout ca dans un int local sur le placable. (bon si tu commence a scripter c'est pas les choses les plus simple) -ensuite dans le OnUsed du placable tu vérifie que la locale vaut 5. _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
Merci^^
en faite en attendant, j'avais déjà corrigé le premier problème (et comprit pourquoi en plus^^ ça c'est cool), j'ai donc corrigé le srcipt onspawn de chacune de mes 5 créatures comme suit: 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. en changeant bien sur à chaque fois le nom de ma valeur ("vp_Adonai2" etc...) Pour mieux expliquer ce que je veux faire il faut préciser que je fais ça pour permettre à ce que dans une chambre de magicien il y ai un pentacle d'invocation servant à l'invoc d'Adonaï... Pour mettre en route l'invoc, le mago doit posséder un objet de chaque élément (Air, Terre, Feu, Lune et Eau) et les placer respectivement ds l'autel lui correspondant. A chaque fois qu'il place le bon objet dans le bon autel la créature élémentaire liée à l'élément apparait... Une fois les cinqs créatures invoquées, celà permet au grand Maître Adonaï d'apparaitre pas... donc en fait les créatures disparaissent... Je vois donc ou tu voulais en venir mais pour l'instant je vais garder la première idée (ce que tu me dis là sera pour la prochaine étape je pense^^ ... le n=n+1) Bon au début j'ai testé en ne mettant qu'une variable sur une seule créature et j'ai fait ce sricpt sur l'autel d'invoc pour adonaï: NWScript :
void main() { object oElem1=GetObjectByTag("elementalAir"); int nVar1=GetLocalInt(oElem1, "vp_VarAdonai1"); location lLoc = GetLocation(GetWaypointByTag ("ApparitionAdo")); if(nVar1==1) { CreateObject(OBJECT_TYPE_CREATURE, "Adonai", lLoc); } } et celà marche sans pb, si je n'invoc pas l'élémental de l'air rien ne se passe en utilisant l'autel d'adonaï et inversement... j'ai donc ensuite fait ceci: NWScript :
void main() { object oElem1=GetObjectByTag("elementalAir"); int nVar1=GetLocalInt(oElem1, "vp_VarAdonai1"); object oElem2=GetObjectByTag("elementalEau"); int nVar2=GetLocalInt(oElem2, "vp_VarAdonai2"); object oElem3=GetObjectByTag("elementalFeu"); int nVar3=GetLocalInt(oElem3, "vp_VarAdonai3"); object oElem4=GetObjectByTag("elementalLunne"); int nVar4=GetLocalInt(oElem4, "vp_VarAdonai4"); object oElem5=GetObjectByTag("elementalTerre"); int nVar5=GetLocalInt(oElem5, "vp_VarAdonai5"); location lLoc = GetLocation(GetWaypointByTag ("ApparitionFeu")); if(nVar1+nVar2+nVar3+nVar4+nVar5==5) { CreateObject(OBJECT_TYPE_CREATURE, "Adonai", lLoc); } } il me compile bien mais ça marche pas... je pense que sa vient de ma condition mais je vois pas trop... Viduc |
Revenir en haut | ![]() ![]() ![]() |
Enki Légende vivante ![]() Messages: 432 |
Un conseil au passage pour t'éviter un script trop lourd en plus de l'erreur que tu viens de commettre :
Enregistre ta variable sur la zone et pas sur les créatures, car si les créatures en question sont mortes, tu ne pourras pas trouver la variable ! J'aime bien perso l'idée de mettre la variable sur le OnSpawn ![]() A bientôt ! |
Revenir en haut | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
Tu est sur que tu as mit le bon wp d'aparition
![]() c'est tout bette et il y a peu de chance que ce soit ca mais ca m'est deja arrivé ![]() ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
Oki bah en fait ça marche, c'était ma créature à invoquer qui avait un pb, je l'ait refaite et là tout fonctionne...
(Pour mon nom de spawn c'est juste une erreur de copie... s'est bien le premier qui est mit...) Merci a tous Aux prochaines de mes questions^^ (y'en n'aura d'autre pour sure^^!!) Viduc |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Je vais juste te montrer une technique pour améliorer ton script ou du moins le rendre plus "évolué". Dans cette exemple ca sert à rien mais c'est un bonne exemple de C. (Bon c'est un peu plus compliqué que le reste.
Ton script : NWScript :
void main() { object oElem1=GetObjectByTag("elementalAir"); int nVar1=GetLocalInt(oElem1, "vp_VarAdonai1"); object oElem2=GetObjectByTag("elementalEau"); int nVar2=GetLocalInt(oElem2, "vp_VarAdonai2"); object oElem3=GetObjectByTag("elementalFeu"); int nVar3=GetLocalInt(oElem3, "vp_VarAdonai3"); object oElem4=GetObjectByTag("elementalLunne"); int nVar4=GetLocalInt(oElem4, "vp_VarAdonai4"); object oElem5=GetObjectByTag("elementalTerre"); int nVar5=GetLocalInt(oElem5, "vp_VarAdonai5"); location lLoc = GetLocation(GetWaypointByTag ("ApparitionFeu")); if(nVar1+nVar2+nVar3+nVar4+nVar5==5) { CreateObject(OBJECT_TYPE_CREATURE, "Adonai", lLoc); } } Peu etre remplacé par : (c'est pas mieux parce que c'est plus compliqué mais c'est une autre façon de voir les choses plus mathématiquement.) NWScript : void main() { location lLoc = GetLocation(GetWaypointByTag ("ApparitionFeu")); object oElem1=GetObjectByTag("elementalAir"); // Tu declare tes cinq objets object oElem2=GetObjectByTag("elementalEau"); object oElem3=GetObjectByTag("elementalFeu"); object oElem4=GetObjectByTag("elementalLunne"); object oElem5=GetObjectByTag("elementalTerre"); int iboucle, iTotal = 0; for(iboucle=0; iboucle<5; iboucle++){ // Une boucle for, elle fais 5 "tour" iTotal += GetLocalInt(oElem1, "vp_VarAdonai" + IntToString(iboucle)); } if(iTotal == 5) { CreateObject(OBJECT_TYPE_CREATURE, "Adonai", lLoc); } } _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." Dernière édition par -MeteZ- le 24/03/2006 09:36:41; édité 3 fois
|
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
en effet ça a l'air plus complexe mais aussi plus simple... ceci dit peux tu m'expliquer (avec des mots^^) le sens de ceci, comment on le lirait quoi...
NWScript :
int iboucle, iTotal = 0; for(iboucle=0; iboucle<5; iboucle++){ // Une boucle for, elle fais 5 "tour" iTotal += GetLocalInt(oElem1, "vp_VarAdonai" + IntToString(iboucle)); } if(iTotal == 5) Sinon autre question... j'aimerais maintenant que mes créatures, une fois qu'elles sont toutes invoquées, lance un sort sur "un tube d'expérimentation", si possible en même temps (mais c'est pas le sujet..). J'ai commencé sur une première créature (elementalAir) et j'ai fait ceci: NWScript :
object oElem1=OBJECT_SELF; int nVar1=GetLocalInt(oElem1, "vp_VarAdonai1"); object oElem2=GetObjectByTag("elementalEau"); int nVar2=GetLocalInt(oElem2, "vp_VarAdonai2"); object oElem3=GetObjectByTag("elementalFeu"); int nVar3=GetLocalInt(oElem3, "vp_VarAdonai3"); object oElem4=GetObjectByTag("elementalLunne"); int nVar4=GetLocalInt(oElem4, "vp_VarAdonai4"); object oElem5=GetObjectByTag("elementalTerre"); int nVar5=GetLocalInt(oElem5, "vp_VarAdonai5"); object oTube=GetObjectByTag("vp_ArriveAdonai"); if(nVar1+nVar2+nVar3+nVar4+nVar5==5) { ActionCastSpellAtObject(SPELL_ICE_STORM, oTube); } Compilation OK J'ai mit ça dans le OnPerception de la créature et quand je teste rien, toutes les créatures sont là et elle ne lance pas le sort... Vous avez une idée? Merci Viduc |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Met le dans le OnSpawn.
et met ca (je t'expliquerai le code que j'avais mis au dessus demain parce que je vais me coucher là.) 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. _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
Salut^^^et encore merci pour tout ça^^...
Bon a priori l'ensemble fonctionne, mais la créature (quand elle spawn) commence à lancer le sort puis stop, le sort ne semble pas être lancé en définitif... En attendant je vais tester avec un autre sort pour voir... Viduc Ok j'ai trouvé sur le fofo ceci: NWScript :
ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); DelayCommand(1.0, ActionCastSpellAtObject(SPELL_REMOVE_DISEASE, oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));//le delay command pour que les deux sorts ne s'emballent pas et ça fonctionne mais je comprend pas non plus l'intégralité de la phrase (pourquoi: METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE) ![]() et aussi, j'aimerais faire en sorte que ce sort ne mette pas de dégat, ou au plus 1..., enfin donc avoir la possibilité de définir le nbr de dégats... est ce possible??? Merci^^ Viduc Là j'ai fait en sorte que chacune de mes créatures aient la même fonction... tout fonctionne bien, qu'importe le sens dans leqeul je teste les créatures, la dernière lance son sort... mais bien sure pas les autres... je voudrais donc maintenant faire deux choses: 1) mettre un délais (genre 3s) avant que la créature ne lance son sort 2) faire en sorte qu'elle envoit une commande aux autres créatures pour qu'elles lancent elles aussi leur sort... vous me suivez??..^je crois qu'il y'a une commande qui fait style, "faire lancer tel sort par tel créature (ou objet..)" mais je ne sais pas laquelle s'est... Viduc édit, ça j'ai réglé le pb ça marche j'ai trouvé!!! et en faite j'ai tout trouvé le délais aussi^^!!! Dernière édition par Viduc de Papironda le 23/03/2006 19:51:46; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
Autre question... j'ai testé plusieurs sorts:
NWScript :
ActionCastSpellAtObject(SPELL_CONE_OF_COLD , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); AssignCommand(oElem2, ActionCastSpellAtObject(SPELL_ICE_STORM , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); AssignCommand(oElem3, ActionCastSpellAtObject(SPELL_FIREBALL , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); AssignCommand(oElem4, ActionCastSpellAtObject(SPELL_NEGATIVE_ENERGY_RAY , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); //AssignCommand(oElem5, ActionCastSpellAtObject(SPELL_ EARTHQUAK , oTube, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); mais le dernier ne fonctionne pas... je me dis que c'est peut être à: "METAMAGIC_ANY" ou "PROJECTILE_PATH_TYPE_DEFAULT", mais je ne sais pas pourquoi et surtout ce qu'il faut mettre à la place... Viduc |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
et oui encore une question...
![]() ![]() voilà ceci ne se compile pas: 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. la fonction DelayCommand ne semble pas fonctionner avec CreateObject... pourquoi et comment je peux faire??... Viduc |
Revenir en haut | ![]() ![]() ![]() |
AZAZEL11 Seigneur ![]() Messages: 156 |
c'est quoi ton message d'erreur? Mais une chose qui me chicotte, la création de créature en script fonctionne avec le RESREF et non un TAG, j'ai déjà eu ce problème
Un *ActionWait* avant le CreateObject pourrait régler si c'est un problème d'incompatibilité. _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
salut, à toi^^
c'est possible pour le resref mais a la base sa fonctionne tant que je ne met pas le DelayCommand donc c'est pas ça... le message d'erreur est le suivant: vp_invoc_adonai.nss(23): ERREUR : PARSING VARIABLE LIST J'ai remplacé le DelayCommand par ActionWait mais ça fait le même message, j'ai fait comme ceci: 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 comme ceci (en me disant que pour cette fonction il fallait peut être mettre la valeur temps à la fin..): 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. mais toujours le même message... Viduc |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
en fait j'ai résolut mon pb... je me suis servit des onheartbeat... j'ai mit une variable sur l'objet qui reçoit les sort dans son onheartbeat (une variable =1). Cet objet est détruit une fois que toutes les créatures et leurs sorts ont été lancé. Donc à ce moment là la variable retombe à 1.. j'ai donc mit ensuite ceci dans le onheartbeat de ma zone:
NWScript :
object oTube=GetObjectByTag("vp_ArriveAdonai"); int nVar=GetLocalInt(oTube, "vp_VarAdonai"); location lLoc = GetLocation(GetWaypointByTag ("ApparitionAdo")); if (nVar==0) { CreateObject(OBJECT_TYPE_CREATURE, "Adonai", lLoc); /* warning: 1 unclosed block {} */ c'est nickel, ça marche impec sauf comme vous vous en doutez, toute les 3ou 4 scs une nouvelle créature apparait en plus... il faut donc que je trouve comment lui faire compter (dans ce même srcipt) le nombre de créature qui est apparut et lui faire stopper au delà de 1... si vous avez une idée je suis preneur^^ Viduc |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
ça y est pb résolut^^ j'ai mit une variable de 1 sur le onspawn de ma créature Adonai et j'ai rajouté au srcipt du onheartbeat de la zone la condition qu'il fallait que la variable dans la zone présente de cette créature soit inférieur à un et ça marche nickel^^
Un grand merci à tout ceux qui m'ont aidé et fillé des tuyaux^^ ![]() ![]() Promis pour les prochaine question j'ouvre un nouveau topic^^ Viduc |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Chose promit chose du. Je t'explique la boucle for
NWScript :
int iboucle, iTotal = 0; for(iboucle=0; iboucle<5; iboucle++){ iTotal += 1; // A chaque tour iTotal gagne +1 } C'est manière de voir les choses est TRES importante pour les scripts compliqué. Là ou j'en suis je fais des boucles de 150 tours. Ca me permet de ne pas mettre 150 lignes * 3 (lignes de déclaration) de code voir plus. Et si je dois changer parce que ca marche pas = plus de 450 lignes à changer. Alors que si j'avais mis une boucle for ... 5 lignes maxi ![]() _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
cool!!! merci à toi pour ces explications, je saisis a peut près... par contre juste un truc que je ne comprend pas.... dans ton premier exemple tu ne fait appel qu'à oElem1 dans la boucle, et pas aux autres... donc ça je pige pas trop... je comprends l'idée de lui faire faire une boucle maintenant mais si elle ne prend pas en compte les autres variables celà risque d'être erroné non??? je veux dire la boucle peut très bien arriver à 5 sans que les autres créatures soient apparut non??
Viduc |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Non parce que ca s'incremente donc on va dire que 4 monstres ait dans leur variable locale 1 (donc ils sont apparus) et un n'est pas apparu donc = 0
Ca fera Boucle 1 : iTotal = iTotal + 1 Boucle 2 : iTotal = iTotal + 1 Boucle 3 : iTotal = iTotal + 1 Boucle 4 : iTotal = iTotal + 1 Boucle 5 : iTotal = iTotal + 0 iTotal == 4 donc le script n'est pas executé ! NWScript :
int iboucle, iTotal = 0; for(iboucle=0; iboucle<5; iboucle++){ // Une boucle for, elle fais 5 "tour" iTotal += GetLocalInt(oElem1, "vp_VarAdonai" + IntToString(iboucle)); } Remaque : je voulais aussi te parlé des incrementations. NWScript : iNombre = 5; iNombre++; // vaudra 5 +1 = 6 iNombre = iNombre + 3; // vaudra 6 + 3 = 9 iNombre *= 2; // surement la plus interessant, le signe devant le = (on peux mettre + - * / ) on peut traduire cette ligne par iNombre = iNombre * 2 = 18 //aussi le modulable int iResteNombre = iNombre %= 2; // c'est peu connu et ca sert dans les programmes mathematique... ca donne le reste de la divison iNombre / 2 donc la ca donnera iNombre = 18 / 2 = 9 reste 0 _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |


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