La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 06:18:47


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
P.Patoche
Chevalier
Inscrit le: 14 Avr 2006
Messages: 70
Localisation: France 77
Répondre en citant
Posté le : 29/04/2006 13:17:04 Sujet du message : Bloquer un dialogue dans une zone.

Bonjour a toutes et a tous, voilà je suis dans une impasse je ne trouve pas comment faire ce script, j'explique sa fonction

Je lance un dialogue via une item que j'ai dans mon inventaire, cette item est active dans toutes les zones, mais je voudrais soit active de la zone 1 a la zone 100 mais que le dialogue ne se lance pas dans la zone 101 et 102, avec une phrase du style « vous ne pouvez utiliser cette item dans ses lieux » voici les scripts en fonction ( les chiffres sont un exemple)

Script d'activation de l'item :
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Scripte_1


void main()
{
object oPc = GetItemActivator();
object oItem = GetItemActivated();
string sTag = GetTag(oItem);

if (sTag == "PIERRE_DE_RAPPEL")
{
AssignCommand(oPc,ActionStartConversation(oPc,"mon_dial",TRUE));
}
}

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

Dialogue ; « mon_dial »


Voulez-vous partir ?
Oui. (lance le scripte « scripte_2 »
Non.

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

Scripte_2

void main()
{
// "Tag point de passage"
object oPortal = GetObjectByTag("NW_PIERRE_RAPPEL");
if (GetIsObjectValid(oPortal) == TRUE)
{
// "Tag point de passage"
string sTag = "NW_PIERRE_RAPPEL";
object oClicker = GetItemActivator();
object oTarget = GetObjectByTag(sTag);
AssignCommand(oClicker, ClearAllActions());
AssignCommand(oClicker, PlaySound("as_mg_telepout1"));
AssignCommand(oClicker,JumpToObject(oTarget));
AssignCommand(oClicker, ActionDoCommand(ClearAllActions()));
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

dans l'attente d'une réponse, merci bien a vous et bon jeux.

Patoche.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fanboy
Acolyte
Inscrit le: 04 Avr 2006
Messages: 23
Répondre en citant
Posté le : 29/04/2006 21:08:53 Sujet du message :

trés simple a faire.
dans ton script1 su rergarde SI le tag d'object activé = PEIRRE_DE_RAPPEL

il suffit de rajouter a ce IF "et que le tage de la zone du PC est différente de zone 101, et pareil pour la zone 102.

ce qui devrait donner ca :

NWScript :
void main()
{
object oPc = GetItemActivator();
object oItem = GetItemActivated();
string sTag = GetTag(oItem);

if (sTag == "PIERRE_DE_RAPPEL" && GetTag(GetArea(oPC)) !="101"
  && GetTag(GetArea(oPC))!="102")
// "101" et "102" doivent correspondre au tag exact de tes 2 zones
{
AssignCommand(oPc,ActionStartConversation(oPc,"mon_dial",TRUE));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

"101" et "102" doivent correspondre au tag exact de tes zones...
ca déclenchera le dialogue donc partout sauffe dans ces 2 zones..
a la suite tu peut rajouter un if pour que si toujours stag = pierre de rappel et que le tag de la zone est = cet fois a "101" ou "102"
cela envoi un mésage au joueur.
_________________
Kikoo
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
P.Patoche
Chevalier
Inscrit le: 14 Avr 2006
Messages: 70
Localisation: France 77
Répondre en citant
Posté le : 29/04/2006 21:35:07 Sujet du message :

Merci bien pour ta reponce mais desole sa ne veut pas compiler !!!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fanboy
Acolyte
Inscrit le: 04 Avr 2006
Messages: 23
Répondre en citant
Posté le : 29/04/2006 21:54:38 Sujet du message :

j'ais mis oPC au lieu du oPc ^^

je l'ai fait sans l'editeur mais ca marchera trés bien..

remplace les oPC que j'ai mis par des oPc
_________________
Kikoo
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
P.Patoche
Chevalier
Inscrit le: 14 Avr 2006
Messages: 70
Localisation: France 77
Répondre en citant
Posté le : 29/04/2006 21:58:57 Sujet du message :

Je suis desoler je l'est pas vue merci pour tes reponces rapide.

bon la je m'enerve, je sais que la commande pour le massage sais "SendMessageToPC" mais j'arrive pas la l'integret dans le script ( je sais je suis nul mais je me soigne) peut ton me montré ?? svp

merci bien

Patoche
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 30/04/2006 10:43:20 Sujet du message :

Hmm sa dépend ou tu veux le place! ^^

NWScript :
void main()
{
object oPc = GetItemActivator();
object oItem = GetItemActivated();
string sTag = GetTag(oItem);

if (sTag == "PIERRE_DE_RAPPEL" && GetTag(GetArea(oPC)) !="101"
  && GetTag(GetArea(oPC))!="102")
// "101" et "102" doivent correspondre au tag exact de tes 2 zones
{
AssignCommand(oPc,ActionStartConversation(oPc,"mon_dial",TRUE));
}
else
{
SendMessageToPC(oPc, "Vous ne pouvez utiliser le portail dans cette endroit!");
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
P.Patoche
Chevalier
Inscrit le: 14 Avr 2006
Messages: 70
Localisation: France 77
Répondre en citant
Posté le : 30/04/2006 11:30:36 Sujet du message :

Merci bien c'est juste comme je le voulais (j'ai encore des progres a faire).

Patoche.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fanboy
Acolyte
Inscrit le: 04 Avr 2006
Messages: 23
Répondre en citant
Posté le : 30/04/2006 12:54:03 Sujet du message :

le mieux je pense serait d'imbriquer un if car la solution proposer marchera que si tu a qu'un objet activable dans ton module
suffit que tu intégré un 2eme objet pour que ca pose probleme..

je propose ca, :
NWScript :

void main()
{
object oPc = GetItemActivator();
object oItem = GetItemActivated();
string sTag = GetTag(oItem);

if (sTag == "PIERRE_DE_RAPPEL") // l'objet activer
  {
  if (GetTag(GetArea(oPC)) =="101"
  ||GetTag(GetArea(oPC))=="102")
// "101" et "102" doivent correspondre au tag exact de tes 2 zones
  {
    SendMessageToPC(oPc, "Vous ne pouvez utiliser le portail dans cette endroit!");
    }
  else {
AssignCommand(oPc,ActionStartConversation(oPc,"mon_dial",TRUE));
  }
  }//fin du premier if
// ici pour placer un autre objet activable..

}// fin du main
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

faut pas te faire de reporche, vu la situation je pense que pour placer le méssage (en cas d'autre objet a activé j'entend) passe par une imbrication de if..et c'est pas forcément évident a trouver.^^ ca demande toujours un temps de réflexion si tu y a réflechi c'est bien que tu sentait qu'il y avait un truc ....

la comme ca a la suite du 1er IF tu pourra rajouter un IF pour l'object activable suivant..

un 1er if poour déterminer l'objet utiliser..
un autre imbriquer au premier pour savoir si le PJ n'est ou n'est pas dans les zone concerner.. si il y est méssage Sinon conversation.en d'autre terme l'IF imbrique va géré les conditions que tu souhaite pou tel ou tel object activable..
enfin aprés y avoir réfléchi ^^
je pense que c'est le plus logique d'imbriquer 2 if.
_________________
Kikoo
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 30/04/2006 13:32:32 Sujet du message :


Citation :
faut pas te faire de reporche, vu la situation je pense que pour placer le méssage (en cas d'autre objet a activé j'entend) passe par une imbrication de if..et c'est pas forcément évident a trouver.^^ ca demande toujours un temps de réflexion si tu y a réflechi c'est bien que tu sentait qu'il y avait un truc ....

la comme ca a la suite du 1er IF tu pourra rajouter un IF pour l'object activable suivant..

un 1er if poour déterminer l'objet utiliser..
un autre imbriquer au premier pour savoir si le PJ n'est ou n'est pas dans les zone concerner.. si il y est méssage Sinon conversation.en d'autre terme l'IF imbrique va géré les conditions que tu souhaite pou tel ou tel object activable..
enfin aprés y avoir réfléchi ^^
je pense que c'est le plus logique d'imbriquer 2 if.
Ouch j'ai mal a la tête maintenant Embarassed
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 38.311ms