Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Bon, c'est du C, ou c'est pas du C ?

Par miriandel le 21/9/2002 à 11:13:56 (#2200611)

Jusqu'ici, j'ai scripté "explicite", davantage dans un esprit VB que C.
Ca a l'avantage d'être lisible, mais c'est long, trop long, et pas assez structuré à mon goût.

Et puis, en fouillant dans les sources de Bioware, je me suis rendu compte qu'ils utilisent une syntaxe bien plus proche du C que je ne l'aurais cru possible, même avec des opérateurs binaires, du bit shifting et tout.

Chouette, je me dis, on va ptet enfin pouvoir coder de manière professionnelle, ce qui va faire gagner un temps fou, et mieux structurer le code.

Alors, j'ai commencé par quelque chose de simple comme:

for (int i=0, object oClient = GetObjectByTag("cust_"+IntToString(i)); GetIsObjectValid(oClient); i++)
AssignCommand(oClient, ActionSit(GetNearestObjectByTag("Chair")));

Et pan, je me prends un mur, le compilo ne mange pas les initialisations multiples.
Donc,
for (, ; ; ) ;
et ben ça marche pas !

Je suis perplexe...
Quelqu'un a plus d'infos ?

Par Tyn' le 21/9/2002 à 11:35:11 (#2200726)

Après un très vague test, il semblerait que le compilateur l'accepte pas les définitions de varialbes en init. Il faudrait donc faire...

int i = 0;
object oClient;
for(oClient = GetObjectByTag("cust_"+IntToString(i)); GetIsObjectValid(oClient); i++)
AssignCommand(oClient,ActionSit(GetNearestObjectByTag("Chair")));


Edité: Ah, et il ne supporte pas non plus plus d'une action dans l'init.. D'aileurs, il y a une erreur non ? Puisque l'object oClient n'est initialisé qu'au départ de la boucle, il ferait boucle infinie, sa valeur n'étant pas rafraichie... Ce serait plutot
int i = 0;
object oClient = GetObjectByTag("cust_"+IntToString(i));
for(i = 1; GetIsObjectValid(oClient); i++)
{
AssignCommand(oClient,ActionSit(GetNearestObjectByTag("Chair")));
oClient = GetObjectByTag("cust_"+IntToString(i));
}
Mais c'est franchement du bricollage :monstre:

Rajout : struct est compilé aussi, mais seul le 1er élément de la structure est compris, tous les autres sont écrasés :doute: Super utile hein? :D

Par Jedaï le 21/9/2002 à 11:57:01 (#2200831)

C'est curieux ce que tu dis Tyn' : les struct sont utilisé par la librairie standard nw_i0_generic, evidemment si elles ne marche vraiment pas ça explique les réactions aberrante de l'IA mais bon... comme même :D

PS:Mais où as tu eu ton image Tyn', j'adore ! :amour:

Par Tyn' le 21/9/2002 à 11:59:42 (#2200841)

Provient du message de Jedaï
C'est curieux ce que tu dis Tyn' : les struct sont utilisé par la librairie standard nw_i0_generic, evidemment si elles ne marche vraiment pas ça explique les réactions aberrante de l'IA mais bon... comme même :D
Pourtant après tests, pas moyen, non...
PS:Mais où as tu eu ton image Tyn', j'adore ! :amour:
http://www.bdparadisio.com/index.htm ;)

Dans une BD appellée Maître du Jeu :)

Par miriandel le 21/9/2002 à 12:04:17 (#2200875)

Provient du message de Tyn'
D'aileurs, il y a une erreur non ? Puisque l'object oClient n'est initialisé qu'au départ de la boucle, il ferait boucle infinie, sa valeur n'étant pas rafraichie...


Oui, bien sûr, je suis pas allé jusque là puisque le compilo me crache à la figure dès la déclaration des variables.

C'est quand même nain (avec tout le respect du à ces petites pestes), on va devoir se cantonner à un scripting neuneu, je suis très déçu !

Par miriandel le 21/9/2002 à 12:13:00 (#2200923)

Au sujet des struct, je comptais les utiliser, mais comme on n'a pas de fonction pour transformer une struct en objet pour la stocker sur quoi que ce soit, j'ai abandonné l'idée depuis belle lurette.

C'est bien dommage...

Je voyais bien une struct avec un tableau de pointeurs vers les objets contenus dedans, ce qui aurait résolu d'un coup toute la problématique de l'ameublement d'une maison dans un monde persistant.

Y a pas, ce qui manque dans NWN, c'est un moyen de dumper toute une zone mémoire pour la reprendre gentiment après l'update d'un module, mais c'est un autre débat...

Par Tyn' le 21/9/2002 à 19:55:33 (#2203342)

Arf je me suis trompé, mea culpa !

C'est uniquement au niveau des strings dans la structure, quand on stock deux, le premier écrase le deuxième...

JOL Archives 1.0.1
@ JOL / JeuxOnLine