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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 15:16:36 Sujet du message : [Résolu]déclencheur apparation créature

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);
}
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 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 22/03/2006 15:32:04 Sujet du message :

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 Very Happy .

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 Smile .
Et oila le travail Very Happy
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 15:49:36 Sujet du message : Re: déclencheur apparation créature


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);
}
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.
Comme tu commence à scripter je peux me permettre de te faire des remarques ? Smile
Les deux premiers lignes sont écrites dans le sens inverse, ca aurait été plus cohérent de faire:
NWScript :
string sItem = "ObjetInvocTerre";
object oItem = GetObjectByTag(sItem);
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)
{
}
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 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 16:09:32 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 17:24:13 Sujet du message :

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 :
int nVar1 = SetLocalInt(OBJECT_SELF, "vp_VarAdonai", 1)
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 18:15:47 Sujet du message :

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 :
SetLocalInt(OBJECT_SELF, "vp_VarAdonai", 1);
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 19:25:18 Sujet du message :

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 :
SetLocalInt(OBJECT_SELF, "vp_VarAdonai1", 1);
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);
    }

}
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 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);
    }

}
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Enki
Légende vivante
Inscrit le: 06 Déc 2005
Messages: 432
Répondre en citant
Posté le : 22/03/2006 20:44:12 Sujet du message :

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 Very Happy

A bientôt !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 22/03/2006 20:47:29 Sujet du message :

Tu est sur que tu as mit le bon wp d'aparition Question (dans ton 1er script c'est "ApparitionAdo" et dans le 2emme c'est "ApparitionFeu")
c'est tout bette et il y a peu de chance que ce soit ca mais ca m'est deja arrivé Confused donc je le dit. Sinon je sais pas et je pense que MeteZ est baucoup plus qualifié en script que moi Confused .
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 20:56:28 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 21:47:13 Sujet du message :

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);
    }

}
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.


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);
    }
}
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."
Dernière édition par -MeteZ- le 24/03/2006 09:36:41; édité 3 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 22/03/2006 22:44:54 Sujet du message :

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)
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.


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);
    }
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 22:52:04 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 16:37:57 Sujet du message :

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 :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 ça fonctionne mais je comprend pas non plus l'intégralité de la phrase (pourquoi: METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)Wink donc si quelqu'un peut m'expliquer pour mieu comprendre^^...

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 19:00:08 Sujet du message :

Autre question... j'ai testé plusieurs sorts:

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 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 21:23:35 Sujet du message :

et oui encore une question...Very HappyVery Happy

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 23/03/2006 21:35:38 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 21:50:53 Sujet du message :

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 :
ActionWait(21.0, CreateObject("Adonai", lLoc));
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 :
ActionWait(CreateObject("Adonai", lLoc),21.0);
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 22:32:02 Sujet du message :

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 {} */
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 23/03/2006 23:03:33 Sujet du message :

ç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^^Very HappyVery Happy

Promis pour les prochaine question j'ouvre un nouveau topic^^

Viduc
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 24/03/2006 09:38:17 Sujet du message :

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
}
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.


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 Smile
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 24/03/2006 14:48:55 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 24/03/2006 20:03:45 Sujet du message :

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));
}
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.


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
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 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 95.525ms