La nuit... A jamais.

Répondre
Partager Rechercher
Bonjour comme le titre l'exprime, je me demandais, comment rajouter a mon bâton de DM une commande permettant de faire en sorte que toutes les zones de mon module reste en permanence en évènement nuit, et ce jusqu'à nouvel ordre.

Auriez vous une solution ?
Bah il y a une fonction qui se nomme setTime qui permet de définire l'heure de ton module. Vois peut etre a bidouiller avec ca !!


(idée d'algo)
Dans le oHB

Code PHP:

   
    void main
()
   {
       If 
LETEMPSPASSE
          int nSecond 
GetTimeSecond()+6;
       
int nMinute GetTimeMinute();
       
int nHour GetTimeHour();
       
int nDay GetCalendarDay();
       
int nMonth GetCalendarMonth();
       
int nYear GetCalendarYear();
   
       if(
nSecond==60)
       {
           
nSecond 0;
           
nMinute += 1;
           if(
nMinute==60)
           {
               
nMinute 0;
               
nHour += 1;
               if(
nHour==24)
               {
                   
nHour 0;
                   
nDay += 1;
                   if(
nDay==29)
                   {
                     
nDay 1;
                     
nMonth += 1;
                       if(
nMonth==13)
                       {
                      
nMonth 1;
                      
nYear += 1;
                      if(
nYear==32000)
                           {
                          
nYear 0;
                           }
                       }
                   }
               }
           }
       }
       
SetTime(nHour,nMinute,nSecond,0);
       
SetCalendar(nYear,nMonth,nDay);
   } 
voila. Tu n'as plus qu'a definire une variable booleene constante (un int qui vaudra true ou false) LETEMPSPASSE que tu pourra modifier avec ta baguette
edit: le code pour faire passer le temps a la main est gentillement fourni par un membre de ce forum..... mais je en sais plus lequel merci a lui
Ce script a été conçu au départ pour les module dont le temps ne s'écoulait plus, suite à de trop importantes requêtes. Le temps passe normalement par défaut sur un module, et je ne vois aucun moyen de le mettre à 0, sinon de régler le temps dans les propriétés au maximum, et de mettre le script, sous condition de variable.
euh je crois mais c'est a verifier que dans les proprietes d'une zone quand tu fais a un moment personaliser (je sais plus le nom de l'onglet la, mais c'est la ou il y a toute une liste exterieure, interieure etc... c'est pour modifier le temps etc...) tu as une case a cocher toujours nuit, toujours jours ou ecoulement normal.
Oui, cela permet de refaire tourner le temps a l'origine. Mais avec le petit

If LETEMPSPASSE
int nSecond
= GetTimeSecond()+6;


on n'arrive pas a ce que l'on desirais? Bloquer le temps.... Sinon on peut y aller carrément....
[PHP]
void main()
{
int nSeconde;
int nMinute;
int nHour;
int nMonth;
int nYear;

If (
LETEMPSPASSE)
{
nSecond
= GetTimeSecond()+6;
nMinute = GetTimeMinute();
nHour = GetTimeHour();
nDay = GetCalendarDay();
nMonth = GetCalendarMonth();
nYear = GetCalendarYear();

if(
nSecond==60)
{
nSecond = 0;
nMinute += 1;
if(
nMinute==60)
{
nMinute = 0;
nHour += 1;
if(
nHour==24)
{
nHour = 0;
nDay += 1;
if(
nDay==29)
{
nDay = 1;
nMonth += 1;
if(
nMonth==13)
{
nMonth = 1;
nYear += 1;
if(
nYear==32000)
{
nYear = 0;
}
}
}
}
}
}
}
else
{
nSecond = 0;
nMinute = 0;
nHour = 0;
nDay = 0;
nMonth = 0;
nYear = 0;
}

SetTime(nHour,nMinute,nSecond,0);
SetCalendar(nYear,nMonth,nDay);
}

[
/PHP]

si letempspasse est a true, le temps reste bloqué a minuit. non?
Non. On ne peut pas stopper l'écoulement du temps, à moins d'un excès de ressource de la part du module. Donc le script ne sert QUE si le temps est buggé et ne fonctionne plus, ou bien si une heure est réglée à 250 minutes IRL.
J'ai des doutes que cela marche exactement comme tu le veux la... En plus tu t'es sacrement complique la vie en plus d'utilser un truc faux
D'abord GetTimeMinute ne te ramenera jamais 60 a moins que tu ais defini que pour le module 1 heure IRL = 1 heure InGame.
De base une 1 InGame = 2 min IRL.
GetTimeSeconde te ramene des vrais seconde Irl, 1 minute InGame est aussi une vrai minute. La seule chose c'est que 1 heure inGame est compose d'un nombre de minute defini au niveau du module et non pas a 60 min (par defaut c'est 2). Mais 1 minute InGame = 1 minute IRL.
Pas sur d'etre clair là

Mais bon a priori vous vous compliquez la vie pour rien

Si vous voulez rester a 0h0, il suffit de le forcer à 0h0 tout le temps
Code PHP:

If (LETEMPSPASSE)
{
    
SetTime(0000);

au mieux si vous voulez pas le faire toutes les 6 s (c-a-d sur le OHB du module) vous rajoutez un timer.

Genre à la place de mettre LETEMSPASSE a TRUE ou FALSE vous le mettez a une valeur X
Code PHP:

int tmp GetLocalInt(GetModule(), "LETEMPSPASSE");

if (!
tmp)
{
    
SetTime(0000);
    
tmp X;
}

SetLocalInt(GetModule(), "LETEMPSPASSE"tmp-1); 
Et comme cela la remise a 0 sera faite toutes les X*6s.
Il faut bien sur que X*6s soit plus petit que HoursToSeconds(1)*7 (je crois qu'il fait jour a 7 heure mais j'en suis pas sur
Par exemple et pour etre sur si vous voulez remettre a chaque fois a 0h0 des que l'on arrive a 1h cela donnera cela
Code PHP:

int tmp GetLocalInt(GetModule(), "LETEMPSPASSE");


if (!
tmp)
{
    
SetTime(0000);
    
tmp FloatToInt(HoursToSeconds(1)/6);
}

SetLocalInt(GetModule(), "LETEMPSPASSE"tmp-1); 
Répondre

Connectés sur ce fil

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