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 09:39:06


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
chevalier blanc
Grand Chevalier
Inscrit le: 28 Mar 2005
Messages: 117
Localisation: Sur les Côtes d'Opaline
Répondre en citant
Posté le : 19/07/2006 18:00:16 Sujet du message : [résolu !]Effets spéciaux sur armes et armures...

(je n'ai pas trouvé de topic semblable sur la recherche, pardonnez moi donc si j'ai mal cherché)
Voilà je me lance dans la customisation sévère pour des équipements un peu spéciaux... des artefacts.
J'aimerai savoir comment faire pour que, par exemple, une armure, une fois équipée puisse faire des effets spéciaux sur le pj qui la porte (effet type ghost, voire meme une metamorphose, bouclier magique, etc...)
Ou encore comment faire en sorte qu'une arme, a chaque coup porté ou une fois equipée (comme l'armure) puisse faire un effet donné (tremblement de terre style bump, aura maléfique/bénéfique, etc...)

Je ne sais pas trop ou faire ce genre de script mais d'apres moi ce n'est pas tres compliqué.
Pouvez vous eclairer ma lanterne, ô puissants d'entre les puissants qui détenez le savoir du script ? Cool
Dernière édition par chevalier blanc le 20/07/2006 15:02:55; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 19/07/2006 18:51:36 Sujet du message :


Citation :
une armure, une fois équipée puisse faire des effets spéciaux sur le pj qui la porte (effet type ghost, voire meme une metamorphose, bouclier magique, etc...)
Pour qu'une armure, une fois équipée, applique un effet sur le pj, quelque chose comme ça dans le OnEquipItem devrait faire l'affaire (pas testé) :
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.

Si le PJ qui equipe l'item de tag "armure_fantome", alors ça applique l'effet "visage spectral" sur ce dernier.

Et pour enlever l'effet lorsqu'il désequippe l'armure, dans le OnUnequipItem :

NWScript :
void main()
{
object pj = GetPCItemLastUnequippedBy();
object item = GetPCItemLastUnequipped();

if(GetTag(item) == "armure_fantome")
  {
  effect evis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
  RemoveEffect(pj, evis);
  }
}
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.


Après c'est facilement modifiable pour ajouter de nombreux objets/effets, par exemple :
NWScript :
void main()
{
object pj = GetPCItemLastEquippedBy();
object item = GetPCItemLastEquipped();


if(GetTag(item) == "armure_fantome")
  {
  effect evis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
  ApplyEffectToObject(DURATION_TYPE_PERMANENT, evis, pj);
  }
if(GetTag(item) == "tag d'un autre objet")
  {
  effect evis2 = autre effet();
  Applyblabla( ... );
  }
if( etc ... )
  {
  ...
  }
}
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.


Même chose pour le OnUnequipItem, en esperant que ça puisse t'aider Smile
 
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 : 19/07/2006 19:49:18 Sujet du message :

Hmmm faire en sorte qu'une arme fasse tramblement de terre.. je sais pas si c'est possible, enfin avec des armes de jet, car les armes corp à corp il faut leur rajouter la competence "Lancer un sort". Par contre Lancer un Sort et Effet sont different, fait gaff comment tu t'y prend Smile
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
chevalier blanc
Grand Chevalier
Inscrit le: 28 Mar 2005
Messages: 117
Localisation: Sur les Côtes d'Opaline
Répondre en citant
Posté le : 19/07/2006 19:50:18 Sujet du message :

Cool ! merci pour les armures ! j'ai pas encore testé mais ça m'a l'air logique.

Et pour les armes il n'y a pas une fonction qui permet d'activer un effet a l'impact (juste l'effet parce que rajouter "sort au toucher" fait automatiquement un sort) juste un effet pour le fun, pas forcement avec des degats, mais plutot un effet de sort personnalisé.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 19/07/2006 20:10:17 Sujet du message :

Pour les armes, après une courte recherche, j'ai trouvé ce lien qui devrait combler tes attentes Smile
 
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 : 19/07/2006 20:14:27 Sujet du message :

Si tu rajoutes une propriété "sort déclanché au toucher : Pouvoir unique (OnHit)"
Ensuite tu fais un script du même tag que l'arme ou tu décris tes effets, d'ailleurs fais ça pour tous tes objets, un script avec le tag de l'objet et selon les cas :

NWScript :

#include "x2_inc_switches"
void main()
{
    int nEvent = GetUserDefinedItemEventNumber();
    if (nEvent == X2_ITEM_EVENT_EQUIP)
    {
       
    }
    else if (nEvent == X2_ITEM_EVENT_UNEQUIP)
    {
       
    }
    else if (nEvent == X2_ITEM_EVENT_ONHITCAST)
    {
    //OnHit
    }
}
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 beaucoup plus clair que de faire le tri par tag dans les évenements module, tu as tout ce qui concerne un objet dans un même script.

Ah et sur le script d'Aladar, le truc pour virer les effets va pas marcher...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 19/07/2006 20:28:11 Sujet du message :

