Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > selection d'un joueur
selection d'un joueur
Par Iridian le 28/11/2002 à 11:28:27 (#2662573)
-Je sélectionne un joueur dans la liste.
-J'active le pouvoir spécial de l'item.
-Dans le script je récupère l'objet "oPc" du joueur sélectionné.
Si ce n'est pas possible, n'importe qu'elle méthode de sélection a distance me conviens (sauf viser le joueur, je voudrais que ça puisse marcher même hors de vue)
Merci d'avance de vos conseils !
Par Nylou le 28/11/2002 à 11:44:39 (#2662681)
oups ! désolée j'ai posté trop vite. :p
Par eMRaistlin le 28/11/2002 à 11:53:02 (#2662735)
Voila : C'est non testé, mais ca devrait pouvoir marcher :
On ItemActivated
void main()
{
//Declaration des variables
object oPC = GetItemActivator();
object oItem = GetItemActivated();
//verification que seul un MJ peut utiliser l'item DMHELP
if (GetTag(oItem) == "DMHELP")
{
if GetIsDM(oPC)
{
//Creation de l'assistant
CreateObject(OBJECT_TYPE_CREATURE,"dm_henchmen",GetLocation(oPC));
}
}
}
Dans le OnSpawn de la creature dm_enchmen
void main()
{
//ici, j'initialise le mode ecoute
SetListening(OBJECT_SELF,TRUE);
//ici, je lui demande d'ecouter tout ce qui est precede d'un '/'
SetListenPattern(OBJECT_SELF,"/**",6000);
}
Dans son OnConversation :
void main()
{
//declaration des variables
int nMatch = GetListenPatternNumber(); //Une fois reperée la chaine de caractere, il affecte un numero :(le 6000 du Set)
//ici, je declare une variable qui va permettre de verifier que le PC en question est trouve
int nTrouve = 0;
if(nMatch == 6000)
{
//ici, je recupere la ligne qui est a la 2eme place dans la chaine reconnue ( "/" + "nom" = 2)
string sPlayerName = GetMatchedSubstring(1);
//boucle de verification des noms
object oPC = GetFirstPC();
while (GetIsObjectValid(oPC))
{
if (GetName(oPC) == sPlayername)
{
nTrouve = 1;
// ICI, TU FAIS CE QUE TU VEUX
SendMessageToAllDMs("Operation reussie");
}
oPC = GetNextPC();
}
// si la variable nTrouve n'est pas a 1, c'est que le nom entre n'est pas bon
if (nTrouve != 1)
{
SendMessageToAllDMs("Verifiez le nom du joueur Cherche");
}
}
}
tu n'oublie bien sur pas de Creer un NPC invisible DMHelper, et en jeu, tu tape /nom_du_joueur pour activr ta commande.
Apres, a toi de remplacer le //ICI... par un SetLocalObject ou ce que tu veux!
C'est ca que tu voulais ??
Par Iridian le 28/11/2002 à 13:39:01 (#2663526)
Mais la j'avoue que je ne comprend pas tout :o
En tout ças merci, j'essaie ça ce soir et je verrais bien !
Ce qui serais génial, ce serai que tu commentes ton code (de façons assez détaillée) pour que je comprenne et que ça fasse avancer mes connaissances ;)
Mais c'est déjà très bien comme ça, merci encore :merci:
Par eMRaistlin le 28/11/2002 à 14:27:19 (#2663928)
Par Iridian le 28/11/2002 à 16:23:30 (#2664849)
Je ne lit pas ce forum depuis longtemps, mais j'ai déjà appris la valeur de tes conseils sur les autres posts
Par eMRaistlin le 28/11/2002 à 20:25:06 (#2667051)
Par Iridian le 29/11/2002 à 9:23:00 (#2670043)
Une seule question :
ça : if GetName(oPC == sPlayername)
se serai pas plutôt : if (GetName(oPC) == sPlayername)
parce que sinon ba j'ai pas compris :sanglote:
Par eMRaistlin le 29/11/2002 à 9:27:13 (#2670060)
voila ce que c'est de scripter loin du toolset...
JOL Archives 1.0.1
@ JOL / JeuxOnLine