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 22:18:49
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 |
Aania Acolyte Messages: 23 |
Posté le : 15/09/2003 20:31:29 Sujet du message : Les monstres laissent tranquille le PJ qui est à terre...
Salut à tous,
Voilà ma question. J'utilise un système de saignement pour mon mod. Mon PJ qui tombe en dessous de 0 HP tombe donc inconscient au sol. Le souci est que les monstres continuent à le taper, même au sol. J'ai donc trouvé une parade en appliquant un effet temporaire d'invibilité sur le PJ (1 round). Le PJ redevient visible au sol pendant qu'il se stabilise et recupere ses PV. Seul problème, quand il se relève, les monstres sont toujours hostile mais ne l'attaquent plus! Une idée? Merci. |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Hum, tu devrais plutôt changer leur faction envers le joueur.
Code : // Make sure hostiles will not attack PC until after cutscene is over. SetStandardFactionReputation( $STANDARD_FACTION_HOSTILE, 100, $oPC ); Vire les $ Cela devrait foutre les rendre sympathique avec le PC et donc éviter de le taper. C'est peut être pas le meilleur moyen, un autre serait de le rendre Immortel (SetImmortal) ou Indestructible quelques temps. _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Aania Acolyte Messages: 23 |
Merci de ta réponse Baldurien...
J'y avais déjà pensé. Quand je fais ça, le monstre devient effectivement non-hostile mais continue à taper mon PJ au sol! |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Ah ?
Essaye alors un ClearAllAction(false) _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Aania Acolyte Messages: 23 |
Héhé... J'aimerais bien mais comment je fais pour déclarer les monstres qui tapent sur mon pj? Si y'en avait qu'un c'est facile avec un GetNearestObject mais imagine qu'il y en ai 5, je les chope comment?
|
Revenir en haut | |
Wololo Légende vivante Messages: 385 |
hum hum, change les scripts d'attaque de base (OnCombatRound, etc ...) pour qu'ils ne frappent pas les gens au sol ...
|
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Bah tu prend tous les objets avec GetObjectInShape proche du pj, tu vérifie s'ils sont ennemis, s'ils l'attaquent (je crois que c'est possible) et tu annule l'ordre
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Aania Acolyte Messages: 23 |
Ola Wololo, tu m'intéresses. La solution de Balrudien devrait fonctionner (je connaissais pas getobjectinshape
Tu peux me donner un peu de détails sur ta soluce Wololo? Je le trouve ou ce script par défaut? |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Aania > ouai, c'est plus GetFirstObjectInMachin qu'aut' chose
_________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Aania Acolyte Messages: 23 |
J'ai trouvé wololo...
Par contre, y'a rien dans ce script! Me dis pas que c'est dans le monstrueux NW_I0_GENERIC inclus que je dois modifier, si? |
Revenir en haut | |
Wololo Légende vivante Messages: 385 |
Lexicon a écrit : object GetFirstObjectInShape(
int nShape, float fSize, location lTarget, int bLineOfSight = FALSE, int nObjectFilter = OBJECT_TYPE_CREATURE, vector vOrigin = [0.0,0.0,0.0] ); |
Revenir en haut | |
Aania Acolyte Messages: 23 |
Merci Wololo, ca allait, j'ai le lexicon sous la main
Désolé si ma question vous semble conne! J'aurais aimé que tu me donnes des détails sur le script par défaut qui empeche les streums d'attaquer un pj à terre... Je savais pas du tout qu'on pouvoit faire ça. Si oui, où c'est t'y donc! |
Revenir en haut | |
nawer Chevalier Messages: 93 |
Si tu utilises SoU, à priori il y a une solution ici (je n'ai pas testé).
|
Revenir en haut | |
Aania Acolyte Messages: 23 |
Salut,
Je relance un peu le sujet et je résuem mon problème. J'utilise un system de Bleed (saignement) pour mon module. J'aimerais que mon PJ ne soit plus attaqué par les PNJ hostiles environnants quand il est au sol. Cette partie là ne pose à priori plus de problème. A partir de là, j'ai 2 cas : - soit je vais chercher les PNJ avec la solution de Wololo (GetObjectInShape...) et je leur fait un clearallactions. - soit j'utilise la solution de nawer en remplacant le OnCombatEndRound du monstre Les 2 solutions marchent mais un nouveau problème se pose. Si le PJ se stabilise et remonte à 1PV, il se relève et les monstres hostiles à coté de lui ne l'attaquent plus... Meme chose au respawn que j'ai pour l'instant pas modifié. Je comprends pas... Merci en tout cas à tous de votre aide. Et si quelqu'un a une solution pour résoudre mon problème global, genre un set de script tout fait, je suis preneur... |
Revenir en haut | |
Aania Acolyte Messages: 23 |
Bon, j'ai trouvé une solution qui marche très bien...
Si ça intéresse quelqu'un, vous savez ou me joindre! Merci encore à ceux qui m'ont aidé... D'ici ou d'ailleurs |
Revenir en haut | |
omega Grand Chevalier Messages: 116 |
commenton fait pour faire le script du saignement
j'y arrive pas marre merci de votre aide! |
Revenir en haut | |
Aania Acolyte Messages: 23 |
A mettre sur le ondying du module...
NWScript : #include "NW_I0_GENERIC" void bleed(int iBleedAmt) { object oDying = GetLocalObject(OBJECT_SELF, "PCName"); int iDCC = GetLocalInt(oDying, "iPCDCC"); iDCC = iDCC + 1; int iDC; int iDCBase = 18; //Jet de stabilisation iDC = iDCBase; if(iDCC > iDCBase){ iDC = iDCC; } effect eBleedEff; if (GetCurrentHitPoints() <= 0){ if (iBleedAmt > 0){ eBleedEff = EffectDamage(iBleedAmt); }else{ eBleedEff = EffectHeal(-iBleedAmt); } ApplyEffectToObject(DURATION_TYPE_INSTANT, eBleedEff, oDying); if (GetCurrentHitPoints() <= -10){ //Mort PlayVoiceChat(VOICE_CHAT_DEATH); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oDying); return; } if (iBleedAmt > 0){ int iConBonus = GetAbilityModifier(ABILITY_CONSTITUTION, oDying); int iStableRoll = d20() + iConBonus; SendMessageToPC(oDying, "Jet de stabilisation : "+IntToString(iStableRoll-iConBonus)+"+"+IntToString(iConBonus)+"="+IntToString(iStableRoll)); SendMessageToPC(oDying, "Jet de reussite : "+IntToString(iDC)); if(iStableRoll >= iDC){ //stabilisation iBleedAmt = -iBleedAmt; PlayVoiceChat(VOICE_CHAT_LAUGH); SendMessageToPC(oDying, "Vous avez reussi a vous stabiliser et commencez doucement a vous remettre."); }else{ switch (d6()){ case 1: PlayVoiceChat(VOICE_CHAT_PAIN1); break; case 2: PlayVoiceChat(VOICE_CHAT_PAIN2); break; case 3: PlayVoiceChat(VOICE_CHAT_PAIN3); break; case 4: PlayVoiceChat(VOICE_CHAT_HEALME); break; case 5: PlayVoiceChat(VOICE_CHAT_NEARDEATH); break; case 6: PlayVoiceChat(VOICE_CHAT_HELP); } } } if(GetCurrentHitPoints() <= 0){ SetLocalInt(oDying, "iPCDCC", iDC); DelayCommand(6.0,bleed(iBleedAmt)); } else { //fin du coma int i; object oAttacker = GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,oDying, i); while(GetIsObjectValid(oAttacker) && GetDistanceToObject(oAttacker) < 20.0){ if(!GetIsInCombat(oAttacker)) DelayCommand(IntToFloat(Random(6)),AssignCommand(oAttacker,DetermineCombatRound())); oAttacker = GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,oDying, ++i); } } } } void main(){ object oDying = GetLastPlayerDying(); SetLocalObject(oDying, "PCName", oDying); SetLocalInt(oDying, "iPCDCC", 0); AssignCommand(oDying, ClearAllActions()); AssignCommand(oDying, bleed(1)); } |
Revenir en haut | |
nunch Grand Sage du Conseil Messages: 966 Localisation: Dans la gueule du Lyon |
Si tu pouvais aussi donner la méthode pour empêcher l'agression des monstres, ça erait sympa...
|
Revenir en haut | |
Aania Acolyte Messages: 23 |
Bien sûr que je peux, c'est demandé si gentiment
Script à mettre que le onEndCombatRound des monstres concernés. NWScript : #include "NW_I0_GENERIC" void main() { if (GetIsDead(GetAttackTarget())){ ClearAllActions(); DetermineCombatRound(); }else if(GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL)){ DetermineSpecialBehavior(); }else if(!GetSpawnInCondition(NW_FLAG_SET_WARNINGS)){ DetermineCombatRound(); } if(GetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT)){ SignalEvent(OBJECT_SELF, EventUserDefined(1003)); } } |
Revenir en haut | |
nunch Grand Sage du Conseil Messages: 966 Localisation: Dans la gueule du Lyon |
Merci Aania !
|
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