JeuxOnLineForumsPlusConnectés : 263 (sites) | 421 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ignorer les immunités RSS
   
Répondre
Partager Outils Rechercher
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 

Ignorer les immunités

Voila je cherche a faire un script poussant des personnes a dormir quel que soient leurs immunité, malheureusement, ca ne marche pas. Quelle est la manipulation a executer pour ignorer les immunités ou du moins, est elle possible ?

J'ai essayé en faisant un RemoveEffect() sur la cible de mon script, mais meme en lui removant son immunité au sommeil, qd mon script s'execute, il est marqué dans mon log que mon personnage est immunisé au sommeil.

Merci d'avance

[EDIT] J'oublais de preciser que j'ai essayé en mettant mon effet de sommeil en supernatural puis en extraordinary, mais rien n'y fait, mon perso resiste a ca meme si je remove son immunité : /
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
euh..

ca irait, un :
Code PHP:
AssignCommand(oPC,ActionRest);
SetCommandable(oPC,FALSE); 
ou c'est juste pour les forcer a avoir les VFX du dodo ?
(ou encore autre chose...)
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de eMRaistlin
euh..

ca irait, un :
Code PHP:
AssignCommand(oPC,ActionRest);
SetCommandable(oPC,FALSE); 
ou c'est juste pour les forcer a avoir les VFX du dodo ?
(ou encore autre chose...)
En fait, c pour gerer le fait qu'un carac descende a 0.
Cad que a part pour la constitution, qui tue sur le champ si descendue a 0, les autre carac descendues a 0 font faire choir le personnage au sol, incapable de bouger dans cet etat.
Mais les carac mentale, elle font en plus tomber le personnage dans le coma, donc ta solution marche pour la force et la dexterité, car ils sont encore conscients, mais pour les autres, il faut en plus donner un effet sourd/aveugle pour simuler le coma. Et si il y'a immunité, ca ne marche pas : /
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Tu réduits l'immunité de 100% pendant 0.5 secondes, c'est ce que je fais pour appliquer l'effet de perte de pv durant le sommeil.
Une immunité = 100%, donc si tu fais - 100, le gars aura 0

Et dans un effet direct appliqué, le jet de sauvegarde n'est pas utilisé, donc ça marchera à tous les coups
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Delphinea
Tu réduits l'immunité de 100% pendant 0.5 secondes, c'est ce que je fais pour appliquer l'effet de perte de pv durant le sommeil.
Une immunité = 100%, donc si tu fais - 100, le gars aura 0

Et dans un effet direct appliqué, le jet de sauvegarde n'est pas utilisé, donc ça marchera à tous les coups
Merci du tips

En tout cas, la fonction ExtraOrdinaryEffect est considéré comme Broken, car l'effet peut se faire dissiper, et et sensible aux zone d'anti magie
Ce qui serait bien c'est que ce soit fixé, mais qu'en plus ils rajoute une Fonction du type ExtraordinaryEffect, mais du genre : UnresistableEffect, pour que rien ne puisse l'affecter.

Euh, j'en profites pour demander d'autres choses ^^.
*Le SetIncreaseMovementSpeed, il augmente la valeur par le poucentage entré en parametre, ou bien il met la valeur au pourcentage indiqué.
Cad, un SetIncreaseMovementSpeed(100), ca double la vitesse de deplacement, ou ca ne la change pas car elle passe de 100% a 100% ??

*Si je donne un effet pendant x sec, et que je veux pouvoir l'annuler en cours de chemin, je suis obligé de passer par un onHeartBeat, ou pas ? Car la je ne vois pas comment m'y prendre.

*Peut on mettre un delai pour une destruction de variable locale ??

