Expérience de début de module

Répondre
Partager Rechercher
Bonjour à tous !

Aujourd'hui je me penche sur l'expérience attribuée au joueur au lancement du module, et comme d'habitude j'ai quelques problèmes.

Premier problème : Je n'arrive pas, malgré de nombreuses tentatives, à faire en sorte que le personnage qui commence le module soit directement au niveau 15. Or, si le personnage est au niveau 1 cela ne pose pas de problème. Mais dans le cas contraire je ne peux pas utiliser la fonction GiveXPToCreature.
La fonction SetXP ne marche pas, ou alors c'est moi qui n'y arrive pas.

Deuxième problème : Lorsqu'un compagnon rejoint le joueur, l'xp déjà accumulé par le joueur ne lui est pas attribué (au compagnon), bien que j'ai réglé le paramètre AutoXPRewarding à TRUE dans l'éditeur de campagne.
En outre, si je met un compagnon directement au lvl 15 avant sa rencontre avec le joueur, il doit regagner la totalité des PX au lvl 15 pour passer au niveau suivant.

Voilà, c'est peut-être un peu compact et imprécis, mais je vous éclairerais si je me suis mal exprimé.
Je ne suis pas sûr d'avoir bien compris . Pour le 2ème problème, il faut lui donner l'XP du PJ quel que soit son niveau, sinon il part à 15 avec 0 points.

Si ça peut aider, à titre d'exemple,

- le script suivant ajoute un compagnon au groupe en prenant les précautions nécessaires :
Code PHP:

// add a new companion

void main(string sRosterNameint nCampaignNPC)  // tag du NPC, N° compagnon
{
    
object oNPC GetObjectByTag(sRosterName);
    
object oPC GetFirstPC();
    
ChangeToStandardFaction(oNPCSTANDARD_FACTION_DEFENDER);  // le met à la faction du PC, en général Defender
    
AddRosterMemberByCharacter(sRosterNameoNPC);    // l'ajoute au roster
    
SetIsRosterMemberSelectable(sRosterNameTRUE);    // sélectionnable (inutile si sélection par conversation)
    
int nXP GetXP(oPC);                       // ajuste XP à celle du PJ (indépendant du niveau de départ du compagnon)
    
GiveXPToCreature(oNPCnXP);
    
ForceRest(oNPC);                            // petite sieste
    
AddRosterMemberToParty(sRosterNameoPC);  // l'ajoute au groupe
    
SetIsRosterMemberCampaignNPC(sRosterNamenCampaignNPC); le définit comme compagnon de campagne avec son N°
    
    
// make the inventory identified - force identification des objets portés
    
    
object oItem GetFirstItemInInventory(oNPC);
    while (
GetIsObjectValid(oItem))
    {
          
SetIdentified(oItem,1);
        
oItem GetNextItemInInventory(oNPC);
     }

Et un script d'upgrade du PJ (si il est déjà au dessus, un petit bonus)
Code PHP:

// upgrade PC to level nLevel

void main (int nLevel)
{
    
object oPC GetFirstPC();
    
int nXP = (1000 * (nLevel) * (nLevel-1) / 2) - GetXP(oPC);            // XP to reach the level
    
if (nXP 0)
    {
        
GiveXPToCreature(oPCnXP);
        
string s = (GetGlobalInt("FR")) ? "Vous avez été promu(e) au niveau" "You have been promoted to level";
        
SendMessageToPC(oPCs+" "+IntToString(nLevel)+".");
    }
    else
        
GiveXPToCreature(oPC300);

C'est juste parfait, c'est exactement ce que je voulais et tout fonctionne. Merciii !

Puisque j'y suis, et plutôt que d'ouvrir un autre sujet, j'ai une question qui me turlupine : comment peut-on faire comme dans la campagne officielle en faisant en sorte que le passage de niveau des compagnons soit limité à une classe précise ? (Neeshka ne peux être que roublarde, par exemple).

Ce n'est qu'un détail, mais d'un point de vue rôle play c'est plus logique.

Merci pour tout en tout cas.
Répondre

Connectés sur ce fil

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