Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Changements pour le fichier NWScript.h
Changements pour le fichier NWScript.h
Par gui25 le 16/7/2001 à 16:31:00 (#26377)
/*
* NWScript.h holds C declarations that help make programs appear more NWScript-like.
* This file evolves as the scripting course progresses.
*/
// There is no native string type per se in C
typedef char* string;
// Le type object est un indentifiant d'un objet
typedef int object;
// Le type vector contient les donnees x, y, z d'un point
typedef struct tagVector {
float x;
float y;
float z;
} vector;
// Le type location sert a definir l'emplacement d'un objet
// je n'ai pas encore compris à quoi sert le fFacing
typedef struct tagLocation {
object objArea;
vector vecPosition;
float fFacing;
} location;
// Define implementations of the log (and possibly text window) printing functions
// from NWScript. In our case, we just output the values to the command line (DOS window).
void PrintString(string value)
{
printf("%s", value);
}
void PrintInteger(int value)
{
printf("%i", value);
}
void PrintFloat(float value)
{
printf("%f", value);
}
// Sert à definir un vector
vector Vector(float x, float y, float z)
{
vector vVector;
vVector.x = x;
vVector.y = y;
vVector.z = z;
return vVector;
}
// Sert à definir un location
location Location(object objArea, vector vecPosition, float fFacing)
{
location locLocation;
locLocation.objArea = objArea;
locLocation.vecPosition = vecPosition;
locLocation.fFacing = fFacing;
return locLocation;
}
Je n'en suis qu'au début et il manque encore beaucoup de fonctions à implémenter. Pour le moment, il y a les types vector et location que j'ai ajouté dans ce fichier ainsi que les fonctions les définissants.
J'attend vos suggestions et vos tests :)
Par Darkmore le druide le 16/7/2001 à 16:59:00 (#26378)
Serait il possible que le fFacing soit la direction dans laquelle l'objet le perso ou même la texture est orienté(e) .. ceci réparti sur 360° :confused:
Je pose cette hypothèse parce que les éditeurs du moteur 3D de Quake utilisaient cet "argument" en plus des coordonnées classiques !
Par Paoh le 16/7/2001 à 17:09:00 (#26379)
Pour le type location, je n'ai compris non plus l'utilité du float Facing (revêtement?) bien qu'il existe deux fonctions servant à le récupérer :
- GetFacing
- GetFacingfromlocation
et trois pour le paramètrer :
- SetCameraFacing
- SetFacingPoint
- SetFacing (object, DIRECTION_x)
Vu que cette structure sert à définir un <U>lieu</U> je pense que cela bel et bien correspondre à la texture mais bon... :D
A location has three components, the object ID of the area, a vector representing the position within that area, and a floating
point number representing the facing.
...un texture à virgule...hum...
l'angle de direction de l'objet, c'est plus probable finalement :D
[ 16 juillet 2001: Message édité par : Paoh ]
Par Darkmore le druide le 16/7/2001 à 17:20:00 (#26380)
Par gui25 le 16/7/2001 à 18:15:00 (#26381)
J'ai oublié de préciser mais je ne suis pas sûr, dans la structure location, des noms des éléments.
Petite correction pour la fonction Vector :vector Vector(float x, float y, float z = 0.0f)
{
vector vVector;
vVector.x = x;
vVector.y = y;
vVector.z = z;
return vVector;
}
Je cherche aussi un endroit pour y stocker le fichier modifié sur le net car il va vite faire un certaine taille. J'attend vos propositions.
C'est tout pour le moment.
Par Darkmore le druide le 16/7/2001 à 19:47:00 (#26382)
D'un point de vue programmation pure je ne vois pas l'intéret d'utiliser cette variable... tu auras toujours un vecteur dont la troisième donnée est 0 ... donc pourquoi ne pas l'éliminer ???
Et pourquoi se débarraser de la troisième dimension, en fixant z a zero tu "écrase" tes coordonées dans le plan xy.... donc tu donne une direction/angle autour de l'origine et on retombe sur le fFacing de tout à l'heures ...
je suis plutot :confused: ???
Et pour ce qui est de stocker le fichier sur le net tu devrais pas avoir de problème ... il me semble qu'un fichier de donnée de type texte zippé sa fait pas lourd en poid ???même un gros fichier non ???
Donc une simple page perso suffira !
Ou au pire demande a Daynos/Uther de te trouver une place ...
EDIT : Sur le fFacing --> trouvé sur la reference sheet
location locNew = Location(oDestArea, vDest, fFacing); // East is at 0.0 radians.
Si Est = 0 rad ou peut déduire que
Nord = Pi/2 rad
Ouest = Pi rad
Sud = Pi + Pi/2 rad
fFacing serait bien un angle ...
Mais c'est encore une supposition :confused:
[ 16 juillet 2001: Message édité par : DaRKmore Le Druide ]
Par gui25 le 16/7/2001 à 20:34:00 (#26383)
On pourrait donc utiliser la fonction comme ceci : Vector(fX, fY); et bien sûr, on peut mettre aussi Vector(fX, fY, fZ);
Je veux bien zipper mon fichier mais je n'ai aucun site perso pour l'héberger et je ne sais pas si je vais en créer un pour cette tentative de transcrire toutes les fonctions de NWScript pour le C (afin de tester les scripts en attendant le jeu :)). Il y a beaucoup de fonctions que je ne pourrais sans doute pas réussire à transcrire car elles ont presque toutes peu ou prou de documentation.
Donc si quelqu'un veut héberger mon fichier, qu'il me prévienne.
Pour le fFacing, je pense que tu as tout bon. Je n'avais pas remarqué cette ligne (je ne l'ai peut être pas, des privilegiés ????) :p
Si quelqu'un trouve exactement ce que contient le type event car je n'ai pas trop compris. D'après moi, c'est juste un pointeur sur un événement que l'on a activé.
Par Uther Pendragon le 16/7/2001 à 20:55:00 (#26384)
Débat lancé par gaeriel:
Je cherche aussi un endroit pour y stocker le fichier modifié sur le net car il va vite faire un certaine taille. J'attend vos propositions.
C'est tout pour le moment.
Je peux aisément héberger ce fichier sur les serveurs JeuxOnline. Il suffit de me l'envoyer ( uther@www.jeuxonline.info ). :)
Par ailleurs, il me semble aussi qu'il pourrait être intéressant de le proposer en téléchargement à tous les programmeurs intéressés avec qql commentaires explicatifs (ce dont je suis incapable aux vues de mes connaissances plus que limitées en tant que programmeur ;)).
Donc, si tu veux rédiger une telle présentation, je pourrais faire une petite page dédiée dans le site. :)
Voilà. Merci pour cette initiative :)
Par gui25 le 16/7/2001 à 21:02:00 (#26385)
Bon, je vais essayer de rajouter des constantes et des fonctions le plus vite possible.
Si quelqu'un veux commenter le fichier sur les fonctions, qu'il le fasse, cela va certainement m'aider ou vous aider :)
[ 16 juillet 2001: Message édité par : gaeriel ]
Par Darkmore le druide le 16/7/2001 à 21:15:00 (#26386)
Débat lancé par gaeriel:
J'accepte votre proposition, oh grand webmaster
Tient un nouvel adepte de la secte Utherienne !!! :D :D bienvenue "camarade ;) ;) ;) oui dans notre secte on s'appelle tous comme ça maintenant ;) ;) ;)
Sinon pour la fonction Vector on semble d'accord (ça rime) mais ne vaut il mieux pas utiliser celle à 3 paramètre et fixé la dernière à 0 pour les objets "au sol" lors de l'utilisation de la fonction ... tu peux avoir besoin de positioner un objet en hauteur donc besoin du Z ... ??
Par gui25 le 16/7/2001 à 21:21:00 (#26387)
vector vVector = Vector(fX, fY);
J'ai mis cela afin de concorder avec le NWScript et non pour faire joli. On peut tout de même utiliser le fonction Vector comme ceci:
vector vVector = Vector(fX, fY, fZ);
et voila ;)
Bon, je crois que je vais bientôt envoyer un mail à uther.
Par Darkmore le druide le 16/7/2001 à 21:50:00 (#26388)
*sent qu'il commence àa devenir lourd*
Euh Xcuzzeuh ... euh ... mais moi j'ai ça dans ma RS :
A structure of three floats, useful for defining positions and orientation vectors.
:confused: :confused:
To access the components of the vector, you can use the dot operator to get the x, y and z components of the vector.
vector v = Vector(fX, fY, fZ);
Et j'ai downloader la RS ici : http://nwvault.ign.com/dm/scripting/database/NWNScript-RefSheet.zip
Peut être une différence de version ??? :confused: :confused:
Par gui25 le 16/7/2001 à 22:01:00 (#26389)
Tu verras que la fonction est utilisee sans que l'argument z soit defini.
Par Darkmore le druide le 16/7/2001 à 22:15:00 (#26390)
Bah on dirait bien que les deux sont utilisées :eek:
vector Vector(fX, fY [, fZ])
mais ce que je ne comprend pas (note mon ignorance est la seule raison :confused: ) c'est comment savoir laquelle sera utilisé donc laquelle déclarer dans le header ??
Je suis chiant là non ???
Par gui25 le 16/7/2001 à 22:25:00 (#26391)
C'est pas bien compliqué.
Au fait :mad:, je suis pas énervé :)
Par Darkmore le druide le 16/7/2001 à 22:34:00 (#26392)
Donc on ne peut pas utiliser la forme vector(fX,fY,fZ) ??!!??
PS : c'était la dernière ... ;)
[ 16 juillet 2001: Message édité par : DaRKmore Le Druide ]
Par Paoh le 16/7/2001 à 23:29:00 (#26393)
Ce que gaeriel fait, c'est juste déclarer la structure de vector en initialisant un des champs à 0.
C'est clair que le champ z est par défaut à 0, mais n'est-ce pas cette initialisation qui permet d'utiliser vector avec deux paramètres (x et y) au lieu des trois.
On peut facilement imaginer que l'objet a par défaut une altitude à 0...
Ainsi la déclaration de la page 1
vector v = Vector(fX, fY, fZ); // Construct a vector
déclare fX, fY et fZ mais ne donne de valeur qu'à fZ (0).
et celle de la page 5
vector vDest = Vector(vEnter.x, 2.5);
affecte directement vDest.x à vEnter.x, vDest.y à 2.5 et vDest.z est implicitement à 0.
* ferme la visière du casque * :D
Par gui25 le 17/7/2001 à 9:42:00 (#26394)
Dans la fonction, c'est juste la valeur par défaut mais si tu en défini une autre en appelant la fonction avec les 3 éléments, la valeur de z est changée.
Par Darkmore le druide le 17/7/2001 à 11:36:00 (#26395)
AYé compris :D :D :D :D
Pour moi c'était plus qu'une initialisation c'était imposer une constante .... quel balôt je fais :D :D
[ 17 juillet 2001: Message édité par : DaRKmore Le Druide ]
Par Uther Pendragon le 17/7/2001 à 11:39:00 (#26396)
Je vais préparer une petite page explicative, prochainement.
Voilà :)
Par Daynos le 17/7/2001 à 19:08:00 (#26397)
Sinon va falloir que je commence à m'y mettre au NWN Script / C... :D
Par Darkmore le druide le 17/7/2001 à 20:12:00 (#26398)
Débat lancé par Daynos de Nory:
Au fait le fFacing finalement c'est quoi ? L'angle vers lequel le joueur regarde ?
Plus que ça .. il semble que ce soit la direction d'un type object en générale .. donc direction du regard d'un pnj/pj, direction d'orientation d'on objet, direction dans laquelle est appliqué une textue (texture planne parrallèle au fFacing) ect ..
Sinon va falloir que je commence à m'y mettre au NWN Script / C... :D
Ben vue la difficulté de la lesson seven t'as le temps de rattraper ton retard ;) ;)
Par Myvain le 17/7/2001 à 20:50:00 (#26399)
Au fait Daynos, tu as enfin fini BG2? C'est juste pour savoir si je suis devenu le seul au monde à ne pas l'avoir encore terminé.
Pfff, qu'est ce que le temps passe vite...
Par gui25 le 17/7/2001 à 22:17:00 (#26400)
Je viens de tapper pratiquement 250 lignes pour définir une partie des constantes du RF (Reference Sheet). J'en suis arrivé jusqu'a la partie des spell (en suivant :)).
La partie spell étant la plus longue, mes doigts vont encore souffrir :(
Ce qu'il faut pas faire pour les ch'tis programmeur en NWScript :)
[ 17 juillet 2001: Message édité par : gaeriel ]
Par Paoh le 18/7/2001 à 9:12:00 (#26401)
Débat lancé par Myvain:
C'est juste pour savoir si je suis devenu le seul au monde à ne pas l'avoir encore terminé.
OUUUAAAAIS :) :) :), je suis pas le seul à ne pas avoir encore fini ce jeu !!!!
* danse la gigue *
J'en avait marre d'entendre que des "je l'ai fini 15 fois ou 54 fois avec un perso, etc..." ;)
Débat lancé par gaeriel:
* A les doigts tout enflés *
Je viens de tapper pratiquement 250 lignes pour définir une partie des constantes du RF (Reference Sheet). J'en suis arrivé jusqu'a la partie des spell (en suivant ).
La partie spell étant la plus longue, mes doigts vont encore souffrir
Ce qu'il faut pas faire pour les ch'tis programmeur en NWScript
Fait attention, gaeriel, ou tu risques de rentrer avec Uther dans le Panthéon des Divinités NWScriptesques à force de bosser comme ça !!
Sinon, je veux bien, dans la mesure de mes capacités et certitudes, aider à commenter les fonctions, mais un peu plus tard :D
J'ai pô de vraies vacances moa :( :p
Par gui25 le 18/7/2001 à 9:22:00 (#26402)
Si tu veux traduire, aucun probleme car il y a des parties que je n'arrive pas à traduire :o
Par Uther Pendragon le 18/7/2001 à 12:17:00 (#26403)
Voilà :)
Par Darkmore le druide le 18/7/2001 à 12:41:00 (#26404)
Débat lancé par gaeriel:
Oui mais comme j'ai rien d'autre à faire :)
Si tu veux traduire, aucun probleme car il y a des parties que je n'arrive pas à traduire :o
Si il te faut un coup de main (*paf*) pour la traduction je peux t'aider ......
A condition que tu ne me confies pas des trucs avec de fZ dedans :D :D ;) ;)
Par gui25 le 18/7/2001 à 14:11:00 (#26405)
Je viens de poster une nouvelle version. Plus qu'a attendre qu'uther la mette en ligne :)
Si quelqu'un a des remarques à faire ou des corrections, qu'il le dise.
Par Uther Pendragon le 18/7/2001 à 14:27:00 (#26406)
... Et upload la version 3.1...
*Regarde dubitativement la leçon 7 à traduire*
Dans 10 minutes, je me lance... peut être... ;)
[ 18 juillet 2001: Message édité par : Uther Pendragon ]
Par gui25 le 19/7/2001 à 14:24:00 (#26407)
Par Daynos le 19/7/2001 à 23:09:00 (#26408)
Débat lancé par Myvain:
Ca me rassure, il n'y a pas que moi qui suit en retard... :rolleyes:
Au fait Daynos, tu as enfin fini BG2? C'est juste pour savoir si je suis devenu le seul au monde à ne pas l'avoir encore terminé.
Pfff, qu'est ce que le temps passe vite...
Ma dernière save date d'avril 2001. D'ailleurs c'est zarb ça, j'ai l'impression qu'il me manque des saves...
Oups, j'espère que j'ai pas fait d'erreur de manip, je serais vert s'il me fallait tout recommencer à partir du début du chap 4 !!! (ceci dit je n'en était qu'à la fin du chap 4... à la fin de l'asile, je me suis fait abordé pendant mon voyage en bâteau...).
Edit : Ouf je respire, j'ai retrouvé une save du 13 mai 2001 juste avant de prendre le bateau... C'est mon avant dernière save. J'ai pas rejoué depuis. Pas le temps.
Mais tout ceci est Hors sujet sur ce forum...
[ 19 juillet 2001: Message édité par : Daynos de Nory ]
Par Daynos le 19/7/2001 à 23:21:00 (#26409)
*Uther sirote son café et regardant la pluie tomber...*
... Et upload la version 3.1...
*Regarde dubitativement la leçon 7 à traduire*
Dans 10 minutes, je me lance... peut être... ;)
[ 18 juillet 2001: Message édité par : Uther Pendragon ]
* 18h30 : Daynos rentre de stage, après avoir scripter en ActionScript une anim Flash 5 pendant 8 heures...
... regarde le glossaire et se dit qu'il faut rajouter des mots de passes User et gérer leurs autorisations...
18:55 ... regarde le glossaire et se dit qu'il faut rajouter des mots de passes User et gérer leurs autorisations...
19:00 ... regarde le glossaire et se dit qu'il faut rajouter des mots de passes User et gérer leurs autorisations...
19:05 ... tombe sur le caméleon sur M6 et décide de se changer les idées...
23:25 ... se dit que ce soir c'est un peu trop tard... verra demain s'il est plus motivé :D :rolleyes:
Par gui25 le 23/7/2001 à 14:10:00 (#26410)
Enfin, la version que j'ai corrigé car il y avait des erreurs dans celui de NWVault#include <stdio.h>
#include <NWScript.h>
void main()
{
int nCount;
object oTarget= GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if (GetIsObjectValid(oTarget))
{
if (GetDistanceToObject(oTarget) < 40.0f && GetIsDead(oTarget)==FALSE)
{
if (GetLocalInt(OBJECT_SELF, "FIREBALL") == 0)
{
ActionCastSpellAtObject(SPELL_FIREBALL, oTarget);
SetLocalInt(OBJECT_SELF, "FIREBALL", 1);
}
else if (GetLocalInt(OBJECT_SELF, "WALK") == 0 )
{
ActionMoveToLocation( GetLocalLocation(OBJECT_SELF, "ShamanStart"));
SetLocalInt(OBJECT_SELF, "WALK", 1);
}
else if (GetLocalInt(OBJECT_SELF, "MAGIC MISSILE") < 3)
{
ActionCastSpellAtObject (SPELL_MAGIC_MISSILE, oTarget);
nCount = GetLocalInt(OBJECT_SELF, "MAGIC_MISSILE");
nCount++;
SetLocalInt(OBJECT_SELF, "MAGIC_MISSILE", nCount);
}
else
{
ActionAttack(oTarget);
}
BattleCry("goblin_bc1_tmp","goblin_bc2_tmp");
}
}
}
Attendez un peu qu'uther sorte la nouvelle version :)
Par Seigneur Astarosh le 24/7/2001 à 20:41:00 (#26411)
Par Darkmore le druide le 24/7/2001 à 21:24:00 (#26412)
et surtout les tutoriaux de scripting : http://nwn.jeuxonline.info/t_tutoriaux.shtml
JOL Archives 1.0.1
@ JOL / JeuxOnLine