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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Je suis une quiche...

Par Kaktus le 2/7/2002 à 19:57:47 (#1746484)

Bonjour
Je suis très intéresse par ce jeu car je suis un passionné de jeux de rôles papiers… Dans NWN le plus intéressant c’est l’éditeur, mais les scripts me posent un gros problèmes… pour dire vrais je n’y comprends rien :monstre: . J’ai toujours tout appris sur le tas et en général tout seul, mais la j’ai besoins d’un coup de pouce. Alors je vous demande de l’aide svp :aide: . Je voudrais une explication (détaillé) pour un truc très simple : faire ouvrir une porte grâce a un levier ?
Ceci devrais me donner une toute petite base pour continuer tout seule, alors me laissez pas tomber les gars…
Merci d’avance
:merci:

en effet ....

Par Tyriael le 2/7/2002 à 21:03:11 (#1746866)

Comme j'en ai discuté avec certains d'entre vous , nous sommes nombreux a vouloir s'essayer aux scripts afin de faire un module qui nous ressemble et qui nous plaise . Il est vrai que beaucoup de scritps sont disponibles et que souvent une simple demande sur le forum et une persone bien aimable nous pond le script tout chaud tout beau mais reconnaissez que ca n'a pas la même saveur ...
J'ai put en apprendre quelques bases grace à l'aide de Zeduckmaster mais il me gène à chaque fois de le déranger pour une question qui pour lui est vraiment simple :p .. Malgrés ces réponses toujours aimables et claires je ne vais pas sans cesse l'envahir de mes questions :ange:
C'est pourquoi je me permet de demander aux plus zélés d'entre vous , ceux qui ont du temps et les connaissances (si ce n'est la patience) de voir si il serait possible de faire une sorte de tutorial ou petit cours spécifiquement adapté aux scripts de nwn (et donc au jeux) afin que nous tous puisssions en comprendre le fonctionnemment , les bases et le dévelloppemment . En commencant par des scripts simples ,puis modérés et enfin complexes ...
Il seras toujours plus intéréssant pour nous de demander une correction ou aide sur un scripts que l'ont propose que de deamnder un script tout fait tombé de vos neurones en ébullition :lit:
Et je profite de ce post pour signaler à ceux qui ont mit à disposition des scripts sur leur sites (quel bonne idée que voila :cool: ) qu'il serait également intérressant de mettre pour chaque script différents exemples d'utilisation dudit script..Je pense qu'il y a pour un script donné plusieurs utilisations possible ..
un exemple tout simple :
le script qui fait "chanter" (jouer de la musique) un objet
-harpe magique qui joue de la musique seul (ou tout autre instrument , parfait pour animer la taverne )
-statue qui raconte des histoire(variantes du script , parfait pour une bibliotheque ou un besoin d'un conteur ou meme encore toujours cette bonne vieille taverne )
-et pourquoi pas dans une ville entieremment basé sur la magie des panneaux indicateur qui indique le chemin en parlant et autres evenements amusants qui , bien que sans interet majeur , colore une vile plus que beaucoup de chose
-porte d'echoppe d'un marchand qui joue de la musique quand un client entre (le must du snobisme pour tout bon marchand:D )
-épee qui joue de la musique quand on la sort du fourreau (pourquoi pas suivis d'un effet magique cf roman des RO)
et bien d'autres utilisation encore (les idées ne manquent pas)
...
Voila merci d'avance pour ce qui seras fait et merci pour tout ce qui a été fait afin que nous pauvres ignares du scripts puissions tout de même faire de notre monde un monde vivant :merci: :merci:

Par Cara le 2/7/2002 à 22:09:52 (#1747190)

pour un peu degrossir tt ça , commence par ça :

http://nwn.bioware.com/builders/pdf/AuroraToolsetTutorial.pdf

Par W Lock-Strike le 2/7/2002 à 23:08:22 (#1747482)

Si j'ai le temps je ferai un tutorial "le NWscript pour les quiches" :ange:
Etant moi même une quiche dans le domaine, et ayant une profonde aversion pour le mot p.r.o.g.r.a.m.a.c.i.o.n. (quoi c'est pas comme ça que ça s'écrit ? je vous avais dit que j'étais une quiche)
Mais le problème, c'est que pour l'instant je joue à NWN, et j'esaie de comprendre moi-même comment faire des scripts :D
En fait j'en ai déja réussi des simples, il faut commencer modeste...Je me suis fait aider par des gens expérimentés pour les bases, et maintenant je commence à pouvoir apprendre par moi-même , doucement...

L'avantage de l'éditeur de script d'aurora c'est qu'il permet d'apprendre la programmation à l'envers : On peut faire tous les trucs simples, et essayer de comprendre seulement ensuite ^_^

Un petit exemple rapide , ce par quoi j'ai commencé :

- Objectif du script : ce script sert à faire ouvrir une porte à un PNJ. Pour expliquer le but : c'est un script que j'ai associé au PNJ faisant office de portier dans le Guild Hall des Lames du Destin : pour l'instant, avant de compliquer les choses, on veut juste que ce PNJ, si on lui dit d'ouvrir la porte, le fasse. On va donc mettre une réplique dans la conversation, qui fera que le portier ouvrira la porte à ce moment là. En gros ça donne ça :
le PJ : "bonjour, je suis une lame du destin"
le PNJ : "je vous ouvre" (et sur cette réplique, en même temps qu'il la dit, il va ouvrir la porte).

- Quand vous ouvrez l'éditeur de script, vous avez ça :

void main ()
{
}

Aucune importance ! ça doit toujours rester là, dans n'importe quel script. C'est tout ce que nous les n00bs avons besoin de savoir ;)

- Autre chose : dans un script , on s'en fout completement des espaces et des sauts de lignes. Et toutes les "phrases" doivent se finir par un point-virgule ";" (ce qui prouve bien que les programmeurs sont des barbares bordelliques piétinant les règles élémentaires de l'art d'écrire, mais passons...)

- Bon, on fait quoi maintenant ? Si j'écris
void main ()
{
Ouvre la porte , couillon !
}

Il ne se passe rien :rolleyes: L'est bête ce pc.
Recherche par mot clef dans "filter" avec le mot "open" (ah oui euh...je fais un tuto de prog, pas d'anglais :p) : miracle, il y a une fonction "ActionOpenDoor". ça semble être ce qui me convient.
quand je la selectionne dans le menu, il me met dans le "help" :

// Cause the action subject to open oDoor
void ActionOpenDoor(object oDoor)

C'est bien ce qu'il me faut, a priori.

- Je copie/colle bêtement ce qu'il m'a affiché dans la fenetre du bas. ActionOpenDoor(object oDoor). Je me doute que ça ne va pas lui suffir pour comprendre quelle porte ouvrir...mais si on remplace "oDoor" par "Portehall" (Portehall étant le nom de ma porte, celle qu'il faut ouvrir) , pas mieux. Je me fais aider, blabla : la machine est vraiment stupide. Avant de lui dire d'ouvrir la porte, il ne suffit pas de lui dire quelle porte ouvrir, mais de lui dire déja qu'il y a une porte ...

- une porte = un objet. (d'ailleurs, tous les trucs les plus utilisés sont des objets : creatures, items, etc.). pour lui dire que quelque chose est un objet, ça marche comme ça :
object oNomDeLObjet ;
(je finis ma phrase par un point virgule)
Là on va appeller la porte , pour le script , "Porte" . comme c'est un objet, on met un "o" devant (mais ce n'est qu'une convention, ce n'est pas ça qui empechera le script de marcher)
Ce qui donne :
object oPorte ;


Vous remarquerez que ma porte s'appelle "Portehall" dans l'éditeur, mais que là je l'appelle "Porte" : c'est pour ne pas s'enmêler les pinceaux, contrairement à ce qu'on pourrait croire. Le nom de l'objet appelé "Porte" dans le script ne correspond pas (encore) à la porte dans le jeu.

- c'est donc ce qu'on va lui dire ensuite. Lui dire que "oPorte" c'est une porte qui existe déja dans mon éditeur : elle s'appelle "Portehall".
Donc en gros il faut lui dire : oPorte = l'objet auquel j'ai donné le tag "Portehall" . suffit de lui parler ;)
En langage barbare, ça se dit comme ça :
oDoor=GetObjectByTag("Portehall") ;


La fonction "GetObjectByTag", il a fallu qu'on me la souffle, parce que je l'aurais pas trouvé tout seul avec les mots clefs...Mais elle sert absolument tout le temps, c'est la seule qu'il y ait vraiment à retenir pour faire des scripts simples !

Par W Lock-Strike le 2/7/2002 à 23:09:09 (#1747487)

- voila où en est mon script pour le moment :


void main()
{
object oPorte ;
oPorte=GetNearestObjectByTag("Portehall") ;

}


Maintenant on lui ajoute l'action qu'on avait trouvé au début, qui semble correspondre à nos attentes :

ActionOpenDoor( object oDoor);

Le truc, là, c'est qu'on lui a déja dit que oDoor (oPorte pour nous) est un objet. Il faut lui dire avant pour faire simple, donc on a plus besoin de lui redire (et il faut pas lui dire 2 fois d'ailleurs ). Notre fonction sera donc, pour nous :

ActionOpenDoor (oPorte) ;


- Vous sauvegardez votre script (en lui donnant un nom parlant pour le retrouver, genre "ouvreporte" ). Mais là si vous testez votre module, vous pouvez remarquer qu'il y a encore un problème : soit le portier bouge pas, soit il hésite et puis finalement...non !
C'est parce que ce couillon ne sait pas si la porte est fermée ou bien ouverte , et qu'il refuse de se déplacer pour rien :D
Il faut donc que dans le script on lui dise "si la porte est fermée, tu l'ouvres" . Si elle est ouverte, il ne fera rien. Si elle est fermée, il l'ouvrira.
Pour faire ça, on utilise "if" et on met des parenthèses :
if (la question : la porte est ouverte ? obtient une réponse négative, alors...)
ActionOpenDoor (oPorte) ;

Je fais une recherche sur le mot "closed" pour lui demander "si la porte est fermée, ouvre là" : rien d'intéressant pour moi apparemment. Donc je refais ma premiere recherche sur "open" :
ah oui, tiens, j'obtiens :
// * Returns TRUE if oObject (which is a placeable or a door) is currently open.
int GetIsOpen(object oObject)


(au fait, les trucs précédés de // vous pouvez les mettre dans vos scripts : ce sont des commentaires non pris en compte)

Le truc "int" sert juste à définir le type de la fonction, on le garde pas (d'ailleurs on ne garde pas les mots clefs, les mots en bleu, qui sont dans l'aide)

- je suis le truc comme c écrit , ça me donne ça :

if (GetIsOpen(oPorte))

Il faut alors ajouter que justement on ne veut pas qu'elle soit ouverte. On lui parle toujours comme à un barbare : "si porte ouverte non alors action ouvre porte" : pour lui dire le "non" (sous entendu, "non pas ouverte") ça s'écrit comme ça : "==0".
Pour dire oui : "==1"
(encore une chose qu'il faut se faire dire, mais c la derniere :p)

- Mon script est fini :)


void main()
{
object oPorte ;
oPorte=GetNearestObjectByTag("Portehall") ;
if (GetIsOpen(oPorte)==0)
ActionOpenDoor(oPorte);
}


Note importante : il n'y a pas de ";" apres la fonction "if" : c'est bien naturel, puisque c'est la même phrase (on saute juste une ligne pour que ce soit plus clair)


- maintenant , pour utiliser ce script, il faut aller dans la conversation (éditeur de conversation), sélectionner la réplique "je vous ouvre" citée plus haut, et sélectionner l'onglet "action taken" puis y mettre le script. (l'onglet "text appears when" ne convient pas, évidemment , ça ferait que la réplique apparait quand le portier ouvre la porte, alors qu'on veut l'inverse)


- remarque : un truc bien pratique, on n'a pas besoin de dire au portier "va à la porte" avant de lui dire d'ouvrir : il le fait tout seul si il a un passage libre pour y accéder...comme quoi la machine n'est pas trop conne non plus.

Voila, j'espere que c'est suffisamment clair (c'est du 100% pur n00b !). En tout cas vous pourrez pas me reprocher que ce soit compliqué, parce que moi au moins je n'utilise pas des noms barbares comme "variables", "déclaration", "retourner une chépakoi", "compiler" etc. :D
(d'ailleurs j'ai rien compris au fait de "devoir faire une "déclaration" "variable" en "fonction" de ma "compilation" de tubes des années 80 préférée" :monstre: Si on peut plus écouter la musique qu'on veut de nos jours :D)


Ensuite, si ça vous intéresse, je peux continuer l'exemple , en expliquant les ajouts que j'ai fait plus tard :
- le portier se rasseoit sur sa chaise apres avoir ouvert la porte
- la porte se referme toute seule (et se vérouille si on veut)
- un levier permet de réouvrir la porte de l'autre côté pour ressortir (bé oui on a qu'un portier aux LDD :p)

Autre script : un levier qui fait apparaitre un portail, et le passage de ce portail téléporte dans une autre zone.

Maintenant je vais faire en sorte que le portier n'ouvre pas la porte quand on lui dit, mais seulement si le joueur a un certain objet dans son inventaire (l'objet de guilde des LDD, pour qu'il n'ouvre q'aux membres de la guilde) Beaucoup ici pourraient me dire comment faire en quelques secondes, mais maintenant que j'ai les bases je préfère apprendre la suite tout seul :lit:

parfait!!!

Par Tyriael le 2/7/2002 à 23:22:56 (#1747583)

He bien franchement voila une explication qui a le mérite d'etre aussi claire qu'amusante ou "apprend l'informatique pour noob en t'amusant":D
Merci de ce texte et de ces explication , n'hesite pas a nous en redonner , ce'etait tres clair , facile a comprendre et agréables a lire .
Je vais de ce pas faire un copier/coller afin d'avoir cet explication sous la main .
Merci et je t'incite a continuer , c'etait tres interressant amusant et constructif :lit:
*attend le prochain cours avec impatience*

ps: ca meriterait d'etre sur le site dans la section cité plus haut
"apprend l'informatique pour noob en t'amusant" :merci: :)

Par Myvain le 2/7/2002 à 23:29:24 (#1747632)

Très clair comme explication. :merci:

En gros, on declare la variable oPorte à laquelle on assigne une valeur à l'aide de la fonction GetNearestObjectByTag() à qui on aura donné comme paramètre le tag de cette même porte. Un petit test conditionnel qui vérifie si la porte est ouverte ou non grâce à la fonction GetIsOpen() et à la variable déclarée précédemment évite que le portier qui est un peu feignant sur les bord, ne se déplace pour rien pour ouvrir cette fameuse porte. On utilisera alors la fonction ActionOpenDoor(), balablablablabla...

Tiens on me fait signe pour m'indiquer que mon langage barbare n'est pas le bienvenu ici :D

Bon ben un simple merci alors, à quand la suite? :)

Par leokhorn le 3/7/2002 à 0:30:10 (#1748007)

Génial, clair et précis. Et drôle en plus :). Même moi qui ne suis pas un débutant en programmation je préfère lire ça qu'un bouquin bourré de termes compliqués et qui nous font croire qu'on est plus bête que la machine.... mais enfin c'est quoi cette idée? :rolleyes:

Par Nikkau le 3/7/2002 à 0:35:14 (#1748038)

Euh moi dans mes bouquins y a marqué que l'ordi il est trés bete, c'est plutôt l'auteur qui veut montrer qu'il connait des mots compliqués

Par Elminf le 3/7/2002 à 1:20:16 (#1748244)

Euh WLS : :merci: :merci: simplement .......

Par W Lock-Strike le 3/7/2002 à 1:50:09 (#1748344)

Bon, puisque ça a l'air de plaire et de servir, je vais continuer demain ;)

En attendant juste 2 remarques :

1- il y a beaucoup de scripts tout faits (cf. le topic en persistant sur ce forum) . Une fois qu'on a compris ce que j'ai expliqué plus haut, il devient possible de les comprendre pour la plupart : certes on ne serait pas forcément capable de les faire soi-même pour l'instant, mais on peut déja les "lire".
Par conséquent, il devient possible de les adapter, et de gagner beaucoup de temps. :)
Adapter un script sans en comprendre la moitié, c'est plutôt difficile. Mais vous pouvez déja, sans explication supplémentaire, essayer d'adapter le premier script posté : ouvrir une porte grâce à un levier. Du coup comme je suis lancé je prends le temps de m'expliquer ;)
Le script est court, mais voici celui d'origine :



void main()
{
object oDoor ;
int nDoorLocked;
int nDoorOpen; //Is the door opened already?
string sDoorTag; //testing variable
oDoor=GetNearestObjectByTag ("LEVER_DOOR",OBJECT_SELF,1);
if ( GetIsObjectValid (oDoor) == TRUE )
{
sDoorTag = GetTag (oDoor);
nDoorLocked = GetLocked (oDoor);
nDoorOpen = GetIsOpen (oDoor);
//This part simply switches the graphics on the lever from activate to
//deactivate or vice versa.
if ( GetLocalInt ( OBJECT_SELF, "m_bActivated" )==TRUE)
{
SetLocalInt (OBJECT_SELF,"m_bActivated",FALSE);
ActionPlayAnimation ( ANIMATION_PLACEABLE_ACTIVATE);
}
else if ( GetLocalInt (OBJECT_SELF,"m_bActivated") ==FALSE)
{
SetLocalInt (OBJECT_SELF,"m_bActivated",TRUE);
ActionPlayAnimation (ANIMATION_PLACEABLE_DEACTIVATE);
}
/* this part checks if the door is locked and close if it is it unlocks and opens.
If it is open and unlocked then it closes and locks it.
The door should have the tag LEVER_DOOR and its initial state should be
locked and closed.*/
if ( nDoorLocked && nDoorOpen==FALSE)
{
SetLocked ( oDoor,FALSE );
ActionOpenDoor ( oDoor );
}
else if ( nDoorOpen && nDoorLocked==FALSE)
{
ActionCloseDoor (oDoor);
SetLocked (oDoor,TRUE);
}
else if ( nDoorOpen==FALSE && nDoorLocked==FALSE)
{
ActionOpenDoor (oDoor);
}
}
}



Vous pouvez en enlever une grosse partie si vous décidez que le levier ne servira QUE à OUVRIR la porte et non à la fermer.
Pourquoi ? Parce que non seulement vous enlevez la moitié de l'ordre ("ferme la porte si elle est ouverte") mais aussi parce que vous enlevez la moitié des conditions ! ("si la porte est fermée" devient inutile, puisque vous voulez justement la fermer)

Donc voici le script donné par Elmo dans le topic persistant de ce forum ( http://forums.jeuxonline.info/showthread.php?s=&threadid=89266 ) :


void main()
{
object oLaPorte;

oLaPorte = GetNearestObjectByTag("TagDeLaPorte");
DoDoorAction (oLaPorte, DOOR_ACTION_UNLOCK);
DoDoorAction (oLaPorte, DOOR_ACTION_OPEN);
}


Voila, suivant nos besoins, on peut supprimer une grande partie d'un script, et ainsi l'adapter beaucoup plus facilement ! (on n'a pas toujours besoin de pouvoir fermer la porte avec le levier, comme je l'expliquerai demain ;))

Par W Lock-Strike le 3/7/2002 à 1:50:52 (#1748345)

2- La deuxième remarque porte sur le même exemple : si vous avez réussi à comprendre (grossierement, pas besoin de vous casser la tête :p) le premier script, il utilise une fonction

SetLocked ()

(mettre la porte en position vérouillée)

Mais ne peut pas utiliser de fonction "SetUnlocked" (mettre la porte en dévérouillée) puisqu'elle n'existe pas , donc il doit utiliser SetLocked et ajouter "FALSE" (au fait, ==FALSE équivaut à ==0, ça fait pareil, du moins à ce que je crois ;))

Alors que dans le script simple, est utilisée une fonction bien plus générale "DoDoorAction" (agir sur une porte, en gros) et c'est dans les paramètres de cette fonction (entre paranthèses) qu'on va préciser quelle action on veut faire sur la porte, justement .
(Ici : DOOR_ACTION_UNLOCK )

Bref, là où je veux en venir, c'est qu'il y a souvent plusieurs moyens de produire le même résultat, avec des moyens plus simples que d'autres.

Par exemple, si vous voulez que , une fois ouverte, votre porte ne reste pas ouverte, justement (c'était mon problème pour le QG des Lames du Destin : le portier n'ouvre la porte qu'aux LDD, mais si elle reste ouverte ensuite, n'importe qui peut rentrer), vous avez de multiples solutions :
- ajouter au script du portier "une fois que tu as ouvert la porte, referme là" . Mais là le problème est évident : le joueur n'aura pas le temps de rentrer ;)
- ajouter au script du portier "une fois que tu as ouvert la porte, attends 10 secondes, referme la, relock la" C'est faisable, mais bien plus compliqué.
- ajouter un autre script, mais cette fois sur la porte elle-même : "quand on t'ouvre, attends 10 secondes et referme toi"
ça me semblait bon...il y a une fonction ActionWait (x seconds), donc ça parait simple, mais inexplicablement ça plantait (ça arrive :p)
- donc il a fallu trouver encore une autre solution, qui s'est présentée avec la fonction "DelayCommand". Au lieu de dire d'abord "Attends 10 secondes" puis "ferme toi", on lui dit "ferme toi dans 10 secondes" . ça n'a l'air de rien, mais c'est plus simple et ça marche bien mieux...


Bref, il y a toujours plusieurs fonctions pour une même action : ne vous arrêtez pas de chercher dans les mots clefs parce qu'une fonction semble correspondre à ce que vous cherchez. Un autre exemple rapide : je voulais refermer ma porte, j'ai cherché "close" comme mot clef et j'ai trouvé "ActionCloseDoor" : parfait, ça marchait.
Je voulais ensuite que ma porte soit verrouillée. Je cherche "lock" et je vois "ActionLockObject" . Je me dis "parfait, c'est la même chose que pour close, je la prends. Eh bien le jeu plantait irrémédiablement quand la porte devait se verrouiller. Parce que la fonction "ActionLockObject" faisait interférence en quelque sorte avec celle de fermer . Et surtout, je pense que ActionLockObject ne peut se rapporter qu'à des créatures, pour les forcer à utiliser leur compétence "lock". Impossible pour une porte d'utiliser cette compétence ou de posséder une clef dans son inventaire, donc boum, ça plante. Ce n'est qu'en cherchant dans le script pour fermer une porte avec un levier (version longue) que j'ai trouvé l'action que je n'avais pas remarqué dans les mots clefs : SetLocked ("placer en position verrouillée" litérralement : c'est tout à fait différent de "verrouiller", si vous saisissez la nuance ;))


Voila, j'ai fait le tour des remarques qui me semblaient utiles pour s'en sortir seul et être un minimum autonome ;) Demain je donnerai le résultat finale pour que la porte se referme automatiquement (comme ça vous pouvez essayer de le faire d'ici là sans voir tout de suite la solution , même si je vous ai donné toutes les fonctions à utiliser ;)) et j'expliquerai comment faire un téléporteur invisible qui devient visible quand on appuie sur un bouton invisible :D Justement pour expliquer les différentes solutions pour faire un truc un peu tordu :)

PS : c lourd la limitation du vbcode et des smileys par message, toujours obligé de poster mes pavés en 2 fois :p

Bravo et merci !

Par Neko Kage le 3/7/2002 à 9:57:15 (#1749221)

C'est vraiment très bien fait, pédagogique et instructif (et dans mon cas, extrêmement utile !!!).

Vivement la suite ! ;)

Neko :merci:

Par Kaktus le 3/7/2002 à 12:23:40 (#1749940)

:merci: :merci: :merci:
Merci beacoup a vous !!!!
A toi Tyriael de m’avoir appuyé
Et toi W Lock-Strike pour tout !! Mais ne dit pas que tu es une quiche, si non je suis quoi moi ? :) Tu es mon hero !!! :amour: lol
J ai hâte de rentrer du boulot pour essayer tout ca… :lit:
J’attend avec impatience la rubrique "le NWscript pour les quiches", je serais le premier a y aller en tant que mega quiche
:D
Merci encore!!!!
Kaktus, la plus grande quiche du monde :bouffon:

La S.D.D.Q

Par Tyriael le 3/7/2002 à 17:15:32 (#1751698)

Bonjour je vient de la part de la S.D.D.Q , Societe de Défense Des Quiches ,
Je vous prierait de cesser toutes vos allusions désobligantes à propos des quiches . En tant que cuistot je les cotoie souvent et elle ne sont pas si bete que vous le pretender .. Vos remarques friesent la dénégation et l'impertinence . Ceci commence a bien faire , nos quiches blondes finissent deja toutes chez le psy , pour soigner leur maladie psyquiche , heuu psychique pardon ....
Donc pour la premiere et dernier fois veuillez avoir un peu plus de respect pour nos amis les quiches !!

C'était un communiqué de la S.D.D.Q
"toutes les quiches sont nos amies , il faut les aimer aussi ..lalalala "



:bouffon: :bouffon:

Par ZeDuckMaster le 3/7/2002 à 19:17:57 (#1752311)

je n'aurais qu'une chose a dire : ........ LOL .......!!!!

je peut faire parti de la S.D.D.Q ???? dis ? dis ? dis ?
moa j'aimes bien les quiches, surtout quand ya plein de lardons et de fromage dedans :D !!!

Par Tyriael le 3/7/2002 à 19:41:04 (#1752458)

Bien sur la S.DD.Q est ouverte a tous quicheur !!
qui n'a pas révé de croiser une belle aquicheuse ...heuu aguicheuse ...défandons ensemble la quiche dans le sous bois ...ou etait ce la biche ?? enfin bref ...
Battons nous contre tous ces gens qui s'en quiche !!!!!
...heu fiche ...déformation professionnel pardonnez moi ...

Par W Lock-Strike le 4/7/2002 à 22:37:54 (#1758873)

Bon, désolé pour le tutorial que j'avais promis de continuer, mais j'ai de sérieux problèmes de connexion en ce moment ( :enerve: ) Je poste ce message connecté à 19 kbp/s sur un Duron 500 :rolleyes:


Des que mes problèmes seront réglés, je penserai à faire remonter ce topic pour mettre la fin du tutorial "comment bien dans le NWscript débuter quand on une quiche on est"
:D

ça peut malheureusement durer longtemps :(

Par Gargantuel le 4/7/2002 à 22:58:26 (#1758969)

les quiches patienteront bien sagement dans le four en espérant ne pas trop cramer :D

Par Kaktus le 5/7/2002 à 9:30:19 (#1760962)

Faut la mettre au congelo, après tu préchauffe ton four thermostat 10 pendant 10min. Tu la met au four pandant 15 min thermostat 8. Et voilà, ta quiche ne crame pas… et au fait, c’ con une quiche (pardon à la la S.D.D.Q) mais c’est trop bon !!! ;)

Ca y est je commence à comprendre un peu le script !!! J’ai réussi à faire qques truc mais y en a d’autres que je n’y arrive pas. Je suis en manque de nouveau tutorial… j’en veux, j’en veux. :hardos:

Si non, en attendent, je vais faire un tour dans ma cuisine, je dois avoir une quiche qui traîne dans le congelo… :D

Kaktus, Quiche lover

JOL Archives 1.0.1
@ JOL / JeuxOnLine