Questions sur les compagnons

Répondre
Partager Rechercher
Bonjour

1 - J'avais vu un post où Claudius33 disait qu'il précisait que pour le "flag" des compagnons il mettait campaignNPC... Question bête le "flag" c'est quoi et où.? Pas un autre non du tag.?

2 - Au niveau des conversations quand le compagnon est recruté, quel est le script à mettre en condition pour que la conversation de recrutement ne se lance plus tant qu'il est dans l'équipe.?

3 - Aux niveau des scripts pour le recrutement, j'ai viré celui qui met le compagnon au même niveau que le perso principal, mais le compagnon commence avec 0 expérience, quel que soit son niveau.
C'est un flag de la campagne, pas des modules (se positionne avec l'éditeur de campagne) :

A TRUE, les compagnons sont sauvegardés (caractéristiques et inventaires) quand ils passent d'un module à l'autre mais on ne peut pas utiliser l'interface de sélection pour changer la composition du groupe (comme l'OC à la Chope sans fond). Perso je le fais avec des conversations.

A FALSE on peut utiliser l'interface de sélection, mais il faut s'occuper des sauvegardes entre modules. Je n'ai pas exploré cette option.

Dans tous les cas il faut "despawner" les compagnons non présents dans le groupe avant de sauter dans un autre module

EDIT : vraiment pas réveillé ce jour là, tout ce qui est ci_dessus est absolument erroné .

Dernière modification par Claudius33 ; 08/10/2011 à 10h08. Motif: pas réveillé
ok merci. Donc étant donné que j'ai déjà placé le compagnon dans le premier module, il est inutile de le placer à nouveau dans le second module?
Par contre dès le premier module, je dois intégrer les éventuelles conversations qui auront lieu dans des modules ultérieurs?

Heu par contre vous allez me prendre pour un boulet, mais le flag dont Claudius33 parle je ne vois lequel c'est dans l'éditeur de campagne...

Et qu'en est il de mes 2 autres questions.?
J'étais manifestement pas bien réveillé hier, désolé .

1. Ce n'est pas un flag de campagne. C'est un flag posé par script quand on crée le compagnon.

On peut le faire par la fonction SetIsRosterMemberCampaignNPC dans un script ou en utilisant le script standard ga_roster_campaignnpc.

Absolument si un compagnon est dans le groupe pas besoin de la placer dans un autre module. S'il n'est pas dans le groupe, on peut soit le spawner (SpawnRosterMember) soit l'ajouter directement au groupe (AddRosterMemberToParty).

2. Plusieurs techniques possibles :
- le journal (gc_journal_entry), par exemple tester une valeur inférieure à l'entrée 'machin rejoint le groupe' ou toute quête liée qui permet d'identifier à coup sûr que le compagnon a été recruté.
- tester une variable locale attachée au compagnon qui passe de 0 à 1 quand il est recruté.

3. C'est le fonctionnement normal. Si on veut qu'il parte avec le même niveau il faut lui donner l'XP du PJ.
Code PHP:

int nXP GetXP(oPC);
GiveXPToCreature(oCompanionnXP); 
Alors pour les scripts j'en suis pas encore à créer les miens... enfin je crois que je vais devoir m'y mettre.. Je dois en créer un nouveau mettre les codes que tu m'as donné et je mets le tag du script dans les scripts recurrents du compagnon.

Sinon en dehors de ça le problème que je rencontre avec le compagnon niv 2 avec 0 xp et qui n'en gagne d'ailleurs pas, c'est en suivant ce tuto :

http://www.neverwinternights2.fr/mod...?topic_id=2708
Hum, je ne crois que ce sont les "b_companions_scripts" qu'il faut charger et pas les "c_companions_scripts" comme indiqué dans ton lien (bien que je ne sois pas sur que ça ai quelque chose à voir).

Pour les dialogues qui apparaîtront dans d'autres modules, oui il vaudrait mieux qu'ils soient déjà présent dans la conversation de ton compagnon, ça t'évitera de les mettre plus tard.
ok... Merci pour vos réponses.

Alors pour l'instant, pour que tout marche je suis parti du profil de Umoja (cohort de SoZ) que j'ai modifié. Donc les xp s'ajustent.

Du coup ça m'amène à d'autre questions. J'ai l'intention de "cheater" légerement les compagnons. exemple, j'ai un rodeur à la Minsc , du coup, je lui met une rage de barbare dans le toolset. Donc quand je fait son passage de niveau suite à un gain d'experience, tout va bien, par contre, quand il arrive dans l'equipe et ajuste son niveau avec celui du PJ, là le perso est complètement réinitialisé. Et les eventuels "cheats" disparaissent.

Est ce que la seule méthode c'est de faire en sorte que les compagnons arrivant dans l'équipe soient plus haut niveau que le PJ (bof bof). Ou bien existe t-il un script permanent qui donne aux compagnons assez de points d'expérience pour rejoindre le pj.? (le perso ne se met pas "à niveau" mais gagne des xp) -

Je ne sais pas si mmon explication est très limpide pour le coup.

EDIT : Bon en fait j'avais mal lu le post de Claudius qui semble répondre à toutes mes questions. Je pense que maintenant je dois m'avancer un peu plus dans l'utilisation des scripts.

Dernière modification par mastarman ; 10/10/2011 à 10h15.
Citation :
Publié par Claudius33


3. C'est le fonctionnement normal. Si on veut qu'il parte avec le même niveau il faut lui donner l'XP du PJ.
Code PHP:

int nXP GetXP(oPC);
GiveXPToCreature(oCompanionnXP); 
Bon je prends le risque qu'on me dise de regarder les tutos sur les scripts ...

Comment "de A à Z" je dois mettre en place cette fonction ( où dans les propriétés, si je dois faire fichier/nouveau/script etc ) ... Je crois que ça pourrait m'aider.
Pour créer un script c'est effectivement Ficher/Nouveau/Script ou click droit - ajouter dans la fenêtre qui liste les scripts si elle est affichée.

J'ai du le mettre" déjà quelque part mais je ne sais plus où, alors je remets ce script qui permet d'ajouter un compagnon sans modifier ses caractéristiques, et en lui donnant la même XP que le PJ.
Pour créer le compagnon "toto" (tag "toto") avec le n° 0, il suffira d'appeler les script dans une convo de recrutement :
Prêt à vous suivre grand chef! add_companion("toto", 0)
et pour le suivant :
Comme tu es beau, je viens de suite. add_companion("zaza", 1)

Le script prend 2 paramètres :
le tag du futur companion
son n° dans le roster (commencer par 0, ne pas laisser de trous, un numéro unique par compagnon)

Il te suffit de faire ficher/nouveau/script copier coller et F7 (compiler et sauvegarder). Je te conseille de préfixer le nom du script (tu peux faire click droit renommer) avec 2 lettres initiales de ton mod par exemple mm et de l’appeler mm_add_companion (tu retrouveras ainsi plus facilement test scripts)

Le script :
Code PHP:

// add a new companion

void main(string sRosterNameint nCampaignNPC)
{
    
object oNPC GetObjectByTag(sRosterName);
    
object oPC GetFirstPC();
    
ChangeToStandardFaction(oNPCSTANDARD_FACTION_DEFENDER); //met la faction à celle du PJ (en, général DEFENDER)
    
AddRosterMemberByCharacter(sRosterNameoNPC); // l'ajoute au roster
    
SetIsRosterMemberSelectable(sRosterNameTRUE); // le rend sélectionnable
    
int nXP GetXP(oPC);       // lui donne l'XP du joueur
    
GiveXPToCreature(oNPCnXP);
    
ForceRest(oNPC);        // une sieste
    
AddRosterMemberToParty(sRosterNameoPC);        // l'ajoute au groupe (optionnel)
    
SetIsRosterMemberCampaignNPC(sRosterNamenCampaignNPC); // le déclare compagnon de campagne avec son n°)
    
    // make the inventory identified   - identifie tous les objets de l'inventaire
    
    
object oItem GetFirstItemInInventory(oNPC);
    while (
GetIsObjectValid(oItem))
    {
          
SetIdentified(oItem,1);
        
oItem GetNextItemInInventory(oNPC);
      }

OK.. ça marche nickel.

Un grand merci pour ce travail pré-maché. Bon cette fois je vais faire l'effort pour l'avenir et m'intéresser au tuto des scripts et fonctions... C'est juste que j'ai l'impression rien qu'en lisant le niveau 1 des tutos qu'il faut avoir un diplôme de programmeur.

En tout cas merci.
Répondre

Connectés sur ce fil

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