La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 30/09/2024 07:29:15


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 19/10/2003 10:02:47 Sujet du message : [prob] 2 camps

Voila mon problème (qui amène 3 questions) : j'aimerai que dans mon module, les joueurs arrivent dans une zone pour choisir leur camp donc question

1. est-il possible de rediriger directement le joueur quand il se connecte et qu'il a deja fais son choix précédemment? (ou alors, donner un objet a ce joueur qui lui interdise de choisir l'autre camp -> objet non dropable ->script pour cela )

2. une fois dans le jeu, comment un joueur peut voir si tel ou tel joueur est dans le meme clan que lui ou non (j'avais pensé refaire toutes les armures en bleu pour un clan et en rouge pour l'autre mais c un boulot de dingue pour pas grand chose). en parcourant des forums, j'ai vu que c'etait possible avec un script qui jouait sur les factions et affichait directement l'autre personne comme ennemi ou ami. mais le script n'etait pas expliqué (ils disaient juste que c'etait assez important comme truc!) lien : [http]

3. lors de la mort d'un pj, probleme avec le respawn, j'utilise le script standard de nwn "nw_o0_respawn" ou dois-je rajouter une ligne pour que chaque pj respawn dans son camps?

Merci de m'aider
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
micka
Grand Sage du Conseil
Inscrit le: 29 Aoû 2003
Messages: 884
Localisation: /dev/null
Répondre en citant
Posté le : 19/10/2003 13:55:11 Sujet du message :

Ça veut dire que tu interdis les traîtres, les espions, les taupes, le double-double jeu? C'est dommage...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 19/10/2003 14:04:41 Sujet du message :

oui, c'est possible
_________________
vive les dumps et les livres !
Sanctuaire des Scripts
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 20/10/2003 08:18:56 Sujet du message : Re: [prob] 2 camps


xelone a écrit :
1. est-il possible de rediriger directement le joueur quand il se connecte et qu'il a deja fais son choix précédemment? (ou alors, donner un objet a ce joueur qui lui interdise de choisir l'autre camp -> objet non dropable ->script pour cela )
C'est possible mais il y a un défaut. Lorsque un PJ se reconnecte à un module (un persistant), il se reconnecte à l'endroit où il l'a quitté (ou au point de démarrage de module si ce dernier a été redémarré sans sauvegarde). Même en produisant un script sur le OnClientEnter qui le téléporterait dans une zone spécifique, le chargement de la dernière zone où il se trouvait est innévitable. De ce fait, on se retrouverait avec deux chargements de zone l'un à la suite de l'autre. Néanmoins si ce défaut n'est pas un problème pour toi, tu peux utiliser les scripts suivants :
Sur le OnClientEnter
Code :

void main()
{
  object oPC=GetEnteringObject(); //On récupère le PC se connectant au module
  if (!GetIsDM(oPC)) //On s'assure que ce n'est pas un PC de GM considérant que ceux-ci ne sont pas concernés.
  {
    SetLocalInt(oPC, "JUSTENTERED", TRUE);
  }
}

La raison de ce code est de notifier par le biais d'une variable que le personnage vient juste d'entrer dans le module. La téléportation en tant que telle doit être déportée sur le OnEnter de toutes les zones du module car il n'est pas possible d'affecter l'ActionJumpToLocation sur le OnClientEnter. Immédiatement après un OnClientEnter, le OnEnter de la zone où le personnage a déconnecté se produira :
Code :

void SendPCToSpecificCamp(object oPC)
{
  if (GetIsPC(oPC)) //On s'assure que le paramètre passé est bien un PJ
  {
    int nCamp=GetCampaignInt("MACAMPAGNE", "CAMP", oPC); //On récupère le camp du PJ depuis une variable de campagne (persistante)
    location lLocCamp;
    switch (nCamp)
    {
      case 0 : //pas de camp choisi
      {
        lLocCamp=GetStartingLocation(); //Point de démarrage du module
      }break;
      case 1 : //le camp 1
      {
        lLocCamp=GetLocation(GetObjectByTag("WP_CAMP1")); //location par rapport à un waypoint tagué WP_CAMP1
      }break;
      case 2 : //le camp 2
      {
        lLocCamp=GetLocation(GetObjectByTag("WP_CAMP2")); //location par rapport à un waypoint tagué WP_CAMP2
      }break;
    }
    AssignCommand(oPC, CleatAllActions()); //On vide la queue d'action du PJ
    AssignCommand(oPC, ActionJumpToLocation(lLocCamp)); //On fait aller le PJ à la loc déterminée
  }
}

void main()
{
  object oPC=GetEnteringObject(); //on récupère l'objet entrant dans la zone, ça peut être n'importe quoi (y compris un objet qu'on créé)
  if (GetIsPC(oPC)) //on ne fait quelque chose que si c'est un PC
  {
    if (GetLocalInt(oPC, "JUSTENTERED")) //On teste la variable d'entrée dans le module
    {
      DeleteLocalInt(oPC, "JUSTENTERED"); //On détruit cette variable de telle sorte que les autres OnEnter ne la retrouve pas
      SendPCToSpecificCamp(oPC); //Utilisation de la fonction qui s'occupe de déterminer la zone de départ.
    }
  }
}