==> But :
Faire un objet (faute de mieux, en attendant que Bioware fasse qqchose pour qu'on puisse ajouter des capacités magiques/extraordinaire dans le menu radial) pour pouvoir "activer" le mode course, qui permet a une personnage de courir a 4x la vitesse normale pour ceux portant une armure legere et intermediaire, et a 3x la vitesse normale pour ceux portant une armure lourde (je compte ajouter les personnes portant de la maille).
Je ne gererais pas le fait que la personne doit courir en ligne droite, d'une part car c'est quasiment ingerable, d'autre part, parce que je considere que l'on peut tourner en sprintant dans la vie reele, meme si l'on est en armure, ca doit etre faisable un minimum.
Pour la maille, dans le livre des regles, c'est marqué que la personne court a 4x sa vitesse vitesse normale, ce qui correspond a une vitesse de 12 km/h, et au dessus c'est marqué que une personne en harnois peut que courir a 3x sa vitesse normale, ce qui correspond a 15 km/h.
Pour moi ca semble illogique qu'une personne en harnois plein court plus vite qu'une meme personne en cote de maille. Si jamais un specialiste des deplacement en armure (Musazai ? ) pouvait m'eclairer si j'ai faux ^^.

Et donc le probleme, c'est que je cree un variable locale pour compter le nombre de round restants a courir (car on peut courir que pendant 1 nb de rd egal a sa valeur de constitution) et que je modifierais cette valeur si jamais la valeur de constitution venait a changer grace/a cause d'un buff/debuff de constitution en cours de parcours. Mais cette variable est aussi créé pour la gestion du mode course ON/OFF de mon objet. Et l'un des probleme, c'est que je met l'effet durant le nb de round selon la valeur de constit, et une fois que la durée a fini, la valeur de la variable locale est encore ON, donc je dois utiliser 2x mon objet : 1 pour le mettre en mode OFF, 2 pour le remettre en mode ON.

(je gererais le temps de repos plus tard, lorsque la premiere partie marchera ^^)

[EDIT] Un probleme est survenu. Le EffectDamageImmunityDecrease() est une fonction n'acceptant que des immunités aux dommages, et non pas a des effets tel que sommeil ou paralysie, donc ca ne marche pas dans mon cas :'(
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Pour la vitesse la fonction est EffectMovementSpeedIncrease (ou Decrease). Et elle AJOUTE ou SOUSTRAIT le pourcentage à la vitesse actuelle.

Pour une durée limitée ne te prend pas la tête, applique un effet avec un DURATION_TYPE_TEMPORARY
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Pour ton problème de sommeil, tu peux jouer d'astuce.

A l'aide de la fonction GetEffectCreator, tu localises l'objet source de l'effet d'immunité.
Ensuite tu le détruis (il n'appliquera plus son immunité, ce qui je pense est plus efficace que RemoveEffect, qui n'annule que l'effet. Et comme l'application par un objet est permanente, aussi annulé, il revient...)
Directement après tu appliques l'effet désiré
Et enfin tu recrées l'objet là où il était.

Autre astuce, au lieu d'utiliser la fonction EffectSleep, tu crées ta propre fonction, qui ne sera sujette elle à aucune immunité
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Oui, mais ca m'enerve de voir tout le monde courir a la meme vitesse, et de ne pas pouvoir rattrapper qqn parce que il n'existe pas de mode course.

Alors j'essaye de le faire au mieux en respectant les regles.

Sinon pour l'effet de vitesse, j'ai bo mettre 400, il court moins vite que qqn avec l'effet rapidité : //
Et si cette personne a deja l'effet rapidité, ben sa vitesse diminue meme avec un 400% de vitesse en plus
A moins que le max est 100% et alors que je doive appliquer plusieurs fois l'effet selon les cas pour obtenir le bon total ? :bouffon:

POur mon effet de course, je vais compulser la partie de DOT de fleche acide de melf qui pourrait peut etre m'apporter la solution ^^ et sans passer par des variables locales =)

Et sinon pour les immunités, comment je fais ?

[EDIT] ok merci pour les astuces pour le sommeil.
Pour le fait de detruire le createur d'immunité, si par exemple ca provient d'un sort, ca va detruire quoi exactement ?? Le lanceur de sort qui a lancé l'immunité ?? Le pauvre, il protege ses amis et s'en prends plein la tete

Je crois que je vais ecrire ma fonction

Dolanor *ecriveur de lacune d&diesque biowardienne*
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Dolanor
Pour la maille, dans le livre des regles, c'est marqué que la personne court a 4x sa vitesse vitesse normale, ce qui correspond a une vitesse de 12 km/h, et au dessus c'est marqué que une personne en harnois peut que courir a 3x sa vitesse normale, ce qui correspond a 15 km/h.
Pour moi ca semble illogique qu'une personne en harnois plein court plus vite qu'une meme personne en cote de maille. Si jamais un specialiste des deplacement en armure (Musazai ? ) pouvait m'eclairer si j'ai faux ^^.
HAHAHAHAHAHAHAHAHA
j'ai telechargé le errata de chez asmodée et tout de suite je suis allé a la page de la course.

Resultat, le guerrier athletique courant a 15km/h en harnois plein, passe a 9 km/h !!
Il s'est prit un sacré debuff de force celui la ^^. Sont salaud chez asmodee, comment ils nerfent les guerrier athletiques ^^.

Donc c bon, plus besoin du temoignage d'un escrimeur medieval, ct une anomolie dans la traduction

(un conseil, telechargez les errata pour ceux qui veulent suivre les regles d&d a la lettre. Y'a 71 p d'errata pour le MdJ (bon la plupart sont des correction du genre : "mage" s'ecrit "lanceur de sort", sauf qu'ils le repetent a chaque fois que le mot mage est mis en erreur ) ou mieux, si vous etes dans le genre riche, rachetez vous une version des bouquins corrigés ^^)
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Euhh, encore une chose. Concernant la fonction personalisé du sommeil. Quelle est la commande pour le faire choir ventre a terre ?
La fonction EffectSLeep() le fait mais je ne peux pas utiliser ca a cause des immunité
Et pareil, comment puis je faire pour faire en sorte que la vision soit noire pour le personnage (comme l'effet d'un sort d'aveuglement) sans utiliser le EffectBlindness() ??

Si c'est absolument pas imitable, ben, zut : //
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Tsss, t'es en train de me demander mon script de sommeil où je ne m'y connais pas

Je vais te le donner, comme ça tes souffrances prendront fin

Il s'agit de la version test, je dois encore régler quelques trucs comme les EVENTTYPE_REST_FINISHED et CANCELED; mais tu pourras déjà utiliser ce qui t'intéresse.

Code PHP:
#include "jfv_includes"

void ApplySleepEffects(object oPC)
{
    
effect eSnore EffectVisualEffect(VFX_IMP_SLEEP);
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeSnoreoPC7.0);
    
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeSnoreoPC7.0);
    
effect eBad GetFirstEffect(oPC);
    
int nBlindMe=1;
    while(
GetIsEffectValid(eBad))
    {
        
int nEtype=GetEffectType(eBad);
        if(
nEtype==EFFECT_TYPE_TRUESEEING)
            
nBlindMe=0;
        
eBad=GetNextEffect(oPC);
    }
    if(
nBlindMe)
    {
        
effect eBlind =  SupernaturalEffect(EffectBlindness());
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeBlindoPC10.0);
    }
    
DelayCommand(7.0ApplyEffectToObject(DURATION_TYPE_TEMPORARYeSnoreoPC7.0));
}

