La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 16:26:24


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
ansquer
Héros
Inscrit le: 11 Déc 2005
Messages: 264
Localisation: MorBihan
Répondre en citant
Posté le : 21/06/2006 20:50:29 Sujet du message : [resolu]apercevoir une porte cachée

Je pensais qu'il suffisait de cocher une case "porte secrete" pour obtenir une porte cachée qui nécessiterait un jet de Perception du PJ pour avoir une porte secrete ... Surprised ...
Mais y a pas ?
à mojns que je sois passé à côté parce que je ne trouve aucun script ici pour faire cela ??? ce n'est pourtant pas une idée super originale?

merci si vous savez comment faire (j'en entends déjà certains rire de mon ignorance Razz )
_________________
L'année de l'île Tome 1 Un roman ecxeptionnel !
Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp
Dernière édition par ansquer le 11/07/2006 06:16:16; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 23/06/2006 19:31:26 Sujet du message :

A partir d'une porte je sais pas comment on fait.
Mais je serais toi je regardais les modules de bases NWN parce que dedans ils utilisent fréquement les portes secrètes (tu les copies collies, raoute l'extension .mod, place dans ton dossier modules)
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 24/06/2006 11:49:26 Sujet du message :

ouaip sinon moi j'avais fait pour un pote à partir d'un déclencheur ou j'ai mit un script pour tester la compétence fouille (ou autre) et si réussit création de la porte.... c'est une option mais forcément un peu plus lourde et pas super pratique...

Viduc
_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 24/06/2006 12:16:16 Sujet du message :

Mais c'est ce qu'il faut faire, Viduc. Smile


D'ailleurs, le script de nwn dans les chapitres sont un peu lourd mais les voici :

Il faut 2 objets invisibles (qu'ils appellent "Système d'ouverture de porte dissimulée") avec pour tag : "q2bsecdoor9_a" et "q2bsecdoor9_b"



Sur le OnHeartBeat il y a ceci :


NWScript :
//:Confused///////////////////////// /////////////////////
//:: x2_hb_secretdoor
//:: Copyright (c) 2001-3 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    This script runs on either the Hidden Trap Door
    or Hidden Wall Door Trigger invisible objects.
    This script will do a check and see
    if any PC comes within a radius of this Trigger.

    If the PC has the search skill or is an Elf then
    a search check will be made.

    It will create a Trap or Wall door that will have
    its Destination set to a waypoint that has
    a tag of <tag of this object>a or <tag of this object>b

    The radius is determined by the Reflex saving
    throw of the invisible object

    The DC of the search stored by the Willpower
    saving throw.

*/

//:Confused///////////////////////// ////////////////////
//:: Created By  : Robert Babiak
//:: Created On  : June 25, 2002
//::-------------------------- -------------------
//:: Modified By : Robert, Andrew, Derek, Georg
//:: Modified On : July 2002 - September 2003
//:Confused///////////////////////// ////////////////////

void main()
{
    int nDoOnce = GetLocalInt(OBJECT_SELF, "X2_L_DOOR_DO_CREATE_ONCE");
    if(nDoOnce == 1)
        return;
    // get the radius and DC of the secret door.
    float fSearchDist = IntToFloat(GetReflexSavingThrow(OBJECT_SELF));
    int nDiffaculty = GetWillSavingThrow(OBJECT_SELF);

    // what is the tag of this object used in setting the destination
    string sTag = GetTag(OBJECT_SELF);

    // has it been found?
    int nDone = GetLocalInt(OBJECT_SELF,"D_"+sTag);
    int nReset = GetLocalInt(OBJECT_SELF,"Reset");

    // ok reset the door is destroyed, and the done and reset flas are made 0 again
    if (nReset == 1)
    {
        nDone = 0;
        nReset = 0;

        SetLocalInt(OBJECT_SELF,"D_"+sTag,nDone);
        SetLocalInt(OBJECT_SELF,"Reset",nReset);

        object oidDoor= GetLocalObject(OBJECT_SELF,"Door");
        if (oidDoor != OBJECT_INVALID)
        {
            SetPlotFlag(oidDoor,0);
            DestroyObject(oidDoor,GetLocalFloat(OBJECT_SELF,"ResetDelay"));
        }

    }


    int nBestSkill = -50;
    object oidBestSearcher = OBJECT_INVALID;
    int nCount = 1;

    // Find the best searcher within the search radius.
    object oidNearestCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE);
    int nDoneSearch = 0;
    int nFoundPCs = 0;

    while ((nDone == 0) &&
          (nDoneSearch == 0) &&
          (oidNearestCreature != OBJECT_INVALID)
          )
    {
        if(GetMaster(oidNearestCreature) != OBJECT_INVALID || GetIsPC(oidNearestCreature))
        {
            // what is the distance of the PC to the door location
            float fDist = GetDistanceBetween(OBJECT_SELF,oidNearestCreature);

            if (fDist <= fSearchDist)
            {
                if (LineOfSightObject(OBJECT_SELF, oidNearestCreature) == TRUE)
                {
                    int nSkill = GetSkillRank(SKILL_SEARCH,oidNearestCreature);

                    if (nSkill > nBestSkill)
                    {
                        nBestSkill = nSkill;
                        oidBestSearcher = oidNearestCreature;
                    }
                    nFoundPCs = nFoundPCs +1;
                }
                else
                {
                    //The Secret door is on the other side of the wall - so don't find it
                    nDoneSearch = 1;
                }
            }
            else
            {
                // If there is no one in the search radius, don't continue to search
                // for the best skill.
                nDoneSearch = 1;
            }
        }
        nCount = nCount +1;
        oidNearestCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF ,nCount);
    }

    if ((nDone == 0) &&
        (nFoundPCs != 0) &&
        (GetIsObjectValid(oidBestSearcher))
      )
    {
      int nMod = d20();

            // did we find it.
      if ((nBestSkill +nMod > nDiffaculty))
      {
            location locLoc = GetLocation (OBJECT_SELF);
            object oidDoor;
            // yes we found it, now create the appropriate door
            oidDoor = CreateObject(OBJECT_TYPE_PLACEABLE,"x2_secret_door",locLoc,TRUE);

            // flash secret door if not disabled
            if (GetLocalInt(GetModule(),"X2_SWITCH_DISABLE_SECRET_DOOR_FLASH") == FALSE)
            {
                effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oidDoor,10.0f);
            }

            int nLen = GetStringLength(sTag);
            string sNewTag = GetStringLeft(sTag, nLen - 1);

            if(GetStringRight(sTag, 1) == "a")
            {
                SetLocalString( oidDoor, "Destination" , sNewTag + "b" );
            }
            else
            {
                SetLocalString( oidDoor, "Destination" , sNewTag + "a" );
            }

            object oDest = GetNearestObjectByTag(GetLocalString(oidDoor, "Destination"));
            SignalEvent(oDest, EventUserDefined(101));
            PlayVoiceChat(VOICE_CHAT_LOOKHERE, oidBestSearcher);
            SetLocalInt(OBJECT_SELF,"D_"+sTag,1);
            SetPlotFlag(oidDoor,1);
            SetLocalObject(OBJECT_SELF,"Door",oidDoor);

            SetLocalInt(OBJECT_SELF, "X2_L_DOOR_DO_CREATE_ONCE", 1);

      } // if skill search found
    } // if Object is valid
}
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.



Sur le OnUserDefined il y a ceci :


NWScript :
//:Confused///////////////////////// /////////////////////
//:: XP2 Campaign Secret Door Trigger : OnUserDefined
//:: x2_ud_secretdoor
//:: Copyright (c) 2003 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*

    Secret door trigger user defined event:
    reveal door

*/

//:Confused///////////////////////// ////////////////////
//:: Created By: ?
//:: Created On:  ?
//:Confused///////////////////////// ////////////////////
//:: Updated On:  2003-09-08, Georg Zoeller


// x2_ud_secretdoor
void main()
{
    string sTag = GetTag(OBJECT_SELF);
    int nEvent = GetUserDefinedEventNumber();

    if(nEvent == 101) // reveal door
    {

        int nDoOnce = GetLocalInt(OBJECT_SELF, "X2_L_DOOR_DO_CREATE_ONCE");
        if(nDoOnce == 1)
        {
            return;
        }
        else
        {
            SetLocalInt(OBJECT_SELF, "X2_L_DOOR_DO_CREATE_ONCE", 1);
        }


        location locLoc = GetLocation (OBJECT_SELF);
        object oidDoor;
        oidDoor = CreateObject(OBJECT_TYPE_PLACEABLE,"x2_secret_door",locLoc,TRUE); // yes we found it, now create the appropriate door
        if (GetLocalInt(GetModule(),"X2_SWITCH_DISABLE_SECRET_DOOR_FLASH") == FALSE)
        {
            // flash secret door if not disabled
            effect eVis = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oidDoor,10.0f);
        }

        int nLen = GetStringLength(sTag);
        string sNewTag = GetStringLeft(sTag, nLen - 1);
        if(GetStringRight(sTag, 1) == "a")
        {
            SetLocalString( oidDoor, "Destination" , sNewTag + "b" );
        }
        else
        {
            SetLocalString( oidDoor, "Destination" , sNewTag + "a" );
        }

        AssignCommand(oidDoor, PlayAnimation(ANIMATION_PLACEABLE_OPEN));
        SetLocalInt(OBJECT_SELF,"D_"+sTag,1);
        SetPlotFlag(oidDoor,1);
        SetLocalObject(OBJECT_SELF,"Door",oidDoor);
    }
}
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é Ignorer l'utilisateur
 
