items et définition de factions

Répondre
Partager Rechercher
c'est quoi le "left bracket"? car dans les deux scripts ca compile pas a cause de ca !

juste au début de chaque : if !GetIsPC(oPC) et oAcquirer

sinon en parcourant d'autres forums, je suis tombé la dessus :

Citation :
Bon alors, tout d'abord, il faut différencier les joueurs avant de leur appliquer quoi que ce soit : c'est à cela que servent les variables.

Prenons un exemple : dans ton module, tu désires créer deux factions qui s'affrontent. Il faudra donc, à un moment ou à un autre, que les joueurs décident à quelle faction ils souhaitent appartenir. Ici nous ferons choisir la faction au cours d'un dialogue :
Citation:

[PNJ] - Quelle faction souhaitez-vous rejoindre ?
[Joueur] - Les méchants.
[Joueur] - Les gentils.


Le choix "Les méchants" aura le script suivant dans "actions conséquentes" :
Code:
Code PHP:

void main() 

object oPC GetPCSpeaker(); 
SetCampaignString("Module Personnel""Faction""Méchant"oPC); 

Le choix "Les gentils" aura le script suivant dans "actions conséquentes" :
Code:
Code PHP:

void main() 

object oPC GetPCSpeaker(); 
SetCampaignString("Module Personnel""Faction""Gentil"oPC); 

Ce petit dialogue et ces deux scripts permettent de reconnaître à quelle faction les joueurs appartiennent par l'intermédiaire de la CampaignString "Faction" qui prend la valeur "Méchant" si l'on rejoint la faction des méchants et la valeur "Gentil" si l'on rejoint la faction des gentils.

Il suffit maintenant de rendre les porteurs de la string "Gentil" hostiles envers les porteurs de la string "Méchant", et inversement. Pour celà on place ce petit bout de script dans le OnClientEnter :
Code:
Code PHP:

void main() 

