PB de faction et de groupage

Répondre
Partager Rechercher
Salut
J'ai bcp chercher dans le lexicon pour résoudre mon pb mais je ne comprend tjs pas
comment faire appartenir un pj a une faction particuliere par exemple a la faction du bien
et comment insérer ensuite les pj de la meme faction dans le groupe pour ne former un seul et unique groupe de la meme faction.
ensuite comment mettre hostile deux factions differentes?
merci de l'aide qui y sera apporter
NWNGimly
Erk... je crois que plusieurs personnes ont répété ici qu'il n'existe pas de factions pour les personnages ! Ils appartiennent TOUS à la même faction : PC.

Pour palier à ce genre de problème il s'agit alors de créer son propre système de faction. Il y a plusieurs sujets qui en parlent sur le forum ces dernières semaines.
ouais ok mais
jai deja fait les factions et ca marche mais je voudrai maintenant faire un groupe constituer exclusivement d'une seul faction
comment faire???????????????????????
NWNGimly
Donc tu as une variable locale ou en DB qui définit pour chaque personnage la faction à laquelle il appartient ? Si c'est le cas, sur le OnClientEnter, il te suffit de regarder la valeur de cette variable, de parcourir la liste des PC et de grouper avec le premier venu qui a la même valeur.
Tu pourrais rajouter quelques lignes à la fin du OnClientEnter du module, mais il faut attribuer un objet (coché en indroppable, intrigue, et volé) à chaque PJ, ou une variable sur cet objet, qui représentera leur faction. Prenons le cas de deux objets taggés "FactionEvil" et "FactionGood".
Code PHP:

#include "nw_i0_tool" // à mettre au tout début du script

void main()
{
    
// Début de ton script de base...

    // ...Fin de ton script de base.

    
sFaction "FactionEvil";
    
object oFactionItem GetItemPossessedBy(oPlayer,sFaction);
    if(
oFactionItem==OBJECT_INVALID)
    {
        
sFaction "FactionGood";
        
oFactionItem GetItemPossessedBy(oPlayer,sFaction);
        if(
oFactionItem==OBJECT_INVALID)
        {
            return;
        }
    }

    
object oLoop GetFirstPC();
    while(
oLoop!=OBJECT_INVALID)
    {
        if(
HasItem(oLoop,sFaction)
        {
            
AddToParty(oPlayer,oLoop);
            Return;
        }
    }

hum je comprend pas ton script lol
en fait voila mes deux script qui permettent aux pjs de rentrer soit en mal ou en bien
bien :
Code PHP:

#include "wherefrom"
object Opc GetPCSpeaker();
object Odest GetObjectByTag("chateaubien");
void main()
{
CreateItemOnObject("pierredubien",Opc);
IAmFromGood(Opc);
AssignCommand(Opc,JumpToObject(Odest));

mal :
Code PHP:

#include "wherefrom"
object Opc GetPCSpeaker();
object Odest GetObjectByTag("chateaumal");
void main()
{
CreateItemOnObject("pierredumal",Opc);
IAmFromEvil(Opc);
AssignCommand(Opc,JumpToObject(Odest));

voila donc je voudrais que quand un pj choisi le bien y soit dans un groupe de bien et pareil pour le mal
car la si je comprend bien le chef c celui qui est rentrer le premier sur le mod pour les deux camps non?
NWNGimly
Tu peux aussi bien mettre les lignes de codes que je t'ai données dans une fonction propre, que tu rappelles en include dans ton dialogue et dans ton OnClientEnter, puis tu rajoute la fonction en fin de script :
Code PHP:

void AddPCToFactionParty(object oPlayer)
{
    
sFaction = [Tag de ta pierre du bien]; 
    
object oFactionItem GetItemPossessedBy(oPlayer,sFaction); 
    if(
oFactionItem==OBJECT_INVALID
    { 
        
sFaction = [Tag de ta pierre du mal]; 
        
oFactionItem GetItemPossessedBy(oPlayer,sFaction); 
        if(
oFactionItem==OBJECT_INVALID
        { 
            return; 
        } 
    } 

    
object oLoop GetFirstPC(); 
    while(
oLoop!=OBJECT_INVALID
    { 
        if(
HasItem(oLoop,sFaction
        { 
            
AddToParty(oPlayer,oLoop); 
            Return; 
        } 
    } 

[Edit : D'ailleurs les fonctions IAmFromGood et IAmFromEvil, elles ressemblent à quoi ?]
voila
Code PHP:

void IAmFromGood(object oPJ)
{
    
AdjustReputation(oPJ,GetObjectByTag("Maitredesanges"),100);
    
AdjustReputation(oPJ,GetObjectByTag("Maitreduchaos"),-100);
    
object oPJAutre GetFirstPC();
    while (
oPJAutre != OBJECT_INVALID)
    {
        if (
oPJAutre != oPJ)
        {
            if (
GetItemPossessedBy(oPJAutre,"pierredumal") != OBJECT_INVALID)
            {
                
SetPCDislike(oPJ,oPJAutre);
                
SetPCDislike(oPJAutre,oPJ);
            }
        }
        
oPJAutre GetNextPC();
    }
}
void IAmFromEvil(object oPJ)
{
    
AdjustReputation(oPJ,GetObjectByTag("Maitredesanges"),-100);
    
AdjustReputation(oPJ,GetObjectByTag("Maitreduchaos"),100);
    
object oPJAutre GetFirstPC();
    while (
oPJAutre != OBJECT_INVALID)
    {
        if (
oPJAutre != oPJ)
        {
            if (
GetItemPossessedBy(oPJAutre,"pierredubien") != OBJECT_INVALID)
            {
                
SetPCDislike(oPJ,oPJAutre);
                
SetPCDislike(oPJAutre,oPJ);
            }
        }
        
oPJAutre GetNextPC();
    }

A ca lol
hum sinon tu peut venir tester le truc des groupes sur mon mod?
NWNGimly
Et bien tu peux importer le "groupage" dans ces fonctions. :
Code PHP:

void IAmFromGood(object oPJ

    
AdjustReputation(oPJ,GetObjectByTag("Maitredesanges"),100); 
    
AdjustReputation(oPJ,GetObjectByTag("Maitreduchaos"),-100); 
    
object oPJAutre GetFirstPC(); 
    while (
oPJAutre != OBJECT_INVALID
    { 
        if (
oPJAutre != oPJ
        { 
            if (
GetItemPossessedBy(oPJAutre,"pierredumal") != OBJECT_INVALID
            { 
                
SetPCDislike(oPJ,oPJAutre); 
                
SetPCDislike(oPJAutre,oPJ); 
            } 
            
// Rajouter oPJ dans le groupe s'il n'y est pas :
            
else if (GetItemPossessedBy(oPJAutre,"pierredubien" != OBJECT_INVALID
                 
&& GetFactionEqual(oPJ,oPJAutre) != TRUE)
            {
                
AddToParty(oPJ,oPJAutre);
            }
        } 
        
oPJAutre GetNextPC(); 
    } 

Et pareil pour le IAmFromEvil.

Tu n'auras plus qu'à rajouter dans le OnClientEnter, #include "Wherefrom" au début, et ça à la fin :
Code PHP:

if(GetItemPossessedBy(oPJ,"pierredumal") != OBJECT_INVALID)
{
    
IAmFromEvil(oPC);
}
else if(
GetItemPossessedBy(oPJAutre,"pierredubien") != OBJECT_INVALID)
{
    
IAmFromGood(oPC);

Répondre

Connectés sur ce fil

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