Bonsoir tout le monde
Voilà j'ai rencontré un problème avec des scripts qui son censés sauvegarder l'heure et la date afin de les rendre persistantes, pris sur Maskado
ça marchait bien mais des fois la date avançait d'un jour sans raison..
Bon j'ai trouvé alors je mets la solution ici

Il faut avant tout mettre l'heure de départ du module à 0, car la fonction SetTime ne peut pas reculer le temps, elle avance l'heure jusqu'à l'heure voulue le jour suivant
le premier script sur le OHB du module
void main()
{
object oMod=GetModule();
int iCurrentHour = GetTimeHour();
int nCurrentMinute = GetTimeMinute();
int nCurrentSecond = GetTimeSecond();
int nCurrentMilli = GetTimeMillisecond();
SetTime(iCurrentHour, nCurrentMinute, nCurrentSecond, nCurrentMilli);
//Sauvegarde a chaque heure
if (GetLocalInt(oMod, "CheckHour") != GetTimeHour())
{
SetLocalInt(oMod, "CheckHour", GetTimeHour());
ExecuteScript("temp_sauv", oMod);
}
}
le script "temp_sauv"
void main()
{
// Met a jour le nouveau temps
object oMod=GetModule();
SetCampaignInt("Dates","TIMEHOUR",GetTimeHour(),oMod);
SetCampaignInt("Dates","TIMEDAY",GetCalendarDay(),oMod);
SetCampaignInt("Dates","TIMEMONTH",GetCalendarMonth(),oMod);
SetCampaignInt("Dates","TIMEYEAR",GetCalendarYear(),oMod);
}
et les lignes que j'ai mises dans le OnModuleLoad
// mettre l'heure de départ du module à 0 (prorpiétés du module)
// en effet, si l'on ne met pas 0, le module risque de sauter un jour
// La fonction SetTime ne peut qu'avancer, donc si l'on veut 4h00
// alors que le module est à 5h00 dans ces propriétés, l'heure sera 4h00
// le jour suivant (donc +1 jour au calendrier, sans raison)
object oMod=GetModule();
int nHour, nDay, nMonth, nYear;
if (GetCampaignInt("Dates","TIMEYEAR", oMod) != 0)
{
nHour = GetCampaignInt("Dates","TIMEHOUR",oMod);
nDay = GetCampaignInt("Dates","TIMEDAY",oMod);
nMonth = GetCampaignInt("Dates","TIMEMONTH",oMod);
nYear = GetCampaignInt("Dates","TIMEYEAR",oMod);
SetLocalInt(oMod,"HourStart", nHour);
SetLocalInt(oMod,"DayStart", nDay);
SetLocalInt(oMod,"MonthStart", nMonth);
SetLocalInt(oMod,"YearStart", nYear);
SetCalendar(nYear, nMonth, nDay);
if (nHour != 0) SetTime(nHour, 0, 0, 0);
}
else
{
SetLocalInt(oMod,"HourStart", GetTimeHour());
SetLocalInt(oMod,"DayStart", GetCalendarDay());
SetLocalInt(oMod,"MonthStart", GetCalendarMonth());
SetLocalInt(oMod,"YearStart", GetCalendarYear());
}
}
et voilà