void RemoveSleepBlindness(object oPC)
{
    
effect eBad GetFirstEffect(oPC);
    while(
GetIsEffectValid(eBad))
    {
        
int nEtype=GetEffectType(eBad);
        if (
nEtype == EFFECT_TYPE_BLINDNESS)
         {
            
RemoveEffect(oPCeBad);
         }
        
eBad GetNextEffect(oPC);
     }
}

void main()
{
    
object oPC GetLastPCRested();
    
int nLastRestType GetLastRestEventType();
    if(
nLastRestType == REST_EVENTTYPE_REST_STARTED)
    {
           
int nTimerRepos GetLocalInt(oPC"FlagRepos");
           
int nTime GetTime();
           
nTimerRepos += 480;
           if(
nTimerRepos >= nTime)
           {
            
SetLocalInt(oPC"FlagRepos"nTime);
            
int nHD GetHitDice(oPC);
            
int nMaxHP GetMaxHitPoints(oPC);
            
int nHP GetCurrentHitPoints(oPC);
            
int nBCon GetAbilityModifier(ABILITY_CONSTITUTIONoPC);
            
int nDam =(nMaxHP - (nHP nBCon nHD));
            
effect eRepos EffectHeal(nMaxHP nHP);
            
effect eReduc EffectDamageImmunityDecrease(DAMAGE_TYPE_MAGICAL100);
            
effect eDamage ExtraordinaryEffect(EffectDamage(nDamDAMAGE_TYPE_MAGICALDAMAGE_POWER_NORMAL));
            
object oArmure GetItemInSlot(INVENTORY_SLOT_CHESToPC);
            
int nCA GetItemACValue(oArmure);
            if(
nCA >= 5)
            {
             
effect eFatigue1 EffectAbilityDecrease(ABILITY_STRENGTH2);
             
effect eFatigue2 EffectAbilityDecrease(ABILITY_DEXTERITY2);
             
effect eFatigue3 EffectMovementSpeedDecrease(50);
             
ApplyEffectToObject(DURATION_TYPE_PERMANENTeFatigue1oPC);
             
ApplyEffectToObject(DURATION_TYPE_PERMANENTeFatigue2oPC);
             
ApplyEffectToObject(DURATION_TYPE_PERMANENTeFatigue3oPC);
            }
            
AssignCommand(oPCActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT1.0f10.0f));
            
ApplySleepEffects(oPC);
            
ActionWait(7.0);
            
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeReducoPC0.5);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeReposoPC);
            if(
nDam >= 1)
            {
             
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamageoPC);
            }
            
