HELP Alignement et teleportation

Répondre
Partager Rechercher
Bonjour,

Je voudrais savoir comment je peux empecher un PJ de franchir un portail de teleportation si il n'a pas le bon alignement (bon ou mauvais) et aussi suivant un objet, j'ai deja le script pour l'objet mais pas pour l'alignement. Voila mon script concernant l'objet:

#include "nw_i0_tool"

void main()
{

object oClicker = GetClickingObject ();

if (!CheckPartyForItem (oClicker, "AnneauA"))
{
object oPC = GetLastUsedBy();
if (GetIsPC(oPC))
{
object oTarget = GetWaypointByTag ("departville1");
AssignCommand( oPC, JumpToObject( oTarget));
}
}
else
{
ActionSpeakString ("Vous ne pouvez pas passez avec cet anneau");
}
}

Merci.
Post
De tête, donc à tester

Code PHP:


#include "nw_i0_tool"

void main()
{

 
object oClickeroTarget;
 
int nClickernHasItemRing;

 
oClicker GetClickingObject ();
 
nClicker GetAlignmentGoodEvil(oClicker);
 
oTarget GetWaypointByTag ("departville1");
 
nHasItemRing HasItem(oClicker"AnneauA");

 if ((
nHasItemRing != 1) && (nClicker == ALIGNMENT_EVIL))
  
AssignCommand(oClickerJumpToObject(oTarget));
 else
  
SpeakString ("Vous ne pouvez pas passez avec cet anneau"TALKVOLUME_TALK);


Le script fonctionne presque mais soit je peux utiliser le portail que je soit d'alignement bon ou mauvais soit je peux pas le passer du tout. Maintenant je me suis peut etre mal exprimer dans ce que je veux vraiment, en fait le portail ne devra accepter que les personnes d'alignement mauvais qui n'ont pas l'anneauA. Dans le script la condition est fait avec un ET, je crois et pour l'alignement je crois que je me suis mal exprimer. J'ai essayer de modifier moi-meme le script pour le faire fonctionner mais quand je modifie la condition concernant l'alignement, le portail ne fait plus rien du tout, comme si on pouvait pas l'utiliser.
C'est super sympa !!! desole de te faire perdre ton temps comme ca, juste une question concernant le script, est-ce que la condition que tu mets entre la possession de l'objet et l'alignement est un AND ou un OR ? Selon moi pour que cela fonctionne, il faudrait un OR mais je connais pas bien les codes pour scripter (ca tu le sais deja je suppose...), tu as mis && dans le code cela represente un AND ou OR ????
Post
A mettre dans le OnUsed de ton portail :
Code PHP:

// inclut le fichier "nw_i0_tool" contenant la fonction HasItem()
#include "nw_i0_tool"


void main()
{
 
// initalisation des variables
 
object oClickeroTarget;
 
int nClickernHasItemRing;

 
// on recupere l'objet ki clik sur le portail
 
oClicker GetLastUsedBy();
 
//on recupere l'alignement de l'objet ki clik sur le portail
 
nClicker GetAlignmentGoodEvil(oClicker);
 
// on recupere le waypoint suivant son Tag
 
oTarget GetWaypointByTag ("departville1");
 
// on regarde si oClicker possede l'objet AnneauA, si oui 
 // nHasItemRing vaudra 1, sinon il vaudra 0
 
nHasItemRing HasItem(oClicker"AnneauA");

 
// si la valeur de nHasItemRing ne vaut pas 1, donc si le perso 
 // ne possede pas l'anneau, et si l'alignement de de celui
 // ki clik est Evil, on lui assigne la commande de téléportation
 
if ((nHasItemRing != 1) && (nClicker == ALIGNMENT_EVIL))
  
AssignCommand(oClickerJumpToObject(oTarget));
 else
  
SpeakString ("Vous ne pouvez pas passez avec cet anneau"TALKVOLUME_TALK);


Tu as tout à fait raison, && signifie "et" et || signifie "ou"
Ca marche toujours pas, j'ai modifie un peu le script pour voir si le probleme etait l'alignement ou l'anneau:
#include "nw_i0_tool"


void main()
{
// initalisation des variables
object oClicker, oTarget;
int nClicker, nHasItemRing;

// on recupere l'objet ki clik sur le portail
oClicker = GetClickingObject ();
//on recupere l'alignement de l'objet ki clik sur le portail
nClicker = GetAlignmentGoodEvil(oClicker);
// on recupere le waypoint suivant son Tag
oTarget = GetWaypointByTag ("departville1");
// on regarde si oClicker possede l'objet AnneauA, si oui
// nHasItemRing vaudra 1, sinon il vaudra 0
nHasItemRing = HasItem(oClicker, "AnneauA");

// si la valeur de nHasItemRing ne vaut pas 1, donc si le perso
// ne possede pas l'anneau, et si l'alignement de de celui
// ki clik est Evil, on lui assigne la commande de téléportation
if (nHasItemRing != 1)
if (nClicker != ALIGNMENT_EVIL)
SpeakString ("Vous ne pouvez pas passez avec cet alignement", TALKVOLUME_TALK);
else
AssignCommand(oClicker, JumpToObject(oTarget));
else
SpeakString ("Vous ne pouvez pas passez avec cet anneau", TALKVOLUME_TALK);

}

Mais il me met toujours:
Vous ne pouvez pas passez avec cet alignement

quelque soit mon alignement

Je vais reessayer demain pcq je dois aller dormir mnt. Merci pour ton aide, j'espere y arriver.
(question, le fait d'etre loyal,... n'influence pas la condition d'alignement ???)
Attends! Réessaye, chez moi il marche, mais j'avais fait un mauvais copier coller, voici le bon script à mettre dans le OnUsed

Code PHP:


#include "nw_i0_tool"

void main()
{

 
object oClickeroTarget;
 
int nClickernHasItemRing;

 
oClicker GetLastUsedBy ();
 
nClicker GetAlignmentGoodEvil(oClicker);
 
oTarget GetWaypointByTag ("departville1");
 
nHasItemRing HasItem(oClicker"AnneauA");

 if ((
nHasItemRing != 1) && (nClicker == ALIGNMENT_EVIL))
  
AssignCommand(oClickerJumpToObject(oTarget));
 else
  
SpeakString ("Vous ne pouvez pas passez avec cet anneau"TALKVOLUME_TALK);


Presque...Cette fois si je suis pas du bon alignement, il me dit la phrase MAIS si je suis du bon alignement et que je n'ai pas l'objet, au lieu de me teleporter, il fait rien du tout
Ha mince
byzarre il a marché chez moi. Hum essaye de vérifier le tag de ton waypoint de destination on sait jamais
Bonne nuit on mettra ca au propre demain, on va s'en sortir!
Suis une quiche en script, mais on va y arriver tu verras
Tu avais raison, le tag de destination etait incorrect, je sais pas pourquoi, probablement une erreur lorsque j'ai modifie le script desole...

MERCI POUR TON AIDE !!!!!!!!!!!!!!!!
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés