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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

lampadaire (jour/nuit)

Par Prophet le 24/8/2002 à 19:41:43 (#2020016)

Bonjour

J'ai mit des lumieres pour eclairer ma ville, mais elles reste toujours allumées (le jour et la nuit) et je trouve sa moche les lumiere en plein jour.

alors jai creer 2 lampadaire ( 1 allumé et 1 eteint) et jai place se script;

void main()
{
int nHeure = GetTimeHour();

if (GetIsNight())
{
DestroyObject(OBJECT_SELF);//lampadaire eteint//

string sTemplate = "LIGHTON";//lampadaire allume//

object oLoc = GetWaypointByTag("wp_lumiere_off");//lieu//

CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, GetLocation(oLoc), FALSE);
}
}

normalement, lorsque la nuit tombe, le lampadaire allumé se detruit et est remplacé par celui allumé. lorsque je compile tout est correct mais rien ne se passe dans le jeu....

hummm

Par Jedaï le 24/8/2002 à 20:09:07 (#2020148)

Bizarre ton script, as tu remarqué qu'il ne marchait qu'une seule fois, la première fois où l'on passait à la nuit enfin s'il est sur le OnHeartBeat de ton lampadaire de jour. par ailleur on ne repassera jamais à un lampadaire éteint ?:confus: :doute:

Je te propose plutôt sur le OnHeartBeat de ton unique et standard lampadaire :

void main()
{
if (GetIsDawn())
{
SetPlaceableIllumination(FALSE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
if (GetIsDusk())
{
SetPlaceableIllumination(TRUE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
}

Par Fed le 24/8/2002 à 20:23:21 (#2020191)

A mon avis, le méthode utilisée est mauvaise.

Il vaudrait mieux mettre un script sur le onHeartBeat de l'area qui recupere tous les objets "lampadaire" et leur applique SetPlaceableIllumination. Ensuite il suffit de faire appel une seule fois à RecomputeStaticLighting.

Ca donnerait un peu pres ca (non testé) :


void main()
{
if (GetIsDawn() || GetIsDusk())
{
int nTh = 0;
object oLampadaire = GetObjectByTag("TAG_DES_LAMPADAIRES", nTh);

int bIlluminate = GetIsDawn();

while (GetIsObjectValid(oLampadaire))
{
SetPlaceableIllumination(oLampadaire, bIlluminate);
nTh++;
oLampadaire = GetObjectByTag("TAG_DES_LAMPADAIRES", nTh);
}

RecomputeStaticLighting(OBJECT_SELF);
}
}

Par Jedaï le 24/8/2002 à 20:29:39 (#2020207)

Effectivement, c'est bien meilleur : j'avais oublié qu'il risquait d'y avoir plusieurs lampadaires... Les OnHeartBeat aurait carrément surchargé le serveur !

Par Prophet le 24/8/2002 à 20:44:21 (#2020257)

Merci bcp je vais essayer sa :)

possible que mon script etais bizare lol je suis vraiment nul,je metais baser sur un script d'horlogue qui disais lheure durant le jour et la nuit disais que cetais inutilisable...

JOL Archives 1.0.1
@ JOL / JeuxOnLine