Il peut être intéressant de limiter la progression des PJs afin d'éviter de n'avoir QUE des niveaux 40, mais aussi pour récompenser les PJs s'investissant dans leur background, rôle play ou tout autre critère de votre choix. C'est le choix qui a été fait sur Elleslande, et dont l'explication peut être consultable
ici.
Ce script est à insérer dans le "OnPlayerLevelUp" du module (Propriété du module/Evénements)
Le script - Citation :
- //::///////////////////////////////////////////////
//:: Name Level Limiter
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Ce script permet d'imposer des conditions avant qu'un joueur ne puisse progresser sur le module.
Ici, la valeur LvlMax, stockée dans la base de données sert de référenceau niveau max que peut atteindre un PJ
*/
//:://////////////////////////////////////////////
//:: Created By: Astarode
//:: Created On: 26 fev. 2006
//:://////////////////////////////////////////////
#include "functions"
void main()
{
object oPC=GetPCLevellingUp();
int lvlmax = GetLvlMax(oPC);
string sPCName = GetName(oPC);
string sText;
int nHD = GetHitDice(oPC);
if (nHD <= lvlmax)
{
effect eEffect = EffectVisualEffect(VFX_DUR_PIXIEDUST);//A changer suivant l'effet visuel désiré
sText = "* Félictations, " + sPCName + " a atteind le niveau " + IntToString(nHD) + " *" ;
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oPC, 30.0f);
}
else
{
int XP=GetXP (oPC);
SetXP(oPC,XP-500);
sText="* Désolé, " + sPCName + " n'a pas encore reçu l'aval des MDs pour pouvoir accéder au niveau " + IntToString(nHD) + " *" ;
}
FloatingTextStringOnCreature(sText,oPC);
}
Le fonctionnement du scriptLe choix qui retenu a été de créer un compteur, "LvlMax", dans la table "honor" contenant la valeur du niveau maximum que peut atteindre le PJ.
Cette valeur est à 5 par défaut.
Ce choix trouve sont fondement dans 2 raisons : La valeur de "LvlMax" peut être modifiée
à tout moment via SQLYog (en manuel) ;
sous condition d'avoir réussi une quête, parler à un PNJ, etc... (automatiquement via un script implémenté dans le module)
Dans ces conditions, lorsque le PJ a suffisemment d'XP pour monter de niveau et choisi de monter son personnage, 2 possibiltés s'ouvrent à lui en fonction de la valeur du compteur "LvlMax" :
Le niveau fraîchement acquis est en concordence avec la valeur de "LvlMax" et tout se passe bien (le joueur est félicité) ;
Le nouveau niveau est supérieur au niveau autorisé par "LvlMax" et le PJ est avisé qu'il n'a pas reçu l'aval des MDs pour acquérir ce niveau. Il perd alors 500 XP (afin de retomber d'un niveau). Il est a noté que ce choix de 500 XP est arbitraire mais permet de s'assurer qu'un PJ qui aurait été à la limite du franchissement de niveau (ex. : 2999 pour 3000 XP) et qui aurait gagné 300 XP ne se retrouve pas tout de même au dessus du seuil du nouveau niveau (ex. : 3099) malgré la perte d'XP.
NOTASi quelqu'un a une fonction pour traduire les XP en niveau je suis preneur. Il suffirait d'oter de remettre les XP du PJ à la limite haute du niveau autorisé (et suprimerait la perte arbitraire de 500XP).