JeuxOnLineForumsPlusConnectés : 753 (sites) | 1457 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [question] Histoire d'INCLUDES (ou... comment distinguer les Scripts de Bioware ?) RSS
   
Répondre
Partager Outils Rechercher
Avatar de coolstar
coolstar
Alpha & Oméga
 
Avatar de coolstar
 
Question

[question] Histoire d'INCLUDES (ou... comment distinguer les Scripts de Bioware ?)

Hi!


Voilà pour moi un nouveau sujet épineux... en gros, maintenant que je saisis mieux certaines choses, je me suis retrouvé de fait confronté au mystérieux prob des INCLUDES...

Quel en est le principe exacte ?


Bon, ok, j'ai cru comprendre que cela permettait de faire appel par exemple à une Bibliothèque (comme celle de Jedaï) ou d'Inclure d'autres Scripts (des Pré-Scripts en quelque sorte?)... mais encore ?? ça tourne comment en optimisation ???


Mais, le cas échéant, avec la flopée hallucinante de Scripts disponibles (ne serait-ce que ceux composés par les gars de Bioware), c plus que difficile de s'y retrouver honnêtement... surtout vu la longueur vertigineuse de certains... donc, ma question finale se résume à :

A t-on pensé à constituer un récapitulatif du contenu et de l'utilité (fonctions) des-dits Scripts ???

...


Merci pour vos réponses les gars!!
Lien direct vers le message - Vieux
Avatar de ¤ TynriL ¤
¤ TynriL ¤
Bagnard
 
Avatar de ¤ TynriL ¤
 
Les fichiers dit "includes" (pour Inclusion, hé, l'aut' !) sont des bibliothèques de fonctions. On y trouve ni fonction main(), ni fonction StartingConditional(), mais uniquement des fonctions personnelles.

Les includes ne peuvent pas êtres compilés indépendamment d'un autre script, il suffit donc de les sauvegarder. Ils peuvent avoir plusieurs fonctions.

