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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
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 Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 15/09/2003 20:36:33 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 15/09/2003 20:45:28 Sujet du message :

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!
Sad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 15/09/2003 20:47:01 Sujet du message :

Ah ?

Essaye alors un ClearAllAction(false)
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 15/09/2003 20:49:43 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 15/09/2003 20:52:45 Sujet du message :

hum hum, change les scripts d'attaque de base (OnCombatRound, etc ...) pour qu'ils ne frappent pas les gens au sol ...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 15/09/2003 20:52:58 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 15/09/2003 20:56:10 Sujet du message :

Ola Wololo, tu m'intéresses. La solution de Balrudien devrait fonctionner (je connaissais pas getobjectinshape Confused
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 Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14065
Localisation: Quadran Alpha
Répondre en citant
Posté le : 15/09/2003 20:57:49 Sujet du message :

Aania > ouai, c'est plus GetFirstObjectInMachin qu'aut' chose
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 15/09/2003 21:01:12 Sujet du message :

J'ai trouvé wololo...
Par contre, y'a rien dans ce script! Shocked
Me dis pas que c'est dans le monstrueux NW_I0_GENERIC inclus que je dois modifier, si?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 15/09/2003 21:01:46 Sujet du message :


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 15/09/2003 21:12:23 Sujet du message :

Merci Wololo, ca allait, j'ai le lexicon sous la main Very Happy

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! Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
nawer
Chevalier
Inscrit le: 01 Juil 2003
Messages: 93
Répondre en citant
Posté le : 16/09/2003 12:20:04 Sujet du message :

Si tu utilises SoU, à priori il y a une solution ici (je n'ai pas testé).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 18/09/2003 09:58:24 Sujet du message :

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... Sad 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 Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 20/09/2003 16:04:09 Sujet du message :

Bon, j'ai trouvé une solution qui marche très bien...

Si ça intéresse quelqu'un, vous savez ou me joindre! Very Happy

Merci encore à ceux qui m'ont aidé... D'ici ou d'ailleurs
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
omega
Grand Chevalier
Inscrit le: 09 Jan 2004
Messages: 116
Répondre en citant
Posté le : 20/02/2004 19:27:48 Sujet du message : saignement

commenton fait pour faire le script du saignement

j'y arrive pas Mad Mad Mad Mad Mad Mad

marre

merci de votre aide!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 20/02/2004 20:05:50 Sujet du message :

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));
}
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é Numéro ICQ Ignorer l'utilisateur
 
nunch
Grand Sage du Conseil
Inscrit le: 23 Mai 2003
Messages: 966
Localisation: Dans la gueule du Lyon
Répondre en citant
Posté le : 20/02/2004 23:36:32 Sujet du message :

Si tu pouvais aussi donner la méthode pour empêcher l'agression des monstres, ça erait sympa... Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Aania
Acolyte
Inscrit le: 15 Sep 2003
Messages: 23
Répondre en citant
Posté le : 21/02/2004 08:56:59 Sujet du message :

Bien sûr que je peux, c'est demandé si gentiment Razz
Script à mettre que le onEndCombatRound des monstres concernés.

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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Numéro ICQ Ignorer l'utilisateur
 
nunch
Grand Sage du Conseil
Inscrit le: 23 Mai 2003
Messages: 966
Localisation: Dans la gueule du Lyon
Répondre en citant
Posté le : 21/02/2004 14:04:25 Sujet du message :

Merci Aania ! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger 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 54.096ms