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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Fedorya
Novice
Inscrit le: 26 Oct 2005
Messages: 6
Répondre en citant
Posté le : 26/10/2005 04:40:21 Sujet du message : Probleme avec les Target

Bonjour, je suis nouveau sur se forum, et je viens demander votre aide ^^

Voila j'éxplique mon probleme :

Je tente de faire un script qui fait que quand on utilise un objet, celui ci fait automatiquement lancer au joueur trois fois le sort Boule de feu sur la cible que le joueur aura selectionnée.

Le script se déroulera donc dans OnActivateItem du module

Mais j'ai un probleme sur le script, je n'arrive pas a dire au script que le joueur peut cibler les OBJETS, NPC, JOUEURS ET le SOL

Quand j'execute mon script, le script lance les sorts sur les Portes, chaises, monstres et joueurs mais quand je cible le sol, rien ne se passe.

Voila mon probleme en somme, je voudrais que le sort soit lancable sur tout type de cible^^

Je vous serai reconnaissant si vous pouviez m'aider ^^
Merci d'avance !
 
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 : 26/10/2005 10:07:06 Sujet du message :

Alors je me suis un peu penché sur le probleme (pas trop car sinon j'aurait pu tomber Laughing )

A mettre dans le OnActivateItem :

NWScript :

void main()
{
    object oItem = GetItemActivated();
    location lLoc = GetItemActivatedTargetLocation();
    object oPC = GetItemActivator();

    if (GetTag(oItem) == "Trucdefeu") //Remplace "Trucdefeu" par le tag de ton objet
    {
      AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc));
      DelayCommand(1.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc)));
      DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc)));

    }
}

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 ce script le PJ va lancer le sort boule de feu 3x de suite avec 1seconde d'intervalle (tu peu modifier la durée avec le DelayCommand) sur la Loc de ton choix (que sa soit un NPC, un point sur le sol, une porte, le PJ lui même... (ouille Very Happy ) )
_________________
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
 
Fedorya
Novice
Inscrit le: 26 Oct 2005
Messages: 6
Répondre en citant
Posté le : 26/10/2005 14:28:13 Sujet du message :

Salut, merci beaucoup de m'aider ^^

Mais j'ai un soucis, avec le script que tu as mis, quand je le met tel quel dans le on activateitem, il ne marche pas Sad

Enfin je vais essayer de regarder si c est pas moi qui ai fait une erreure
C'est deja bien que tu accepte de m'aider alors je vais pas me plaindre Smile
 
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 : 26/10/2005 16:51:24 Sujet du message :

P'tite question, tu as bien crée un objet avec le bon tag?
et n'oublie pas :
dans les propriétés magiques de ton objet, n'oublie pas de mettre "pouvoir" en propriétés magique. (tu peux mettre pouvoir unique/illimité/X fois par jour/X charges par utilisation)

Un fois cela fait lorsque tu prendras l'objet tu fait clik droit dessus et "pouvoir unique/illimité/X fois par jour/X charges par utilisation" et tu clik sur la cible de ton choix.
_________________
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
 
Fedorya
Novice
Inscrit le: 26 Oct 2005
Messages: 6
Répondre en citant
Posté le : 26/10/2005 18:35:23 Sujet du message :

Voila j'ai réglé le probleme, en fait dans le script il fallait ajouter des lignes pour dire que le joueur n'avait pas besoin de connaitre le sort pour qu il se lance ^^

En tout cas merci de ton aide Yoyo !

Mais un deuxieme probleme viens d'apparaitre, J'ai dans mon OnActivateItem le script vu plus haut sur ce post, mais j'ai également mis un script totalement different en dessous (un script de teleportation avec quand il est mis en fonction un effet visuel sur le joueur et la cible du script) mais le probleme est que les deux scripts entres en conflit, je m'explique :

Quand j utilise le script de teleportation tout baigne, mais une fois utiliser, si je ramasse un objet a terre, n'importe lequel, le script de teleportation se réactive sans qu'on lui ai rien demandé O_o

Une petite idée pour isoler efficacement plusieurs scripts dans le OnActivateItem ?
 
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 : 26/10/2005 20:24:57 Sujet du message :

J'avais ce problème là mais ça s'est arrangé avec ça il me semble :


NWScript :
#include "x2_inc_switches"

void main()
{
switch(GetUserDefinedItemEventNumber())
{
  case X2_ITEM_EVENT_ACTIVATE :

 

  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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fedorya
Novice
Inscrit le: 26 Oct 2005
Messages: 6
Répondre en citant
Posté le : 26/10/2005 20:38:49 Sujet du message :

Désolé je ne comprends pas bien ce que tu veux dire Djezebel Sad

Je vais poster mes deux scripts que je veux mettres dans Onactivateitem mais qu'ils soient séparés l'un de l'autre :

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.


Voila donc je souhaite isolé les deux codes présent dans se script, mais je n'y parviens pas
PS : Si vous voyez des erreures vous genez surtout pas pour les corriger ^^
 
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 : 26/10/2005 23:35:58 Sujet du message :

Ca devrait donner quelque chose de ce genre :



NWScript :
#include "x2_inc_switches"


void main()
{
      object oItem = GetItemActivated();
      if (GetTag(oItem) == "fed_jutsu_pdf")
    {

      location lLoc = GetItemActivatedTargetLocation();
      object oPC = GetItemActivator();

      AssignCommand(oPC, ActionSpeakString(""));
      AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
      DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
      DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));

    }

      if (GetTag(oItem) == "fed_jutsu_bdf")
    {

        switch(GetUserDefinedItemEventNumber())
        {
        case X2_ITEM_EVENT_ACTIVATE :

        object oPC = GetItemActivator();
        object oCibleStase = GetItemActivatedTarget();
        location lLoc = GetItemActivatedTargetLocation();

        AssignCommand(oPC, PlayAnimation(ANIMATION_FIREFORGET_VICTORY2));
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),oPC);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),lLoc);
        DelayCommand(2.0,AssignCommand (oPC, ActionJumpToLocation(lLoc)));
        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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fedorya
Novice
Inscrit le: 26 Oct 2005
Messages: 6
Répondre en citant
Posté le : 27/10/2005 03:15:58 Sujet du message :

Oki merci, je vais essayer tout ça !
 
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 : 27/10/2005 22:23:17 Sujet du message :

Le plus simple est de créer un script par item, par exemple tu a 3 item : item1, item2, item3, chaque objet a son propre tag (pour l'exemple le tag est le nom), il suffit de créer 3 scripts item1, item2, item3. Depuis peu, je crois que nwn par defaut, recherche un script qui a pour nom le tag de l'objet et l'exécute. Ainsi tu pourra créer autant de pouvoir d'item que tu le souhaite sans changer à chaque fois le script du OnActivedItem.
 
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 : 28/10/2005 09:30:12 Sujet du message :

Voila un script je les teste mais le probleme c'est que tu devra regle les TIMES car sinon le mec ne faira pas l'action du sort... Ca c'est le probleme avec les objet. Aussi j'ai mis en vert les degats donc enleve les " // " pour pouvoir faire des degats (change les degats car il font 100)

NWScript :
void main()
{
object oPC = GetItemActivator();
object oItem = GetItemActivated();
object oTarget = GetItemActivatedTarget();
location lLoc = GetItemActivatedTargetLocation();
string sTag = GetTag(oItem);
if(sTag == "TagDeLItem")
{
if(GetIsObjectValid(oTarget) == TRUE)
{
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(1.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC));
DelayCommand(3.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
DelayCommand(4.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(4.5, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC));
DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
DelayCommand(8.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(8.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC));
}
else
{
AssignCommand(oPC,ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(1.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc)));
DelayCommand(3.5, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
DelayCommand(4.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(4.5, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc)));
DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
DelayCommand(8.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc));
//Enleve sa si Tu veut faire des DEGATS //DelayCommand(8.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc)));
}
}
}
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
 
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 80.141ms