La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 07/05/2024 16:47:18


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Yukimurasan
Acolyte
Inscrit le: 23 Jan 2006
Messages: 30
Répondre en citant
Posté le : 23/02/2006 19:15:35 Sujet du message : Refermer Porte Placable de CEP

Bonjour. Je vous previens de suite, je ne suis pas du tout fort en script.

Donc, voilà mon " probleme ". Grace a CEP, vous savez que l'on a des nouveaux objets. Parmis ces objets, il y a des portes. Pour qu'elles puissent s'ouvrir et se refermer, j'ai cru comprendre qu'il leurs fallait un script special. Ce que je voudrais, c'est qu'au bout d'un certain temps ( 4 secondes ) ce genre de portes placables puissent se refermer toutes seul. Mais voilà, le problème est que le script special dont je vous parlais tt a l'heure, occupe la place de " OnOpen ". Et donc, je ne peux pas placer le script pour refermer la porte automatiquement au bout d'un certain temps. Avec mon experience de nul, j'ai deja essayé de resoudre se problème, mais sans bon resultats.

Voici le script qui sert a ouvrir et fermer les portes placable venant de CEP ( ce que j'ai appellé " script special "):
NWScript :
//:Confused///////////////////////// /////////////////////
//:: ZEP_OPENCLOSE.nss
//:: Copyright (c) 2001 Bioware Corp.
//:: Modified by Dan Heidel 1/14/04 for CEP
//:Confused///////////////////////// ////////////////////
/*
    This function goes in the OnUse function of an
    openable placeable or door.  Do not use for
    placeables which have an inventory, only for those
    where clicking should trigger the open/close anim
    without opening up an inventory.  Eg: sarcophagii,
    grandfather clock and iron maiden.  If you wish for
    these items to have an inventory make a copy of the
    placeable with this function removed and the 'has
    inventory' box checked.

    No local variables are needed if the placeable is
    not a door.

    If the placeable is a door, CEP_L_GATEBLOCK is a
    local string containing the blueprint resref of the
    gateblock corresponding to the particular door.

    A gateblock is an invisible placeable with a walkmesh
    of the size, shape and orientation of the door.  In
    the case of CEP Door 01-11, there is a corresponding
    Gateblock 01-11.  Therefore, for Door01, the CEP_L_GATEBLOCK
    should be gateblock001 - the resref for Gateblock 01.

    When the door is closed, a gateblock placeable is created
    so that the door is impassable.  When the door is opened,
    the gateblock is destroyed so the gate is passable.

    GateBlock is a local object that stores the gateblock
    being used by a particular door.  No user intervention is
    needed other than to not create a local variable with the same
    name.

    In addition, zep_doorspawn must be placed in the heartbeat
    function of the door and zep_doorkill must be placed in the
    OnDestruct function of the door.

*/

//:Confused///////////////////////// ////////////////////
//:: Created By:  Brent
//:: Created On:  January 2002
//:: Modified by: Dan Heidel 1-21-04 for CEP
//:Confused///////////////////////// ////////////////////

#include "zep_inc_scrptdlg"

void main()
{
    string sGateBlock = GetLocalString(OBJECT_SELF, "CEP_L_GATEBLOCK");
    location lSelfLoc = GetLocation(OBJECT_SELF);
    int nIsOpen = GetIsOpen(OBJECT_SELF);

    if (GetLocked(OBJECT_SELF) == 1){
        //FloatingTextStringOnCreature ("Locked", OBJECT_SELF);
        string sLockedMSG = GetStringByStrRef(nZEPDoorLocked,GENDER_MALE);
        SpeakString(sLockedMSG);
        return;
    }
    //if the object is locked, it cannot be opened or closed

    if (sGateBlock == ""){ // if the item is not a door
        if (nIsOpen == 0)
        {
            PlayAnimation(ANIMATION_PLACEABLE_OPEN);
        }
        else
        {
            PlayAnimation(ANIMATION_PLACEABLE_CLOSE);
        }
        return;
    }

    if (nIsOpen == 0) //if the item is a door
    {
        object oSelf = OBJECT_SELF;
        PlayAnimation(ANIMATION_PLACEABLE_OPEN);
        if (GetLocalObject(oSelf, "GateBlock")!= OBJECT_INVALID)
        {
            DestroyObject(GetLocalObject(oSelf, "GateBlock"));
            SetLocalObject(oSelf, "GateBlock", OBJECT_INVALID);
        }
    }
    else
    {
        object oSelf = OBJECT_SELF;
        PlayAnimation(ANIMATION_PLACEABLE_CLOSE);
        SetLocalObject(oSelf, "GateBlock", CreateObject(OBJECT_TYPE_PLACEABLE, sGateBlock, lSelfLoc));
    }
}
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.


J'avais essayer d'insserer a certains endroits ceci
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.


Pouvez-vous m'aider ?
Merci d'avance.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 23/02/2006 19:37:01 Sujet du message :

En utilisant la fonction au endroits indiqué ça devrait passer.

NWScript :
//:Confused///////////////////////// ////////////////////
//:: Created By: Brent
//:: Created On: January 2002
//:: Modified by: Dan Heidel 1-21-04 for CEP
//:Confused///////////////////////// ////////////////////

#include "zep_inc_scrptdlg"

void CloseCEPDoor(object oDoor);

void main()
{
object oSelf = OBJECT_SELF;
string sGateBlock = GetLocalString(oSelf, "CEP_L_GATEBLOCK");
location lSelfLoc = GetLocation(oSelf);
int nIsOpen = GetIsOpen(oSelf);

if(GetLocked(oSelf) == 1)
{
  string sLockedMSG = GetStringByStrRef(nZEPDoorLocked,GENDER_MALE);
  SpeakString(sLockedMSG);
  return;
}
if(sGateBlock == "")
{
  if(nIsOpen == 0)
  {
  PlayAnimation(ANIMATION_PLACEABLE_OPEN);
  //Ici une ouverture
  }
  else
  {
  CloseCEPDoor(oSelf);
  }
  return;
}
if(nIsOpen == 0)
{
  PlayAnimation(ANIMATION_PLACEABLE_OPEN);
  if(GetLocalObject(oSelf, "GateBlock")!= OBJECT_INVALID)
  {
  DestroyObject(GetLocalObject(oSelf, "GateBlock"));
  SetLocalObject(oSelf, "GateBlock", OBJECT_INVALID);
  }
  //Ici une ouverture
}
else
{
  CloseCEPDoor(oSelf);
}
}

void CloseCEPDoor(object oDoor)
{
string sGateBlock = GetLocalString(oDoor, "CEP_L_GATEBLOCK");
location lSelfLoc = GetLocation(oDoor);

AssignCommand(oDoor, PlayAnimation(ANIMATION_PLACEABLE_CLOSE));

if(sGateBlock != "")
SetLocalObject(oDoor, "GateBlock", CreateObject(OBJECT_TYPE_PLACEABLE, sGateBlock, lSelfLoc));
}
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.

_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Yukimurasan
Acolyte
Inscrit le: 23 Jan 2006
Messages: 30
Répondre en citant
Posté le : 23/02/2006 20:48:55 Sujet du message :

J'ai essayé de mettre " DelayCommand(10.0, ActionCloseDoor(OBJECT_SELF)); " aux endroits indiqués ( " //ici une ouverture " ). je ne sais pas si c'etait ça que tu m'avais demandé de faire, mais en tt cas, ça ne marche pas ...
Merci quand meme.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 23/02/2006 20:54:02 Sujet du message :

Je parlais de la fonction rajouté
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.

_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Yukimurasan
Acolyte
Inscrit le: 23 Jan 2006
Messages: 30
Répondre en citant
Posté le : 23/02/2006 21:09:59 Sujet du message :

Désolé de t'embeter avec ça, mais je ne comprends pas ce que tu veux dire ...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 23/02/2006 21:14:08 Sujet du message :

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.

Pareil que l'autre fonction mais en changeant le nom (j'avais fait exprès de conservé les mêmes arguments), toujours au même endroit, j'ai pas été très regardant mais ça doit passer.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Yukimurasan
Acolyte
Inscrit le: 23 Jan 2006
Messages: 30
Répondre en citant
Posté le : 23/02/2006 21:31:37 Sujet du message :