J'ai imaginé la fonction SendPCToSpecificCamp qui peut être utilisée dans un autre cas de figure. Elle part du principe qu'il existe une variable persistance "CAMP" sauvée à l'aide de SetCampaignInt qui détermine le camp auquel appartien le personnage. Si cette variable n'existe pas, la valeur sera de 0 par défaut et on fera sauter le personnage sur le point de démarrage du module. S'il y est déjà, comme dans le cas de la toute première connexion au module, la transition sera imperceptible (il n'y aura pas de changement de zone).


Citation :
2. une fois dans le jeu, comment un joueur peut voir si tel ou tel joueur est dans le meme clan que lui ou non (j'avais pensé refaire toutes les armures en bleu pour un clan et en rouge pour l'autre mais c un boulot de dingue pour pas grand chose). en parcourant des forums, j'ai vu que c'etait possible avec un script qui jouait sur les factions et affichait directement l'autre personne comme ennemi ou ami. mais le script n'etait pas expliqué (ils disaient juste que c'etait assez important comme truc!) lien : [http]
Demande des précisions sur le sujet correspondant du forum en question. Les personnes qui ont placé les réponses le savent sûrement mieux que nous Smile


Citation :
3. lors de la mort d'un pj, probleme avec le respawn, j'utilise le script standard de nwn "nw_o0_respawn" ou dois-je rajouter une ligne pour que chaque pj respawn dans son camps?
Tu pourrais rajouter la fonction que j'ai créé plus haut pour effectuer la téléportation. Mais je n'ai pas le code que tu cites sous la main pour t'indiquer précisément où appeler cette fonction.
Une remarque sur les scripts que je t'ai donné, je n'ai pas eu le loisir de les tester. Ils sont relativement proches de ce que j'ai déjà fait dans un module. A une erreur de syntaxe près, ils devraient fonctionner.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 20/10/2003 14:58:48 Sujet du message :

bon, on va simplifier le truc :

1. oublions le script qui teleporte un joueur des son entree dans le module (dsl lendraste) mais il doit surement exister un script empechant un pj de drop un objet (comme ca, il ne pourrait pas avoir l'objet des deux camps) je me fais bien comprendre?

2. oublions le script pour voir les ennemis (comme ca il pourra y avoir des taupes, ...)

3. il me faudrait aussi absolument le script pour le respaxn des deux camps (la c obligé je vais pas faire respawn tout le monde au meme endroit!!) et au fait, je suis vraiment nul en script donc si vous pouviez me mettre le script avec la rajoute, ca serait gentil. (ou alors je fais une zone neutre pour le respawn, mais j'aimerai si possible pas devoir en arriver la)

merci d'avance
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 21/10/2003 08:57:51 Sujet du message :


xelone a écrit :
1. oublions le script qui teleporte un joueur des son entree dans le module (dsl lendraste) mais il doit surement exister un script empechant un pj de drop un objet (comme ca, il ne pourrait pas avoir l'objet des deux camps) je me fais bien comprendre?
On peut empêcher le drop d'un objet avec le script suivant placé dans le OnUnAcquireItem du module
Code :

void main()
{
  string sTagList = ";TAGOBJET1;TAGOBJET2;TAGOBJET3;"; //Liste des tags des objets indropables séparé par des points-virgules et sans espaces avec ; au début et à la fin
  object oCreature = GetModuleItemLostBy(); //Créature ayant dropé l'objet (de quelque façon que ça soit)
  object oItem = GetModuleItemLost(); //Objet dropé (quelle que soit la manière)
  string sItemName = GetName(oItem); //Récupération du nom de l'objet
  string sItemTag = GetTag(oItem); //récupération du tag de l'objet
  if (FindSubString(sTagList, ";" + sItemTag + ";")>=0)
  {
    //Le tag de l'objet appartient à la liste des tag d'objets indropables
    CopyObject(oItem, GetLocation(oCreature), oCreature, sItemTag); // Copie de l'objet dropé dans l'inventaire de la créature
    DestroyObject(oItem); // Destruction de l'objet dropé
    if (GetIsPC(oCreature))
    {
      // La créature est un joueur, envoie d'un message
      SendMessageToPC(oCreature, "Vous ne pouvez pas vous débarrasser de " + sItemName);
    }
  }
}


La valeur de la chaîne sTagList est bien sûr à remplir selon tes besoins. Tu peux y mettre autant de tag d'objet indropable que la capacité d'un string le permet (donc large Mr. Green )
On peut assez facilement transformer le script pour travailler sur les ResRef au cas ou les Tag serait personnalisés.
Je l'ai reproduit de mémoire, car je n'ai pas mes scripts sous la main, ni Aurora pour le tester.
Ceci réponds à ta question 1. Pour le reste je n'ai pas la possibilité de répondre présentement, mais ce que tu demandes dans le 3 est possible. Il faut juste un peu de patience que quelqu'un y réponde Smile
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 21/10/2003 17:32:36 Sujet du message :

merci a toi lendraste
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 22/10/2003 15:03:38 Sujet du message :

euh, lendraste, est ce que ce script empeche aussi le marchandage de l'objet?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 22/10/2003 15:08:06 Sujet du message :


xelone a écrit :
euh, lendraste, est ce que ce script empeche aussi le marchandage de l'objet?
Probable que non. Mais ça risque d'entrer en conflit avec la vente dans le sens ou la vente sera accepté, mais l'objet reviendra quand même dans l'inventaire. Le plus sûr est aussi de cocher la case relative aux objets de quête.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 22/10/2003 15:09:25 Sujet du message :

et existe t il un moyen de le rendre impossible a marchander?
 
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 320.463ms