Français Solved Comment régler la durée de la nuit sur mon serveur ?

  • Auteur de la discussion Auteur de la discussion HOL0D3STRUCT0R
  • Date de début Date de début
12/4/20
16
1
250
Salut,

Je trouve que la nuit sur mon serveur est beaucoup trop longue. Est-il possible de changer ce paramètre sans changer la durée du jour ? J'ai vu dans l’éditeur qu'il y avait un truc du style Accél temporelle de base la valeur 1 y est affiché mais si je met 2 c'est un x2 qui sera réalisé ?
 
Salut, je me rajoute à ton post ^^

Les jours/nuits défile comme l'IRL, et j'aimerais aussi accélérer le temps général, genre 2 heures par jour et 2 heures par nuit, par exemple !
 
Salut, un truc tout bete que tu peux faire deja c'est dans l'éditeur tu te mets à la période de l'année où les jours sont les plus longs vers fin juin je crois :) après aucune idée si c'est faisable ce que tu demandes :D
 
:ROFLMAO:

C'est possible en effet mais je n'ai pas encore vraiment cherché, j'ai d'autre priorité :giggle: Alors j'espère quelqu’un donnera la solution :geek:
 
Pour apprendre à dev il faut faire je te donne le principe du script et après à toi d'apprendre à comment l'utiliser dans ta mission il faudra probablement que tu créer une boucle ;)
Code:
if (daytime > 20 || daytime < 5) then {
setTimeMultiplier 120;
hint "Il fait nuit";
} else {
setTimeMultiplier 1;
hint "Il fait jour";
};

if est une condition donc if = si

si l'heure est supérieur à 20 h et inférieur à 5 h donc en gros de 20h à 5h
alors le temps est 120 fois plus rapide et on affiche un message il fait nuit
sinon le temps est x1 donc à la vitesse normal et on affiche un message il fait jour

Essaye ça dans ton éditeur pour commencer et bidouille pour apprendre c'est que comme ça que tu y arriveras par contre j'ai mis le multipilier à 120 c'est beaucoup et arma déconseille de mettre au dessus de 120 :)
 
  • Love
Les réactions: Barette_
Barette_ Barette_ De même, il faut que ton if soit vérifier, donc pour ca il y a différent moyen, comme des triggers, while, etc...

Le plus simple c'est un while, mais c'est pas le plus optimisé car il est appelé toutes les frames de ton serveur. Ce qui fait beaucoup. Après tu peux toujours mettre un sleep dedans qui permettra de l'executer tout les temps de secondes, comme ca il sera moins de fois appelé.

Et de même, le setTimeMultiplier doit être appelé côté serveur pour fonctionner (@life_server).

En gros tu prend l'exemple du script de florian, et tu le met dans un while pour le faire vérifier (exemple : )

Code:
while (true) {
    if ((daytime > 20 || daytime < 5) && timeMultiplier != 120) then { // Le timeMultiplier que j'ai ajouté dans le if sert à récupérer la vitesse actuelle du défilement du cycle J/N. Ca evitera de le réexecuter si il est déjà actuellement fixer au bon nombre.
        setTimeMultiplier 120;
        hint "Il fait nuit"; // Le hint que Florian a mis sert à envoyer un message en haut à droite, pour vérifier si ce que tu fait fonctionne correctement. Sur ton serveur je te conseille de l'enlever).
    };
   
    if ((daytime <= 20 || daytime >= 5) && timeMultiplier != 1) { // J'ai refait un if différent afin d'éviter de le répéter pour rien si il as déjà était executer.
        setTimeMultiplier 1;
        hint "Il fait jour";
    };
   
sleep 60; // Cette ligne sert à faire attendre 60 secondes avant de finir la boucle. (Ca permet d'éviter d'appeler le while toutes les frames.)
};

Tu peux même faire un truc plus facile à utiliser en juste mettant dans ton script des variables locales. Comme ca tu n'as même pas à fouiller dans le script, ta juste à rester en haut et config comme tu veux. (Après tu peux même créer un fichier de config, mais bon, pour le peu que c'est, c'est pas utile).

(Exemple : )
Code:
// Ici ta ta config, ta juste à modif ici directement.

_nightHour = 20;
_dayHour = 5;

_speedTimeDay = 1;
_speedTimeNight = 120;

// =======================

while (true) {
    if ((daytime > _nightHour || daytime < _dayHour) && timeMultiplier != _speedTimeNight) then {
        setTimeMultiplier (_speedTimeNight);
    };
   
    if ((daytime <= _nightHour || daytime >= _dayHour) && timeMultiplier != _speedTimeDay) {
        setTimeMultiplier _speedTimeDay;
    };
   
sleep 60;
};

Mais n'oublie pas de le placer dans un nouveau script DANS LE @life_server et que tu execute dans son Init. Le setTimeMultiplier peut être modifié que côté serveur. Le mpmission c'est côté client. Il est exécuté localement pour chaque joueur.
 
  • Love
Les réactions: Barette_ et Florian Digate