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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Une transition qui ne se déclenche que pour une certaine classe de personnage

Par Mastokk le 24/11/2002 à 0:27:04 (#2629718)

Voici mon problème: Je veux interdire l'entrée d'un bosquet de Druides aux classes non druides. Sur le OnAreaTransionClick de la porte j'ai mis ce script:


void main()
{
object oClicker = GetClickingObject();
// restriction base sur la classe du personnage
int iPassed = 0;
if(GetLevelByClass(CLASS_TYPE_DRUID, GetClickingObject()) >= 1)
iPassed = 1;
// Activer la transition de zone
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
AssignCommand(oClicker,JumpToLocation(lLoc));
// phrase expliquant l'interdiction d'accès
if(iPassed == 0)
ActionSpeakString("Une barriere magique vous empeche d'entrer") ;
}


Je n'ai aucune erreur de compilation mais ça n'empèche en rien la transition de zone pour les personnages non druides. Si vous pouviez aider la larve que je suis... ce serait bien aimable :).

Par miriandel le 24/11/2002 à 0:57:32 (#2629839)

void main()
{
object oClicker = GetClickingObject();
// restriction base sur la classe du personnage
if(GetLevelByClass(CLASS_TYPE_DRUID, GetClickingObject()) >= 1) {
// Activer la transition de zone
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
AssignCommand(oClicker,JumpToLocation(lLoc));
} else // phrase expliquant l'interdiction d'accès
ActionSpeakString("Une barriere magique vous empeche d'entrer") ;
}


Juste des problèmes de placement des accolades dans ton script.

Par shadoh le 24/11/2002 à 1:03:19 (#2629872)

essaye ceci :


void main()
{
int nClass1 = 1;
int nClass2 = 2;
int nClass3 = 3;
object oPC = GetClickingObject();

if (GetClassByPosition(nClass1,oPC) == CLASS_TYPE_DRUID || GetClassByPosition(nClass2,oPC) == CLASS_TYPE_DRUID || GetClassByPosition(nClass3,oPC) == CLASS_TYPE_DRUID)
{
}
else
{
ClearAllActions();
AssignCommand(oPC,JumpToObject(GetObjectByTag("tag du WP de destination")));
}
}



/////////////////////////////////////////////////////////////////////////

Edit : Je ne sais pas si tu peux faire apparaitre un texte au dessus d'une porte avec la commande SpeakString ou ActionSpeakString.

Si c'est possible, tu peux rajouter la ligne de commande :

ActionSpeakString("texte que tu veux faire dire à la porte");

entre les {} du premier if.

Sinon, tu peux placer un object invisible à l'endroit ou se trouve ta porte et rajouter toujours au meme endroit cette ligne de commande :

AssignCommand(GetObjectByTag("tag de l'object invisible"), ActionSpeakString("texte que tu veux faire dire à l'endroit ou se trouve l'objet invisible"))

Par Mastokk le 24/11/2002 à 1:10:34 (#2629906)

Merci beaucoup Miriandel, ça marche parfaitement maintenant :).
Je te remercie aussi Shadow mais je vais me contenter du script de base qui fonctionne bien :).

Par shadoh le 24/11/2002 à 1:16:43 (#2629925)

hé hé pas de prob, ce fut un plaisir ;).

Par coolstar le 24/11/2002 à 1:24:40 (#2629966)

Une chose shadoh... je n'ai pas compris le sens de ton Script... pourquoi ce choix? pourrais-tu être explicite pour les pauvres nb dont je fais dévouement parti ??? :D

Par Mastokk le 24/11/2002 à 2:02:47 (#2630118)

Pour les plus quiches qui seraient intéressées par ce script, j'ai rajouté une ligne qui referme la porte :). Comme ca le PJ vois la porte se fermer devant lui après avoir eu le message d'interdiction d'entrer :):


void main()
{
object oClicker = GetClickingObject();
// restriction base sur la classe du personnage
if(GetLevelByClass(CLASS_TYPE_DRUID, GetClickingObject()) >= 1)
{
// Activer la transition de zone
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
AssignCommand(oClicker,JumpToLocation(lLoc));
}
else
// phrase expliquant l'interdiction d'accès
ActionSpeakString("Une barriere magique vous empeche d'entrer") ;
ActionCloseDoor(OBJECT_SELF);
}

Par shadoh le 24/11/2002 à 2:03:10 (#2630120)

Et bien, GetClassByPosition() retourne la casse 1,2 ou 3 du PJ sachant que dans NWN un joueur peut avoir 3 classes différentes. Avec ceci, je m assure que quelque soit la configuration du PJ au niveau des classes, aucunes ne sera de type druide.

Donc, apres que la classe en position 1 puis la classe en position 2 puis la classe en position 3 ait été vérifie, le script execute la commande JumpToObject sur le PJ si celui ci n'a pas la classe de druide dans une de ses classes (ça couvre le cas des multiclassés et des monoclassés). Si le joueur est monoclassé druide ou multiclassé druid, alors le joueur ne sera pas envoyé à la destination indiqué par JumToObject.

Il y a toujours plein de moyens de parvenir à ses fins par le biais des scripts. Moi j'ai procédé de la sorte. Mais à partir du moment ou les 2 marchent, c'est un choix personnel apres lol :).

Par coolstar le 24/11/2002 à 2:17:32 (#2630177)

:merci: :merci:

Par Drakalien o Taurind le 24/11/2002 à 11:32:52 (#2631315)

Juste une remarque concernant l'orthographe, j'ai vu cette faute de nombreuses fois sur ce site alors je me permets de la signaler :
déclancher s'écrit déclencher
Bon, maintenant on a un correcteur orthographique, mais un petit rappel ne fera pas de mal, n'est-ce pas ? :rolleyes:

Par coolstar le 24/11/2002 à 13:31:48 (#2632015)

H-S!!

Par Drakalien o Taurind le 24/11/2002 à 14:39:35 (#2632417)

Rho nan mais de quoi j'me mêle espèce d'analphabète ! :D

Qu'est-ce que tu veux que je te dises, je ne suis pas un académiste totalitaire mais quand je vois "déclanché" écrit comme ça, je trouve ça vraiment moche. Si tu me dis que tout le monde écrit ça comme ça, ok j'essairai de changer mes habitudes.

Par Mastokk le 24/11/2002 à 15:17:48 (#2632680)

erf je l'avais modifiée à la relecture.... comprends pas pourquoi quelques fois le correcteur ne fais pas les modifications (elle m'avait été proposée).

Par shadoh le 24/11/2002 à 16:03:22 (#2632910)

Justement, il y a déjà un correcteur orthographique. Alors nulle besoin d'un deuxième correcteur nommé Drakalien o Taurind ;).

Premièrement, c'est une intervention HS (la charte dit d'éviter les HS). Secondo, ça fait remonter un sujet qui était clos.

Il y a déjà eu plusieurs débats sur l'orthographe. D'une manière générale, ce qui en est ressorti c'est que tant que le texte reste lisible, tout le monde peut faire des erreurs. Et vu que la faute en question n'a pas été corrigé via le correcteur, et attendu que le message a été posté, il n'y a plus de moyens pour corriger cette faute. Seul un modo peut encore la corriger. Et ceci ne mérite pas un post mais un MP a un modo :).

Par Drakalien o Taurind le 25/11/2002 à 18:31:00 (#2641601)

Sauf que mon but n'était pas de faire corriger le titre de ce sujet mais bien de rappeller l'écriture correcte d'un mot que j'ai vu très fréquemment mal écrit ; autrement je n'aurais pas fait la remarque évidemment, sinon j'aurais déjà posté des dizaines de milliers de messages...
Mais bon si vous me dites que vous n'en avez rien à fiche d'apprendre l'orthographe correcte d'un mot que vous utilisez souvent, eh bien je me tairai à jamais et mon immense savoir restera connu de moi seul. :bouffon:

Par coolstar le 25/11/2002 à 18:42:52 (#2641730)

Lance un Topic sur La Taverne ou La Tour Effondrée! Sauve-nos Ames!!! :merci:

Par Drakalien o Taurind le 25/11/2002 à 18:55:36 (#2641848)

Edit :: répétition de message, dsl

Par Drakalien o Taurind le 25/11/2002 à 18:56:20 (#2641853)

Bon bon, mais moi je n'ai qu'un forum dans ma vie, c'est le forum Maskado, alors si je ne peux que parler de scripts et de... scripts, je vais rapidement perdre tout mon enseignement !
Bon d'accord, je m'enfouis sous terre et je ressors dans 500 ans lorsque l'on rigolera de ces misérables terriens de l'an 2000 qui passaient leur vie dans un ridicule espace de 40 000 km² à travailler et à taper sur des trucs devant un écran préhistorique minuscule...

Et voilà, vous m'obligez à faire du HS, c'est malin ça !

Par coolstar le 25/11/2002 à 19:16:49 (#2642020)

:rasta:

JOL Archives 1.0.1
@ JOL / JeuxOnLine