Il y a un truc chiant dans les scripts de Bioware, c'est les noms de fonctions de 12km. Par exemple :
Code PHP:
GetNearestObjectByTag(string sTagint nCount); 
C'est joli, mais quand on l'utilise 28x par script, c'est un peu chiant a réécrire. Alors on peut définir un alias, c'est à dire une copie exacte de la fonction, avec un nom plus court :
Code PHP:
object GNOT(string sTagint nCount) {
    return 
GetNearestObjectByTag(sTagnCount);

Déjà 'achement moins long !

Les alias peuvent aussi servir pour des fonctions "nouvelles mais pas vraiment". En gros, simplifier une fonction en fonction (haha) de l'usage qu'on en fait. Exemple : Spawner un PNJ. Ca revient à faire un appel sur CreateObject(OBJECT_TYPE_CREATURE, gnagna, etc). C'est long, et c'est pas utile. On déclare un alias !
Code PHP:
void SpawnNPC(string sTemplatefloat fX 0.0float fY 0.0float fZ 0.0float fFacing 0.0int bFade FALSE) {
    
CreateObject(OBJECT_TYPE_CREATURE,sTemplate,Location(GetArea(OBJECT_SELF), Vector(fX,fY,fZ), fFacing),bFade);

Et hop, pour faire apparaitre un PNJ en X=8, Y=5, on a plus qu'a faire
Code PHP:
SpawnNPC("MonPNJ",8.0f,5.0f); 
Super simple !

On peut également définir des fonctions qui n'existent pas, mais qu'on utilise souvent. Par exemple :
Code PHP:
int CountItemsOnObject(object oContainerstring sItemTag) {
    
int nReturn 0;
    if(
GetIsObjectValid(oContainer) && sItemTag != "") {
        
object oScan GetFirstItemInInventory(oContainer);
        while(
GetIsObjectValid(oScan)) {
            if(
GetTag(oScan) == sItemTagnReturn += GetNumStackedItems(oScan);
        }
    }
    return 
nReturn;

C'est utile !

Tout ça c'est très bien, me direz-vous, mais pourquoi pas bêtement coller la fonction au début de tous mes scripts ? C'est simple. Pour organiser, centraliser, optimiser ! Imaginez que vous faites une série de 125 scripts pour une quête de 20h de jeu. Dans tous ses scripts, vous mettez vos fonctions. Viens le moment de l'essai, et Ô torpeur, il y a un bug dans une de vos fonctions !! Vous voilà bon pour quelques heures de copier/coller en plus de la correction du bug. Si vous aviez centralisé vos fonctions dans un include, il suffisait de le modifier, de recompiler le module, et le tour était joué...

Une petite astuce en prime : Comment faire apparaitre sa fonction dans la liste, à droite ? Il faut la déclarer avant. En gros, il suffit de copier la première liste de la fonction, et d'y changer l'accolade ouvrante par un point-virgule. Les déclarations de fonctions se font généralement tout au début du script. Vous pouvez également ajouter un commentaire qui apparaitra dans l'aide en bas de l'éditeur de script, il suffit de le mettre au dessus de votre déclaration de fonction. Exemple :
Code PHP:
// Tynclude : Nombre d'objets d'un certain tag
// oContainer -> Contenant dans lequel chercher
// sTag       -> Tag de l'objet a compter
int CountItemsOnObject(object oContainerstring sItemTag); 
Et maintenant, j'ai mon fichier include, comment je l'utilise ? Simplement ajouter une ligne tout au début de votre script, avant toutes les fonctions :
Code PHP:
#include "LeNomDeMonScript" 
Ce dont il faut se gaffer :
- Les includes recursifs
J'inclut un include dans mon include, et dans l'include que j'inclus, j'inclus mon include. Moyen d'éviter : ne pas mettre d'include dans un include.
- La recompilation
Je change mon include, mais ça ne corrige pas mon bug. Moyen d'éviter : Recompiler le module (Créer > Module) à chaque modification d'un include.
Enjoy!
Lien direct vers le message - Vieux
Avatar de coolstar
coolstar
Alpha & Oméga
 
Avatar de coolstar
 
Yep!
Lien direct vers le message - Vieux
Avatar de Mastokk
JOL Mastokk
Alpha & Oméga
 
Avatar de Mastokk
 
sticky ?
__________________
Journaleux psycho-rigide.
Lien direct vers le message - Vieux
yoko
Reine
 
Yoko
oui sa serai bien d'avoir une liste des nom dess cript dans biowaire avec se qu'il font et ou faut t'il les placer sa serais franchement chouette pour ceux qui s'y connaise pas

est se que quel qu'un l'a deja fait

a + yoko
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
vi
recherche dans les persistant de sujet de référence, un outil nommé "Lexicon"
doit y en avoir un en francais
ca dit ce que font toute les fonction de base, et p-e même certaine des include utilisés par Bioware
télécharge le, l'est très util
Lien direct vers le message - Vieux
Avatar de KzimiR666
KzimiR666
Dauphin
 
Avatar de KzimiR666
 
C'est clair que sans le Lexicon... hehe, je vois même pas comment on pourrais faire sans ça !!!
Un bon scripteur est un scripteur avec le Lexicon dans un dossier avec un raccourcis rapide vers celui-ci !
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Citation:
Un bon scripteur est un scripteur avec le Lexicon dans un dossier avec un raccourcis rapide vers celui-ci !
erf.... j'dois pas être un bon scripteur alors, j'ai jamais ouvert ce truc de ma vie
Lien direct vers le message - Vieux
Compte #39350
Invité
 
Sinon tu peux le télécharger le lexicon :
http://nwvault.ign.com/Files/other/d...99441708.shtml
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
houla, revival from outer space topic...


vous croyez que Turn Undead fonctionne sur les topic-revival ?
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [question] Histoire d'INCLUDES (ou... comment distinguer les Scripts de Bioware ?)
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 12h35.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite