Astarode Admin

Age : 37 Inscrit le : 16 Nov 2005 Messages : 374 Localisation : Elleslande
| Sujet: [VILLE] Des magasins qui ouvrent à l'heure Dim 19 Mar - 20:44 | |
| Ce script a été développé par Silk, je poste pour lui car il n'a pas trop de temps en ce moment...
Il est facilement adaptable : il vous suffira de changer les heures
| Silk a écrit: | // Script est à placer dans le "OnHeartbeat" d'une porte. // La porte se fermera et se verrouillera automatiquement 20h, // puis se déverrouillera et s'ouvrira automatiquement à 8h. void main() { if(GetTimeHour()>19) { if(GetIsOpen(OBJECT_SELF)) ActionCloseDoor(OBJECT_SELF);
// La fonction "SetLocked()" est utilisée avec "ActionDoCommand()". // Elle doit être dans la file d'action, afin que la porte se ferme // complètement avant de se verrouiller. if(!GetLocked(OBJECT_SELF)) // le ! devant GetLocked permet de tester la condition inverse. Ici, si la porte est dévérouillée ActionDoCommand(SetLocked(OBJECT_SELF,TRUE)); } else if(GetTimeHour()>7) { if(GetLocked(OBJECT_SELF)) ActionDoCommand(SetLocked(OBJECT_SELF,FALSE));
if(!GetIsOpen(OBJECT_SELF)) ActionOpenDoor(OBJECT_SELF); } } |
|
|
Astarode Admin

Age : 37 Inscrit le : 16 Nov 2005 Messages : 374 Localisation : Elleslande
| Sujet: Re: [VILLE] Des magasins qui ouvrent à l'heure Sam 1 Avr - 12:58 | |
| Bien que parfaitement fonctionnel et original, le script de Silk s'est révélé à l'usage assez gourmand en ressource.
En effet, la porte déclenche le script et teste l'heure TOUTES LES 6 SECONDES !!! (contre coup du "OnHeartBeat"). Dès lors, s'il y a plusieurs portes contenant ce script et que la zone fait vivre plusieurs PNJs (...), la pile se trouve vite saturée.
Voici donc une alternative un peu plus dépouillée. Ici, point de portes qui s'ouvrent en grand à l'heure dite, ou qui se referment comme par magie à la tombée de la nuit. Ce script, à mettre dans le "OnOpen", test l'heure et vérouille ou dévérrouille la porte suivant le résultat UNIQUEMENT lorsque la porte est actionnée. A noter que pendant les heures d'ouverture, la porte se referme d'elle-même au bout de 10 secondes (les PJs ayant la facheuse tendance à ne jamais refermer ).
| Astarode a écrit: | void main() { object oDoor = OBJECT_SELF; if(GetTimeHour()>7 && GetTimeHour()<21)// Test l'heure au moment où la porte est actionnée et déclenche la suite s'il est entre 8h et 20h { DelayCommand(5.0f,ActionCloseDoor(oDoor));// Referme la porte après 5s. } else { ActionCloseDoor(oDoor);//Si le test n'est pas bon (heure non entre 8h et 20h), ferme la porte } }
|
PS Si vous avez des suggestions, n'hésitez pas... |
|