La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 22:34:47


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
samhuin
Ecuyer
Inscrit le: 14 Nov 2005
Messages: 43
Répondre en citant
Posté le : 29/11/2005 14:57:01 Sujet du message : Faction en guerre

Voila au debut j'avais penser a mettre les differents joueurs qui venait sur le server par race, puit qu'il soit tous hotile les uns envers les autres.

j'ai donc commencer a cree un script (qui ne fonctione pas) qui mettais toutes les races hotsile envers les autres.
c'etait celui la

NWScript :
/// A placer dans OnClientEnter
////// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////
object oPC=GetEnteringObject();
int iRace = GetRacialType(oPC);
string sSub = GetSubRace(oPC);

void main()
{
  if (GetIsPC(oPC))
  {
  int irace=GetRacialType(iRace)(oPC);/// on recupere la race du joueur arrivant
  object oPlayer=GetFirstPC(); /// on amorce la boucle

        if (irace==0) /// Cas ou le joueur est nain
        {
            while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
            {
            int irace=Getracialtype(oPlayer);/// on recupere la race du joueurs
              if ((irace==0)||(irace==0))
              {
              SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
              }
            oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
            }
        }
        if (irace==1) /// meme chose pour les elfes
        {
            while (GetIsObjectValid(oPlayer))/
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==1)||(irace==1))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
        }
        if ((irace==2)) /// meme chose pour les gnomes
        {
            while (GetIsObjectValid(oPlayer))
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==2)||(irace==2))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
        }
  if ((irace==3)) /// meme chose pour les halflin
        {
            while (GetIsObjectValid(oPlayer))
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==3)||(irace==3))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
  if ((irace==4)) /// meme chose pour les demi-elf
        {
            while (GetIsObjectValid(oPlayer))
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==4)||(irace==4))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
      if ((irace==5)) /// meme chose pour les demiorc
        {
            while (GetIsObjectValid(oPlayer))
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==5)||(irace==5))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
  if ((irace==6)) /// meme chose pour les humains
        {
            while (GetIsObjectValid(oPlayer))
            {
            int irace=Getracialtype(oPlayer);
              if ((irace==6)||(irace==6))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
}

}
/* warning: 4 unclosed block {} */
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



mais apres je me suis dit qu'il serai plus facil de mettre les joueurs dans des factions, comme ca en cas d'alliance ou n'importe quoi d'autre il suffirait juste que je modifie les option des factions plutot que tous le script.

quelqu'un aurai t'il une idee de comment faire ca?
Dernière édition par samhuin le 12/12/2005 15:33:12; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 29/11/2005 17:53:02 Sujet du message :

Heu ton script a vraiment bcp mais alors bcp de bug.... Voila je rectifie t'es fautes :
NWScript :
/// A placer dans OnClientEnter
////// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////
//object oPC=GetEnteringObject();

//string sSub = GetSubRace(oPC);
//C'est 3 choses ne se mette jamais au dessus d'un "void main"
void main()
{
object oPC=GetEnteringObject();
int iRace = GetRacialType(oPC);
string sSub = GetSubRace(oPC);
if (GetIsPC(oPC))
{
//int irace=GetRacialType(iRace)(oPC );/// Sa ne sert a rien de faire une deuxieme. De plus on ne met jamais 2 choses s'epare avec des parenthese
object oPlayer=GetFirstPC(); /// on amorce la boucle

while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
{
int irace=GetRacialType(oPlayer);//On recupere donc la race du joueur "premier" et bien sur on noublie pas les MAJUSCULE
if (irace==0) /// Je deplace sa car faut pas le mettre au dessus du while car il identifira que le premier joueur du serveur....
{
if ((irace!=0)&&(iRace==0))// Je ne vois pas l'utilite de mettre 2 fois la meme choses...Mais bon j'ai modifier pour que si la race du joueur qui entre ou fait quelque n'est pas la meme que le "premier" joueur, alors si se deteste. (je rapelle || = OU et && = ET. Aussi pourquoi, si les 2 joueurs sont de la meme race, il se mettent hostile ? Bon j'ai mi le contraire on sais jms. Enfin d'ailleur je ne vois meme pas l'utilite de faire sa mais bon...
{
SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
}
//oPlayer=GetNextPC();/// Sa te ser a rien... faut le mettre a la fin de ta BOUCLE pas a chaque condition!
}
else if (irace==1) /// meme chose pour les elfes
{
//while (GetIsObjectValid(oPlayer))// On ne mais pas 2 while, un suffit.
//{
//int irace=Getracialtype(oPlayer); // Pas besoin de remettre une couche... Bon je vais m'arrete la avec les expliquation...
if ((iRace!=1)||(irace==1))
{
SetPCDislike(oPC,oPlayer);
}
}
if ((irace==2)) /// meme chose pour les gnomes
{
if ((iRace!=2)||(irace==2))
{
SetPCDislike(oPC,oPlayer);
}
}
if ((irace==3)) /// meme chose pour les halflin
{
if ((iRace!=3)||(irace==3))
{
SetPCDislike(oPC,oPlayer);
}
}
if ((irace==4)) /// meme chose pour les demi-elf
{
if ((iRace!=4)||(irace==4))
{
SetPCDislike(oPC,oPlayer);
}
}
if ((irace==5)) /// meme chose pour les demiorc
{
if ((iRace!=5)||(irace==5))
{
SetPCDislike(oPC,oPlayer);
}
}
if ((irace==6)) /// meme chose pour les humains
{
if ((irace==6)||(irace==6))
{
SetPCDislike(oPC,oPlayer);
}
}
}
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Bon dsl si j'ai fait des fautes mais c'est casiment imconprehensible ton script...
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 29/11/2005 17:57:02 Sujet du message :

A la ligne où tu met :

NWScript :

int irace=GetRacialType(iRace)(oPC);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


ça ne vas pas, le iRace n'a rien a faire ici puisque que GetRacialType retourne la race de l'objet oCreature donc il faut un object comme argument

NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

NWScript :

int iRace = GetRacialType(oPC);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


NWScript :
int irace=GetRacialType(iRace)(oPC);/// on recupere la race du joueur arrivant
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Entre ces deux fonctions il y a une différence ?? le 1er (int iRace = GetRacialType(oPC);// Ici on récupère la race) est correct mais pas le second

Voila le script que j'ai corrigé Very Happy

NWScript :

/// A placer dans OnClientEnter
////// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////


void main()
{
object oEnter=GetEnteringObject();
int iRace = GetRacialType(oEnter);
string sSub = GetSubRace(oEnter);
int iRaceDesAutres;

if (!GetIsPC(oEnter)) //si oEnter n'est pas un joueur...
    return; //...alors ne rien faire



object oPlayer=GetFirstPC(); /// on amorce la boucle
switch (iRace)
{
case RACIAL_TYPE_DWARF: /// Cas ou le joueur est nain

    while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
    {
    iRaceDesAutres = GetRacialType(oPlayer); /// on recupere la race du joueurs

        if (iRaceDesAutres!=RACIAL_TYPE_DWARF) // si la race de oEnter n'est pas la meme de oPlayer alors...
        {
        SetPCDislike(oEnter,oPlayer); /// ...on change le comportement du joueur vis-avis des autres..
        }
    oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
    }
break;



case RACIAL_TYPE_ELF : /// meme chose pour les elfes

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres = GetRacialType(oPlayer);
        if (iRaceDesAutres != RACIAL_TYPE_ELF)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;

case RACIAL_TYPE_GNOME: /// meme chose pour les gnomes

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres = GetRacialType(oPlayer);
        if (iRaceDesAutres !=RACIAL_TYPE_GNOME)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;

case RACIAL_TYPE_HALFLING: /// meme chose pour les halflin

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres=GetRacialType(oPlayer);
        if (iRaceDesAutres!= RACIAL_TYPE_HALFLING)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;
case RACIAL_TYPE_HALFELF: /// meme chose pour les demi-elf

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres=GetRacialType(oPlayer);
        if (iRaceDesAutres!=RACIAL_TYPE_HALFELF)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;
case RACIAL_TYPE_HALFORC: /// meme chose pour les demiorc

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres=GetRacialType(oPlayer);
        if (iRaceDesAutres!=RACIAL_TYPE_HALFORC)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;

case RACIAL_TYPE_HUMAN: /// meme chose pour les humains

    while (GetIsObjectValid(oPlayer))
    {
    iRaceDesAutres=GetRacialType(oPlayer);
        if (iRaceDesAutres!=RACIAL_TYPE_HUMAN)
        {
        SetPCDislike(oEnter,oPlayer);
        }
    oPlayer=GetNextPC();
    }
break;
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le script compile mais je ne l'ai pas testé InGame (comme on dit) Cool

P.S : As-tu appuyé sur le bouton "compilé" apres avoir écrit ton script ?
_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 29/11/2005 18:06:28 Sujet du message :

Hey vous croyez pas qu'une boucle suffit ?


NWScript :


void main()
{
object oEnter=GetEnteringObject();
int iRace = GetRacialType(oEnter);
string sSub = GetSubRace(oEnter);
int iRaceDesAutres;

if (!GetIsPC(oEnter)) //si oEnter n'est pas un joueur...
    return; //...alors ne rien faire



object oPlayer=GetFirstPC();
while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
    {
    iRaceDesAutres = GetRacialType(oPlayer); /// on recupere la race du joueurs

        if (iRaceDesAutres!=iRace) // si la race de oEnter n'est pas la meme de oPlayer alors...
        {
        SetPCDislike(oEnter,oPlayer); /// ...on change le comportement du joueur vis-avis des autres..
        }
    oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
    }


}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Je dis ça je dis rien.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 29/11/2005 18:09:58 Sujet du message :

J'y ait pensé mais si il veut faire des alliances du style Nain-Gnome VS Elfe-Humain il/elle n'aura pas grand chose a modifier
_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 29/11/2005 18:12:45 Sujet du message :

Un point pour toi Razz
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 29/11/2005 18:56:20 Sujet du message :

Oui mais la boucle est quand même plus pratique quitte à passer par une fonction intermédiaire.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 29/11/2005 19:34:54 Sujet du message :

Moi je savais qu'on pouvais faire sa, mais il voulais corrigé son script, d'ailleur je sias même pas si il marche tellement que je me suis perdue dedans. Mais bon c'est clair que le script en boucle est largement plus facile que sa...
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
samhuin
Ecuyer
Inscrit le: 14 Nov 2005
Messages: 43
Répondre en citant
Posté le : 29/11/2005 20:19:16 Sujet du message :

non je veux pas forcement garder mon script merci en tous cas pour me l'avoir coriger ca me permet d'apprendre je vous donne le resultat d'ici peu
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
samhuin
Ecuyer
Inscrit le: 14 Nov 2005
Messages: 43
Répondre en citant
Posté le : 29/11/2005 20:35:03 Sujet du message :

non je veux pas forcement garder mon script merci en tous cas pour me l'avoir coriger ca me permet d'apprendre je vous donne le resultat d'ici peu

oui et ca n'a pas marcher pour al compilation
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
samhuin
Ecuyer
Inscrit le: 14 Nov 2005
Messages: 43
Répondre en citant
Posté le : 12/12/2005 15:26:40 Sujet du message :

Bon je reviens vers vous, car j'ai fouillé partout ou il y a des scripts, et je n'ai pas réussi, a trouver, ou bien même a crée un script de faction.

Sur mon serveur RP les joueurs sont groupé par race, en faite j'aurai voulu faire un script qui regrouper ces joueurs en faction, qui serait donc gérer par le système de faction de nwn, ce qui permettrais par exemple un orque croise un nain ces 2 faction se faisant la guerre il se verrait en hostile.


Mais le gros souci qu'on ma expliqué c'était si par exemple un joueur attaquer le garde nain de la même faction que lui alors toute la faction se taperai dessus.


Aurais vous une idée ou bien même un début de script pouvant m'aider?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 12/12/2005 16:28:20 Sujet du message :

A ma connaissance il n'est pas possible d'utiliser le systeme de faction de NWN pour les PJ, ça marche seulement pour les PNJ, les créatures...
_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 12/12/2005 17:45:35 Sujet du message :

Hmmm j'ai un script pour sa, seulement moi je l'ai fait avec des INT "Team" ce qui est beaucoup plus simple pour moi ::

NWScript :
void JumpToTeam(object oJoiner)
{
if (!GetIsDM(oJoiner))
    {
    object oOther = GetFirstPC();
    int sOther;
    int sTeam = GetLocalInt(oJoiner, "Team");
    if (sTeam == 2)
        {
        oOther = GetFirstPC();
        while (GetIsObjectValid(oOther) == TRUE)
            {
            if ( oJoiner != oOther )
                {
                sOther = GetLocalInt(oOther, "Team");
                if ( sTeam == sOther )
                    {
                    AddToParty( oJoiner, GetFactionLeader(oOther) );
                    return;
                    }
                }
            oOther = GetNextPC();
            }
        }
    else if (sTeam == 1)
        {
        oOther = GetFirstPC();
        while (GetIsObjectValid(oOther) == TRUE)
            {
                if ( oJoiner != oOther )
                    {
                    sOther = GetLocalInt(oOther, "Team");
                    if ( sTeam == sOther )
                        {
                        AddToParty( oJoiner, GetFactionLeader(oOther) );
                        return;
                        }
                    }
            oOther = GetNextPC();
            }
        }
    }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Ce script donc reunis ce qui on la Local int "Team" 1 au chef de groupe (donc le premier joueur qui entrera dans la team) pareil pour le 2. (attention le script est dans une bibliotheque et donc n'a pas de "void main" normale si sa ce compile pas!

Apres voila le script qui met les joueurs hostiles ::

NWScript :
Hostilite(object oPC)
{
object oEnemi = GetFirstPC();
int iTeamPC = GetLocalInt(oPC, "Team");
if(GetIsPC(oPC) && GetIsPC(oEnemi))
{
while(GetIsObjectValid(oEnemi))
{
int iTeamPC = GetLocalInt(oPC, "Team");
int iTeamEnemi = GetLocalInt(oEnemi, "Team");
if(iTeamPC != iTeamEnemi)
{
SetPCDislike(oPC, oEnemi);
}
else if(iTeamPC == iTeamEnemi)
{
SetPCLike(oPC, oEnemi);
}
oEnemi = GetNextPC();
}
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Donc ce script met les joueurs hostile si ils ont pas la même Local Int "Team".

Donc voila en gros le script ::

NWScript :
void main()
{
object oPC;
JumpToTeam(oPC);
Hostilite(oPC);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Normalement sa marche. (attention au oPC, je ne sais pas ou tu veut mettre le script donc n'oublie pas le oPC!)
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
samhuin
Ecuyer
Inscrit le: 14 Nov 2005
Messages: 43
Répondre en citant
Posté le : 13/12/2005 00:56:38 Sujet du message :

oki merci beaucoup je vais regarder ca.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 112.726ms