Retirer XP...

Répondre
Partager Rechercher
Dans le Toolset se trouve une fonction Give_XP donnant donc des xp au personnage. Par contre je n'ai pas vu de fonction permettant d'en enlever... j'ai mal vu? lol ^^
D'avance merci
J'ai pas le Toolset sous la main là, mais y-a pas une fonction du genre SetXP ou quelque chose dans le genre...? (me souviens plus ce qu'elle raconte par contre enfin, si elle existe bien ^^)
J'ai cru comprendre que le retrait d'xp sur nwn2 ne prenait pas en compte le level, c'est à dire que si le retrait fait baisser de level, le personnage reste à son level d'avant, j'ai bien compris? (je sais pas si j'ai été clair ^^ )
Pour un pj :
En faisant baisser l'XP, le niveau baisse également
En augmentant l'XP, le niveau n'augmente pas

A mon avis ça doit être pareil avec les pnj
Sinon il y a la fonction
Citation :
ResetCreatureLevelForXP(...)

void ResetCreatureLevelForXP
(
object oTargetCreature,
int nExperience,
int bUseXPMods
)
Paramètres :
- oTargetCreature : La créature concernée.
- nExperience : Le montant d'expérience désiré.
- bUseXPMods : Détermine si un modificateur d'expérience doit être appliqué avant d'attribuer l'expérience.
Description :
Le niveau de la créature désignée par oTargetCreature sera mis à 0, et le montant d'expérience défini par nExperience lui sera attribué. La créature montera automatiquement au niveau correspondant à l'expérience définie, en utilisant l'archétype défini dans ses propriétés.
Merci pour l'aide mais alors moi et les scripts ça se résume à appuyer sur "compiler" et voir si ça fonctionne ou presque lol :P

Sinon, n'y a t-il pas un moyen d'adapter dans un dialogue en script d'Action, le script qui est exécuté au moment du respawn dans un dialogue? Celui qui gère le retrait d'xp et d'or en fonction du niveau, car ça conviendrait bien à ce que je veux faire

Si c'est possible, je suis preneur
Que veux tu dire par " le script qui est exécuté au moment du respawn dans un dialogue" ?

J'ai fait des tests :
le code de mythyzyn fonctionne très bien pour enlever des lvls, mais ne fait pas lvlup automatiquement (logique)
ResetCreatureLevelForXP est foireux, car il modifie le lvl de la créature en lui faisant suivre depuis le début son archétype de départ (archétype = build). Par exemple si son archétype est prêtre, il aura x lvl de prêtre, même si la créature avait y lvl d'une autre classe juste avant d’exécuter la fonction.
Alors il s'agit de celui qui applique les pénalités d'xp et d'or au moment ou on clique sur "Respawn"
Je sais pas si c'est possible de le modifier en script "action" pour le mettre en conséquence d'un dialogue...
Le script qui s'execute lors du respawn du joueur est "gui_death_respawn", et peut très bien être mis dans un dialogue, même si je ne vois pas trop l'utilité...
Oui vu comme ça... en faite je ne trouve pas la partie du script qui gère le retrait d'xp en fonction du niveau lorsque le personnage respawn j'aurai peut être pu récupérer cela...

Par contre en fouillant un peu on trouve le script ci-dessous mais ce n'est pas un script d'action :

Code PHP:

void AppliquePenalite (object oPC)
{
 
    
int iXP GetXP (oPC);
    
int iLvl GetHitDice (oPC);
    
int iPenalite 50 iLvl;
    
int iMin = ((iLvl * (iLvl 1)) / 2) * 1000;
 
    
int iNouvXP iXP iPenalite;
 
    if (
iNouvXP iMin)
      
iNouvXP iMin;
   
SetXP (oPCiNouvXP);
 

Citation :
Publié par OVLORD
Code PHP:

void AppliquePenalite (object oPC)
{
 
    
int iXP GetXP (oPC);
    
int iLvl GetHitDice (oPC);
    
int iPenalite 50 iLvl;
    
int iMin = ((iLvl * (iLvl 1)) / 2) * 1000;
 
    
int iNouvXP iXP iPenalite;
 
    if (
iNouvXP iMin)
      
iNouvXP iMin;
   
SetXP (oPCiNouvXP);
 

Pour info, ce script permet de retirer de l'XP sans faire perdre de niveau à la cible. Attention tout de même à rajouter la gestion de l'ECL sinon ça fonctionnera que sur les classes sans ECL.
Bon dans l'un ou l'autre sens, ça posera problème donc... soit la baisse de niveau ne sera pas gérée, soit ça sera la monté... bon moi qui pensait que ça serait simple, me suis mis le doigt dans l'oeil *ouilleuuh* lol
Oui en faite, pas besoin que ça fonctionne au Levelup vu que ça risque pas d'arriver. Ca sera uniquement un retrait d'xp.

Citation :
Publié par Crom29
Que veux tu dire par " le script qui est exécuté au moment du respawn dans un dialogue" ?

J'ai fait des tests :
le code de mythyzyn fonctionne très bien pour enlever des lvls, mais ne fait pas lvlup automatiquement (logique).
Du coup Crom29, si tu as fait des tests, tu as donc le script non? Car alors c'est ce qu'il me faut.
Si tu ne veux que retirer de l'XP, tu peux utiliser le code de Mythyzyn

Pour retirer de l'XP et des niveaux (via un dialogue) :
Code PHP:

void main(int iXp

 
object oPC GetPCSpeaker();
 
int iPcXp GetXP(oPc); 
 
int iNewXp iPcXp iXp
  
 
SetXp(oPCiNewXp); 

Code PHP:

void main(int iXp

          
object oPC GetPCSpeaker();
    
int iXP GetXP (oPC); 
    
int iLvl GetHitDice (oPC); 
    
int iPenalite iXP;
    
int iMin = ((iLvl * (iLvl 1)) / 2) * 1000
  
    
int iNouvXP iXP iPenalite
  
    if (
iNouvXP iMin
      
iNouvXP iMin
   
SetXP (oPCiNouvXP); 

Répondre

Connectés sur ce fil

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