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:26:42


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 04/02/2006 02:11:47 Sujet du message : Question sur les fonctions préprogramées !

Salut !

Donc voila , j'aimerais faire mes propres fonctions un peu comme le "HasItem" qui a été crée mais qui n'esiste pas à la base.

Ce que je veux faire est simple , créer une fonction qui donne en INT le nombre d'objets que l'on à dans son inventaire.

Mais là je bute sur un problême ......

j'ai crée mon script "mes_fonctions":
NWScript :

////////////////////////////// ///////////////
//// Comptage d'objets dans l'inventaire ////
////////////////////////////// ///////////////
int Ab_NombreObjets(object oPC);

int Ab_NombreObjets(object oPC)
{
object objet = GetFirstItemInInventory(oPC) ;
int nombre = 0 ;

    while(GetIsObjectValid(objet))
    {
    nombre = nombre++ ;
    objet = GetNextItemInInventory(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.


et mon autre script qui l'apelle :
NWScript :

#include "mes_fonctions"

void main()
{
object oPC = GetLastUsedBy();
int nbr_objets = Ab_NombreObjets(oPC);
string str_nbr_objets = IntToString(nbr_objets);
SendMessageToPC(oPC,"Vous avez " + str_nbr_objets + " objets dans votre inventaire);
}
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.


Mon problême , c'est que je sait pas comment faire aller l'INT qui est dans "nombre" dans "nbr_objets" de mon script principal.

Y aurait pas quelqu'un pour me debugger ce script svp ? Very Happy

Le but pour moi c'est de réussir a maitriser l'appel de fonctions , et de pouvoir faire un comptage d'objets avec une fonction simple ! Very Happy
_________________
" 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 04/02/2006 03:11:10 Sujet du message :

T'as juste oublié le :
NWScript :

return nombre;
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.


a la fin de ta fonction. C'est tout. Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 04/02/2006 12:37:26 Sujet du message :

Voici mon nouveau script :

NWScript :
////////////////////////////// ///////////////
//// Comptage d'objets dans l'inventaire ////
////////////////////////////// ///////////////
int Ab_NombreObjets(object oPC);

int Ab_NombreObjets(object oPC)
{
int nombre ;
object objet = GetFirstItemInInventory(oPC) ;

    while(GetIsObjectValid(objet))
    {
    nombre = nombre++ ;
    objet = GetNextItemInInventory(oPC);
    }

return nombre ;

}
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 ça ne fonctionne toujours pô ! je comprends plus , normalement ça devrait marcher nikel ! Surprised

Et j'ai même voulu faire plus simple :

NWScript :
////////////////////////////// ///////////////
//// Comptage d'objets dans l'inventaire ////
////////////////////////////// ///////////////
int Ab_NombreObjets(object oPC);

int Ab_NombreObjets(object oPC)
{
int nombre = 5 ;

//object objet = GetFirstItemInInventory(oPC) ;

nombre = nombre ++ ;

/*    while(GetIsObjectValid(objet))
    {
    nombre = nombre++ ;
    objet = GetNextItemInInventory(oPC);
    }  */


return nombre ;

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


pour simplement faire revenir le chiffre 6 dans le message serveur , mais même ça ça ne donne rien ( encore et toujours " 0 " qui est renvoyé ).

J'ai dû me planter sur un truc élémentaire , mais je ne vois pas quoi !
_________________
" 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 04/02/2006 12:53:19 Sujet du message :

remplace
NWScript :
nombre = nombre++:
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
NWScript :
nombre++;
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 04/02/2006 13:06:03 Sujet du message :

Ben ...... ça change rien .... ! Shocked

Toujours 0 qui apparait a la place de 6 au final !!!



J4ai essayé ce script :

NWScript :
////////////////////////////// ///////////////
//// Comptage d'objets dans l'inventaire ////
////////////////////////////// ///////////////
int Ab_NombreObjets(object oPC);

int Ab_NombreObjets(object oPC)
{
int nombre = 5 ;

string str_nombre = IntToString(nombre);
SendMessageToPC(oPC,"#mes_fonctions avant ++ = Le nombre est : " + str_nbr_objets );

nombre ++ ;

str_nombre = IntToString(nombre);
SendMessageToPC(oPC,"#mes_fonctions apres ++ = Le nombre est : " + str_nbr_objets );

return nombre ;

}
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 ce qui est terrible c'est qu'on dirait que la fonction ne se lance PAS DU TOUT car les 2 messages serveur n'apparaissent pas.
_________________
" 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 04/02/2006 13:19:55 Sujet du message :

C'est bizarre j'ai testé vite fait sur un placeable avec ce script et quand j'ai changé en nombre++ il m'a bien dit un chiffre
le script que j'ai essayé :
NWScript :
////////////////////////////// ///////////////
//// Comptage d'objets dans l'inventaire ////
////////////////////////////// ///////////////
int Ab_NombreObjets(object oPC);

int Ab_NombreObjets(object oPC)
{
int nombre =0;
object objet = GetFirstItemInInventory(oPC) ;

    while(GetIsObjectValid(objet))
    {
    nombre++ ;
    objet = GetNextItemInInventory(oPC);
    }

return nombre ;

}
void main()
{
object oPC = GetLastUsedBy();
SpeakString(IntToString(Ab_NombreObjets(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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 04/02/2006 14:41:21 Sujet du message :

en prenant ton dernier script et en le découpant la premiére partie pour la mettre dans mon include , ça marche ! Very Happy Merci bien ! Wink

J'arrive toujours pas a comprendre pourquoi mes autres scripts quasi iddentiques n'ont pas marché , mais bon .....
_________________
" 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 04/02/2006 14:45:30 Sujet du message :

Tu avais bien recompilé les scripts qui utilisent la bibliothèque?(les biblio nwn c'est comme des macro on remplace le code à l'intérieur à la compilation, rien n'est dynamique)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 04/02/2006 15:20:34 Sujet du message :

Anthraxcite & Sithvicious > Bon , ben je viens de faire des essais et je nage en plein délire !!!!

J'ai donc pris les scripts qui fonctionnent en les nommant essai & mes_fonction , puis les scripts qui déconnent en les nommant essai2 & mes_fonctions2 en posant 2 leviers au sol et en mettant dans le onusedby de l'un "essai" et dans le onusedby de l'autre "essai2"

Jusque là tout se passe normalement , le premier levier renvoie normalement le nombre d'objets et le second renvoie 0.

Donc là , je décide de faire évoluer doucement les scripts essai2 et mes_fonctions2 jusqu'a ce que essai et essai2 , mes_fonctions et mes_fonctions2 soient parfaitement iddentiques , histoire de voir ce qui fait que l'un marche et PAS l'autre !!!

Donc j'en arrive au point ou essai et essai2 sont parfaitement iddentiques , je me dit que le pb doit venir des mes_fonctions et mes_fonctions2.

J'en arrive aprés plusieurs essais au point ou mes_fonctions et mes_fonction2 sont PARFAITEMENT iddentiques ( comparaison par onglets ) et le pb persiste , là j'étais sur le cul !!!

La seule différence entre les scripts était que les 2 derniéres lignes du mes_fonctions2 20 et 21 étaient vides , alors que la derniére ligne réellement utilisée sur mes_fonctions était la 19.

Donc je vire les lignes 20 et 21 sur mes_fonctions2 et LA les 2 scripts marchent bien !!!!!

Donc je remet les lignes 20 et 21 vides sur les mes_fonctions2 , et LA , ça ..... continue a remarcher correctement ! Laughing:shock:SurprisedVery Happy

Donc en résumé , l'éditeur doit parfois avoir du mal a mettre a jour certains de ses scripts à la compilation ! Very Happy

Là je cherche plus a comprendre ! lol Embarassed
_________________
" 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 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 97.827ms