Что нового

@YDAY, @HOUR, @MIN: сравнение с предыдущими значениями в условном операторе.

SurikenTSD

Новичок
Сообщения
67
Репутация
1
Уважаемые, вопрос, но сначала кусок кода:

Код:
Func LastBuff()
	IniWrite($BuffListPath, "Last Buff Time", "Day", @YDAY)
	IniWrite($BuffListPath, "Last Buff Time", "Hour", @HOUR)
	IniWrite($BuffListPath, "Last Buff Time", "Min", @MIN)
EndFunc


Код:
Func AutoBuff()
	While Not $STOP
		Local $day = IniRead($BuffListPath, "Last Buff Time", "Day", 00001)
		Local $hour = IniRead($BuffListPath, "Last Buff Time", "Hour", 00001)
		Local $min = IniRead($BuffListPath, "Last Buff Time", "Min", 00001)
		Select
			Case @YDAY >= $day and 
                ...


Как вы видите, изначально скрипт отправляет текущий "гододень", час и минуту в отдельный файл, затем в функции автобаф он их считывает, а дальше... Дальше должен стоять условный оператор со следующим условием: "если @YDAY >= $day and @HOUR >= $hour + 6 and @MIN > $min тогда сделать то-то"
И вот собственно вопрос у меня возник: а каким образом автоит сравнивает те же часы? Ну вот допустим изначально в файл настроек было записано день 001 час 23 минута 00. А сейчас, во время проверки условия, день 002 час 02 минута 01. что будет больше @HOUR (текущий час) или $hour?

Надо ли как-нибудь особо злостно извращаться, чтобы сделать @HOUR в данном случае стал больше, чем $hour или достаточно обычного сравнения?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Я вижу тут два варианта решения.

Неприкольный
Код:
$day = Floor(($hour+6)/24)
$hour = Mod($hour+6, 24)

 Select
    Case @YDAY > $day ,  @YDAY = $day And @HOUR > $hour, @YDAY = $day And @HOUR = $hour And @MIN > $min

Прикольный
Код:
$day = Floor(($hour+6)/24)
$hour = Mod($hour+6, 24)

  Select
	Case (@YDAY *10000 + @HOUR * 100  + @MIN) > ($day * 10000 + $hour * 100 + $min)
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Можно попробовать так:
Код:
#include <Date.au3>

Func LastBuff()
    IniWrite($BuffListPath, "Last Buff Time", "Year", @YEAR)
    IniWrite($BuffListPath, "Last Buff Time", "Month", @MON)
    IniWrite($BuffListPath, "Last Buff Time", "Day", @MDAY)
    IniWrite($BuffListPath, "Last Buff Time", "Hour", @HOUR)
    IniWrite($BuffListPath, "Last Buff Time", "Min", @MIN)
EndFunc

Func AutoBuff()
    While Not $STOP
        Local $year = IniRead($BuffListPath, "Last Buff Time", "Year", 00001)
        Local $month = IniRead($BuffListPath, "Last Buff Time", "Month", 00001)
        Local $day = IniRead($BuffListPath, "Last Buff Time", "Day", 00001)
        Local $hour = IniRead($BuffListPath, "Last Buff Time", "Hour", 00001)
        Local $min = IniRead($BuffListPath, "Last Buff Time", "Min", 00001)
		$sOldDate = StringFormat('%s/%s/%s %s:%s:00', $year, $month, $day, $hour, $min)
		$iDiff = _DateDiff('n', $sOldDate, _NowCalc())
        Select
            Case $iDiff > 361
				ConsoleWrite('Прошло более шести часов, а точнее - ' & $iDiff & ' минут' & @CRLF)
 
Автор темы Похожие темы Форум Ответы Дата
R Общие вопросы по AutoIt 3
Z Общие вопросы по AutoIt 13
Верх