Viduc de Papironda
Grand Chevalier
Inscrit le: 22 Mar 2006
Messages: 119
Répondre en citant
Posté le : 24/06/2006 13:46:53 Sujet du message :

Ha bah c'est cool!! merci Djezebel!! ça veut dire que je commence à comprendre pas mal de chose alors!! tip top^^!!! bah comme on dit c'est en faisant qu'on apprend^^!!

Viduc
_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
ansquer
Héros
Inscrit le: 11 Déc 2005
Messages: 264
Localisation: MorBihan
Répondre en citant
Posté le : 28/06/2006 19:58:09 Sujet du message :

merci , je vais essayer Very Happy
_________________
L'année de l'île Tome 1 Un roman ecxeptionnel !
Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
ansquer
Héros
Inscrit le: 11 Déc 2005
Messages: 264
Localisation: MorBihan
Répondre en citant
Posté le : 29/06/2006 20:00:48 Sujet du message :

j'ai bien crée les deux objets (je ne sais pas faire invisible mais j'ai fait des volutes pour tester) j'ai placé les deux scriptes là où il faut sur les deux.
je les ai placé sur ma map, là où je veux que ma porte secrete apparaisse ... mais rien ...

- ne faut-il pas créer un porte en objet ?(les explications sont en angalis et c'est du gros script là Confused )
- l'ouverture se fait-il en fonction de la Perception du PNJ.

merci de votre aide Embarassed
_________________
L'année de l'île Tome 1 Un roman ecxeptionnel !
Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
ansquer
Héros
Inscrit le: 11 Déc 2005
Messages: 264
Localisation: MorBihan
Répondre en citant
Posté le : 11/07/2006 06:15:44 Sujet du message :

http://www.system-tek.com/~nwinter/phpbb2/viewtopic.php?t=4534&highlight=porte

soluce ici
_________________
L'année de l'île Tome 1 Un roman ecxeptionnel !
Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 63.21ms