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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Explication[SCRIPT]Barmaid

Par Stritis le 31/10/2002 à 18:40:57 (#2451179)

Voila je viens de voir le script de barmaid mais il dise de :

"Vous modifiez le script OnSpanw pour déclencher le HeartBeat (1001) et Conversation(1004)"

J'aimerai juste savoir comment faire?

Bon j'edit car j'ai oublie de demander ça , j'ai utilisece script de taverne animé j'ai rajouté plein de phrases ... mais bon mon probleme c'est que tout le monde crie et en meme temps et sa ressemble a rien donc j'aimerai rajouter une ligne de script pour que cela se declenche quand les serveuses sont a moins d'1 metres et qu'il ny'est qu'une phrase a la fois qui se declenche par serveuses
C'est a dire maximum 3 phrase a la fois si il y a 3 serveuses bon merci de votre aide

Par Stritis le 1/11/2002 à 11:42:19 (#2454772)

Bon je remonte ce post et je pose une autre question vu que l'on ne pas encore repondu dans l'autre forum ou j'ai poste

Mon message poste sur l'autre forum

Bonjour j'ai un probleme avec ce script:


//////////////////////////////////////////////////////
//:Par Ralf Schemmann
//:July 17th, 2002
//:Modifié/Traduit par MrCocktail pour NWN-fr.com
//////////////////////////////////////////////////////


void main()
{
int nUser = GetUserDefinedEventNumber();
if(nUser == 1001) //HEARTBEAT EVENT
{
object oPlayground = GetWaypointByTag("KidTagCenter");
object oTagArea = GetWaypointByTag("TagArea"+IntToString(Random(4)));
if (GetDistanceToObject(oPlayground) > 6.0f)
{
ClearAllActions();
ActionForceMoveToObject(oTagArea,TRUE, 0.0f);
}
if (GetDistanceToObject(oPlayground) < 6.0f)
{
if (GetLocalInt(OBJECT_SELF, "nChasing") == 1)
{
//Trouver un copain à poursuivre
object oChased = GetNearestObjectByTag("TAGCHILD");
//N'est-il pas trop près?
if (GetDistanceToObject(oChased) < 2.0f )
{
//Chat et on inverse les rôles
SpeakString("Chat!", TALKVOLUME_TALK);
AssignCommand(oChased, ClearAllActions());
SetLocalInt(OBJECT_SELF, "nChasing", 0);
SetLocalInt(oChased, "nTagged", 1);
//RemoveEffect(OBJECT_SELF, EffectHaste());
ClearAllActions();
ActionMoveAwayFromObject(oChased, TRUE);
}
//Si trop loin, lui courrir après
else
{
ActionForceMoveToObject(oChased, TRUE, 0.0f);
}
}
//owner est chassé
else
{
//Si l'on lui a fait chat, attendre un heartbeat et chasser
if (GetLocalInt(OBJECT_SELF, "nTagged") == 1)
{
SetLocalInt(OBJECT_SELF, "nTagged", 0);
SetLocalInt(OBJECT_SELF, "nChasing", 1);
//ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHaste(), OBJECT_SELF);
}
//Si on ne lui a pas encore fait chat, eviter le chat et rejoindre les autres copains
{
//Trouve le copain le plus proche
object oChaser = GetNearestObjectByTag("TAGCHILD");
//mais s'il est chat
if (GetLocalInt(oChaser, "nChasing") == 1)
//se sauver
ActionMoveAwayFromObject(oChaser, TRUE);
else
//et courir après les autres
ActionForceMoveToObject(oChaser, TRUE, 4.0f);
}
}
}
}
}

Je ne sais pas ou mettre ce script
J'aimerai savoir comment faire pour ex:Je veux mettre 2 scripts dans le Onheartbeat du module ?

C'etait pour preciser que le premier script se trouve sur le site http://www.hellfire.firstream.net/index.php?txt=scripts_aff_ind&id=52
Et je ne sais pas ou mettre ce script la non plus
http://www.hellfire.firstream.net/index.php?txt=scripts_aff_ind&id=64
Fin du message

Je sais que c'est tout simple mais je suis pas sur de ce qu'il faut faire donc j'ai besoin de votre aide:p

Par LeProctophantasmiste le 1/11/2002 à 13:20:44 (#2455341)

quelque part dans le template d'OnSpawn, qui est aussi l'OnSpawn par défaut il y a ceci:


SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001
//SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
//SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
//SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
//SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
//SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
//SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007

En fait pas tout à fait, toutes les lignes étant commentées dans l'original, et bien tu enlève les // que j'ai enlevé et tu sauve le tout (le script OnSpawn) sous un nom très évocateur comme:
"cd_14". Puis tu l'affectes à l'OnSPawn des barmaids.
D'accord ce nom n'est pas évocateur du tout, mais il dit ce que fait le script et c'est bien pratique pour pouvoir le réutiliser: il s'agit d'un script de créature (c) , venant du script par défaut de Bio en ayant décommenté les UserDefined 1001 et 1004.

Pour ton histoire de distance maximum, voilà une instruction qui utilisée dans le main() terminera l'exécution du script si la distance au plus proche PC est de plus de 2 mètres, à toi de l'utiliser au bon endroit (je n'ai pas regardé le script de barmaid):

if(GetDistanceToObject(GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC)) > 2.0f)
return;

Tu peux aussi utiliser le if pour rendre conditionnelle l'exécution d'une partie du code, bien sûr.

2e script
C'est bien un script d'HeartBeat. Fais gaffe avec ça, d'autant plus qu'il tourne sans contrôle ces scripts, même quand il n'y a personne pour les voir, evidemment les animations ne sont pas jouées mais tout de même, pour le serveur c'est pas top. Miriandel je crois avait implémenté un système de "zone inactive" dans ça démo de mine (ou peut-être ailleur?) tu devrais aller voir.
Par conte il ne se met pas sur le slot OnHeartbeat mais sur le UserDefined:

int nUser = GetUserDefinedEventNumber();
if(nUser == 1001) //HEARTBEAT EVENT

Donc comme précédement il faut que du décommente la ligne:

NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001

De l'OnSpawn
Non, tu ne peux pas attribuer ce script au module, c'est aux enfants qu'il doit l'être.

Par Stritis le 1/11/2002 à 13:30:39 (#2455404)

Merci pour la réponse :)

Par Stritis le 1/11/2002 à 18:42:01 (#2457335)

Vous pouvez repondre aux autres questions siou plait
Bon une autre question toute simple: j'aimerai savoir comment faire qu'un dialogue apparaise apres avoir parler une fois au PNJ
Bon je peux y arriver grace au journal mais c'est trop long si je fais ça a chaque fois donc pourriez vous m'aider

Par Morethil le 1/11/2002 à 19:44:36 (#2457688)

Un bon conseil stritis, qui répondra a toutes tes questions "les plus simples" :

- fait le tutorial de Bioware (il a été traduit) par gargantuel ici.
- Lis la leçon sur les dialogues posté sur ce forum.
- Regarde le tutorial sur les scriptes toujours sur ce forum.

Ca t'evitera pas de poser d'autres questions "simples" mais ca te permetra toi d'aller beaucoup plus vite, et a ceux qui auraient envie de te répondre de pouvoir se faire comprendre.

Pour ton histoire d'un dialogue qui apparait une fois que tu a deja parle au PNJ, c'est dans la leçon de base sur les dialogue du tutorial Bioware.

En gros, tu met un marqueur sur ton PNJ (ou ton PC qui lui parle) dans action conscéquante. Ensuite tu met un scripte dans les conditions d'execution de ta phrase qui doit être dite une fois qu'on a parlé au PNJ. (c'est un exemple)
Si tu met le marqueur sur le PJ, la première phrase sera dites autant de fois qu'il y a de PJ. Si tu le met sur le PNJ, il ne dira la phrase qu'une fois, quel que soit le nombre de PJ.

BRef, je vais pas t'embrouiller plus que ça. Regarde le tutorial :)

Par Stritis le 1/11/2002 à 19:59:48 (#2457795)

Provient du message de Morethil
Un bon conseil stritis, qui répondra a toutes tes questions "les plus simples" :

- fait le tutorial de Bioware (il a été traduit) par gargantuel ici.
- Lis la leçon sur les dialogues posté sur ce forum.
- Regarde le tutorial sur les scriptes toujours sur ce forum.

Ca t'evitera pas de poser d'autres questions "simples" mais ca te permetra toi d'aller beaucoup plus vite, et a ceux qui auraient envie de te répondre de pouvoir se faire comprendre.

Pour ton histoire d'un dialogue qui apparait une fois que tu a deja parle au PNJ, c'est dans la leçon de base sur les dialogue du tutorial Bioware.

En gros, tu met un marqueur sur ton PNJ (ou ton PC qui lui parle) dans action conscéquante. Ensuite tu met un scripte dans les conditions d'execution de ta phrase qui doit être dite une fois qu'on a parlé au PNJ. (c'est un exemple)
Si tu met le marqueur sur le PJ, la première phrase sera dites autant de fois qu'il y a de PJ. Si tu le met sur le PNJ, il ne dira la phrase qu'une fois, quel que soit le nombre de PJ.

BRef, je vais pas t'embrouiller plus que ça. Regarde le tutorial :)


Ouai mais moi j'suis un homme de terrain , j'apprend sur le tas :mdr: , enfin j'ai un peu regarde les tutoriaux mais bon je prefere demandez ici ! c'est vrai qu'a un moment j'ai voulu editer ma question car elle etait trop simple.

Par Morethil le 1/11/2002 à 21:26:07 (#2458344)

Tous le monde apprens sur le tas. Sauf que certaines réponses sont déja donné dans les tutoriaux. Si tu les fait (ou les lis) au moins tu saura où chercher les réponses.
Perso j'ai commancé a toucher a ça y'a 2 semaines, peut etre 3, et je commance a connaitre quelques petits truc.
Mes premières questions était du même genre que toi. Au début copiait bêtement tous, y compris les notes precedé de // etc.
Je trouvait ça vachement compliqué, et je demandait la moindre chose.
Et a force de chercher un peu aussi, je peux maintenant assembler des scriptes existant, et réecrire des petits bouts pour les faire fonctionner.
Mais pour comprendre ce que je fait il a fallu que je lise un peu les tutoriaux, voir que je m'y essaye. Je pense que ça va plus vite comme ça. Pour tous le monde.
Un autre conseil, joue les scenarios qui sont bien fait, en solo. Souvant il y a des scriptes a reprendre.

Par Stritis le 2/11/2002 à 0:27:12 (#2459387)

Provient du message de Morethil
Tous le monde apprens sur le tas. Sauf que certaines réponses sont déja donné dans les tutoriaux. Si tu les fait (ou les lis) au moins tu saura où chercher les réponses.
Perso j'ai commancé a toucher a ça y'a 2 semaines, peut etre 3, et je commance a connaitre quelques petits truc.
Mes premières questions était du même genre que toi. Au début copiait bêtement tous, y compris les notes precedé de // etc.
Je trouvait ça vachement compliqué, et je demandait la moindre chose.
Et a force de chercher un peu aussi, je peux maintenant assembler des scriptes existant, et réecrire des petits bouts pour les faire fonctionner.
Mais pour comprendre ce que je fait il a fallu que je lise un peu les tutoriaux, voir que je m'y essaye. Je pense que ça va plus vite comme ça. Pour tous le monde.
Un autre conseil, joue les scenarios qui sont bien fait, en solo. Souvant il y a des scriptes a reprendre.


J'ai encore 2 semaines pour etre a ton niveau :mdr: , mais je comprend les scripts (enfin une petite partie) mais j'ai aucune idée comment il faut les assembles et je profite des vacances pour poster car apres je pourrai plus trop vous embeter :p
Mais a la noel "Stritis Contre-Attaque" je commence a etre fatigué moi pour des dire des "aneries" pareille :baille:

Par sounéva le 2/11/2002 à 0:44:42 (#2459457)

morethil a raison stritis commence par celui la tutorial sur le toolset de bioware .
ca donne une bonne base aprés il y en a un sur les scripts toujours de bioware tutorial sur les scripts de bioware celui la permet de comprendre comment assembler les scripts, ce que c'est le onspawm, le onuserdefined.....ect

Par coolstar le 2/11/2002 à 1:26:19 (#2459643)

Merci sounéva... ;)


J'en profite pour rajouter encore un petit mot à Stritis, me too, si c permis... juste pour dire qu'un forum c communautaire et que sa façon de poser des questions ne profite à personne... même pas à lui, vu qu'on oublit de répondre à tout son chapelet de questions du coup... sorry pour la remarque... :D

...

JOL Archives 1.0.1
@ JOL / JeuxOnLine