La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 18:36:52
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
c possible ??
j'ai écrit ça sur un item sur son onphysicalattacked : ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF); Et l'objet ne récupère pas ses pvs. Bon plus simplement pour expliquer ce que je souhaite faire : j'aimerais créer un mannequin d'entrainement qui file des pxs en fonction des dégâts infligés sur lui et du lvl de celui qui tape. Dans le script les dégâts sont déjà déduits de toutes les résistances de l'objet donc déjà d'une part je suis obligé de ne pas le mettre en invincible. D'autre part, la fonction int GetTotalDamageDealt() ne marche pas sur un objet apparemment, ça me retourne zéro. Je suis obligé donc de passer par ses currents points par rapport à ses pv max pour donner des px mais je dois alors le restaurer sinon les px vont monter de plus en plus. Pourtant, la fonction décrite au dessus ne guérit que dalle. Y a t' il d'autres fonctions pour remettre un item plaçable ou faut il que j'oublie mon idée ?? Merci de me répondre _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Taern Ecuyer Messages: 45 Localisation: 92 |
Essaye le OnDamaged plutôt.
Enfin c'est bizarre que ton plaçable ne soit pas guéri. Sur quoi te base tu pour être sûr qu'il ne récupère pas ses points de vie ? |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Hum, ça marcherait déjà beaucoup mieux si tu prenais une créature avec l'apparence mannequin plutôt qu'un plaçable ! Si tu veux faire en fonction du niveau, il te suffit de reprendre comme ceci ce que j'ai fait dans le sujet "Vos scripts" en faisant quelques petites modifications :
Code : #include "nw_i0_tool" void main() { object oRigolo = GetLastDamager(); //oRigolo est celui qui a touché le mannequin. object oGlups = OBJECT_SELF; //oGlups, c'est le mannequin. effect eBoum = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); //eBoum est un effet de tremblement d'écran qui est facultatif. int nDamage = GetTotalDamageDealt(); //nDamage est le nombre de points de dommages qu'a reçu le mannequin. int nLevel = GetLevelByPosition(1, oRigolo)+GetLevelByPosition(2, oRigolo)+GetLevelByPosition(3, oRigolo); if (GetIsPC(oRigolo)) //Ici, on vérifie que oRigolo est bien un joueur. { if(nDamage > 99) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 100 ou plus. { SendMessageToPC(oRigolo, "Tricheur !"); //On ne peut décement pas faire autant de dommages en un coup ! DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE), oRigolo)); //Bref, on tue le tricheur sans sommations ! } else { if(nDamage > 59) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 60 ou plus. { RewardPartyXP(20*nLevel, oRigolo); //On offre 20 xp au joueur. SendMessageToPC(oRigolo, "CHAMPION DU MONDE !!!"); //Un petit message au joueur... ApplyEffectToObject(DURATION_TYPE_INSTANT, eBoum, oGlups); DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBoum, oGlups)); DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBoum, oGlups)); //L'effet de tremblement. On peut le supprimer sans aucun problème. } else { if(nDamage > 49) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 50 ou plus. { RewardPartyXP(10*nLevel, oRigolo); //On offre 10 xp au joueur. SendMessageToPC(oRigolo, "CHAMPION !"); //Un petit message au joueur... ApplyEffectToObject(DURATION_TYPE_INSTANT, eBoum, oGlups); //L'effet de tremblement. On peut le supprimer sans aucun problème. } else { if(nDamage > 39) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 40 ou plus. { RewardPartyXP(8*nLevel, oRigolo); //On offre 8 xp au joueur. SendMessageToPC(oRigolo, "Champion !"); //Un petit message au joueur... } else { if(nDamage > 29) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 30 ou plus. { RewardPartyXP(6*nLevel, oRigolo); //On offre 6 xp au joueur. SendMessageToPC(oRigolo, "Des muscles d'acier !"); //Un petit message au joueur... } else { if(nDamage > 19) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 20 ou plus. { RewardPartyXP(4*nLevel, oRigolo); //On offre 4 xp au joueur. SendMessageToPC(oRigolo, "Quelle force !"); //Un petit message au joueur... } else { if(nDamage > 14) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 15 ou plus. { RewardPartyXP(3*nLevel, oRigolo); //On offre 3 xp au joueur. SendMessageToPC(oRigolo, "Impressionant !"); //Un petit message au joueur... } else { if(nDamage > 9) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 10 ou plus. { RewardPartyXP(2*nLevel, oRigolo); //On offre 2 xp au joueur. SendMessageToPC(oRigolo, "Pas mal !"); //Un petit message au joueur... } else { if(nDamage > 4) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 5 ou plus. { RewardPartyXP(1*nLevel, oRigolo); //On offre 1 xp au joueur. SendMessageToPC(oRigolo, "Bof !"); //Un petit message au joueur... } else { if(nDamage > 2) //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 3 ou plus. { SendMessageToPC(oRigolo, "Pas terrible !"); //Un petit message au joueur... } else //Ce qui suit entre accolades est ce qui se passera si nDamage vaut 1 ou 2. { SendMessageToPC(oRigolo, "Mauviette !"); //Un petit message au joueur... } } } } } } } } } } } else //Ce qui suit entre accolades est ce qui se passera si oRigolo n'est pas un joueur. { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nDamage), oGlups); //On guérit le mannequin des dommages qu'il vient de recevoir( cela n'arrive donc que si une autre créature attaque le mannequin ). } } A toi d'adapter maintenant pour les xps, parce que là, ça en fait beaucoup trop ( par exemple diviser le niveau par 5 et mettre la condition que si alors il est inférieur à 1, le mettre automatiquement à1, etc)! EDIT : Je précise le script qui empêche la contre-attaque : Code : void main() { object oPC = GetLastAttacker(); SetIsTemporaryFriend(oPC,OBJECT_SELF,FALSE,0.001); DelayCommand(0.001,SetIsTemporaryEnemy(oPC)); } A placer sur le 'OnPhysicalAttacked' et le 'OnSpellCastAt' du mannequin. Tous les autres événements que je n'ai pas encore cités sont vides. Le mannequin est immobile. _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
Merci bcp, ça m'a l'air vraiment bien tout ça !
Mon script à moi était ça : Code : void main() { object oPC = GetLastAttacker(OBJECT_SELF); int iHit = 10000 - GetCurrentHitPoints(OBJECT_SELF) ; if (iHit > 10) { int iXP = d4(iHit - 10) - (GetHitDice(oPC)* 2); if (iXP > 0) { int finalXP = GetXP(oPC) + iXP ; ActionSpeakString("Experience gagnee : " + IntToString(iXP)); SetXP(oPC, finalXP); } } ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF); } Donc vi .... enfin c plutot les fonctions que je ne maitrise pas encore, ou du moins certaines que je ne connais pas encore Je vais essayer tout ça, merci _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Taern Ecuyer Messages: 45 Localisation: 92 |
Lavok, je ne suis pas sûr que tu ai besoin d'empêcher la contre attaque du mannequin (un PNJ sans script n'est rien de plus qu'un morceau de viande inerte, qui ne réagit pas si on l'attaque).
Par contre, il serait intéressant de faire en sorte que le mannequin ne soit plus un ennemi pour le PJ, ce qui par exemple l'empêche de dormir à proximité de celui-ci. |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Taern a écrit : Lavok, je ne suis pas sûr que tu ai besoin d'empêcher la contre attaque du mannequin (un PNJ sans script n'est rien de plus qu'un morceau de viande inerte, qui ne réagit pas si on l'attaque).
C'est un peu bizarre mais même sans script, je me souviens que le mannequin avait tendance à réagir parfois. Je suppose que l'IA de base est indépendante des scripts que l'on place là. D'ailleurs, je tiens ce script de non-attaque de la campagne officielle ( au prélude ).
Citation : Par contre, il serait intéressant de faire en sorte que le mannequin ne soit plus un ennemi pour le PJ, ce qui par exemple l'empêche de dormir à proximité de celui-ci. _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
Arf ben j'ai gros problème. Même avec le script anti-attaque, les mannequins réagissent tout le temps. Donc je suis grillé lol.
_________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Taern Ecuyer Messages: 45 Localisation: 92 |
Ben effectivement vous avez raison tous les deux
@ Lavok : T'avais raison, les créatures se défendent apparamment automatiquement, même sans script d'IA. @ Athanor : Je me suis fait attaquer par mes mannequins aussi (et je me suis même fait tuer mais chut ) En fait vérifie bien que la vitesse de déplacement des mannequins est "immobile". Et qu'ils n'ont pas d'armes Je n'ai pas vu d'autre particularité sur les mannequins de Bioware. |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
Arf ben vi, la vitesse de déplacement à zéro ça pourrait le faire
Oki merci _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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