En effet ça ne marche pas Embarassed

*a trouvé quoi faire de sa soirée*
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
chevalier blanc
Grand Chevalier
Inscrit le: 28 Mar 2005
Messages: 117
Localisation: Sur les Côtes d'Opaline
Répondre en citant
Posté le : 19/07/2006 20:32:37 Sujet du message :

Ahem... euh EmbarassedEmbarassedEmbarassed
Comment je definis le oPC, l'item et la cible dans ce script ? (désolé mais je suis pas un crack en script Confused)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 19/07/2006 22:38:07 Sujet du message :

Tu ouvres x2_it_example et tu trouves :

NWScript :
//:Confused///////////////////////// /////////////////////
//:: Example Item Event Script
//:: x2_it_example
//:: Copyright (c) 2003 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    This is an example on how to use the
    new default module events for NWN to
    have all code concerning one item in
    a single file.

    Note that this system only works, if
    the following events set on your module

    OnEquip      - x2_mod_def_equ
    OnUnEquip    - x2_mod_def_unequ
    OnAcquire    - x2_mod_def_aqu
    OnUnAcqucire - x2_mod_def_unaqu
    OnActivate  - x2_mod_def_act

*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Georg Zoeller
//:: Created On: 2003-09-10
//:Confused///////////////////////// ////////////////////

#include "x2_inc_switches"

void main()
{
    int nEvent =GetUserDefinedItemEventNumber();
    object oPC;
    object oItem;

  SendMessageToPC(GetFirstPC(),IntToString(nEvent));

    // * This code runs when the item has the OnHitCastSpell: Unique power property
    // * and it hits a target(weapon) or is being hit (armor)
    // * Note that this event fires for non PC creatures as well.
    if (nEvent ==X2_ITEM_EVENT_ONHITCAST)
    {
        oItem = GetSpellCastItem(); // The item casting triggering this spellscript
        object oSpellOrigin = OBJECT_SELF ; // On a weapon: The one wielding the weapon. On an armor: The one wearing an armor
        object oSpellTarget = GetSpellTargetObject(); // On a weapon: The one being hit. On an armor: The one hitting the armor
        oPC = OBJECT_SELF;
    }

    // * This code runs when the Unique Power property of the item is used
    // * Note that this event fires PCs only
    else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
    {
        oPC = GetItemActivator();
        oItem = GetItemActivated();
    }

    // * This code runs when the item is equipped
    // * Note that this event fires PCs only
    else if (nEvent ==X2_ITEM_EVENT_EQUIP)
    {
        oPC = GetPCItemLastEquippedBy();
        oItem = GetPCItemLastEquipped();
    }

    // * This code runs when the item is unequipped
    // * Note that this event fires PCs only
    else if (nEvent ==X2_ITEM_EVENT_UNEQUIP)
    {
        oPC = GetPCItemLastUnequippedBy();
        oItem = GetPCItemLastUnequipped();
    }
    // * This code runs when the item is acquired
    // * Note that this event fires PCs only
    else if (nEvent == X2_ITEM_EVENT_ACQUIRE)
    {
        oPC = GetModuleItemAcquiredBy();
        oItem = GetModuleItemAcquired();
    }

    // * This code runs when the item is unaquire d
    // * Note that this event fires PCs only
    else if (nEvent == X2_ITEM_EVENT_UNACQUIRE)
    {
        oPC = GetModuleItemLostBy();
        oItem = GetModuleItemLost();
    }

    //* This code runs when a PC or DM casts a spell from one of the
    //* standard spellbooks on the item
    else if (nEvent == X2_ITEM_EVENT_SPELLCAST_AT)
    {
        oPC = GetLastSpellCaster();
        oItem = GetSpellTargetObject();
    }
}
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.


Razz
 
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 : 20/07/2006 12:43:52 Sujet du message :

Sith je t'aime, je n'arrivais pas à comprendre les OnUserDef mais maintenant oui!! *love you Embarassed*. Mais question, le OnHitCast marche aussi avec les arme de jet, j'imagine bien me faire l'arme de Zeus et a chaque coup un un clair tombe sur la cible, et boum xD
_________________
[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 : 20/07/2006 12:47:32 Sujet du message :

Je crois que ça marche avec les armes de jet, et qu'avec les armes de tir en revanche c'est le projectile qui déclanche le OnHit. C'est simple à verifier d'ailleurs, si tu peux coller un pouvoir OnHit sur une arme de jet c'est que ça marche ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
chevalier blanc
Grand Chevalier
Inscrit le: 28 Mar 2005
Messages: 117
Localisation: Sur les Côtes d'Opaline
Répondre en citant
Posté le : 20/07/2006 15:02:19 Sujet du message :

C'est excellent ! Ca marche du tonnerre !

Merci beaucoup à toi Sith pour avoir résolu tout ça Very Happy

Et merci aux autres d'avoir essayé Razz
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 66.224ms