RemoveSleepBlindness(oPC);
           }
           else
           {
            
SendMessageToPC(oPC"Vous n'eprouvez pas encore le besoin de vous reposer.");
           }
    }
    if (
nLastRestType == REST_EVENTTYPE_REST_FINISHED || REST_EVENTTYPE_REST_CANCELLED)
    {
    
RemoveSleepBlindness(oPC);
    }

[Edit: Ne t'inquiète pas de l'include, il utilise simplement ma fonction GetTime]
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Aie !
Mes souffrances n'ont pas encore pris fin, mais merci qd meme pour le script. C'est toujours ca de gagné.

Mais concernant l'effet blindness, si qqn est immunisé, alors il ne sera pas aveugle pendant le repos, non ? C'est un peu stupide : / Mais bon c une feature bioware : //

Par contre, concernant ton script, pk qqn qui aurait vision lucide, meme les yeux fermés il verrait a travers les paupieres ??

Et qqn qui s'est fait affublé d'un sort d'aveuglement permanent par un mage puissant (tres puissant meme ), en dormant, il son aveuglement part ?? C'est ce qu'il me semble selon ton script

Et derniere question, que renvoie la fonction GetEffectCreator() ??
Si un effet est obtenu grace a un objet (genre bonus a l'armure naturelle) on obtient cet item en retour ?.
Et si cet effet a été cree par un sort lancé par un mage, est ce qu'on obtiendra le mage en retour ?

PS : pfff z'avez vu ?? A cause du ExtraoidinaryEffect qui marche pas, j'arrive pas a m'enlever mon immunité au sommeil. Me faut un somnifere ! <regarde sa montre> oula oui ! ^^
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Comme je l'ai dis, ce script n'est pas fini, c'était juste pour te donner une idée, enfin bon....

L'effet Blindness est "Supernatural", en théorie non soumis aux résistances et immunités, mais bon en théorie....

Pour vision lucide, non justement, si il possède cet effet actif, il reçoit quand même l'effet supernaturel d'aveuglement.

Pour le magicien puissant, dans le cas présent oui, mais une astuce serait d'identifier le créateur de l'effet, et d'agir en conséquence, ou encore mettre un simple IF qui vérifie le FlagRepos; s'il est actif, RemoveSleep, sinon non, etc....
Sur ce point je ne me suis pas foulé, vu que le script est prévu pour VP, et les mages puissants Mais si tu veux, je fais ça vite fait, c'est pas un problème.

Et GetEffectCreator renvoit l'objet (au sens script du terme) source de l'effet (item, creature, placeable, etc).
Lien direct vers le message - Vieux
Avatar de Dolanor
Dolanor
Alpha & Oméga
 
Avatar de Dolanor
 
Citation:
Provient du message de Delphinea
L'effet Blindness est "Supernatural", en théorie non soumis aux résistances et immunités, mais bon en théorie....
Oui et c'est de la theorie bioware
J'ai deja testé auparavant, et ca ne marche pas, sur les forum Bioware c'est considéré comme une broken function (le SupernaturalEffect() et le ExtraordinaryEffect()) car ca ne respecte pas les regles D&D et que les 2 sont soumis a la dissipation de la magie (et a l'immunité par extension.).
Ce qu'il faudrait, c'est que ces 2 fonctions marche comme dans les regles, mais que Bioware rajoute un EffectSubtype du genre :
EffectSubtype(eEffect, nImmune, nSleep, nDispel). Comme ca on pourrait customiser selon les besoins.
nImmune = les immunités marche ou pas.
nSleep = l'effet disparait avec le repos (dans la cas d'un buff)
nDispel = l'effet disparait avec un dissipation de la magie.

Citation:
Provient du message de Delphinea
Pour vision lucide, non justement, si il possède cet effet actif, il reçoit quand même l'effet supernaturel d'aveuglement.
Ben si je lis bien le code, si il a un effet de type TRUE_SEEING, alors la valeur nBlindMe devient fausse et donc le test pour savoir si on lui met ou pas l'effet blind passe sans que l'effet Blind soit mis.


Citation:
Provient du message de Delphinea
Pour le magicien puissant, dans le cas présent oui, mais une astuce serait d'identifier le créateur de l'effet, et d'agir en conséquence, ou encore mettre un simple IF qui vérifie le FlagRepos; s'il est actif, RemoveSleep, sinon non, etc....
Sur ce point je ne me suis pas foulé, vu que le script est prévu pour VP, et les mages puissants Mais si tu veux, je fais ça vite fait, c'est pas un problème.
Je ne te demande pas de le faire ^^ ct une remarque concernant ton script. Apres tu vas etre tout enervé si pendant une grosse baston, un mage PNJ envoie un blindness de groupe permanent. Et que pour contrer ca, tout le monde fuit et se repose ^^.

Bah c'est vrai que les mages puissant sont pas legion, mais un jour y'en aura.
Tiens au fait j'ai un objet perso a prendre au debut qd je referais mon perso, il est accompagné, pas besoin de verifier il est clean, pas de script de giveXp(190000), tu pourras me le rendre disponible hein ?? :bouffon:

Citation:
Provient du message de Delphinea
Et GetEffectCreator renvoit l'objet (au sens script du terme) source de l'effet (item, creature, placeable, etc).
Merci de cette reponse ^^.
En fait je sens qu'avec GetSpellID on peut faire des trucs sympa aussi

Juste une derniere question technique, un GetFirst/NextEffect renvoie un effet.
Mais par exemple, si 2 sorts de meme type sont lancés, avec l'un qui debuff 2 de force et l'autre qui debuff 4. En faisat un getfirst/getnext, on obtient 2 effets separé ou bien on obtient 1 effet de type : AbilityScoreDecrease ??
Si on obtient 2 effets séparé, alors je sens que ca va m'aider pour faire des trucs cool. Sinon, ben ca va etre plus cho voire impossible.
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Pour la cumulation d'effets identiques je n'en sais rien, il faudrait tester, vu qu'on n'a pas accès au code de ces fonctions.

Que Bioware ne donne pas accès à une partie de son code je le comprends très bien, c'est le leur après tout
Mais ils auraient pu faire l'effort de documenter convenablement leurs fonctions.
Peut-être ont ils peur qu'on y décèle trop d'erreurs
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ignorer les immunités
   

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 05h46.
   

© 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