JeuxOnLineForumsPlusConnectés : 318 (sites) | 590 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Déclencheur avec un sorts RSS
   
Répondre
Partager Outils Rechercher
Avatar de Bresche
Bresche
Alpha & Oméga
 
Avatar de Bresche
 

Déclencheur avec un sorts

Bonjour à tous,

J'essaye de créer un déclencheur qui balance un sort sur le premier qui rentre dedans.
Simplement, ça ne marche pas.
Au passage, y a t'il un outil prévu pour piéger qq chose avec n'importe quel spell ? (Pcq s'il existe je l'ai pas trouvé)

Voici donc le script que j'ai essayé mais je pense que c'est le GetLastClosedBy qui ne doit pas être correct.

Citation:
void main()
{
object oPC = GetLastClosedBy();
int cSpell = SPELL_DISPEL_MAGIC;
int bCheat = 1;
int bInstantSpell = 1;
{
ActionCastSpellAtObject(cSpell, oPC, bCheat, bInstantSpell);
}
}
Lien direct vers le message - Vieux
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 
les objets immobiles (et donc les déclencheurs) ne peuvent pas lancer de sorts faut simuler les effets et tout scripter
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Je croyais aussi Elmo, mais l'autre jour j'ai fais lancer "boule de feu" à une armoire... Musazai tu le mets où ton script (quel slot)? Qu'appelles-tu un déclancheur? Un trigger (les trucs que l'on dessine par terre) ou un plaçable (mobilier) ?
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Ouep, les plaçables peuvent lancer des sorts.
Mais les déclencheurs, j'ai des doutes.

Cependant, la question de Sire Pom-pom est définitivement perspicace parceque si tu parle vraiment d'un déclencheur (= trigger = truc qu'on dessine sur le sol) le GetLastClosedBy(à n'est effectivement pas du tout à sa place.

En fait pour récupérer un objet qui rentre dans un trigger, on utilise GetEnteringObject().
Lien direct vers le message - Vieux
Avatar de Mastokk
JOL Mastokk
Alpha & Oméga
 
Avatar de Mastokk
 
Moi la seule fois où j'ai réussi à faire lancer un sort à une statue le sort se lançait bien mais j'avais pas l'effet et impossible de l'obtenir...
Lien direct vers le message - Vieux
Avatar de Bresche
Bresche
Alpha & Oméga
 
Avatar de Bresche
 
Oui, je parlais d'un trigger,
Je l'avais mis ds le OnEnter.

En attendant, j'ai essayé sur un plaçable (un gong ) avec ce script :

Citation:
void main()
{
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
string sSoundName = "as_cv_bell2";
if (GetIsObjectValid(oPC) == TRUE && GetDistanceToObject(oPC) < 10.0)
{
int cSpell = SPELL_MORDENKAINENS_DISJUNCTION;
int bCheat = 1;
int bInstantSpell = 1;
PlaySound(sSoundName);
ActionCastSpellAtObject(cSpell, oPC, bCheat, bInstantSpell);
}
}
Par contre, j'ai du augmenter de version de dispel (jusqu'à la disjonction) et même là ça ne marche pas. Je vois bien le sort se lancer mais il ne dissipe pas une bête potion d'invisibilité !

Alors soit
-la disjonction ne dissipe pas l'invis et il faut recourir a invisibility purge, et ça c'est gros comme une baraque
-les potions ne subissent pas les memes règles que les spells
-j'ai oublié une variable qq part pour valider un casteur lvl
-je suis victime comme Mastokk du " le sort se lançait bien mais j'avais pas l'effet "
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Apparemment l'effet du sort ne s'applique pas quand il est lancé par un plaçable ...

Pourtant, dans le script du sort que tu as essayé Musazai, les effets de dissipation auraient du s'appliquer même s'il n'était pas lancé par un magicien

Enfin en attendant, y'a toujours moyen de reproduire les effets manuellement
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Bizaroïde les boules de feu de mon armoire faisaient bien des dégâts... J'ai un peu la flemme d'aller voir les scripts de ces sorts, mais a priori je vois pas trop pourquoi ça marcherait dans un cas et pas dans l'autre. Les mystères de NWScript...
Lien direct vers le message - Vieux
Avatar de Bresche
Bresche
Alpha & Oméga
 
Avatar de Bresche
 
Citation:
Enfin en attendant, y'a toujours moyen de reproduire les effets manuellement
Bonne idée ça, dis moi un peu comment on peut faire ça. (l'effet visuel, j'ai déjà vu)
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Tu ouvre le script du sort (ils s'appellent nw_s0_<nomdusort>, mais faut bien préciser d'afficher toutes les ressources du jeu quand tu fait "Ouvrir..." ), et tu copie colle

Par exemple, le script du sort Aide (nw_s0_aid) :

Code PHP:
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 6, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001

void main()
{
    
//Declare major variables
    
int nDuration GetCasterLevel(OBJECT_SELF);
    
int nBonus d8(1);
    
int nMetaMagic GetMetaMagicFeat();
    
effect eDur EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);

    
//Enter Metamagic conditions
    
if (nMetaMagic == METAMAGIC_MAXIMIZE)
    {
        
nBonus 8;//Damage is at max
    
}
    else if (
nMetaMagic == METAMAGIC_EMPOWER)
    {
        
nBonus nBonus + (nBonus/2); //Damage/Healing is +50%
    
}
    else if (
nMetaMagic == METAMAGIC_EXTEND)
    {
        
nDuration nDuration *2//Duration is +100%
    
}
    
effect eAttack EffectAttackIncrease(1);
    
effect eSave EffectSavingThrowIncrease(SAVING_THROW_ALL1SAVING_THROW_TYPE_FEAR);

    
effect eHP EffectTemporaryHitpoints(nBonus);

    
effect eVis EffectVisualEffect(VFX_IMP_HOLY_AID);
    
object oTarget GetSpellTargetObject();

    
effect eLink EffectLinkEffects(eAttackeSave);
    
eLink EffectLinkEffects(eLinkeDur);

    
//Fire cast spell at event for the specified target
    
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_AIDFALSE));

    
//Apply the VFX impact and effects
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTargetTurnsToSeconds(nDuration));
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeHPoTargetTurnsToSeconds(nDuration));


De ce script tu prend cette portion :

Code PHP:
    int nBonus d8(1);
    
effect eDur EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);

    
//Enter Metamagic conditions
    
if (nMetaMagic == METAMAGIC_MAXIMIZE)
    {
        
nBonus 8;//Damage is at max
    
}
    else if (
nMetaMagic == METAMAGIC_EMPOWER)
    {
        
nBonus nBonus + (nBonus/2); //Damage/Healing is +50%
    
}
    else if (
nMetaMagic == METAMAGIC_EXTEND)
    {
        
nDuration nDuration *2//Duration is +100%
    
}
    
effect eAttack EffectAttackIncrease(1);
    
effect eSave EffectSavingThrowIncrease(SAVING_THROW_ALL1SAVING_THROW_TYPE_FEAR);

    
effect eHP EffectTemporaryHitpoints(nBonus);

    
effect eVis EffectVisualEffect(VFX_IMP_HOLY_AID);

    
effect eLink EffectLinkEffects(eAttackeSave);
    
eLink EffectLinkEffects(eLinkeDur);

    
//Fire cast spell at event for the specified target
    
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_AIDFALSE));

    
//Apply the VFX impact and effects
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTargetTurnsToSeconds(nDuration));
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeHPoTargetTurnsToSeconds(nDuration)); 
Après la difficulté c'est de définir les variables oTarget, nDuration et de remplacer OBJECT_SELF par le lanceur de sort. Enfin tu peux enlever les bouts qui concernent la métamagie, vu qu'une armoire ça m'étonnerait qu'elle sache lancer des sorts à efficacité accrue Bon ok c'est pas très difficile, mais je le précise

Voilà pour l'exemple, ça s'applique à peu près à tous les sorts je crois
Lien direct vers le message - Vieux
Avatar de Bresche
Bresche
Alpha & Oméga
 
Avatar de Bresche
 
Oki merci

Comme toutes les bonnes réponses, elle soulève des question

Si je copie un sort (nv blueprint et tout le tralala), que je le modifie, renomme, ... Est il accessible par les lanceurs de sorts ou fait il modifier qq chose qq part ?

Autre chose aussi, si je veux qu'une araignée puisse caster Toile d'araignée, je rajoute le sort ds ses capacités speciales, or le DC du sort sera tjs ridicule (vu les caras int et cha de la spider), est il possible d'augmenter "artificiellement" le DC en question ?
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
1/ Non ça suffit pas, il faut également modifier les entrées dans le fichier spells.2da (= faire un hak ).
Hop là le lien d'un post qui t'en parleras très bien (merci les sujets de référence ) :
http://forums.jeuxonline.info/showth...hreadid=134464

Et si tu ne sais pas ce qu'est un fichier .2da, et ben là j'avoue n'avoir pas de sujet sous la main pour t'aider. Donc ça va demander de l'aide personnalisée

2/ Soit tu modifie les caras de l'araignée (je pense que c'est le plus simple, et après tout personne ne se rendra compte que ton araignée est une intellectuelle), soit tu modifie le script de sort (genre tu rajoute une ligne qui fait : if(tag lanceur=="tag araignée") { DC = DC + x } ).

Merci pour le compliment en passant
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Bah Musa, ton script ne peut pas intepréter la constante SPELL_XXX vu qu'il ne comporte pas l'include: #include "NW_I0_SPELLS"

C'est aussi simple que ça....
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Ah ben désolé d'avoir à te contredire Delphinea, mais les constantes sont valables quelque soient les fichiers inclus dans le script.

En fait elles sont toutes définies dans le fichier nwscript.nss, qui est en quelque sorte "inclus" automatiquement à tous les scripts.
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Mais bizarrement la constante est interprétée dans le fichier nw_s0_xxx mais pas dans l'autre

Bizarre pour un include automatique
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Déclencheur avec un sorts
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 02h16.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite