Exp maximale a la mort d'un monstre

Répondre
Partager Rechercher
Bonjour.

Je m'explique, je fait tourner un module nwn, mais j'ai quelques problèmes concernant l'xp obtenue a la mort d'un monstre. J'ai modifié les FP des monstres concernés, cela deviens correct lorsqu'on tue le monstre seul, mais dès qu'on amène un plus bas lv avec nous, ben on se chope a nouveau énormément d'xp (je suis arrivé a me prendre 2050xp avec un monstre)

Je compte baisser un peu le ratio d'xp, mais pas énormément ( car mis a part ce problème, l'xp que l'on obtient est convenable, ~150 par monstre de notre lv, au lv17 ), mais si je veux que l'xp obtenue en amenant un bas lv soit tout aussi correcte, ben il me faudra mettre un ratio d'xp tel qu'on se chope 1, voir 2xp en solo.. bref, chose impensable.

J'ai déjà vu sur quelques serveurs, qu'on ne pouvais pas dépasser, par exemple, 600xp par monstre en solo, 300 à deux, 200 à 3,... J'aimerais savoir comment limiter cette exp maximale que l'on obtient à la mort d'un monstre, j'ai regardé dans aurora, mis a part le ratio, je n'ai rien trouvé, et je ne toucherai pas au ratio de suite.

Alors, est-ce qu'il y a moyen de limiter cette exp par un script quelquonque ? De quel genre ?
Il faut mettre le ratio à 0 et creer un script sur le "on death" du monstre qui donne l'xp. Il ya un certaion nombres de systeme d'xp disponibles sur le vault. Sinon tu peux le faire peut-etre toi même.

Une bonne idée c'est XP gagnée= (lvl monstre-lvl tueur du monstre)*CONST_XP_GAGNEE- (plushaut_level_du_groupe - plusbas_level_du_groupe)*CONST_MALUS_XP_DIFFLEVELS + CONST_BONUS_GROUPE*nb_perso_du_groupe_dans_zone.

Voila, voila! Et tout ca dans le on_death avec des GetKiller() et compagnie. Ceci dit, le sujet a d&jà été abordé! Fonction recherche!

PS: D'ailleurs, sans vouloir me vanter, je dois être un des premiers à avoir suggéré un tel calcul de l'xp :P Au moins en langue française l'anti XP Farming et Power Levelling ^^
Oulah... cela implique de refaire TOUS les monstres?

On px dire que je suis mal barré ^^; Enfin je vais voir sur le vault, merci ^^

ps : recherche = 0 résultat sur exp, expérience, maximale,... j'avais déjà essayé ^^;
En plus de la recherche, vous avez le sujet persistant du sommaire des scripts sur ce même forum.

Et dedans, il y a un lien vers un sujet parlant de scripts gérant l'xp (bon ok ici c'est un script à moi, mais c'est une coïncidence hein )

Gain d'xp personnalisé
Normalement tu n'auras que le script "nw_c2_default7" à modifier. C'est le script OnDeath par défaut. Tu pourras vérifier le bon fonctionnement, en y rajoutant la petite ligne :
Code:
SpeakString("Aaaaaarghl jeu meuuuure... "+GetName(GetLastKiller())+" ma tuer !...");
(Fautes d'orthographes non-facturées)
Code:
 //:://////////////////////////////////////////////////
   //:: NW_C2_DEFAULT7
   /*
     Default OnDeath event handler for NPCs.
   
     Adjusts killer's alignment if appropriate and
     alerts allies to our death.
    */
   //:://////////////////////////////////////////////////
   //:: Copyright (c) 2002 Floodgate Entertainment
   //:: Created By: Naomi Novik
   //:: Created On: 12/22/2002
   //:://////////////////////////////////////////////////
   
   #include "x2_inc_compon"
   #include "x0_i0_spawncond"
   
   void main()
   {
   	int nClass = GetLevelByClass(CLASS_TYPE_COMMONER);
   	int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
   	object oKiller = GetLastKiller();
   
   	// If we're a good/neutral commoner,
   	// adjust the killer's alignment evil
   	if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
   	{
   		AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5);
   	}
   
   	// Call to allies to let them know we're dead
   	SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);
   
   	//Shout Attack my target, only works with the On Spawn In setup
   	SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
   
   	// NOTE: the OnDeath user-defined event does not
   	// trigger reliably and should probably be removed
   	if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
   	{
   		 SignalEvent(OBJECT_SELF, EventUserDefined(1007));
   	}
   	craft_drop_items(oKiller);
   }
Voila mon nw_c2_default7, il s'agit d'un changement d'alignement, et rien pour l'xp... *ne capte plus rien*

J'ai regardé les include, encore une fois la dedans on ne parle nulle part d'assigner de l'xp au joueur...
C'est normal, l'XP est attribuée de manière codée en dur, et non par le biais du script.

Tu peux, dans les propriétés du module, mettre la barre d'XP à 0%, puis rajouter dans ce joli script un code personnalisé d'XP.



@lea_andersteen : Ben j'aimais bien ma phrase, moi, avec toutes ces jolies fautes d'orthographe...
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés