La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 27/04/2024 12:05:47


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 16/05/2007 11:54:05 Sujet du message : Mode AFK

Salut a tous, je demande une fois de plus votre aide pour la simple et bonne raison que je ne maîtrie absolument pas les effets visuels ...

Je m'explique, je doit créer un baton qui quand on l'active créé un effets visuel autour du perso (2 en fait : Visage spectral et globe d'invulnérabilité mineure).
Or, j'ai deux problèmes : Je ne connais pas les noms des effets visuels et je n'arrive pas a les mettre sur le perso, voici ce que j'ai essayé :

Dans le OnActivatedItem, du module :
NWScript :
#include "x2_inc_switches"
void main()
{
    object oItem = GetItemActivated();
    string sTag = GetTag(oItem);
    object oPc = GetItemActivator();
    effect eEff1 = EffectVisualEffect(VFX_DUR_???);
    effect eEff2 = EffectVisualEffect(VFX_DUR_???);


    if(sTag == "BATON_AFK")
        {
            if(GetLocalInt(oPc, "AFK") == FALSE)
                {
                SetLocalInt(oPc, "AFK", TRUE);
                ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEff1, oPc);
                ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEff2, oPc);
                }
            else
                {
                SetLocalInt(oPc, "AFK", FALSE);
                effect eEff = GetFirstEffect(oPc);
                while( GetIsEffectValid(eEff) == TRUE)
                    {
                    if(eEff == eEff1 || eEff == eEff2)
                    RemoveEffect(oPc, eEff);
                    eEff = GetNextEffect(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.


Merci d'avance
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
ballestolive
Ecuyer
Inscrit le: 15 Nov 2005
Messages: 64
Localisation: A 35 KM Sud de Paris.
Répondre en citant
Posté le : 18/05/2007 06:25:13 Sujet du message :

Il est vrai qu'un bon baton AFK est toujours utile, mais DSL je ne suis pas scripteurs.

Tu aura certainement une réponse d'ici peu, il y a tant de bon scripteurs qui passe ici. Very Happy

Si cela fonctionne je te demanderai l'autorisation de l'utiliser aussi...
_________________
Coordinateur du projet LanceDragon VF un module pour NWN2. [http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 20/05/2007 21:21:55 Sujet du message :

Je sais, merci, je faisait déja partie du forum mais sous un autre pseudo, d'où le peu de messages mdr

Si quequ'un a une idée, là je désespère Confused
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 21/05/2007 16:26:51 Sujet du message :

Visage spectral : VFX_DUR_ETHEREAL_VISAGE
Globe d'invulnérabilité : VFX_DUR_GLOBE_INVULNERABILITY

J'ai tapé Ethe pour spectral, et globe pour le globe, cherche un peu Wink

Bon pour ton script, je vais être franc je vois pas d'erreur, néanmoins verifie ça :

- Tag de ton ITEM, est-il vraiment bien écrit.
- Enleve les conditions (les variables) et test donc sans, pour au moins si des effets s'applique quand l'objet est utilisé. Ensuite remet tes variables si ça marche.

Si ça marche pas, fait un script via le OnUsed d'un panneau par exemple, et fait plusieurs tests, ensuite t'auras juste à copier coller Wink
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14064
Localisation: Quadran Alpha
Répondre en citant
Posté le : 21/05/2007 17:04:06 Sujet du message :

Gimli> peux tu changer la taille de l'image dans ta signature conformément aux règles du forum? ([http]


Citation :
Vous avez tout à fait le droit d'utiliser des images dans votre signature cependant celles-ci doivent avoir une largeur maximale de 200 pixels et une hauteur maximale de 55 pixels. De plus, ces images ne doivent pas dépasser un certain poids (comprenez: le nombre d'octets composant l'image) : ce poids se limite à 8 Ko pour tout type.

_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 22/05/2007 18:37:40 Sujet du message :

Premièrement merci pour votre aide,

Ensuite pour visage spectral, je pensaisr que l'effet visuel que tu me propose était celui de visage éthéré mais après réflexion, ça doit être le même donc effectivement je vais prendre celui-ci.

Je vais retester mon script selon ta tachnique, je n'y avais pas pensé.

PS : Image supprimée.
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 22/05/2007 18:51:27 Sujet du message :

Bon, malheureusement mon problème se situe maintenant lorsqu'il faut supprimer les effets visuels, le script s'active mais rien ne se passe Sad
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 22/05/2007 19:03:17 Sujet du message :

Faut faire une boucle pour supprimer les effets de types visuels, c'est le seul moyen actuellement.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 22/05/2007 19:52:57 Sujet du message :

C'est bien là mon problème, j'effectue bien une boucle ...
Peut-être que je ne met pas les bonnes conditions mais tout me parait bon ...

J'ai vérifié les variables, ça marche bien, 1ère fois : activation et 2nde fois désactivation donc l'erreur ne peut venir que de la boucle ...
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/05/2007 20:57:52 Sujet du message :

J'ai regardé le script mais je n'ai pas nwn pour tester là. Essaye de mettre le bloc de la condition if comme ceci :
NWScript :

while( GetIsEffectValid(eEff) == TRUE) {
if(eEff == eEff1 || eEff == eEff2) {
RemoveEffect(oPc, eEff);
}
eEff = GetNextEffect(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.


Car je sais pas si nwscript "comprend" qu'il faut procéder qu'à la ligne suivant la condition si le bloc { } n'est pas précisé. Mais s'il ne le comprenais pas ça donne une boucle infinie (peut être que nwn la casse) enfin bon ... peut être que Razz
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 22/05/2007 21:56:31 Sujet du message :

Il le comprend très bien mais créer une variable de type effet et la comparer avec une variable effectivement récupérée dans le jeu, il ne le fera pas. Pour celà qu'il faut enlever tous les effets visuels, à moins que tu n'aies la fonction permettant de connaitre chacune des particularités de l'effet.(GetEffectInteger) Voici la méthode(pas l'éditeur sous la main donc erreurs possibles) pour supprimer tous les effets de type visuel :

NWScript :
effect eEffect = GetFirstEffect(oPC);
while(GetIsEffectValid(eEffect))
{
  if(GetEffectType(eEffect)==EFFECT_TYPE_VISUALEFFECT)
  {
    RemoveEffect(oPc, eEffect);
  }
  eEffect = GetNextEffect(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.


Edit : Ha ben tiens on est dans la biblio binaire de nwn2(ça porte le même nom que celle de nwn1 non ?) donc je vais tenter de te donner la réponse pour enlever un effet visuel en particulier(en fait les deux que tu demandes) :

NWScript :
effect eEffect = GetFirstEffect(oPC);
while(GetIsEffectValid(eEffect))
{
  if(GetEffectType(eEffect)==EFFECT_TYPE_VISUALEFFECT && (GetEffectInteger(eEffect,1)==VFX_DUR_ETHEREAL_VISAGE || GetEffectInteger(eEffect,1)==VFX_DUR_GLOBE_INVULNERABILITY))
  {
    RemoveEffect(oPc, eEffect);
  }
  eEffect = GetNextEffect(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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 22/05/2007 22:43:56 Sujet du message :

Merci beaucoup pour toutes ces aides mais après tests, rien de concluant malheureusement, les effets visuels restes toujours Sad
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 23/05/2007 08:17:04 Sujet du message :

Je verrais pour te faire ça cette aprem. La j'suis en cours Razz
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 23/05/2007 12:09:06 Sujet du message :

Bon, j'ai fait des tests supplémentaire et il se trouve que la fonction "GetEffectInteger" renvoie toujours 0 quelquesoit l'effet visuel testé sur le personage ... Confused
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 23/05/2007 12:30:32 Sujet du message :

Bon alors, on va proceder par logique, je te propose quelques solutions:

En mode AFK, le joueur n'a plus d'effet rien, etc... il ne joue pas donc. Cette solution marchera à coup sur, si ton module ne donne pas un effet que le joueur doit toujours porter. Bon, je vois que dans ton script, tu as mis les 2 effets en permanent. Dans ce cas la, il y a un script permettant d'enlever tous les effets par rapport à leur nDuration. À ce momment la tu supprimes tous les effets permanents:

NWScript :
void main()
{
effect eEffect = GetFirstEffect(oPC);
    while(GetIsEffectValid(eEffect))
    {
        if(GetEffectDurationType(eEffect)==DURATION_TYPE_PERMANENT)
        {
        RemoveEffect(oPC, eEffect);
        }
    eEffect = GetNextEffect(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.


Sinon je verrais pour te completer ça quand j'aurais fini le download de quelque chose, car la j'en ais besoin. Je me rappel que il y a une library avec les effets je crois, enfin je sais plus ou j'ai vu ça, mais j'en suis sur à 100%

EDIT: Ah voila ! J'ai trouvé une fonction.

normalement, ça devrait marcher. Il faut placer "x0_i0_petrify" dans ton script, et tu as la fonction : RemoveEffectOfType(object oPC, object nEffect) à savoir que grâce a cette fonction, tu enleves l'EFFECT_TYPE que tu veux. Etant donner que VFX_* est un effect visuel, tu mets ça:

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.

_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 23/05/2007 12:46:44 Sujet du message :

Test concluant, les effets ont effectivement été supprimés Cool

Une amélioration du script sera de faire en sorte que ça ne idssipe que les effets visuels recherché mais au moin c'est un scriopt fonctionnel !

MERCI !!!!
_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Gimli_Oakenshield
Novice
Inscrit le: 09 Déc 2006
Messages: 18
Localisation: Devant mon écran
Répondre en citant
Posté le : 23/05/2007 14:05:22 Sujet du message :

Voici le script final il fonctionne très bien (tout du moin pour l'instant ^^) Merci a vous !

NWScript :
#include "x2_inc_switches"
void main()
{
    object oItem = GetItemActivated();
    string sTag = GetTag(oItem);
    object oPc = GetItemActivator();
    int iEffType = EFFECT_TYPE_VISUALEFFECT;
    int iEff1 = VFX_DUR_ETHEREAL_VISAGE;
    int iEff2 = VFX_DUR_GLOBE_INVULNERABILITY;
    effect eEff1 = EffectVisualEffect(iEff1);
    effect eEff2 = EffectVisualEffect(iEff2);

    if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
    {
        SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACTIVATE);
        int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF);
        if (nRet == X2_EXECUTE_SCRIPT_END)
        {
          return;
        }

    }

    if(sTag == "BATON_AFK")
        {
            if(GetLocalInt(oPc, "AFK") == FALSE)
                {
                SetLocalInt(oPc, "AFK", TRUE);
                ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEff1, oPc);
                ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEff2, oPc);
                }
            else
                {
                SetLocalInt(oPc, "AFK", FALSE);
                effect eEff = GetFirstEffect(oPc);
                while( GetIsEffectValid(eEff) == TRUE)
                    {
                    //SendMessageToPC(oPc, IntToString(GetEffectInteger(e Eff,1)));
                    /*if(GetEffectInteger(eEff,1)= =iEff1
                    || GetEffectInteger(eEff,1)==iEff 2)*/

                    if(GetEffectDurationType(eEff)==DURATION_TYPE_PERMANENT && GetEffectType(eEff) == EFFECT_TYPE_VISUALEFFECT)
                        {
                        RemoveEffect(oPc, eEff);
                        }
                    eEff = GetNextEffect(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.

_________________
Nouveau PC trop bien d'la balle !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 : 23/05/2007 14:12:27 Sujet du message :

C'est vrai que je me rappel plus si on peut enlever un effet directement :s

Faudra que je retrouve Confused
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
ballestolive
Ecuyer
Inscrit le: 15 Nov 2005
Messages: 64
Localisation: A 35 KM Sud de Paris.
Répondre en citant
Posté le : 25/05/2007 19:38:37 Sujet du message :

Il a l'air très bien ce script créé de façon communautaire. Wink

Pour que tous en profite, même les plus ignare d'entre nous, pourrais tu en expliqué le fonctionnement ou tout du moins la manière de l'utiliser et de l'incorporer à nos modules.

Merci à tous et surtout à Gimli pour avoir initié ce sujet.
_________________
Coordinateur du projet LanceDragon VF un module pour NWN2. [http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 : 25/05/2007 19:44:23 Sujet du message :

Le script est a mettre dans le OnModuleActivated. L'objet qui lancera le mod AFk du joueur est de tag : "BATON_AFK".

Au debut, la variable "AFK" est à FALSE. Quand elle est a FALSE, ça veut dire que le joueur n'a pas utilisé le bâton, donc qu'il n'est pas AFK. Si il utilise le baton lorsque la variable est a FALSE on lui applique des effets (Eff1 et Eff2) et on change la variable, en la passant a TRUE. A ce moment la si le PJ re-utilise le baton, les effets sont enlever, et le joueur n'est plus considéré comme AFK, et la variable repasse à FALSE. C'est une sorte de levier, mais en bâton Wink

Voila.
_________________
[http]
 
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 45.631ms