1

Тема: AHK:Stalker Задать переменную последовательным нажатием цифр.

Добрый день.
Многие сталкивались данной игрой и одиночным квиксэйвом.
Поэтому решил с помощью консоли и AHK сделать себе несколько сэйвов, чтобы из игры их не писать ручками.
В итоге получился вот такой код.


#If (WinActive("ahk_exe xrEngine.exe") or WinActive("ahk_exe XR_3DA.exe")) 
a:=0

F5::
   If (a>=0 and a<49)
   {
     a:=a+1
      send {VKC0}save %a%{Enter}
       sleep 2000
      send {VKC0}
     ; ...
   }
   Else If (a>=49 or a<0)
   {
     a:=0
      send {VKC0}save 50{Enter}
       sleep 2000
      send {VKC0}
   }
  
   Return

Теперь нужен скрипт, который присвоит переменной "a" нужное значение.
Поясню, если я остановился на 5 сэйве и ушел спать, а наследующий день начал играть, то Сэйв опять пойдет с 1, и затрет последние вчерашние сэйвы.
Поэтому мне надо используя последовательное нажатие клавиш на нумпаде после определенного действия(например нажатия клавиши альт) или вместе с зажатой клавишей, записать число в переменную "a".

2 (изменено: svoboden, 2017-05-30 02:24:55)

Re: AHK:Stalker Задать переменную последовательным нажатием цифр.


      !2::
      a = 0
      return

3 (изменено: tdaa, 2017-05-30 10:12:00)

Re: AHK:Stalker Задать переменную последовательным нажатием цифр.

svoboden, это просто значение. То же самое что в начале скрипта. Мне нужно получить значение переменной в зависимости от последовательности нажатых клавиш. Например: альт, нумпад4, нумпад1 должны задать переменную a:=41.
Как организовать последовательное нажатие клавиш я примерно представляю, но как получить из него значение?

Если сэйвов меньше 10 то проблем нет, просто назначить на каждую клавишу нумпада своё значение переменной. Так же есть возможность сделать сумму.


!numpad0::
a:=0
Return

!numpad1::
a:=a+10
Return

!numpad2::
a:=a+20
Return

Numpad1::
a:=a+1
Rerurn

Numpad2::
a:=a+2
Return
;;ets

Сейчас на работе и не могу сделать код с последовательным нажатием, в принципе там можно сделать и 3х значное число.
Думаю это решение прокатиться для данной задачи. Но хотелось бы чего то более универсального.

4 (изменено: svoboden, 2017-05-30 18:31:40)

Re: AHK:Stalker Задать переменную последовательным нажатием цифр.

Чтобы подтвердить ввод, надо нажать клавишу "Enter".

    vkA4:: ; lalt
    Input ItemName, M,{Enter}
    a := ItemName
    return
    
   F5::
    MsgBox  %a%
    return

5

Re: AHK:Stalker Задать переменную последовательным нажатием цифр.

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

Спасибо всем. Натолкнули на мысль что есть и другие решения.
Решил проблему записыванием значения в файл. Теперь нет нужны вспоминать какой сэйв был последний, все запоминается в ini файл, и соответственно берется из него же, при следующей активации скрипта.

В итоге получился такой скрипт:

#If (WinActive("ahk_exe xrEngine.exe") or WinActive("ahk_exe XR_3DA.exe"))  ;проверка на версию игры(чистое небо или тени Чернобыля
nsave:=0 ;для первого запуска, если файл отсутствует
F5:: ;кнопка сохранения
   if WinActive("ahk_exe xrEngine.exe") 
    section:="S.T.A.L.K.E.R Clear Sky Saves"  ;создает отдельные секции в ini файле для разных версий игры
   else if WinActive("ahk_exe XR_3DA.exe")
    section:="S.T.A.L.K.E.R Shadow of Chernobyl Saves" ;создает отдельные секции в ini файле для разных версий игры

   IniRead, nsave,  d:\saves\saves.ini, %section%, nsave ;считываем последнее сохраненное значение из ini файла.
   If (nsave>=0 and nsave<49)
   {
    nsave:=nsave+1
     send {VKC0}save %nsave%{Enter}  ;сохраняемся через консоль
     sleep 2000 ;ожидаем сохранения, можно под себя подстроить
     send {VKC0} ;закрываем консоль
    IniWrite, %nsave%,  d:\saves\saves.ini, %section%, nsave ;после сохранения заменяем значение в ini файле
   }  
   Else
   {
    nsave:=0
     send {VKC0}save 50{Enter}
     sleep 2000
     send {VKC0}
    IniWrite, %nsave%,  d:\saves\saves.ini, %section%, nsave

   }
Return

f9:: ;кнопка загрузки
   if WinActive("ahk_exe xrEngine.exe") 
    section:="S.T.A.L.K.E.R Clear Sky Saves"
   else if WinActive("ahk_exe XR_3DA.exe")
    section:="S.T.A.L.K.E.R Shadow of Chernobyl Saves"

  IniRead, nsave,  d:\saves\saves.ini, %section%, nsave ;считываем последнее сохранение
   If (nsave>0 and nsave<=49)
     send {VKC0}load %nsave%{Enter}  ;загружаемся через консоль
   else 
     send {VKC0}load 50{Enter}
return

Думаю можно как и секцию путь сделать в папку игры(для каждой свой), но это уже детали, к функциональности дела не имеющие.

6 (изменено: tdaa, 2017-05-30 19:48:35)

Re: AHK:Stalker Задать переменную последовательным нажатием цифр.

svoboden, благодарю, именно то что я искал.
Хотя со Сталкером я по другому разобрался, но этот скрипт должен помочь в другом месте.

Не вижу возможности закрыть свою же тему, так что прошу модераторов закрыть). Вопрос решен.