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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

XP Award à l'ouverture d'une porte?

Par Xune Vrinn le 29/6/2002 à 14:51:01 (#1729893)

Je l'avais déjà dit : je suis une pive au scripting.


Bon, en gros... j'aimerais que mon groupe entier gagne de l'XP au moment où une porte importante est ouverte.

Pour le moment, mon script ressemble à ceci :


//::///////////////////////////////////////////////
//:: FileName at_013
//:://////////////////////////////////////////////

#include "nw_i0_tool"

void main()
{
object oPCActivator;

oPCActivator = GetLastUsedBy();

// Give the party some XP
RewardPartyXP(1000, oPCActivator);

}


Quelqu'un peut m'aider un peu? ;)

Par ZeDuckMaster le 29/6/2002 à 15:10:25 (#1729989)

d'un point de vue prog ca m'a l'air d'etre nickel...
t'as pu qu'a mettre ce script sur l'evenment OnUsed de la porte importante
y'a un truc qui marche pas, ou c'est que tu demandes simplement l'avis general ?

Par Xune Vrinn le 29/6/2002 à 15:42:39 (#1730120)

Ben... ça a tendance à ne RIEN faire quand je le mets dans l'event OnUnlock. ;)

Si je le mets dans OnOpen, il n'y a qu'à s'amuser à faire ouvrir et fermer la porte à chacun des membres du groupe pour faire du XP grats...

Par Myvain le 29/6/2002 à 18:06:27 (#1730713)

Pour la distibution d'expérience, c'est pas plutôt: GiveXPToCreature( object oCreature, int nXpAmount ); ?

ex:
object oPC = GetLastUnlocked();
GiveXPToCreature (oPC, 1000);

Ca devrait attribuer 1000 point d'XP au joueur ayant crocheté la porte.
Par contre pour attribuer l'XP à tout un groupe j'ai pas regardé, mais il y a un exemple par >> là << en utilisant le système des factions.

Tu peux aussi essayer de créer un trigger aux environs de la porte qui se chargerait de donner l'experience à tout ceux qui se trouve à l'intérieur de ce trigger, et tant pis pour celui qui est parti faire un tour plus loin. :p

Par ZeDuckMaster le 29/6/2002 à 19:01:37 (#1730922)

RewardPartyXP est une fonction valide et qui existe (implémentée dans nw_i0_tool.nss)

par contre, l'evenement OnUnlock semble etre un peu obscure ... en effet lorsqu'on unlock un objet, le script associé ne semble pas etre appelé ...

quant a GetLastUnlocked, il ne renvoie que des objets invalides .....

bref, pas encore tres clair tout ca ....

Par ZeDuckMaster le 29/6/2002 à 19:38:03 (#1731084)

bon apparemment il semblerait qu'il y ait un bug avec l'evenement OnUnlock (et donc peut etre avec GetLastUnlocked ....)

sinon voila une solution inspirée du script par defaut des conteneurs, et qui donne de l'xp pour la faction du premier qui l'ouvre (ce qui implique que la porte a ete unlockée ;) ) et cela qu'une seule fois ...


#include "nw_i0_tool"

void main()
{
if(GetLocalInt(OBJECT_SELF,"UNLOCK_ONCE")!=0)
{
return;
}
object oLastOpener = GetLastOpener();
RewardPartyXP(1000, oLastOpener);
SetLocalInt(OBJECT_SELF,"UNLOCK_ONCE",1);
}


a mettre bien sur dans OnOpen

Par Xune Vrinn le 30/6/2002 à 1:37:25 (#1732470)

Ok, ton script fonctionne, MAIS.... GetLastOpener() n'existe pas.

Il faut remplacer par la fonction GetLastUsedBy().

Merci encore.

Par ZeDuckMaster le 30/6/2002 à 1:52:16 (#1732512)

oups autant pour moi, faute de frappe
il fallit bien evidemment lire "GetLastOpenedBy()" et pas GetLastOpener() ;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine