Le temps

Vous voulez de l'aide ? Postez ici :)
Post Reply
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Le temps

Post by Fredy123 »

Salut !

Dans mon script, je souhaite permettre à l'utilisateur de choisir le temps en Heure d'exécution du script.

Exemple :

Code: Select all

var Heure = new Date().getHours();
var Minute = new Date().getMinutes();
Le programme me renvoi : 12 (h) 10 (min)

L'utilisateur avait mit (exemple) 2h d'exécution. Donc le bot devrait s'arrêter à 14h 10 minutes.

Je pensais que faire tout simplement var Heure = Heure + TempsDutilisation
Donc : 12 + 2 = 14... Mais en faite, ça m'a donné : 12 + 2 = 122.

Comment puis-je ajouter X heure au temps actuel. Ou juste m'expliquer comment faire en sorte que le script ce stop X temps après l'exécution. Sachant que ces un temps variables, d'une personne, à une autre.


Deuxième demande d'aide :

Mons script utilise les images. Ces images sont dans des dossier pré programmé dans le script.

Exemple :

Mon fichier contient 10 images. Chaque images doit être vérifier une après l'autre. Pour ce faire, j'ai créé un tableau contenant chaque nom d'image. Avec une petite variable que j'incrémente ça me permet de faire exactement ce que je souhaite ! Cependant, j'aimerais que les utilisateurs puissent créer leur propre Pack d'image. Je n'ai pas vraiment d'idée de comment faire...

J'avais pensé à mettre un tableau que l'utilisateur remplie dans un fichier .ini ou .txt, mais je ne sais pas comment l'utiliser par la suite.

Merci et bonne journée. :)
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

Re: Le temps

Post by niconil »

pour la première partie,

quelque chose de ce style :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.5.1" scriptVersion="1.0.0" os="GNU/Linux"/>
    <actions>
        <action name="ActionCode" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var Heure = new Date().getHours();
var Minute = new Date().getMinutes();

if( Minute < 10 ) {
	Minute = "0" + Minute
}

Console.print("Actuellement il est " + Heure+":"+Minute)

Delai = 2

Heure = Heure + 2

Console.print("Fin dans "+Delai+" heures, vers: " + Heure+":"+Minute)</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

1) Pour Date tu peux regarder là : http://www.w3schools.com/jsref/jsref_obj_date.asp
C'est à dire :

Code: Select all

var d = new Date(); //Date d'origine
var d2 = new Date(); //Nouvelle date
d2.setTime(d.getTime() + 1000 * 3600 * 2); //Ajoute deux heures à la date d'origine
2) Tu peux lire un fichier texte ligne par ligne et considérer que chaque ligne est un nom d'image, non ?
"My software never has bugs. It just develops random features."
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Re: Le temps

Post by Fredy123 »

Merci pour l'aide !

Pour le premier problème, j'avais justement été voir sur ce site. C'est la que j'ai trouvé l'objet date.

Pour le deuxième problème, je ne sais pas pourquoi je n'y avais pas penser avant....

Je test sa en arrivant cher moi, merci encore à vous deux ! :D

Bonne journée.
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Re: Le temps

Post by Fredy123 »

Pour le code que tu m'as donné niconil, il fonctionne mais avec un problème.

Si par exemple, il est 22h, et que l'utilisateur met 3h d’utilisation, la variable heure est égale à 25h. Donc jamais il ce stoppera.


Pour Jmgr, ça fonctionne parfaitement... Mais un problème me bloque avec ton code. Dans la condition temporelle, je ne peux pas mettre cette date, et dans
une condition simple, je ne vois pas comment déterminer si l'heure et la minute sont égale à l'heure de début. En faite oui... Je saurai comment faire si j'étais certain que le programme regarderais la date à chaque minute pour être certain de ne pas dépasser d'une minute. ^^

En gros, je veux avoir une date de départ, du genre 18h15, et que X temps après (exemple 2h), à 20h15 minutes ou bien à 20h16 minutes ou plus, le programme soit capable de dire : L'heure a été dépassé !

J'espère que vous aurai une idée. :roll:

Merci pour l'aide bonne journée ! :D
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

Dans la condition temporelle, je ne peux pas mettre cette date
Ça c'est un bug, ça devrait être possible.

Solution de contournement : utiliser une action de Condition Temporelle, mettre le paramètre Date en mode code et entrer :

Code: Select all

function twoDigits(value)
{
if(value >= 10)
return value;
else
return "0" + value;
}
twoDigits(d.getDate()) + "/" + twoDigits(d.getMonth()) + "/" + d.getFullYear() + " " + twoDigits(d.getHours()) + ":" + twoDigits(d.getMinutes()) + ":" + twoDigits(d.getSeconds())
"My software never has bugs. It just develops random features."
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

Re: Le temps

Post by niconil »

c'était pour te mettre sur la piste, cela n'avait pas la prétention d'etre LA solution

je voulais juste te montrer comment additionner
13 et 2 pour que cela donne l'entier 15 et pas la chaîne "132"

mais de toute façon Jmgr a répondu et en plus un bug a été trouvé ...
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

Bug corrigé dans la prochaine version.
"My software never has bugs. It just develops random features."
azeroth79
Posts: 7
Joined: 16 Sep 2013, 22:14

Re: Le temps

Post by azeroth79 »

Jmgr wrote:1) Pour Date tu peux regarder là : http://www.w3schools.com/jsref/jsref_obj_date.asp
C'est à dire :

Code: Select all

var d = new Date(); //Date d'origine
var d2 = new Date(); //Nouvelle date
d2.setTime(d.getTime() + 1000 * 3600 * 2); //Ajoute deux heures à la date d'origine
getTime() Returns the number of milliseconds since midnight Jan 1, 1970

quand je clique sur le lien ça indique ça pour getTime je comprends pas pourquoi choisir cette fonction
était il possible d'écrire ?

Code: Select all

d2.setTime(d + 1000 * 3600 * 2); //Ajoute deux heures à la date d'origine
je connais rien au javascript j'ai découvert il y a peu.
Le . dans d2.qqche a t'il une fonction particuliere ?

Ou bien

Code: Select all

var d = new Date(); //Date d'origine
var d2 = new Date(); //Nouvelle date
ça définit d et d2 comme des variable temporelles
puis d.getTime signifie assigne à d la date d'aujourd'hui




si vous pouvez éclairer ma lanterne sur tout ça merci ^^
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

quand je clique sur le lien ça indique ça pour getTime je comprends pas pourquoi choisir cette fonction
était il possible d'écrire ?
Non vu que d et d2 sont de type Date et non des entiers, et qu'en Javascript on ne peut pas additionner deux Date mais uniquement des entiers. C'est totalement non-intuitif mais le langage est conçu comme ça...
je connais rien au javascript j'ai découvert il y a peu.
Le . dans d2.qqche a t'il une fonction particuliere ?
Oui, il permet d'accéder à une fonction "contenue" dans l'objet d2. C'est de la programmation orientée objet.
ça définit d et d2 comme des variable temporelles
Hm, si on veut. Plus précisément ce sont deux objets de type Date.
puis d.getTime signifie assigne à d la date d'aujourd'hui
Non, getTime, ici appliqué à l'objet d, renvoie la date contenu dans d sous forme de nombre (entier). Ça permet d'effectuer des opérations arithmétiques sur la date contenue dans d.
"My software never has bugs. It just develops random features."
azeroth79
Posts: 7
Joined: 16 Sep 2013, 22:14

Re: Le temps

Post by azeroth79 »

merci de tous ces éclaircissements

je ne trouve pas mon erreur

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.7.0" scriptVersion="1.0.0" os="Windows"/>
    <actions>
        <action name="ActionGoto" version="1.0.0"/>
        <action name="ActionMessageBox" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionTimeCondition" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var debut = new Date(); //Date d'origine
var heurefin = new Date(); //Nouvelle date
heurefin.setTime(debut.getTime() + 1000 * 30 * 2); //Ajoute 1min à la date d'origine</subParameter>
            </parameter>
        </action>
        <action name="ActionTimeCondition">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="ifNow">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
            <parameter name="ifBefore">
                <subParameter name="line" code="0">003</subParameter>
                <subParameter name="action" code="0">goto</subParameter>
            </parameter>
            <parameter name="ifAfter">
                <subParameter name="line" code="0">004</subParameter>
                <subParameter name="action" code="0">goto</subParameter>
            </parameter>
            <parameter name="date">
                <subParameter name="value" code="1">heurefin</subParameter>
            </parameter>
        </action>
        <action name="ActionGoto">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="line">
                <subParameter name="value" code="0">002</subParameter>
            </parameter>
        </action>
        <action name="ActionMessageBox">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="windowIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="message">
                <subParameter name="value" code="0">$heurefin</subParameter>
            </parameter>
            <parameter name="title">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="textMode">
                <subParameter name="value" code="0">automatic</subParameter>
            </parameter>
            <parameter name="ifYes">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
            <parameter name="customIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="icon">
                <subParameter name="value" code="0">none</subParameter>
            </parameter>
            <parameter name="type">
                <subParameter name="value" code="0">ok</subParameter>
            </parameter>
            <parameter name="ifNo">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

C'est presque ça, il faut juste que tu inverse "Si avant" et "Si après" dans ta condition temporelle. Note que ton action "Aller à" ne sert à rien vu que la condition temporelle peut également sauter à une ligne du script.
"My software never has bugs. It just develops random features."
azeroth79
Posts: 7
Joined: 16 Sep 2013, 22:14

Re: Le temps

Post by azeroth79 »

Jmgr wrote:C'est presque ça, il faut juste que tu inverse "Si avant" et "Si après" dans ta condition temporelle.

au risque de passer pour un idiot donc oui ça marche mais je comprends pas
si on est avant l'heure de fin je voudrais qu'on fasse rien
si on est apres l'heure de fin je voudrais qu'on envoie le message

ce que tu m'as fait faire fonctionne mais je pige pas la logique
Jmgr wrote:Note que ton action "Aller à" ne sert à rien vu que la condition temporelle peut également sauter à une ligne du script.
exact merci
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Le temps

Post by Jmgr »

Oui ce n'est pas forcément très intuitif, en fait "Si avant" signifie "Si la date se situe dans le passé", et "Si après" signifie "Si la date se situe dans le futur". Et donc, si ta date se situe dans le passé ça veut dire que l'on est "après elle".
"My software never has bugs. It just develops random features."
Post Reply