Elleslande Module pour NWN
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Elleslande Module pour NWN

Forum d' Elleslande, module RP pour Neverwinter Nights
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 [GENERAL] Progression des PJs sous condition

Aller en bas 
3 participants
AuteurMessage
Astarode
Admin
Astarode


Nombre de messages : 374
Age : 53
Localisation : Elleslande
Date d'inscription : 16/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: [GENERAL] Progression des PJs sous condition   [GENERAL] Progression des PJs sous condition EmptyDim 26 Fév - 20:40

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 script
Le 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
Like a Star @ heaven à tout moment via SQLYog (en manuel) ;
Like a Star @ heaven 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" :
Like a Star @ heaven Le niveau fraîchement acquis est en concordence avec la valeur de "LvlMax" et tout se passe bien (le joueur est félicité) ;
Like a Star @ heaven 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.

NOTA
Si 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).


Dernière édition par le Mar 7 Mar - 22:29, édité 1 fois
Revenir en haut Aller en bas
https://elleslande.1fr1.net
Silk
Faiseur d'Univers
Silk


Nombre de messages : 298
Age : 46
Localisation : Albi
Date d'inscription : 20/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: oui   [GENERAL] Progression des PJs sous condition EmptyMar 28 Fév - 14:03

oui il y a la fonction GetHitDice qui permet de connaitre le nombre de dé de vie (donc le niveau). Ensuite tu fait une boucle ou tu enlève les XP 10 par 10 jusqu'à ce que le HitDice ai diminué de 1 !!!!



La voilà la solution m'sieur !

Par exemple tu fait :
Citation :

iDecrease = GetHitDice(oTarget)
while (GetHitDice(oTarget) ==iDecreased)
do GiveXPToCreature(oTarget,-10);

voilà monsieur, suffisait de demander...
Revenir en haut Aller en bas
http://aidtarn.free.fr
Manwae Dlardrageth
MD
Manwae Dlardrageth


Nombre de messages : 53
Localisation : Le Blanc (36)
Date d'inscription : 16/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: Re: oui   [GENERAL] Progression des PJs sous condition EmptyMar 28 Fév - 22:26

Silk a écrit:
oui il y a la fonction GetHitDice qui permet de connaitre le nombre de dé de vie (donc le niveau). Ensuite tu fait une boucle ou tu enlève les XP 10 par 10 jusqu'à ce que le HitDice ai diminué de 1 !!!!



La voilà la solution m'sieur !

Par exemple tu fait :
Citation :

iDecrease = GetHitDice(oTarget)
while (GetHitDice(oTarget) ==iDecreased)
do GiveXPToCreature(oTarget,-10);

voilà monsieur, suffisait de demander...

Pas c** comme raisonnement
Revenir en haut Aller en bas
Astarode
Admin
Astarode


Nombre de messages : 374
Age : 53
Localisation : Elleslande
Date d'inscription : 16/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: Re: [GENERAL] Progression des PJs sous condition   [GENERAL] Progression des PJs sous condition EmptyMer 1 Mar - 1:12

Après avoir repris l'idée de Silk et fait quelques corrections, le script de base devient donc :
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 Lvl = GetHitDice(oPC);
if (Lvl <= lvlmax)
{
effect eEffect = EffectVisualEffect(VFX_DUR_PIXIEDUST);//A changer suivant l'effet désiré
sText = "* Félictations, " + sPCName + " a atteind le niveau " + IntToString(nHD) + " *" ;
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oPC, 30.0f);
}
else
{
sText="* Désolé, " + sPCName + " n'a pas encore reçu l'aval des MDs pour pouvoir accéder au niveau " + IntToString(nHD) + " *" ;
do SetXP(oPC,GetXP (oPC)-50);
while (GetHitDice(oPC) > Lvl-1);
}

FloatingTextStringOnCreature(sText,oPC);
}


Dernière édition par le Mar 7 Mar - 22:30, édité 2 fois
Revenir en haut Aller en bas
https://elleslande.1fr1.net
Silk
Faiseur d'Univers
Silk


Nombre de messages : 298
Age : 46
Localisation : Albi
Date d'inscription : 20/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: mmmm   [GENERAL] Progression des PJs sous condition EmptyMer 1 Mar - 9:23

Il ne fait pas mettre le "-1"
Tel que je te lis :
"fait perdre de l'XP"
"tans que le nombre de dé de vie est égale à niveau -1" !!
Or il faudrait plutot dire :
tans que le nombre de dé de vie est égale au niveau actuel
Citation :

Puisque on veut justement le faire baisser son niveau...


Pour : GetXP (oPC)-50
tu devrais peut être le mettre dans une parenthèse interne ou le remplacer par une variable précédemment car je ne suis pas sur que ça marche comme ça...

Si tu intègres le script à Elleslande renvoi moi le module, je vais faire prochainement un peu de ménage...Déjà je vais enlever les map inutile (tu en conserve une sauvegarde quelque part) comme les plan des éléments, car comme tu l'a dit, le module est lourd et NWN2 sort au deuxième semestre...d'ici là je doute que ces fameuses carte soit utile, autant optimiser. J'intègrerai aussi la dernière version des outils du DMFI dès que je l'aurais traduit en français (c'est de la que je tiens l'idée du GetHitDice !)
Revenir en haut Aller en bas
http://aidtarn.free.fr
Astarode
Admin
Astarode


Nombre de messages : 374
Age : 53
Localisation : Elleslande
Date d'inscription : 16/11/2005

[GENERAL] Progression des PJs sous condition Empty
MessageSujet: Re: [GENERAL] Progression des PJs sous condition   [GENERAL] Progression des PJs sous condition EmptyMer 1 Mar - 22:48

Script corrigé avec >
Revenir en haut Aller en bas
https://elleslande.1fr1.net
Contenu sponsorisé





[GENERAL] Progression des PJs sous condition Empty
MessageSujet: Re: [GENERAL] Progression des PJs sous condition   [GENERAL] Progression des PJs sous condition Empty

Revenir en haut Aller en bas
 
[GENERAL] Progression des PJs sous condition
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Elleslande - Background général
» [GENERAL] Comment présenter vos scripts !
» [GENERAL] Lire et écrire dans une table
» [GENERAL] "honor" : une table de base d'Elleslande

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Elleslande Module pour NWN :: Zone technique :: Aurora : Trucs et astuces pour l'éditeur de NWN-
Sauter vers: