La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 21:37:27


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Tiitou
Ecuyer
Inscrit le: 05 Fév 2005
Messages: 51
Localisation: Dans mon C2
Répondre en citant
Posté le : 26/02/2005 22:50:25 Sujet du message : Probleme de compilation

Salut,

aujourd'hui c'est un grand jour : je me lance dans les scripts Very Happy. Je lis plein de trucs et quand je commence a comprendre j'essai un script (pour avoir un poubelle dans l'inventaire). Je met le script la où il faut (OnActivateItem du module) et....je peux pas compiler Embarassed.

J'ai ce message d'erreur qui apparait :

26/02/2005 22:50:06 : Erreur. 'activate_items' n'est pas compilé.
activate_items.nss: ERREUR : DUPLICATE FUNCTION IMPLEMENTATION (main)


Si quelqu'un pouvait me proposer un solution... Merci d'avance

Tiitou
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 26/02/2005 22:58:37 Sujet du message :

a priori, tu dois avoir deux void main() dans ton script puisqu'il te dit qu'il est dupliqué....enfin je crois lol, le mieux serait que tu mette ton script ici afin que nous voyions l'erreur et la corriger, voilà Very Happy
_________________
Rien n'est grave dans la vie...sauf de la perdre...
Chroniques des Royaumes Perdus :
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tiitou
Ecuyer
Inscrit le: 05 Fév 2005
Messages: 51
Localisation: Dans mon C2
Répondre en citant
Posté le : 26/02/2005 23:53:01 Sujet du message :

Merci pour la réponse si prompte Very Happy , j'ai enlevé le void main () et j'ai maintenant ce message :

26/02/2005 23:52:06 : Erreur. 'activate_items' n'est pas compilé.
activate_items.nss(269): ERREUR : INVALID DECLARATION TYPE

Note: mon accolade de fin est surlignée donc normalement l'erreur est là non ? (je vous le dis j'ai commencé aujourd'hui Laughing)

Voici le script original:

