[Aide] Script de fermeture et verouillage des portes la nuit

Répondre
Partager Rechercher
Voila j'ai crée un village, mais pour des soucis de réalisme j'aimerais que toute les portes des habitations soit fermé vers 20H et verrouiller, le problème c'est que je ne sais pas du tout ou mettre un tel script

Donc si quelqu'un pourrait me dire ou mettre un script qui gérerai ceci je lui serais infiniment reconnaissant.
Coucou aller je me sens d'humeur à aider :

dans le Onheartbert :

Code:
void main()

{

if (GetIsDusk() && GetIsOpen(OBJECT_SELF))//s'il fait nuit et que la porte est ouverte

{
ActionCloseDoor(OBJECT_SELF);//fermer la porte
ActionDoCommand(SetLocked(OBJECT_SELF,TRUE));
//ActionDoCommand permet de fermer à clef après que la porte se soit fermée
//(il met l'action dans une file d'attente, pour ne pas l'executer
//immédiatement)
}

else if (GetIsDawn() && GetLocked(OBJECT_SELF))//s'il fait jour...
{
SetLocked(OBJECT_SELF,FALSE);//On unlock la porte
}
}
dans le failtoopen

Code PHP:

void main()
{
FloatingTextStringOnCreature("Fermé pour la nuit."GetClickingObject(),FALSE);

en esprant que tout iras comme tu veu.


Tykem
Merci
Merci pour ta réponse, donc comme je le craignais, il faut le mettre dans le onheartbeat, il n'y a aucun moyen de faire autrement, afin d'éviter d'utiliser cette fonction que je trouve lourde ?


Bon je vais faire avec ça, merci beaucoup pour ta réponse, et surtout la rapidité à la quel tu a répondu

Edit : j'ai vu que tu utilise le getisdusk et getisdawn, ne puis je pas le faire simplement en faisant un test sur l'heure, pour utiliser ce script également sur des portes d'auberge (qui fermerais plus tard).

Je vais essayer avec l'heure, je vous tiens au Courant
Tu as aussi la possibilité d'utiliser l'évènement OnHeartBeat du module.
Avec cette évènement tu vérifie l'heure et dès que tu le souhaite, tu déclenche la fermeture des portes que tu souhaite.

Le problème est de déclencher la fermeture des portes "à distance". Soit elles sont nommées avec toujours les mêmes tags (ce qui serait étonnant), soit tu utilise GetFirst/NextObjectInArea.

A toi de voir ce qui est le plus simple à faire.

A part ça, oui tu peux très bien utiliser l'heure et non GetIsDay/Dawn/Dusk etc.
Talking
Alors ? :)
J'ai bricoler un peu, et j'ai remarqué une incohérence, vu que je fermais déjà la porte 10 secondes après que celle-ci soit ouverte.

j'ai donc viré mon script dans le OnOpen

et j'ai mis a la place dans le OnHeartBeat

Code PHP:

void main()
{
int time;
time GetTimeHour();
if (
GetIsOpen(OBJECT_SELF)) //Si la porte est ouverte
{ActionCloseDoor(OBJECT_SELF);} // fermer la porte
if (time >= 18//si il est 18 heure ou plus
{
ActionDoCommand(SetLocked(OBJECT_SELF,TRUE));
//ActionDoCommand permet de fermer à clef après que la porte se soit fermée
//(il met l'action dans une file d'attente, pour ne pas l'exécuter
//immédiatement)
}
else if (
time >= && time <= 18 &&GetLocked(OBJECT_SELF))//s'il fait jour...
{
SetLocked(OBJECT_SELF,FALSE);//On unlock la porte
}


Si jamais quelqu'un a trouvé un moyen plus léger de faire la même chose, je suis preneur

En tous cas je l'ai testé et il marche !

Merci encore a tout ce qui m'ont aider

Vive NWN et Maskado !
Je te déconseille d'utiliser le OHB pour fermer les portes. Ca a la fâcheuse tendance à faire "claquer la porte au nez" de celui qui vient de l'ouvrir et ça, ça énerve. Si j'avais à faire ce genre de trucs, je le ferais sur le OnEnter de la zone concernée. Avec une vérification du moment de la journée nuit/jour et s'il fait nuit et que la porte est déverrouillée, je la verrouillerais. Bien sûr, il faut passer en revue toutes les portes de la zone en question.
D'autre part, je garderais le script sur le OnOpen pour la refermeture automatique des portes.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés