La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/05/2025 05:52:14


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 15/11/2005 22:50:50 Sujet du message : Saleté de script de £%*¨%!!! [Modifier l'alignement][Résolu]

Raaaaah, ça fais trop longtemps que je suis deçu, et je ne trouve pas la solution, alors je demande de l'aide please:
Je cherche à réaliser un script lié à un item. Le dit item doit pouvoir modifié l'alignement d'un joueur ciblé (pour des questions de rp), et ce avec un et même item. Donc un script qui permet d'attribuer les 9 types d'alignement à un seul item, et sur une cible joueur...et là, je rame...je me demande même si c'est seulement possible. Alors une petite aide?
Dernière édition par Ecuyer paumé le 19/11/2005 02:34:18; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 16/11/2005 03:39:12 Sujet du message :

Une idée qui serait possible mais que je n'ai pas développé à fond, ce serait de lancer un dialogue à partir de l'item.

Dans ce dialogue tu aurais :

Code :

Que voulez-vous faire ?
 - Donner 1 point d'alignement BON
 - Donner 1 point d'alignement LOYAL
 - Donner 1 point d'alignement MAUVAIS
 - Donner 1 point d'alignement CHAOTIQUE


Et sur chaque phrase tu mets un script qui aurait un AdjustAlignment vers chaque "tendance".


Pour le début voici comment on peut faire parler un item dans son inventaire :

Tu crées un objet avec "item_align" pour Tag
Cet objet tu le mets en "pouvoir unique sur soi uniquement" et "utilisation illimitée".

Tu crées un script qui s'appelle "item_align".
Tu crées un dialogue avec "item_align" pour nom.

Normalement, si tu as le script de base de nwn, à l'activation de l'objet, il cherchera le script qui a le même nom que le tag de l'objet Wink
Et voici donc le script qui devra s'intituler comme le tag de ton item :

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.



Maintenant, dans le dialogue, tu mets ce que j'ai marqué au dessus.

Après il ne "restera" plus qu'à faire les scritps qui vont dessus.

Voilà, c'est une idée, il peut y en avoir d'autres.
 
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 : 16/11/2005 03:59:25 Sujet du message :

Je pense que le dialogue est en effet le plus simple, mais peut être pas le plus pratique.

En tout cas, avec un seul item et un seul script dans le Onactivated, je pense que c'est impossible.
Il y a bien une solution qui correspondrait à ce que tu veux, mais c'est long à mettre en oeuvre, c'est de créer un sort par changement d'alignement et de coller ça sur un objet, mais c'est fastidieux.

Sinon (là je suis pas sur de la faisabilité, et ça me semble compliqué), quand le DM active l'objet sur un joueur, tu crées une créature pendant un court instant, le dm dit une phrase (genre "m5c2" pour 2 points de chaos et 5 mauvais, un truc comme ça) la créature l'entend et applique l'effet sur le joueur. Si ça te branche comme solution je peux essayer de faire les scripts.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 16/11/2005 11:42:36 Sujet du message :

Salut, l'alignement est assez complexe, et pour scripter sur le sujet, il faut avoir saisi une règle simple. Cette règle est aussi valable pour le couple "Loi/Chaos" que "Bon/Mauvais"

Ce qu'il y a a savoir : L'alignement est une valeur qui vas de 0 à 100 en passant par 50 avec des bonds sur l'echelle de progréssion, bonds qui sont différents selon le sens de progréssion sur l'echelle.

0 à 30= Chaos ou Mauvais

31 à 69 = Neutre

70 à 100 = Loi ou Bon

par contre la progréssion passe par des étapes ! C'est à dire que si on part de 0 et que l'on ajoute 1 de manière progréssive la suite subira un bon, c'est ce qui rend si complexe la gestion des alignements !
Exemple de progréssion créchendo : 0, 1, 2, 3, 4,....., 28, 29, 30, 50, 51, 52, ......68, 69, 85, ...., 99, 100

Exemple de progréssion Décréchendo : 100, 99, 98, ....., 72, 71, 70, 50, 51, 52, ..., 33, 32, 31, 15, 14, ...., 3, 2, 1, 0

En gros , cela donne ça :

|------|-------| |--------|---------| |--------|--------|
0.....15......30..31.......50........69..70.......85.......100
Mauvais....................Neutre..........................Bon
Chaos......................................................Loi

Une fois que l'on a saisi cela, il est facile de scripter la gestion des alignement

Je n'ais pas trop saisi ce que tu veux que ton item fasse ou comment il doit fonctionner.
POur exemple je te donne un script qui utilisait ce principe d'echel pour dissimuler l'alignement des pj en les randant neutre. Ce script n'a rien a voir avec ce que tu demande ! (c'est juste pour l'exemple !)
NWScript :

//::////////////////////////// /////////////////////
//:: Name
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//::////////////////////////// ////////////////////
/*

*/

//::////////////////////////// ////////////////////
//:: Created By:Seth de Sombrelune
//:: Created On: 11/03/05
//::////////////////////////// ////////////////////
void main()
{
    object oItem = GetPCItemLastUnequipped();
    object oPC = GetPCItemLastUnequippedBy();

    if(GetTag(oItem)=="auraneutre")
    {
        int iGoodEvil=GetCampaignInt("BaseItem","PCGoodEvil",oPC);
        int iLawChaos=GetCampaignInt("BaseItem","PCLawChaos",oPC);

//::////////////////////////// ////////////////////
//::Gestion Bon / Mauvais
//::////////////////////////// ////////////////////



        if ( iGoodEvil <=30) //Evil
        {
            AdjustAlignment(oPC, ALIGNMENT_EVIL, 100);
            AdjustAlignment(oPC, ALIGNMENT_EVIL, 100); // 0
            AdjustAlignment(oPC, ALIGNMENT_GOOD, iGoodEvil);
        }

        if ( iGoodEvil >=70) //Good
        {
            AdjustAlignment(oPC, ALIGNMENT_GOOD, 100);//85
            if ( iGoodEvil <85)
            {
                int iAdjust =85-iGoodEvil;
                SendMessageToPC(oPC,"GE ="+IntToString(iGoodEvil));
                SendMessageToPC(oPC,"adjust ="+IntToString(iAdjust));
                AdjustAlignment(oPC, ALIGNMENT_EVIL, iAdjust);
            }
            else
            {
                int iAdjust =iGoodEvil-85;
                SendMessageToPC(oPC,"GE ="+IntToString(iGoodEvil));
                SendMessageToPC(oPC,"adjust ="+IntToString(iAdjust));
                AdjustAlignment(oPC, ALIGNMENT_GOOD, iAdjust);
            }
        }

        if ( iGoodEvil >=31 && iGoodEvil <=69) //Neutre
        {
        AdjustAlignment(oPC, ALIGNMENT_NEUTRAL, 50);//50
            if ( iGoodEvil <50)
            {
                int iAdjust =50-iGoodEvil;
                AdjustAlignment(oPC, ALIGNMENT_EVIL, iAdjust);
            }
            else
            {
                int iAdjust =iGoodEvil-50;
                AdjustAlignment(oPC, ALIGNMENT_GOOD, iAdjust);
            }
        }
//::////////////////////////// ////////////////////
//::Gestion Loi / haos
//::////////////////////////// ////////////////////



        if ( iLawChaos <=30) //Chaos
        {
            AdjustAlignment(oPC, ALIGNMENT_CHAOTIC, 100);
            AdjustAlignment(oPC, ALIGNMENT_CHAOTIC, 100); // 0
            AdjustAlignment(oPC, ALIGNMENT_LAWFUL, iLawChaos);
        }

        if ( iLawChaos >=70) //Law
        {
            AdjustAlignment(oPC, ALIGNMENT_LAWFUL, 100);//85
            if ( iLawChaos <85)
            {
                int iAdjust2 =85-iLawChaos;

                AdjustAlignment(oPC, ALIGNMENT_CHAOTIC, iAdjust2);
            }
            else
            {
                int iAdjust2 =iLawChaos-85;

                AdjustAlignment(oPC, ALIGNMENT_LAWFUL, iAdjust2);
            }
        }

        if ( iLawChaos >=31 && iLawChaos <=69) //Neutre
        {
        AdjustAlignment(oPC, ALIGNMENT_NEUTRAL, 50);//50
            if ( iLawChaos <50)
            {
                int iAdjust2 =50-iLawChaos;
                AdjustAlignment(oPC, ALIGNMENT_CHAOTIC, iAdjust2);
            }
            else
            {
                int iAdjust2=iLawChaos-50;
                AdjustAlignment(oPC, ALIGNMENT_LAWFUL, iAdjust2);
            }
        }
effect eEffect = EffectVisualEffect(VFX_IMP_HEALING_X);
int iDuration =DURATION_TYPE_TEMPORARY;


ApplyEffectToObject(iDuration, eEffect, oPC,5.0);
    }
}
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.


J'espère que cela pourra t'aiguiller
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 16/11/2005 13:00:35 Sujet du message :

Ok, merci à tous de vous être penché sur mon problème. J'avais déja pensé à la modification de l'alignement en passant par un dialogue et cela ne m'a posé qu'un seul problème. C'est que c'est le joueur ciblé qui choisi la modification. Donc certains pourrait en abuser (genre paladin/chevalier noir). Donc à oublié à moins que je me trompe quelque part. Bref, je me doutais bien qu'assigner plusieurs scripts à un seul objet etait impossible. Donc comment revenir à un item qui change l'alignement de la cible? C'est pas gagné...
 
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 : 16/11/2005 15:12:47 Sujet du message :

C'est possible mais j'avais deja precisé que je n'avais plus trop le temps de faire des scripts pour les personnes. Il faut que t'insere un script avec "Ecouteur", cela veut dire que si le joueur dit "Alignement Bon", le script le mettra alignement bon... Mais comme c'est un script long je ne pourrais te le faire. Apres pour evite Paladin/Chevalier noir, il faut mettre un "if" pour evite sa (tu dit : si le joueur est paladin le script ne s'execute pas)
_________________
[http]
 
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 : 16/11/2005 15:13:06 Sujet du message :

C'est pas forcément le joueur qui a le dialogue, le script de Djezebel le ferait ouvrir par celui qui utilise l'item.
Le truc c'est qu'il faut stocker le joueur cible quelque part.

Si ton item a pour tag item_align :

dans le OnActivated :

NWScript :


object oActivator = GetItemActivator(); //celui qui utilise l'item
object oCible = GetItemActivatedTarget(); //le joueur cible
object oItem = GetItemActivated();
string sTag = GetTag(oItem);

if (sTag == "item_align")
{
SetLocalObject(oActivator,"JOUEURCIBLEALIGN",oCible);
AssignCommand(oActivator,ActionStartConversation(oActivator,"dia_item_align")); //l'utilisateur ouvre le dialogue "dia_item_align"

}


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.


ensuite dans le dialogue, tu retrouve le joueur cible par la commande :

NWScript :


object oPC = GetLocalObject(OBJECT_SELF,"JOUEURCIBLEALIGN");
AdjustAlignment(oPC,ALIGNMENT_CHAOTIC,iValeur); //la tu remplis en fonction du noeud de dialogue
DeleteLocalObject(OBJECT_SELF,"JOUEURCIBLEALIGN");
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 16/11/2005 19:42:07 Sujet du message :

Merci Sith vicious! Ce script fonctionne et offre bien la modification de l'alignement en fonction des choix du MD. Merci merci merci, je vais pouvoir dormir maintenant, merci à tous!
 
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 : 16/11/2005 20:11:47 Sujet du message :

Ben de rien, quand on peut rendre service. Very Happy
 
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 47.733ms