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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script dans un script

Par Mellinsa le 22/8/2002 à 20:31:24 (#2007036)

Pourriez-vous m'expliquer comment fonctionne les #include un_script_quelconque. Voici mon problème: Je fais passer une baterie de test à une personne et si elle les passe tous elle peux s'assir. G réussit à faire les tests mais je sais pas comment la faire s'asir par la suite.

Par Fed le 23/8/2002 à 1:03:28 (#2008704)

la commande #include sert a inclure un fichier dans un autre. Lorsque le script est executé, nwn recopie betement le fichier indiqué par le #include à la ligne ou il se trouve.


Un ch'tit exemple :

Tu as deux fichiers, appelons les script1 et script2

script1:


void MafonctionDansScript1()
{
MonCode...
}


script2:



#include "script1"

void main()
{
MaFonctionDansScript1();
}


Donc, executer le script2 reviens à exécuter :


void MafonctionDansScript1()
{
MonCode...
}

void main()
{
MaFonctionDansScript1();
}



#include est surtout utilise pour des bibliotheques de fonctions. Ce sont des fichiers qui ne contiennent pas de "main" (donc qui ne sont pas exécutable) mais seulement des definitions de fonctions.


Si tu veux un exemple concret, j'avais fait dans le temps un script de discution par mot-clef qui fonctionne sur ce principe. Tu as juste a fouiner un peu dans le post "Liste des scripts prets a servir".


En esperant avoir ete comprehensible ;)

Fed.

Par Mellinsa le 23/8/2002 à 13:10:23 (#2011689)

Je suis pas sûre d'avoir tout compris mais ce que g compris c'est qu'il va me falloir pensé à autre chose pcq je résouderer pas mon problème comme ça, vrai ou faux ?

Ben si

Par Jedaï le 23/8/2002 à 13:22:06 (#2011781)

Tu fais une fonction générique :

int Test(object oPC)
{
if (GetAge (oPC) > 15)
{
if (test 2)
{
if (test 3) return TRUE;
}
}
return FALSE;
}

tu l'appelle fonctiontest et dans ton script que tu place dans le OnUsed (je suppose) tu écris :

#include "fonctiontest"

void main()
{
object oPC = GetLastUsedBy();
if (Test(oPC) && GetSittingCreature(OBJECT_SELF) == OBJECT_INVALID)
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionSit(OBJECT_SELF));
}
}

Par Kemay le 23/8/2002 à 15:16:01 (#2012630)

Pour faire cela tu n'as pas besoin d'utiliser un include. Dans l'absolu, un include n'est utile que si tu comptes réutiliser ce qui est contenu dans l'include dans de nombreux scripts. Si ce n'est pas le cas il vaut mieux l'éviter.

En gros, dans ton cas, à moins que tu ne comptes réutiliser ta batterie de tests dans un grand nombre de scripts, il vaut mieux ne pas en faire un include:

void main()
{
object oPC = GetLastUsedBy();
int Test = FALSE;
if (GetIsPC(oPC) && test2 && test3 etc.. )
Test = TRUE;
if (Test == TRUE && GetSittingCreature(OBJECT_SELF) == OBJECT_INVALID)
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionSit(OBJECT_SELF));
}
}

A la palce de test2 et test3, tu mets tes tests, par exemple:
GetRacialType(oPC)==RACIAL_TYPE_DWARF , si tu veux vérifier le PC soit de race naine etc...

Par Mellinsa le 24/8/2002 à 0:43:42 (#2016321)

Merci beaucoup.

JOL Archives 1.0.1
@ JOL / JeuxOnLine