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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Pb de quete.

Par Zerpex le 27/9/2002 à 2:30:20 (#2240676)

Bonjour,

J'ai un petit soucis avec les quetes en multiplayers.
Je fait une quete bidon :

Un NPC demande au PC de trouver un anneau.
Le PC trouve l'anneau et le rapporte.

Mon soucis, est qu'en multiplayers, si un joueur lambda active la quete et qu'un joueur beta ramasse l'anneau (une fois la quete activée), alors le joueur beta vois son journal de quete mis à jour.

J'ai beau mettre un marqueur (SetPCSpeaker) sur le joueur lambda, le jeu réagis comme si mon marqueur était également sur le joueur beta (qui n'est pas dans la même coterie).

la seule parade dont je dispose actuellement, est que le NPC qui donne la quete donne un objet au PC dont le tag vérifie la condition qui fait avancer la quete (le PC doit porter l'objet sur lui pour pouvoir faire avancer la quete lorsqu'il ramasse l'anneau).

Je débute en scripting et je me retrouve un peu bloqué. Toute aide sera la bienvenue :)

Par Azrael07 le 27/9/2002 à 7:06:13 (#2240955)

Si j'ai bien compris, tu veut k'il n'y ai ke le joueur qui a demandé la quete ki puisse la completé ?

Aucun problèmes, il suffit que tu enregistre le joueur dans une variable locale :

a mettre dans la conversation où la quete est donnée :


void main()
{
object oPlayer = GetPCSpeaker();
SetLocalObject(GetModule(), "QueteAnneau", oPlayer);
// Ajoute aussi la mise a jour du journal, et pis qlq trucs ke j'aurais oublié
}


et pis dan sla conv ou la quete se termine :


void main()
{
object oPlayer = GetPCSpeaker();
object oTruePlayer = GetLocalObject(GetModule(), "QueteAnneau");
if ( oPlayer == oTruePlayer)
{
//La met le script de reconnaisance de l'objet, et pis la mise a jour du journal c le joueur a le vrai objet, ect....
}
}


sinon la solution de donner un objet au joueur marche aussi bien evidement, mais pour celle la pas besoin d'objet :)

Par Zerpex le 27/9/2002 à 13:33:58 (#2242791)

OK, merci, je vais tester ca. En effet, ca a l 'air simple ;)

Par Zerpex le 27/9/2002 à 15:01:19 (#2243499)

Yessssss, ca fonctionne. Merci milles fois :)

Je n'avais pas penser a stocker le nom du PC dans une variable, c tout bete en fait ;)

Par Zerpex le 27/9/2002 à 16:55:36 (#2244232)

OK, j'ai quand meme un petit soucis, le script fonctionne très bien dans le cadre d'un dialogue, mais je n'arrive pas a l'impémenter dans un OnAcquireItem.

Il considère la condition comme étant tout le temps vérifiée, donc met à jour le journal de n'importe quel PC qui ramasse l'anneau.

Par Azrael07 le 27/9/2002 à 17:46:58 (#2244567)

ben mon 2e script n'est pas fait pour le OnAquiertItem, mais pour une seconde conversation avec le npc

il faut ke tu remplace le

object oPlayer = GetPCSpeaker();

car le player n'étant pas en train de parler, ben il ne sera pas initialisé en appelant le dernier joueur ki parle(en comme le dernier joueur ki parle c suremnet toi, ben ca va initialiser le bon objet)

JOL Archives 1.0.1
@ JOL / JeuxOnLine