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 13:10:38


  Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
ronin
Acolyte
Inscrit le: 13 Nov 2003
Messages: 21
Répondre en citant
Posté le : 28/06/2004 20:51:26 Sujet du message : Script d'hostilité

voila, afin de doter mon module d'un interet pvp supplementaire
je vous posterai le lien quand il sera en ligne, je souhaiterai doter celui ci d'un script d'hostiliter interfaction.... je suis un GOS NOOB en script, j'en fait donc appel a vous, qui a mon avuis etes bien meilleur **langue noire , collée par terre**

donc en fait , il y a 3 factions en guerre, chacune se combattant l'une l'autre...

y a t'il une solution simple qui permette ceci

Merci a vous...

[Edit de Lendraste : j'ai remi le titre du sujet en minuscule. Merci de ne plus refaire de titre en majuscule à moins que cela ait du sens (comme les acronymes)]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 28/06/2004 22:18:34 Sujet du message :

Salut,
si j'ai bien compris les 3 factions sont toutes hostile entre elles.. Pour ma part, je pense qu'il faut utiliser un script à mettre dans le OnEntreClient du module... Le problème c'est que je sais pas sur quoi tu te bases pour déterminer les factions : un objet dans l'inventaire, la race ect....
Pour ce script moi je me suis baser sur l'alignement du joueur, ça te donnera un exemple...
En plus le script compile mais je sais pas si il marche... De plus je suis pas sur des seuils pour Mauvais et Bon mais bon....

Voilà le script :
NWScript :
/// A placer dans OnClientEnter
/// Pour un module avec trois factions differentes
/// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////
object oPC=GetEnteringObject();


void main()
{
  if (GetIsPC(oPC))
  {
  int iAligne=GetAlignmentGoodEvil(oPC);/// on recupere l'alignement du joueur arrivant
  object oPlayer=GetFirstPC(); /// on amorce la boucle

        if (iAligne<=25) /// Cas ou le joueur est evil
        {
            while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);/// on recupere l'alignement des joueurs deja la
              if (iPlayer>25)
              {
              SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
              }
            oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
            }
        }
        if (iAligne>=75) /// meme chose pour les good
        {
            while (GetIsObjectValid(oPlayer))
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);
              if (iPlayer<75)
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
        }
        if ((iAligne<75)&&(iAligne>25)) /// meme chose pour les neutres...
        {
            while (GetIsObjectValid(oPlayer))
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);
              if ((iPlayer>=75)||(iPlayer<=25))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=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.


Voila, il y a plus qu'à adapter le test (le if) si tu veux créer tes factions à partir d'un autre critère... De plus le script compile mais je sais pas s'il marche...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
jarah
Voyageur
Inscrit le: 25 Avr 2004
Messages: 4
Répondre en citant
Posté le : 29/06/2004 07:13:24 Sujet du message :

interessant tout cela moi j'aimerai savoir si apres la mort l'hostilité reste?

pour ma part je recherche un systeme permanent d'hostilé entre trois faction ( en fonction de l'alignement: bon mauvais et neutre) via un objet dans l'inventaire que l'on obtiendrait apres le choix de la faction indropable et qui permettrait une fois en jeu que les gens de la meme faction se voit en amicale et que si ils rencntrent une des deux autres factions ou les deux le curseur se transforme en mode attaque...


en passant je viens de tester ton script ça ne marche pas Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 29/06/2004 07:43:44 Sujet du message :

Pour le faire à partir d'objet, il faut juste changer les tests if..
Au lieu de :
NWScript :
if (iAligne<=25)
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.

il faut mettre un truc comme :
NWScript :
if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet qui caracterise son alignement")))
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.

exemple : le joueur est bon donc il a l'objet caractérisant les bons...
et il faut ausi changer le test à l'intérieur de la boucle :
NWScript :
if (GetIsObjectValid(GetItemPossessedBy(oPlayer,"tag de l'objet qui caracterise son alignement"))
||GetIsObjectValid(GetItemPossessedBy(oPlayer,"tag de l'objet qui caracterise son alignement")))
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.