NWScript :
void main()
{
object oPC;

if (!GetIsPC(GetItemActivatedTarget())
|| GetIsInCombat(GetItemActivator())
){

SendMessageToPC(GetItemActivator(), "Vous ne pouvez pas utiliser cet objet maintenant !");
return;}

object oTarget;
oPC = GetItemActivator();



oTarget = oPC;

AssignCommand(oTarget, ActionStartConversation(oPC, "nomdudial"));

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


PS: le void main () sert à quoi ?

Voili, voilou...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 27/02/2005 03:18:37 Sujet du message :

je viens d'essayer ton script et chez moi il compile tres bien, j'ai juste refait une mise en page, mais meme avant il compilait...je te le remets au clair
NWScript :
void main()
{
object oPC;
if (!GetIsPC(GetItemActivatedTarget())
|| GetIsInCombat(GetItemActivator()))
{
SendMessageToPC(GetItemActivator(), "Vous ne pouvez pas utiliser cet objet maintenant !");
return;
}
object oTarget;
oPC = GetItemActivator();

oTarget = oPC;
AssignCommand(oTarget, ActionStartConversation(oPC, "nomdudial"));
}
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.


ma foi, reessaye en faisant un copier/coller de celui là, mais c'est le meme lol

sinon, le void main(), si j'ai bien compris c'est ce qui t'autorise l'utilisation de tes fonctions....si je me plante, dites le moi Embarassed
_________________
Rien n'est grave dans la vie...sauf de la perdre...
Chroniques des Royaumes Perdus :
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yeziliclick
Seigneur
Inscrit le: 13 Fév 2005
Messages: 235
Répondre en citant
Posté le : 27/02/2005 11:16:37 Sujet du message :

je n'ai jamais scripté sous nwn, mais a mon avis c'est comme dans tousd les langages, quand tu executes un script, en fait il appelle une seule fonction : la foncrion main (principal en anglais) et c'est cette fonction qui appelle toutes les autres (enfin si je me rappelle bien)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tiitou
Ecuyer
Inscrit le: 05 Fév 2005
Messages: 51
Localisation: Dans mon C2
Répondre en citant
Posté le : 27/02/2005 11:41:05 Sujet du message :

Re,

j'ai essayé ton script et j'ai toujours la première erreur. J'ai ensuite retiré void main () et là j'ai la deuxième erreur^^

(les fonction c'est quoi ?)

Tiitou
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 27/02/2005 12:00:59 Sujet du message :

Le but voulue est de lancer un dialogue avec l'utilisateur ? A ce moment la tu t'est embrouiller un petit peu.
Explication (dsl si c'est pas claire) :
Deja tu fait des declarations dans tous les sens, les declarations c'est quoi ? c'est sa
NWScript :
object oPC;
object oTarget;
oPC = GetItemActivator();
oTarget = oPC;
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.

Ici tu defini l'objet oPC comme celui qui a utiliser l'objet et tu fait oTarget = oPC, c'est completement inutile il faut reutiliser ton oPC.
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
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.

Il suffira de mettre
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.

si tu l'a bien declarer.

Ensuite les fonctions que tu utilise pour les objet sont
NWScript :
GetItemActivatedTarget() // Pour recuperer la cible de l'objet
GetItemActivator() // Pour recuperer l'utilisateur de l'objet
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 si j'ai bien compris c'est une poubelle personnalisé, alors soit on met les item dedans et on l'active pour detruire (dans ce cas pas besoin de Target) sinon tu l'uilise sur un objet pour ensuite le detruire (mais sa je peux pas deviner).

Dernier point il manque le test si l'objet est de tel ou tel tag, car la tout les objets utilisé auront le dialogue de lancé, donc il faut utiliser GetTag.

Voilà j'ai corriger comme je pensai que tu le voulais
NWScript :
void main()
{
object oPC;
oPC = GetItemActivator();
sTag = GetTag(GetItemActivated());

if(sTag == "Tag_de_ta_poubelle")
{
  if(GetIsPC(oPC) && GetIsInCombat(oPC))
  {
  SendMessageToPC(oPC, "Vous ne pouvez pas utiliser cet objet maintenant !");
  }
  else
  {
  AssignCommand(oPC, ActionStartConversation(oPC, "nomdudial"));
  }
}
}
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.


Voila pour les explications...
Maissss de rien Smile
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Tiitou
Ecuyer
Inscrit le: 05 Fév 2005
Messages: 51
Localisation: Dans mon C2
Répondre en citant
Posté le : 27/02/2005 12:18:19 Sujet du message :

Merci, je vais essayer ça tout de suite. Si j'ai bien compris, les fonction c'est des action et les déclarations c'est

déclarer tout les objets ou joueurs qui vont rentrer dans l'action ?Cool

Note: le script original c'était pour mettre des objets dans un contenant (la poubelle) puis de les détruires avec un livre

et reçevoir une somme de PO. Tu as bien compris ça j'espère Very Happy
Dernière édition par Tiitou le 17/03/2005 09:27:40; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yeziliclick
Seigneur
Inscrit le: 13 Fév 2005
Messages: 235
Répondre en citant
Posté le : 27/02/2005 12:26:26 Sujet du message :

une fonction ce que c'est ? euh eh bien c'est un ensemble d'intructions qui fait que tu puisses faire des scripts. Quiand tu vois un nom suivi de parenthèse, c'est que tu appelles une fonction et ce qu'il y a entre parenthèses sont les arguments. Par exemple : GetItemActivator() est une fonction qui n'a pas (forcément) besoin d'arguments (ils sont peut-ete facultatifs).
GetIsInCombat() est une fonction qui peur prendre un argument, dans l'exemple ci-dessus, tu as GetIsInCombat(GetItemActivator()) : là l'argument est une fonction, mais ca peut ete de n'importe quel type, ca depend de comment sont implémentés les fonctions. Et encore la fonction GetItemActivator() renvoi qqchose de type object. tu le vois a la déclaration :
object oPC; //tu déclares une variable de type object
oPC = GetItemActivator() // a cette variable tu assignes la fonction GetItemActivator()

Donc en fait l'argument de la fonction GetIsInCombat() est un object.

Enfin je crois, mes souvenirs en programmation sont assez flous.
Bref, une fonction est cequi te permet de faire tourner tes scripts Wink

A mon avis tout ceci est mieux epliqué dans les tutoriaux
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tiitou
Ecuyer
Inscrit le: 05 Fév 2005
Messages: 51
Localisation: Dans mon C2
Répondre en citant
Posté le : 27/02/2005 12:28:13 Sujet du message :

Re-re, j'ai essayé ton script et j'ai toujours ce message:

27/02/2005 12:30:32 : Erreur. 'activate_items' n'est pas compilé.
activate_items.nss: ERREUR : DUPLICATE FUNCTION IMPLEMENTATION (main)

Je me demande si le problème ne viens pas de mes options qui sont mal configurées...
 
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 38.264ms