Bas ... euh ... j'ai essayé, ça ne marche toujour pas ... il me dit " INVALIDE DECLARATION TYPE " a l'endroit où il y a :
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é Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 23/02/2006 21:48:32 Sujet du message :

A croire que tu as pas cherché bien longtemps...

NWScript :
//:Confused///////////////////////// ////////////////////
//:: Created By: Brent
//:: Created On: January 2002
//:: Modified by: Dan Heidel 1-21-04 for CEP
//:Confused///////////////////////// ////////////////////

#include "zep_inc_scrptdlg"

void CloseCEPDoor(object oDoor);

void main()
{
object oSelf = OBJECT_SELF;
string sGateBlock = GetLocalString(oSelf, "CEP_L_GATEBLOCK");
location lSelfLoc = GetLocation(oSelf);
int nIsOpen = GetIsOpen(oSelf);

if(GetLocked(oSelf) == 1)
{
  string sLockedMSG = GetStringByStrRef(nZEPDoorLocked,GENDER_MALE);
  SpeakString(sLockedMSG);
  return;
}
if(sGateBlock == "")
{
  if(nIsOpen == 0)
  {
  PlayAnimation(ANIMATION_PLACEABLE_OPEN);
  DelayCommand(10.0, CloseCEPDoor(oSelf));
  }
  else
  {
  CloseCEPDoor(oSelf);
  }
  return;
}
if(nIsOpen == 0)
{
  PlayAnimation(ANIMATION_PLACEABLE_OPEN);
  if(GetLocalObject(oSelf, "GateBlock")!= OBJECT_INVALID)
  {
  DestroyObject(GetLocalObject(oSelf, "GateBlock"));
  SetLocalObject(oSelf, "GateBlock", OBJECT_INVALID);
  }
  DelayCommand(10.0, CloseCEPDoor(oSelf));
}
else
{
  CloseCEPDoor(oSelf);
}
}

void CloseCEPDoor(object oDoor)
{
string sGateBlock = GetLocalString(oDoor, "CEP_L_GATEBLOCK");
location lSelfLoc = GetLocation(oDoor);

AssignCommand(oDoor, PlayAnimation(ANIMATION_PLACEABLE_CLOSE));

if(sGateBlock != "")
SetLocalObject(oDoor, "GateBlock", CreateObject(OBJECT_TYPE_PLACEABLE, sGateBlock, lSelfLoc));
}
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.

_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 24/02/2006 12:05:06 Sujet du message :

Atention !
Il existe des scripts qui sont fournis avec le CEP. On peut modifier ceux-ci à loisir, mais à condition d'en modifier le nom car c'est le script inscrit dans le fichier HAK qui sera prioritaire. Si on modifie le script sans changer le nom, alors les modification apportée ne seront pas prise ne compte.

Je sait pas si cela fait avancer les choses...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 27/02/2006 15:30:40 Sujet du message :

ah oui c'est les plaçables avec un heart-beat dedans pour les initialiser.
Un petit peu en dehors du sujet mais cela concerne l'initialisation des GateBlocks en une passe : voici une méthode qui aurait du être intégrée dans le CEP Starter Module c'est nettement moins consommateur de ressources que de laisser des HBs dans les plaçables.

1) ajouter cela dans votre évênement OnModuleLoad
NWScript :

    ExecuteScript("ly_mod_zep",OBJECT_SELF); // recherche des placables CEP
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.


2) voilà le script qui fait le boulot une fois pour toute

NWScript :

// ly_mod_zep.nss
void SearchCEPDOOR(string sTag)
{
  int nNbItem = 0;
  object oItem = GetObjectByTag(sTag, nNbItem++);
  object oArea;
  string sArea,sName,sTagArea;
  while( GetIsObjectValid(oItem) ) {
      oArea = GetArea(oItem) ;
      sArea = GetName(oArea) ;
      sTagArea = GetTag(oArea) ;
      WriteTimestampedLogEntry(sTag+" found in Area "+sTagArea+"-"+sArea+" : initializing");
      ExecuteScript("zep_doorspawn",oItem);
      oItem = GetObjectByTag(sTag, nNbItem++);
  }
}

void main()
{
  string sTag="ZEP_DOORS00" ;
  int i;
  for( i=1; i<=9 ; i++){
  SearchCEPDOOR(sTag+IntToString(i)) ;
  }
  sTag="ZEP_DOORS01" ;
  for( i=0; i<=1 ; i++){
  SearchCEPDOOR(sTag+IntToString(i)) ;
  }
}
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.


3) Bien entendu vous n'oubliez pas d'enlever zep_doorspawn du heart-beat du plaçable...

Mad Et encore merci à Dan Heidel pour ses plaçables avec HB à faible consommation...
_________________
TSLODOSS
TN Bouchon 2
NWN-FF
The DMFI
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
OVLORD
Acolyte
Inscrit le: 05 Juil 2005
Messages: 22
Répondre en citant
Posté le : 08/02/2008 15:15:41 Sujet du message :

Je suis en train de faire une recherche sur un souci concernant l'ouverture d'une grille du CEP par une clef.

Quand je met le TAG de la clef devant dévérouiller la grille (comme avec une porte standart) elle ne se dévérouille pas.

Est-ce que les scripts et lignes ci-dessus concernent mon souci ou faut-il un script spécifique pour faire agir une clef??

Merci de me répondre pour ceux qui passerait par là ^^ Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 48.166ms