dans notre exemple, il faut mettre les tag des objets caractérisant les neutres et les mauvais...

Bien sur si tu modifies le script de la façon suivante il faut que les joueurs aient un et seulement un objet qui caractérise l'alignement...

Pour ce qui est de la persitance de l'hostilité aprés la mort je ne sais pas il faut tester. Si ça ne marche pas aprés la mort il faudra inclure ce script dans le OnPlayerRespawn du module mais trouver un moyen de l'exécuter quand un joueur est ressuciter par un autre joueur (là c'est plus compliqué).
Une dernière chose aussi... Le script s'exécute une fois au début mais aprés le joueur est libre de changer son comprotement, c'est à dire qu'il peut redevenir neutre.. Il faudrai bloquer ceci mais là je vois pas comment faire !!! Si quelqu'un voit qu'il le dise...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
jarah
Voyageur
Inscrit le: 25 Avr 2004
Messages: 4
Répondre en citant
Posté le : 29/06/2004 07:50:26 Sujet du message :

je vois...
j'ai testé ton script de depart entre un chaotique mauvais et un loyal bon et il ne c'est rien produit Crying or Very sad on etait en amicale
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 29/06/2004 08:39:26 Sujet du message :

Rhhh, j'ai fait une erreur sur le script en effet (ça m'apprendra à pas lire l'aide)...

Bon voila ce que ça donne en fait .. Et il marche celui-là je l'ai testé ....

NWScript :
/// A placer dans OnClientEnter
/// Pour un module avec trois factions differentes
/// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////
object oPC=GetEnteringObject();


void main()
{
  if (GetIsPC(oPC))
  {
  int iAligne=GetAlignmentGoodEvil(oPC);/// on recupere l'alignement du joueur arrivant
  object oPlayer=GetFirstPC(); /// on amorce la boucle

        if (iAligne==ALIGNMENT_EVIL) /// Cas ou le joueur est evil
        {
            while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);/// on recupere l'alignement des joueurs deja la
              if ((iPlayer==ALIGNMENT_GOOD)||(iPlayer==ALIGNMENT_NEUTRAL))
              {
              SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
              }
            oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
            }
        }
        if (iAligne==ALIGNMENT_GOOD) /// meme chose pour les good
        {
            while (GetIsObjectValid(oPlayer))
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);
              if((iPlayer==ALIGNMENT_NEUTRAL)||(iPlayer==ALIGNMENT_EVIL))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=GetNextPC();
            }
        }
        if ((iAligne==ALIGNMENT_NEUTRAL)) /// meme chose pour les neutres...
        {
            while (GetIsObjectValid(oPlayer))
            {
            int iPlayer=GetAlignmentGoodEvil(oPlayer);
              if ((iPlayer==ALIGNMENT_GOOD)||(iPlayer==ALIGNMENT_EVIL))
              {
              SetPCDislike(oPC,oPlayer);
              }
            oPlayer=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.

c'est la même chose.. enfin quasiment...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
ronin
Acolyte
Inscrit le: 13 Nov 2003
Messages: 21
Répondre en citant
Posté le : 29/06/2004 10:45:35 Sujet du message :

Merci pour tout je pense que on va bien s'en sortir, de plus, je pense qu on basera l'hostilité sur les alignement donc gg , merci pour tout
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Koybe
Novice
Inscrit le: 29 Juin 2004
Messages: 15
Répondre en citant
Posté le : 01/07/2004 07:59:33 Sujet du message :

Je voudrais que lorsque des PJ qui sont hostiles groupent... et ensuite qu'ils dégroupent, l'hositlité se remette en place. Il n'y a pas d'événement concernant les groupes, commet peut-on faire?

merci!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orlondow
Acolyte
Inscrit le: 09 Juin 2004
Messages: 33
Répondre en citant
Posté le : 28/07/2004 11:23:09 Sujet du message :

et pour que les neutres soient vraiment neutres avec les autres ? (que les autres ne soient pas en hostile avec) Very Happy
_________________
Les portes de Gwalap serveur Persistent/Action
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 09/08/2004 20:42:43 Sujet du message :

Salut
Voila je voudrais utiliser un système similaire, mais qui définirait la faction celon un objet dans l'inventaire et je voudrais savoir quelle ligne je dois changer. Et aussi par la même occasion si ça ne vous dérange pas,je voudrais savoir quel script mettre dans le OnEnter d'un trigger pour que le pj soit téléporté dans un endroit différent celon l'objet.

un petit exemple au cas ou je serais pas tres clair:
pj possede objet1 téléporté ville 1
pj possede objet 2 téléporté ville 2
J'espere que vous pourrez résoudre mon probleme
A+
_________________
Retour de forums d'aide aux créateurs
===> La communauté d'Aurora
===>Le sanctuaire des Scripts
===>Le salon de la 3D
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 10/08/2004 08:10:03 Sujet du message :

Pour ton système similaire à base d'objet il suffit de changer les tests if... A la place de
NWScript :
if (iAligne==ALIGNMENT_EVIL)
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.

tu mets :
NWScript :
if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet1")))
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.

De même pour les tests d'aprés, tu remplace tout les tests d'alignements par des tests sur les objets...

Ensuite pour le Trigger, il faut donc créer un script dans le OnEnter de ce style.

NWScript :
object oPC=GetEnteringObject();


void main()
{
  if (GetIsPC(oPC))//si c'est un joueur
  {
      if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet1")))// si il a l'objet1
      {
      location locVille1=GetLocation(GetObjectByTag("tag d'un waypoint dans la ville1"));// determination de la ville
      AssignCommand(oPC,ActionJumpToLocation(locVille1));// on envoie le joueur dans la ville
      }
  }
}
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.

Bien sur tu peux complet le script en faisant du copier-coller et en changeant juste les différents tags...
Voilà j'espère que ça marchera. Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 10/08/2004 12:00:27 Sujet du message :

Merci d'avoir répondu aussi vite, mais il y a quelque chose qui m'intrigue, cette ligne là :
Code :
int iAligne=GetAlignmentGoodEvil(oPC);/// on recupere l'alignement du joueur arrivant
object oPlayer=GetFirstPC(); /// on amorce la boucle

Et aussi celle là :
Code :
int iPlayer=GetAlignmentGoodEvil(oPlayer);/// on recupere l'alignement des joueurs deja la
if ((iPlayer==ALIGNMENT_GOOD)||(iPlayer==ALIGNMENT_NEUTRAL))


J'ai quand même voulu essayer, mais j'ai du faire un connerie à la fin, puisque ça ne compile pas. Je suis sur que c'est une erreur bête genre une accolade mal plaçée ou un truc du genre, j'ai essayé d'en rajouter une puis d'en enlever mais sans aucun effet, je vous met ce que j'ai fais.
Code :
/// A placer dans OnClientEnter
/// Pour un module avec deux factions differentes
/// Chacune des faction tant hostile entre elle....
//////////////////////////////////////////////////
object oPC=GetEnteringObject();


void main()
{
if (GetIsPC(oPC))
{
int iAligne=GetAlignmentGoodEvil(oPC);/// on recupere l'alignement du joueur arrivant
object oPlayer=GetFirstPC(); /// on amorce la boucle

if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet1"))) /// Cas ou le joueur a chosit la fact1
{
while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
{
int iPlayer=GetAlignmentGoodEvil(oPlayer);/// on recupere l'alignement des joueurs deja la
if ((iPlayer==ALIGNMENT_GOOD)||(iPlayer==ALIGNMENT_NEUTRAL))
{
SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
}
oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
}
}
if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet2"))) /// meme chose pour la fact2
{
while (GetIsObjectValid(oPlayer))
{
int iPlayer=GetAlignmentGoodEvil(oPlayer);
if((iPlayer==ALIGNMENT_NEUTRAL)||(iPlayer==ALIGNMENT_EVIL))
{
SetPCDislike(oPC,oPlayer);
}
oPlayer=GetNextPC();
}
}

_________________
Retour de forums d'aide aux créateurs
===> La communauté d'Aurora
===>Le sanctuaire des Scripts
===>Le salon de la 3D
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 10/08/2004 16:29:22 Sujet du message :

Je vais essaye d'éclairer ta lanterne...
Tout d'abord en ce qui concerne
NWScript :

int iAligne=GetAlignmentGoodEvil(oPC);/// on recupere l'alignement du joueur arrivant
object oPlayer=GetFirstPC(); /// on amorce la boucle
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.

Dans ton cas la première ligne tu n'en as pas besoin...

Quand à la seconde ligne : elle est INDISPENSABLE pour exécuter la boucle While. Comme je l'ai indiqué elle sert à amorcer la boucle (cette boucle sert à déterminer le comportement du joueur entrant vis-àvis des autre joueur).

Je ne sais pas ce que tu ne comprends pas dans l'autre ligne mais je suppose que c'est ||. En fait ||, c'est l'opérateur logique OU tout simplement.

Bon en fait ton script ça donne un truc comme ça ( je l'ai fait donc je te le mets) :
NWScript :
/// A placer dans OnClientEnter
/// Pour un module avec deux factions differentes
/// Chacune des faction tant hostile entre elle....
////////////////////////////// ////////////////////
object oPC=GetEnteringObject();


void main()
{
    if (GetIsPC(oPC))
    {
    object oPlayer=GetFirstPC(); /// on amorce la boucle

            if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet1"))) /// Cas ou le joueur a chosit la fact1
            {
              while (GetIsObjectValid(oPlayer))/// debut de la boucle qui parcours tout les joueurs de la liste..
                {
                  if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet2")))
                  {
                  SetPCDislike(oPC,oPlayer); /// on change le comportement du joueur vis-avis des autres..
                  }
                oPlayer=GetNextPC();/// on continue de parcourir la listes des joueur
                }
            }
            if (GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet2"))) /// meme chose pour la fact2
            {
                while (GetIsObjectValid(oPlayer))
                {
                  if(GetIsObjectValid(GetItemPossessedBy(oPC,"tag de l'objet1")))
                  {
                  SetPCDislike(oPC,oPlayer);
                  }
                oPlayer=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.


En fait il te manquait des accolades et les tests des boucles étaient pas les bons (c'était les lignes qui t'intriguaient).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 10/08/2004 17:31:00 Sujet du message :

Merci pour tes explications et pour le script. Wink
J'aurais surement à en ajouter avec le temps et maintenant je sais comment faire .

[Edit] Ca marche pas
En fait le script rend les pj hostile envers mes pnj et non pas entres eux.
_________________
Retour de forums d'aide aux créateurs
===> La communauté d'Aurora
===>Le sanctuaire des Scripts
===>Le salon de la 3D
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orlondow
Acolyte
Inscrit le: 09 Juin 2004
Messages: 33
Répondre en citant
Posté le : 11/08/2004 08:40:27 Sujet du message :

question stupide : Dans le module "bien contre le mal", comment font-ils pour que non seulement le groupe des pjs du "bien" soit hostile envers les pjs du "mal" et vice versa, mais aussi que les pnjs du "bien", (donc amicaux avec les pjs du "bien") soient hostiles aux pjs du "mal" (et que bien sûr les pnjs du "mal" soient hostiles aux pjs du "bien" et amicaux avec les pjs du "mal") ? (vous me suivez jusque là ? Embarassed

note : ce script fonctionne avec un système d'objet indropable (on a une "pierre du bien" ou une "pierre du mal" à l'issue d'un dialogue quand on arrive la première fois sur le module).

Par ailleurs, il y a des zones où tous les pjs sont amicaux entre eux (la zone "sanctuaire" de respawn) : c'est un script ou bien c'est simplement que cette zone est marquée "pas de JcJ" dans ses propriétés ?

En tout cas c'est un très bon exemple de ce genre de système mais pour ce qui est de retrouver ce script... j'ai besoin d'un pro Laughing

Merci d'avance Very Happy
_________________
Les portes de Gwalap serveur Persistent/Action
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 11/08/2004 09:35:39 Sujet du message :


Mars a écrit :
[Edit] Ca marche pas
En fait le script rend les pj hostile envers mes pnj et non pas entres eux.
- Il me semble que ça ne fonctionne pas bien avec le OnClientEnter :
essaie de mettre ça dans le OnEnter des zones ou arrivent tes PJ. Wink

- ça ne peut pas affecter tes PNJ, ça doit venir d'ailleurs,
avec la condition if (GetIsPC(oPC))
suivie du couple GetFirstPC()/GetNextPC() c'est tout simplement impossible! Embarassed



Orlondow a écrit :
Dans le module "bien contre le mal"
Et si t'allais leur demander?
ça serait beaucoup plus simple, non? Very Happy Laughing
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 11/08/2004 12:19:01 Sujet du message :


kiky.le.magnifique a écrit :
- Il me semble que ça ne fonctionne pas bien avec le OnClientEnter :
essaie de mettre ça dans le OnEnter des zones ou arrivent tes PJ. Wink

- ça ne peut pas affecter tes PNJ, ça doit venir d'ailleurs,
avec la condition if (GetIsPC(oPC))
suivie du couple GetFirstPC()/GetNextPC() c'est tout simplement impossible! Embarassed
Je ne vais pas vous contredire je n'y connais rien, je test dans le onter de ma zone et j'éditerais pour dire si ça marche ou non.
Et d'apres vous, d'où peut venir mon problème
_________________
Retour de forums d'aide aux créateurs
===> La communauté d'Aurora
===>Le sanctuaire des Scripts
===>Le salon de la 3D
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orlondow
Acolyte
Inscrit le: 09 Juin 2004
Messages: 33
Répondre en citant
Posté le : 15/08/2004 10:59:39 Sujet du message :


Citation :
Et si t'allais leur demander?
ça serait beaucoup plus simple, non? Very Happy Laughing
mouai... je risque de me faire jeter mais bon, je vous tiendrais au courant si on me réponds Embarassed
_________________
Les portes de Gwalap serveur Persistent/Action
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
aquamitchel
Novice
Inscrit le: 30 Aoû 2005
Messages: 5
Localisation: france
Répondre en citant
Posté le : 22/04/2006 10:17:08 Sujet du message :

c'est un vieux sujet mais j'espere qu'on va pouvoir me repondre ^^

==> le script d'Archeops marche bien mais les PNJ eux restent ou "gentils" avec tout le monde ou "méchant" avec tout le monde...donc est-il possible de faire que le script des alignements s'applique aussi aux PNJ.....???

c'est à dire ==> un PNJ d'alignement "mauvais" hostile à un PJ et à un PNJ d'alignement "bon"
...et un PNJ d'alignement "neutre" gentil avec un PJ "neutre" mais méchant avec un PNJ d'alignement "mauvais"....etc...

je me fais comprendre ? Embarassed
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Orlondow
Acolyte
Inscrit le: 09 Juin 2004
Messages: 33
Répondre en citant
Posté le : 26/04/2006 08:06:21 Sujet du message :

tu vas trouver ça terrible comme réponse mais je crois que ça avait déjà été posé à un moment et à un autre et... il n'y a pas moyen de faire ça (enfin il me semble que c'est ce qu'on m'avait répondu).

le problème c'est qu'on peut pas donner une faction de PNJ (par exemple la faction "hostile" par défaut) à un joueur. C'est un peu comme si les joueurs et les NPC avaient des factions différentes et qu'il était impossible de concilier les deux Sad

mais il existe peut-être une solution (Embarassed) qui consisterait à faire en sorte que les NPC "neutres" à l'origine deviennent "hostiles" lorsqu'ils perçoivent des joueurs "mauvais". Mais bon c'est bof comme solution parce que du coup si un "bon" se pointe ils vont l'attaquer si il y a un perso "mauvais" dans le coin. En plus se pose le problème de faire redevenir "neutres" les NPC devenus "hostiles" après que le "mauvais" soit parti. Shocked

Le gros problème réside donc, comme tu l'as dit, que les NPC ont un comportement uniforme face aux PC, et ne peuvent donc par conséquent être "amicaux" avec l'un et "hostiles" avec l'autre. Razz

je suppose qu'il y a toujours pas moyen d'assigner des factions de NPC aux PC malgré toutes ces merveilleuses avancées scriptologiques ? Sinon si quelqu'un a un moyen de biaiser ça ce serait super ! Very Happy

NB : j'ai pas réussi à ce qu'on me file le script du "bien contre le mal", et franchement je vois pas comment ils faisaient.
_________________
Les portes de Gwalap serveur Persistent/Action
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Argyl
Grand Sage du Conseil
Inscrit le: 09 Fév 2005
Messages: 704
Répondre en citant
Posté le : 26/04/2006 08:37:15 Sujet du message :

J'ai une proposition, mais qui n'est pas du domaine du script (et oui, ils ne peuvent pas tout Very Happy ) :

Vous créez de nouvelles factions et vous définissez les relations entre toutes ces factions dans le .2da qui gère tout ça. Sympa ! Non ? Mr. Green
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Enki
Légende vivante
Inscrit le: 06 Déc 2005
Messages: 432
Répondre en citant
Posté le : 26/04/2006 10:46:27 Sujet du message :

> Aquamitchel : D'abord Bonjour !


Aquamitchel a écrit :
==> le script d'Archeops marche bien mais les PNJ eux restent ou "gentils" avec tout le monde ou "méchant" avec tout le monde...donc est-il possible de faire que le script des alignements s'applique aussi aux PNJ.....???
Oui, en effet, ce script est fait "pour" les joueurs ^^.


Citation :
c'est à dire ==> un PNJ d'alignement "mauvais" hostile à un PJ et à un PNJ d'alignement "bon"
...et un PNJ d'alignement "neutre" gentil avec un PJ "neutre" mais méchant avec un PNJ d'alignement "mauvais"....etc...
oui, bien sûr, c'est tout à fait possible. C'est même assez facile ^^ Laughing

> Orlondow :

Orlondow a écrit :

le problème c'est qu'on peut pas donner une faction de PNJ (par exemple la faction "hostile" par défaut) à un joueur. C'est un peu comme si les joueurs et les NPC avaient des factions différentes et qu'il était impossible de concilier les deux Sad
En fait, cela n'a rien à voir avec les factions. Il ne faut pas confondre la faction et la réputation.
D'ailleurs, dans le script d'Archéops, il n'y a pas de fonction script qui fait quoi que ce soit aux factions.

Les factions : il y en a 5 par défaut :
STANDARD_FACTION_COMMONER
STANDARD_FACTION_DEFENDER
STANDARD_FACTION_HOSTILE
STANDARD_FACTION_MERCHANT

Plus celle du joueur qui en effet, ne peut être modifié, mais sur laquelle on peut influer, mais pas dans le sens qui t'intéresse. On peut cependant en rajouter autant que l'on veut pour les PNJs seulement, comme le disait Argyl.

La réputation : Il y en a trois et pas une de plus :
Enemy
Friend
Neutral

Argyl > Dans la mesure où l'éditeur permet de créer directement des factions personnalisées, je pense que dans ce cas, il est inutile de trifouiller les 2da.

En fait, si tu veux que les PNJs se comportent de tel ou tel manière face à d'autres PNJs ainsi qu'aux PJs appartenant à une autre nation ou bande, ( je n'utilise pas le terme de faction, afin de ne pas être confus ) tu as deux possibilités :

Soit tu créés trois Subraces (ethnies) différentes : " Les bons", "Les moyens", "Les pas bons".

Et tu les opposes.

Soit tu utilises l'alignement. Le problème de ce système, est que si un joueur change d'alignement en faisant de bonnes ou de mauvaises actions, alors il change automatiquempent de faction. Cela peut être un inconvénient comme un avantage, à toi de voir.


Ce que je te propose pour aller dans la continuité de ce que tu as déjà fait :

Créer trois factions personnalisées directement avec l'éditeur pour régler le comportement de PNJ à PNJ. Chacune de ces factions devra être neutre avec la faction du joueur.

Ensuite, dans le script de perception de tes PNJs, tu précises que si un le PNJ qui est l'hôte du script (OBJECT_SELF) est d'alignement bon et si le joueur qu'il voit est d'alignement mauvais alors OBJECT_SELF doit devenir enemy. Il ne change pas de faction, donc si un PJ "bon" passe par là, il sera considéreé comme neutre.
Tu fais d'autres conditions du même type pour les autres alignement.

Enjoy, comme dirait notre cher ami Argyl !
 
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 : 26/04/2006 11:40:45 Sujet du message :

Salut à vous.

Bon voila j'ai un petit script pour vous, trés simple qui peut ce faire avec autant de faction que vous voulez. Déjà au lieu de vous basez sur un objet basé vous sur un truc simple lol, genre SetLocalInt (c'est mon script) :

NWScript :
object oEnemi = GetFirstPC();
int iTeamPC = GetLocalInt(oPC, "Team");
if(GetIsPC(oPC) && GetIsPC(oEnemi))
{
while(GetIsObjectValid(oEnemi))
{
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.


Voila, vous avez juste a entré la variable lorsque le joueur choisi sa faction (SetLocalInt(oPC, "Team", 1 (pour bien)- 2 (pour mal)- 3 (pour neutre) ainsi dessuite).

Voila @ pluche

Edit : ceux qui sont nouveau, donc qui viennent d'entrer sur le serveur auront comme team 0, donc ils seront hostile aussi envers le joueur qui entre dans une équipe. Ecarté les joueurs qui n'ont pas d'équipe, et ceux qui en ont.
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Argyl
Grand Sage du Conseil
Inscrit le: 09 Fév 2005
Messages: 704
Répondre en citant
Posté le : 26/04/2006 13:03:04 Sujet du message :


Enki a écrit :
Argyl > Dans la mesure où l'éditeur permet de créer directement des factions personnalisées, je pense que dans ce cas, il est inutile de trifouiller les 2da.
Enjoy, comme dirait notre cher ami Argyl !
Oui, je veux bien, mais si tu veux déterminer le degré de "tolérance" à quel point la faction est amie avec celle du joueur ou hostile à celle-ci ou a défaut d'une tendance dans l'un ou l'autre sens neutre, il faut passer par le .2da qui gère les factions et leurs relations.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Enki
Légende vivante
Inscrit le: 06 Déc 2005
Messages: 432
Répondre en citant
Posté le : 26/04/2006 13:08:29 Sujet du message :

Non, tu peux le faire directement par le biais de l'éditeur.
> Outil, éditeur de faction > Avancées.

Les 2da pour les factions peuvent te servir à changer les modifications de comportement entre les factions.

Ex : de combien ton alignement va baisser si tu voles un membre de la faction X ou si tu le tues, etc .... le tout en fonctiuon de témoins éventuels, etc....
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante


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 77.039ms