Bloquer la progression en niveau

Répondre
Partager Rechercher
J'ai beau cherché avec l'option "recherche", il n'indique jamais de résultat
Alors, je vais le demander directement ^^

J'aimerais savoir s'il y aurait une possibilité de bloquer les gains d'XP lorsque l'on en a obtenu assez pour monter de niveau et de faire que le PJ ne puisse pas monter de niveau sans une condition du genre, se rendre au camp d'entraînement, etc...

Merci d'avance
Un moyen :

- Récupérer un script d'XP personnalisé (basé sur le OnDeath générique), et mettre la barre d'XP à 0

- Avant de donner de l'expérience au joeur, vérifier si (à partir du OnDeath générique modifié, donc) le joueur à une variable "nVariable" à 1, ou si l'XP du joueur est supérieure ou égale à l'XP minimum qu'il aurait en ayant atteint le niveau supérieur, et dans ce cas lui coller la variable nVariable à 1. L'ordre des vérifications est moyennement importante.
( L'xp a atteint le bon palier si : [Niveau du joueur + 1] x [Niveau du joueur] x 500 )

- Rajouter ces petites vérifications dans le script d'xp (basé sur le OnDeath générique) :
Code PHP:

if(GetLocalInt(oKiller,"VARIABLE")==1)
    return;

else
{
    
int nLevel GetHitDice(oKiller);
    
nLevel = (nLevel+1)*nLevel*500;
    if(
GetXP(oKiller)>=nLevel)
    {
        
SetLocalInt(oKiller,"VARIABLE",1);
        return;
    }
    else
    {
        
// le reste du script d'xp vient ici. 
- Dans le OnPlayerLevelup (ou un nom similaire, je ne sais plus...), faire perdre un niveau au joueur s'il a la variable nVariable à 1.

- Enfin, un script (dans le dialogue du maître du camp d'entrainement par exemple) vient mettre la variable nVariable à 0.



- (optionnel) Faire le même système de vérification pour tout ce qui donne de l'XP dans ton module (notamment les quêtes).

- (optionnel) Interdire les MDs de ton module de donner de l'XP...



[Le tout sous réserve de tests]
sinon y a un system tout fait pour cela que tu dois pouvoir trouver sur le vault.
c'est un system d'entraineur, si mes souvenirs sont bon ca doit le css ou ccs comme nom.

Tant que tu ne vas pas voir un entraineur tu ne peux pas passer de lvl.
Je parlais du OnDeath générique des monstres, c'est à dire le script "nw_c2_default7" (je crois bien...).

Sinon il y a une autre méthode (je ne sais pas s'il faudra faire un hak ou juste un coup d'Override côté serveur), c'est modifier le fichier 2da relatif aux classes, soit classes.2da, rajouter à chaque classe une référence vers un autre fichier 2da (un par classe à créer), et y rajouter un prérequis de type "variable". En mettant cette variable à 1 sur le joueur dès sa connexion, elle empêche celui-ci de passer un niveau (la classe devient grisée, au moment du passage de niveau). Un entraîneur peut faire passer cette variable à 0, puis elle se remet à 1 dans l'évènement OnPlayerLevelup.

C'est quand même plus compliqué que la méthode par script, ça nécessite quelques tests, mais c'est plus propre qu'un script qui fait perdre un niveau au joueur.
Oui, comme celles déjà présentes pour les classes de prestige. En l'occurrence, si la variable donnée est à 1, il est impossible de passer un niveau. On peut tout à fait inverser la chose, et modifier les fichiers 2DAs concernés en définissant une variable pré-requise à 1, ce qui rendrait le passage de niveau impossible par défaut, pratique pour facilité le côté script.

On peut même aller plus loin en faisant un entraîneur par classe, ou mieux contrôler les niveaux par classe lorsqu'un joueur choisit le multiclassage, ou même interdire une classe si un joueur en a choisi une précédemment et que l'on a défini comme incompatible avec une autre classe... Le seul défaut est qu'à la création de personnage, on ne peut pas profiter de ces changements... J'aurais bien restreint le paladin aux humains uniquement et/ou interdit les magiciens aux nains, moi...
Citation :
Publié par Deyonara
C'est quand même plus compliqué que la méthode par script, ça nécessite quelques tests, mais c'est plus propre qu'un script qui fait perdre un niveau au joueur.
Un simple script qui enlève le dernier niveau passé et redonne les XP est, je trouve, drôlement plus simple à mettre en place et donne les mêmes résultats, vu qu'après une petite période plus personne ne passera de niveaux dans le vent, sachant qu'en cas de tentative son perso reperdra son niveau direct.
Citation :
Publié par kermo
Un simple script qui enlève le dernier niveau passé et redonne les XP est, je trouve, drôlement plus simple à mettre en place et donne les mêmes résultats, vu qu'après une petite période plus personne ne passera de niveaux dans le vent, sachant qu'en cas de tentative son perso reperdra son niveau direct.
C'est ce que je disais, dans l'idée, dans la partie que tu as citée.

Mais c'est quand plus propre d'avoir les classes grisées, plutôt que de balancer un script qui peut ne pas marcher (oui ça m'est arrivé pendant des tests, de voir le script qui avait fonctionné plusieurs fois ne pas faire son oeuvre la fois d'après), qui fait quand même un peu bourrin (j't'enlève un niveau, tiens !), et qui mine de rien est un poil plus lourd qu'un tout petit "if(GetLocalInt(oPlayer,"CLASSE")==1)" (mais bon c'est chercher la petite bête, là)...
Je confirme Dayo....
J'ai un scripte du genre sur le val de bise. Et régulierement un joueur vient se plaindre. Il était en train de crafter et il a perdu son XP. Il était en train de taper un monstre et il a perdu son xp........ bref il ne passait aps son level, et il a prit le malus d'un autre!
Répondre

Connectés sur ce fil

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