Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Bon, c'est du C, ou c'est pas du C ?
Bon, c'est du C, ou c'est pas du C ?
Par miriandel le 21/9/2002 à 11:13:56 (#2200611)
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)
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 plutotint i = 0;
Mais c'est franchement du bricollage :monstre:
object oClient = GetObjectByTag("cust_"+IntToString(i));
for(i = 1; GetIsObjectValid(oClient); i++)
{
AssignCommand(oClient,ActionSit(GetNearestObjectByTag("Chair")));
oClient = GetObjectByTag("cust_"+IntToString(i));
}
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)
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ï
Pourtant après tests, pas moyen, non...
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:
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)
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)
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