object oPC GetEnteringObject(); //Défini le joueur entrant sur le module 
string sFaction GetCampaignString("Module Personnel""Faction"oPC); //Prend la valeur (ici "Gentil" ou "Méchant", de la CampaignString "Faction") 
if(sFaction == "Gentil"
  { 
  
object oOtherPC GetFirstPC(); 
  while(
GetIsObjectValid(oOtherPC)) //boucle servant à vérifier tous les joueurs afin d'ajuster leur hostilité envers le joueur venant d'entrer sur le module 
    

    
string sFactionOtherPC GetCampaignString("Module Personnel""Faction"oOtherPC); 
    if(
sFactionOtherPC == "Méchant"
      { 
      
SetPCDislike(oPCoOtherPC); 
      
SetPCDislike(oOtherPCoPC); 
      
oOtherPC GetNextPC(); 
      } 
    else 
      { 
      
oOtherPC GetNextPC(); 
      } 
    } 
  } 
else if(
sFaction == "Méchant"
  { 
  
object oOtherPC GetFirstPC(); 
  while(
GetIsObjectValid(oOtherPC)) //boucle servant à vérifier tous les joueurs afin d'ajuster leur hostilité envers le joueur venant d'entrer sur le module 
    

    
string sFactionOtherPC GetCampaignString("Module Personnel""Faction"oOtherPC); 
    if(
sFactionOtherPC == "Gentil"
      { 
      
SetPCDislike(oPCoOtherPC); 
      
SetPCDislike(oOtherPCoPC); 
      
oOtherPC GetNextPC(); 
      } 
    else 
      { 
      
oOtherPC GetNextPC(); 
      } 
    } 
  } 

mais deux questions se posent :

1. en ce qui concerne les factions :
une nouvelle faction porte t elle son nom? je m'explique :
dans cette ligne
Code PHP:

SetCampaignString("Module Personnel""Faction""Méchant"oPC); 

si mon module s'appelle le_petit_module et ma faction méchante s'appelle Mamie est ce que ca va donner ca
Code PHP:

SetCampaignString("le_petit_module""Faction""Mamie"oPC); 

2. comme c'est dans le OnClientEnter (le grand script) est ce que là, ca ne va pas faire lagger le server?

car cette option semble plus simple ! mais si moins avantageuse, je la laisse tomber
Un left bracket, c'est ça: }

J'avais oublié le } final pour fermer les fonctions. Et le deuxiême script, tu l'auras compris, il faut le mettre dans leOnClientEnter et pas dans le OnLoad

Pour ce que tu as trouvé, en fait, c'est la même chose que ce qu'on fait nous, sauf qu'il considére une variable du module au lieu de considerer l'anneau. Plus quelques subtilités probablement dûes à l'experience que j'ajoutes dans le script. Je vais modifier les deux scriptts pour y inclure la petite subtilité et remettre le left bracket manquant.
Bon, bah puisque tu n'y étais pas arrivé, voici le détail de ce que j'ai fait:

Dans le OnClientEnter:

Code PHP:

#include "wherefrom"

void main()
{
    
object oPJ GetEnteringObject();
    if (
GetItemPossessedBy(oPJ,"AnneauDuBien") != OBJECT_INVALID)
        
IAmFromGood(oPJ);
    else if (
GetItemPossessedBy(oPJ,"AnneauDuMal") != OBJECT_INVALID)
        
IAmFromEvil(oPJ);

Lorsque le PJ choisit le Bien à sa première connexion:

Code PHP:

#include "wherefrom"

void main()
{
    
object oPJ GetPCSpeaker();
    
CreateItemOnObject("AnneauDuBien",oPJ);
    
IAmFromGood(oPJ);

Lorsque le PJ choisit le Mal à sa première connexion:

Code PHP:

#include "wherefrom"

void main()
{
    
object oPJ GetPCSpeaker();
    
CreateItemOnObject("AnneauDuMal",oPJ);
    
IAmFromEvil(oPJ);

Et enfin le script qui contient les deux fonctions IAmFromEvil et IAmFromGood qui s'appelle ici wherefrom:

Code PHP:

void IAmFromGood(object oPJ)
{
    
AdjustReputation(oPJ,GetObjectByTag("PNJDuBien"),100);
    
AdjustReputation(oPJ,GetObjectByTag("PNJDuMal"),-100);
    
object oPJAutre GetFirstPC();
    while (
oPJAutre != OBJECT_INVALID)
    {
        if (
oPJAutre != oPJ)
        {
            if (
GetItemPossessedBy(oPJAutre,"AnneauDuMal") != OBJECT_INVALID)
            {
                
SetPCDislike(oPJ,oPJAutre);
                
SetPCDislike(oPJAutre,oPJ);
            }
        }
        
oPJAutre GetNextPC();
    }
}
void IAmFromEvil(object oPJ)
{
    
AdjustReputation(oPJ,GetObjectByTag("PNJDuBien"),-100);
    
AdjustReputation(oPJ,GetObjectByTag("PNJDuMal"),100);
    
object oPJAutre GetFirstPC();
    while (
oPJAutre != OBJECT_INVALID)
    {
        if (
oPJAutre != oPJ)
        {
            if (
GetItemPossessedBy(oPJAutre,"AnneauDuBien") != OBJECT_INVALID)
            {
                
SetPCDislike(oPJ,oPJAutre);
                
SetPCDislike(oPJAutre,oPJ);
            }
        }
        
oPJAutre GetNextPC();
    }

Tu devrais pouvoir te débrouiller avec ça ^^
Oui, deux factions, une pour le bien et une pour le mal et pour chaque PNJ que tu veux comme étant concerné par ces scripts, tu leur affecte.

Un conseil: n'affecte pas les marchands à ces factions. Sinon tes joueurs raleront quand ils se feront tuer par les autres joueurs.
Répondre

Connectés sur ce fil

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