Elleslande Module pour NWN

Forum d' Elleslande, module RP pour Neverwinter Nights
 
AccueilCalendrierFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 [GENERAL] Progression des PJs sous condition

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Astarode
Admin
avatar

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

MessageSujet: [GENERAL] Progression des PJs sous condition   Dim 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
Voir le profil de l'utilisateur http://elleslande.forumzen.com
Silk
Faiseur d'Univers
avatar

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

MessageSujet: oui   Mar 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...

_________________
----------------------------------------
Peut être que l'on se retrouvera ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aidtarn.free.fr
Manwae Dlardrageth
MD
avatar

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

MessageSujet: Re: oui   Mar 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

_________________
-----------------------------------------------------------
La Mort est un manque de Savoir Vivre...
-----------------------------------------------------------
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Astarode
Admin
avatar

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

MessageSujet: Re: [GENERAL] Progression des PJs sous condition   Mer 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
Voir le profil de l'utilisateur http://elleslande.forumzen.com
Silk
Faiseur d'Univers
avatar

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

MessageSujet: mmmm   Mer 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 !)

_________________
----------------------------------------
Peut être que l'on se retrouvera ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aidtarn.free.fr
Astarode
Admin
avatar

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

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

Script corrigé avec >
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://elleslande.forumzen.com
Contenu sponsorisé




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

Revenir en haut Aller en bas
 
[GENERAL] Progression des PJs sous condition
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» La diaspora veut retourner en Haïti sous condition
» Un sous-vêtement dans l'arbre [Libre]
» Obama fait campagne sous la pluie alors que McCain annule...
» Un sous-commissariat à Grand'Ravine
» Un temple sous terre [PV Kusari]

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: