Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script : Lampadaires Dynamiques

Par SidSilver le 5/11/2002 à 18:50:19 (#2488516)

Ce Script une fois placé dans le onHeartBeat de chaque lampadaire (ou autre torche, etc...) concerné a pour effet :
- Le matin : éteinds le lampadaire
- Le soir : allume le lampadaire

// Créé par Sid Silver le 05/11/2002

// A placer dans le onHeartBeat de la lampe (pour les lampes en extérieur)
// IMPORTANT : ce script ne fonctionne que si l'objet N'EST PAS en mode "static"

void main()
{
if (GetIsNight()) // Verifie s'il fait nuit
{
if (!GetPlaceableIllumination(OBJECT_SELF)) // Verifie si la lampe est eteinte
{
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
DelayCommand(0.4,SetPlaceableIllumination(OBJECT_SELF, TRUE));
DelayCommand(0.5,RecomputeStaticLighting(GetArea(OBJECT_SELF)));
}
}
else // S'il ne fait pas nuit...
{
if (GetPlaceableIllumination(OBJECT_SELF)) // Verifie si la lampe est allumee
{
PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
DelayCommand(0.4,SetPlaceableIllumination(OBJECT_SELF, FALSE));
DelayCommand(0.9,RecomputeStaticLighting(GetArea(OBJECT_SELF)));
}
}
}

Je tiens à préciser que même s'il doit être placé dans le onHeartBeat, ce script ne consomme que très très peu de ressource. ;)

Information

Par Frolo Xeres le 5/11/2002 à 19:19:32 (#2488861)

Je le précise à l'intention des Anti-onHeartBeat...
Ce script n'effectuera que deux tests conditionnels simples dans 95 % des cas ! Même si la zone est cadrillées d'objects de la sortes... Leur nombre de devrais pas dépasser la 100ene :
donc 100 * 2 cycles de tests ! La CPU est monopolisé par ce script que pendant 0,0000000012 % de son temps sur mon modeste 1,2 GHz...

A méditer !

Par SidSilver le 5/11/2002 à 23:43:00 (#2491451)

Tu as tout à fait raison ! :)
J'ai testé mon script plusieur fois, dans plusieurs situations, et ça ne rame que pendant une seconde lors des changements de lumière... ( 2 fois par jour seulement ! )
:cool:

Par kathryl le 5/11/2002 à 23:45:55 (#2491471)

Pour palier a ce probleme j'utilise personnellement un objet invisible qui gere le heartbeat des lampadaires :)

Par SidSilver le 5/11/2002 à 23:52:22 (#2491517)

Provient du message de kathryl
Pour palier a ce probleme j'utilise personnellement un objet invisible qui gere le heartbeat des lampadaires :)


En effet, ton idée n'est pas mal du tout, seulement, avec mon script, elle n'est vraiment utile que si tu applique le script à un grand nombre de lampes dans une même zone (de l'ordre de 100 !).

Mais j'ai cependant remarqué un petit problème avec mon script, lorsqu'on l'utilise sur plus de 20 lampes (à peu près) dans la même zone, les mises a jour d'éclairage ne sont font pas toujours pour toutes les lampes...
En fait toutes les lampes s'allument mais elles n'éclairent pas toute la zone qui les entoure. :(
Je ne vois pas d'où peu provenir le problème, mais fort heureusement, on à rarement besoin d'autant de lampes dans une même zone ;)

Par sounéva le 6/11/2002 à 10:35:51 (#2493490)

c'est ce que je voulai te faire comprendre sur l'autre poste, au bout d'un certain nombre de lampe y a problème.
d'ou l'idée de virer :
SetPlaceableIllumination et
RecomputeStaticLighting
en metant les lampe allumer par defaut dans le toolset.
si la zone est claire la journée la lumière du soleil cachera parfaitement la lumière des lampes de jour. et de nuit les lampe s'alumeron toute avec une belle lumière difuse...
enfin si quelqu'un a trouver une meilleure idée je suis preneur.

Par Tynril le 6/11/2002 à 12:21:33 (#2494149)

Faire de la promo au OnHeartBeat, ça mérite des baffes! Une baffe par six secondes encore !

Par SidSilver le 6/11/2002 à 18:24:01 (#2498011)

Provient du message de Tynril
Faire de la promo au OnHeartBeat, ça mérite des baffes! Une baffe par six secondes encore !


Je ne fais pas du tout la promo des onHeartBeat, je dis seulement qu'il ne faut pas négliger cette option intéressante pour des scripts "légers".

JOL Archives 1.0.1
@ JOL / JeuxOnLine