1

Тема: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

Приветствую всех. У меня есть таймер с кнопками https://imgur.com/a/vkEcmoP, при нажатии кнопки должно взяться время, которое указанно на таймере и прибавится к нынешнему времени, попробовал многое, но выходит результат по типу 11:02:86, либо же вообще заменяет нынешнее время на время с таймера, помогите пожалуйста с этой проблемой.
Код самого таймера:


StartTimer1:
    if (!Timer1Running) {
        SetTimer, UpdateTimer1, 1000
        Timer1Running := true
    }
Return
UpdateTimer1:
    if (Timer1Running && Timer1Seconds > 0) {
        Timer1Seconds -= 1
        Minutes1 := Floor(Timer1Seconds / 60)
        Seconds1 := Mod(Timer1Seconds, 60)
        FormattedTime1 := Format("{:02}:{:02}", Minutes1, Seconds1)
        GuiControl,, Timer1Text, %FormattedTime1% Время до свапа локи
    } else if (Timer1Seconds <= 0 && Timer1Running) {
        GuiControl,, Timer1Text, Time's up! Время свапа локи
        SetTimer, UpdateTimer1, Off
        Timer1Running := false
    }
Return

Код самой кнопки:

ResumeTimer1:
    if (!Timer1Running) {
        SetTimer, UpdateTimer1, 1000
        Timer1Running := true
		WinActivate, Majestic RP
        SendInput, {T}
        Sleep, 500
		A_Min1 := A_Min + Minutes1
		A_Sec1 := A_Sec + Seconds1
        A_Min2 := Floor(A_Min1 / 60)
        A_Sec2 := Mod(A_Sec1, 60)
		FormattedTime0111 := Format("{:02}:{:02}:{:02}", A_Hour, A_Min2, A_Sec2)
        SendInput, /cb Таймер возобновлён, смена локации в %FormattedTime0111%
    }
Return

2

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

А зачем выкладываете код по кускам? Запостите в том виде, в котором можно запустить и увидеть проблему.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Lelouch, Вчера 15:24:51)

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

.

4

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

Все 100500 строк нужны, чтобы продемонстрировать проблему? Сократите код до минимума, который покажет, что именно не так, но при этом нормально запустится.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

Попробуй использовать FormatTime и EnvAdd.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

6

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

Alectric
Если я правильно понял в FormatTime и EnvAdd используются только числа либо выражение, но не переменные, мне это не подходит.

7

Re: AHK: Сложение секунд и минут с сохранением формата времени 00:00:00

Можно и переменные. Я пользовался этими функциями здесь.

+ открыть спойлер
  TimeSub(Time1,Time2)
  {
    T1:=Time1[1]
    T2:=Time2[1]
    ms:=Time1[2]-Time2[2]
    if (ms<0)
    {
      ms+=1000
      T2+=1,Seconds
    }
    T1-=T2,Seconds
    return T1*1000+ms
  }
  TimeSubMs(Time,ValueMs)
  {
    if (ValueMs=0)
      return Time
    m:=0
    if (ValueMs>0)
    {
      ms:=Time[2]-mod(ValueMs,1000)
      if (ms<0)
      {
        ms+=1000
        m:=1
      }
      t:=Time[1]
      t+=-(Floor(ValueMs/1000)+m),Seconds
    }
    else
    {
      ms:=mod(-ValueMs,1000)+Time[2]
      if (ms>999)
      {
        ms-=1000
        m:=1
      }
      t:=Time[1]
      t+=(Floor(-ValueMs/1000)+m),Seconds
    }
    return [t,format("{:03}",round(ms))]
  }
  TimeAddMs(Time,ValueMs)
  {
    T:=Time[1]
    T+=ValueMs//1000,Seconds
    ms:=Time[2]+mod(ValueMs,1000)
    if (ms>999)
    {
      ms-=1000
      T+=1,Seconds
    }
    return [T,format("{:03}",round(ms))]
  }
  TimeToMs(Time)
  {
    FormatTime,HH,% Time,HH
    FormatTime,MM,% Time,mm
    FormatTime,SS,% Time,ss
    return HH*3600000+MM*60000+SS*1000
  }
  MsToTime(Ms)
  {
    T:=1601
    T+=Ms//1000,Seconds
    Ms:=format("{:03}",mod(Ms,1000))
    return [T,Ms]
  }

Выражение - это и есть переменные и их комбинации.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.