<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Скрипт для разных игр]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=9787&amp;type=atom" />
	<updated>2014-07-12T01:02:26Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=9787</id>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт для разных игр]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=84712#p84712" />
			<content type="html"><![CDATA[<p>И опять забыл <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> <br />Строчку <strong>сBaseKey := &quot;Enter&quot;</strong> заменить на <strong>сBaseKey := A_ThisHotkey</strong><br />И для верности, её написать в подпрограмме <strong>sbTrioProcessingKeys</strong> первой строкой, что бы более не заморачиваться <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2014-07-12T01:02:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=84712#p84712</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт для разных игр]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=84646#p84646" />
			<content type="html"><![CDATA[<p>Да, совсем забыл.<br />В игре Ведьмак используется </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Подпрограммы(набор) - Три действия/клавиши в одной</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;==============Подпрограмма - Три действия/клавиши в одной======================
;  сBaseKey              :=         ; Нажимаемая клавиша
;  cAloneKey             :=         ; 1-я Виртуальная клавиша
;  cDoubleKey            :=         ; 2-я Виртуальная клавиша
;  cHoldingKey           :=         ; 3-я Виртуальная клавиша
;--------------Оптимальное значение для игр и мышки на опыте игры &quot;The Witcher 2 - Assassins of Kings&quot;
;  сPause_PressKey       := 350    ; Если пауза меньше этого количества миллисекунд, то нажатие двойное. Если больше, то оно расценивается как 2 одиночных
;  cWaitHoldingBaseKey   := 2      ; Время ожидания в цикле определения удержания за каждый шаг, при больших значениях блокирует одиночное/двойное нажатие.
;  cCountHoldingBaseKey  := 25     ; Число шагов цикла для определения удержание клавиши/кнопки, при больших значениях блокирует одиночное/двойное нажатие.
;  cWaitVirtualKey       := 10     ; Время задержки между эмуляцией нажатия на клавиши/кнопки подмены реально нажатой клавишей/кнопкой.
;  fAutoRepeat           := false  ; Автоповтор реально нажатой клавиши/кнопки - включён/выключен True/False

;------------Начало работы      
#UseHook, On
sbTrioProcessingKeys:
; Требуется реализация блокировки от входа с разных клавиш, т.е. защита от множественного входа на време отработки этой подпрограммы.
  vCountHoldingBaseKey:=cCountHoldingBaseKey
  ;Проверка на удержание нажатия/клика клавиши/кнопки
  while ((GetKeyState(сBaseKey, &quot;P&quot;)) &amp;&amp; vCountHoldingBaseKey &amp;&amp; (!сSecond_PressKey)) 
      {
        sleep %cWaitHoldingBaseKey%   
        vCountHoldingBaseKey--
      }
  if (!vCountHoldingBaseKey)
      { 
  ; Нормальное удержание не работает, нужно не посылать код отжатия, пока нажата реальная клавиша - в подпрограмме sbAutoRepeat треуется корректировка.
  ; Надо сделать режим удерживать или нет клавишу, а это ввод второго флага, может быть для всех трёх клавиш.        
        Send, {%cHoldingKey% Down}  ;Удержание нажатия/клика клавиши/кнопки
        Sleep %cWaitVirtualKey%    
        Send, {%cHoldingKey% Up}
        Gosub sbAutoRepeat
        return
      } 
     else 
        Gosub, sbPressCountKeys
return            ; Конец обработки подпрограммы sbStartProcessingKeys


;Одиночное нажатие/клик клавиши/кнопки
sbAloneKey:
  Send, {%cAloneKey% Down}
  Sleep %cWaitVirtualKey%    
  Send, {%cAloneKey% Up}
  Gosub sbAutoRepeat
Return

;Двойное нажатие/клик клавиши/кнопки
sbDoubleKey:
  Send, {%cDoubleKey% Down}
  Sleep %cWaitVirtualKey%    
  Send, {%cDoubleKey% Up}  
  Gosub sbAutoRepeat
Return

;Без/С автоповтором основной клавиши/кнопки
sbAutoRepeat:
  if (!fAutoRepeat)
      {
        Send, {%сBaseKey% Down}   ; Без автоповтора
        ;while (GetKeyState(сBaseKey, &quot;P&quot;))
        KeyWait, %сBaseKey%  ;Sleep %cWaitBaselKey% 
        Send, {%сBaseKey% Up}      
      }
Return                            ; C автоповтором

#UseHook, Off

sbPressCountKeys:
  If not сSecond_PressKey
      {
        сSecond_PressKey := 1
        SetTimer, sbDoublePressKey, -%сPause_PressKey%
      }
    Else
      {
        сSecond_PressKey := 0
        SetTimer, sbDoubleKey, -1
      }
Return

sbDoublePressKey:
  If not сSecond_PressKey
        Return
  сSecond_PressKey := 0
  SetTimer, sbAloneKey, -1
Return
;-----------------------------------------------------------------</code></pre></div></div></div><p> Данный блок унифицирован, так что достаточно описать и вызвать подпрограмму - пример из Ведьмака </p><div class="codebox"><pre><code>Enter::    
  сBaseKey              := &quot;Enter&quot;
  cAloneKey             := &quot;Enter&quot;   ; Действия по Enter
  cDoubleKey            := &quot;Space&quot;   ; Взять всё
  cHoldingKey           := &quot;LButton&quot;
  сPause_PressKey       := 300   
  cWaitHoldingBaseKey   := 1     
  cCountHoldingBaseKey  := 40   
  cWaitVirtualKey       := 5    
  cWaitBaselKey         := 10
  fAutoRepeat           := false
  gosub sbTrioProcessingKeys
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2014-07-09T09:26:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=84646#p84646</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Скрипт для разных игр]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=84637#p84637" />
			<content type="html"><![CDATA[<p>По сути это готовый скрипт для игр в которые я играл, может быть его фрагменты помогут кому либо, для чего либо <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Описательный модуль(он в другом скрипте)</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;==========Общие пути===========
fnPathUses()
{
global  ;--Общесистемные пути

ProgSysPath32 := &quot;C:\Program Files (x86)\&quot;
ProgSysPath64 := &quot;C:\Program Files\&quot;
WindowsDir := &quot;C:\Windows\&quot;

;--Пути к AHK
PathAhkProg := ProgSysPath32 &quot;AutoHotkey\&quot;
PathAhk := &quot;C:\AHK\&quot;
PathAhkInclude := PathAhk &quot;Include\&quot;
PathAhkIcon := PathAhk &quot;Icon\&quot;

;--Escape-последовательности как константы для MsgBox, %
cEscCR    := &quot;`r&quot;
cEscLF    := &quot;`n&quot;
cEscTab   := &quot;`t&quot;
cEscSps   := &quot; &quot;
cEscPrc      := &quot;`%&quot;
cEscQts   := &quot;&quot;&quot;&quot;

cAscCR    := Asc(cEscCR)
cAscLF    := Asc(cEscLF)
cAscTab   := Asc(cEscTab)
cAscSps   := Asc(cEscSps)
cAscPrc      := Asc(cEscPrc)
cAscQts   := Asc(cEscQts)

cEsc2LF    := cEscLF cEscLF
cEscCRLF  := cEscCR cEscLF

return
}

fnOverallSection(){
global ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;===========Переменные,константы и некотрые функции для скрипта===================
;cName       - константа
;iName       - константа индекс в массиве
;vNane       - переменная
;fnName      - функция
;fName       - флаг
;arName      - массив
;+++++++++++++++++Константы функций вывода окна MsgBox+++++++++++++++++++++++++++++++++++++++++
 сMsgOptionsEr   :=0+8192+16 ;only an OK button + Task Modal + Icon Hand (stop/error)
 сMsgOptionsOK   :=0+8192+48 ;only an OK button + Task Modal + Icon Exclamation
 сMsgOptionsDg   :=4+8192+32 ;Yes/No button  + Task Modal + Icon Question
 сMsgOptionsInfo :=4+8192+64 ;Yes/No button + Task Modal +  Icon Asterisk (info)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
;+++++++++++++++++Пути к McAfee и некоторые переменные+++++++++++++++++++++++
mcPath := ProgSysPath32 &quot;McAfee\&quot;
mcVSE  := mcPath &quot;VirusScan Enterprise\&quot;
mcCFW  := mcPath &quot;Common Framework\&quot;
mcWinNameConsol := &quot;Консоль VirusScan&quot;
mcConsol := &quot;mcconsol.exe&quot;
mcKey1 := &quot;/NOSPLAS&quot; 
;++++++++++++++++++++++++++++++++++++++++++

;+++++++++++++++++Переменные и константы для вызова консоли в контексте NetSh+++++++
cConsole     := &quot;cmd.exe&quot;
cNameNet     := &quot;Internet&quot;
cNetsh       := &quot;netsh interface ipv4 set address&quot; cEscSps cEscQts cNameNet cEscQts cEscSps
cNetON       := cNetsh &quot;dhcp&quot;
cNetOFF      := cNetsh &quot;static 1.0.0.0&quot;
vNetOnOffHlp := &quot;ON&quot; 
vInternetPID := false
arOut:=arInternet:=Object()
NetName :=1, NetDHCP :=2, NetIP :=3, NetGate :=4, NetState:=5, NetST:=1, FindKey :=2
Internet := [[&quot;&quot;,&quot;интерфейса&quot; cNameNet], [&quot;&quot; ,&quot;включен:&quot;], [&quot;&quot; ,&quot;IP-адрес&quot;], [&quot;&quot; ,&quot;шлюз:&quot;], [false,false]]
;+++++++++++++++++


;++++++++++++++Для Skyrim
vDubKeys := 1
;++++

vGameKey := true ; On/Off игровых клавиш (при запуске ON)
fHelpKey := false ; для блокировки повторного запуска справки
fScVkCode := false ; Получение Sc/Vk-Code отключено.
fEventManager:=true ; блокиратор менеджера
;++++

;++++++++++++++Для Saints Row: The Third
fNumLock := false
vNumLock := false
fLockRShift := false 
vDebugTHQ := false ;(true/false)  ;If debugging is enabled, then output your data to control the correct operation (scope of - all script).
gosub lVarGameTHQ
;++++++++++++++

;++++++++++++++Для The Witcher 2 - Assassins of Kings Enhanced Edition
fWitcher:=false
;++++++++++++++

return
}
</code></pre></div></div></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Модуль игр (убрана игра Saints Row The Third - я её описал в другом топике) </div><div class="fancy_spoiler"><div class="codebox"><pre><code>;***************BEGIN******************
GameKeyOnOff:
if (!vGameKey)
  {
  msgbox 1,Switching Game Keys,Игровые клавиши = OFF `n `nВКЛючить игровые клавиши? ,10
  IfMsgBox, Cancel
      return
    else
      vGameKey := true    
  }
 else
  {
  msgbox 1,Switching Game Keys,Игровые клавиши = ON `n `nВЫКЛючить игровые клавиши?,10
  IfMsgBox, Cancel
      return
    else
      vGameKey := false      
  } 
return

;------------------------- Подпрограмма счётчика нажатий
/*
;----- Пример для левой кнопки мыши ----
#UseHook, On

LButton:: Gosub, PressCount

LButton(1):                        ; Одиночный действует как и раньше (почти,
  Click Down Left                 ; т.к. пауза иногда даёт о себе знать при 
  KeyWait, LButton                 ; перетаскивании правой кнопкой).
  Click Up Left
Return

LButton(2):
  ToolTip, Двойной правый щелчок.
  Sleep, 1000
  ToolTip
Return

#UseHook, Off
;-----------------------------------------
*/

PressCount:
  Pause_= 300     ; Если пауза меньше этого количества миллисекунд, то нажатие
                 ; двойное. Если больше, то оно расценивается как 2 одиночных.
  If not Second
  {
    Second=1
    SetTimer, DoublePress, -%Pause_%
  }
  Else
  {
    Second=0
    SetTimer, %A_ThisHotkey%(2), -1
  }
Return

DoublePress:
  If not Second
    Return
  Second=0
  SetTimer, %A_ThisHotkey%(1), -1
Return

/*
;-----BEGIN--Для The Witcher 2
#If vGameKey &amp;&amp; WinActive(&quot;The Witcher 2&quot;) 
SetTitleMatchMode, 2
Tab::
   Send, {m Down}
   sleep 25
   Send, {m Down}
   sleep 25
   Send, {m Up}   
return
#IfWinActive
;-----END--Для The Witcher 2
*/

;-----BEGIN--Для SIMS 3 
#If vGameKey &amp;&amp; WinActive(&quot;The Sims™ 3&quot;)
SetTitleMatchMode, 2

LShift &amp; ESC::
Send {F5}
return

RShift &amp; Enter::
Tab::
Send {n}
Enter::
MouseClick, right, 20, 910
MouseMove, 620, 475
Sleep, 700
MouseClick, WheelUp, , , 6
return

#IfWinActive
;-----END--Для SIMS 3

;-----BEGIN--Для Risen 2 - Dark Waters
#If vGameKey &amp;&amp; WinActive(&quot;Risen&quot;)
SetTitleMatchMode, 2
Enter::
 Send {8}
return

RShift::
 Send {9}
return

RCtrl::
 Send {0}
return

Numpad1::
 Send {1}
return
Numpad2::
 Send {2}
return
Numpad4::
 Send {4}
return
Numpad5::
 Send {5}
return
Numpad6::
 Send {6}
return
Numpad7::
 Send {7}
return
Numpad3::
 Send {3}
return

#IfWinActive     
;-----END--Для Risen 2 - Dark Waters 

;-----BEGIN--Для Dragon Age 
#If vGameKey &amp;&amp; WinActive(&quot;Dragon Age: Начало&quot;)
SetTitleMatchMode, 2
RShift::
vk2D::
Numpad0::
   Send, {Up Down}{Enter Down}
;{RButton Down}
   KeyWait, % A_ThisHotkey
   Send, {Up Up}{Enter Up}
;{RButton Up}
Return

#IfWinActive
;-----END Для Dragon Age

;-----BEGIN--Для Skyrim
#If vGameKey &amp;&amp; WinExist(&quot;Skyrim&quot;)
SetTitleMatchMode, 2
#a:: ;Maximize Skyrim:
    WinActivate
    Sleep, 500
    Send, {Escape}
return
#IfWinExist


#If  vDubKeys &amp;&amp; vGameKey &amp;&amp; WinActive(&quot;Skyrim&quot;)
SetTitleMatchMode, 2
#UseHook, On  
;----Дубликаты клавиш
vk2E::vk5D
return

PgDn::PgUp
return

Home::End
return

Ins::Del
return

BS::vk22 ;NumPad3
return

vkBF::vk49 ;i
return
#UseHook, Off
#IfWinActive

#If vGameKey &amp;&amp; WinActive(&quot;Skyrim&quot;)
SetTitleMatchMode, 2

#z:: ;Minimize Skyrim
    Send, {Escape}
    Sleep, 500
    WinMinimize, A
return

F1:: ; Основной батник
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send bat 1
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return

F2:: ; Сохранение в последний файл
F5::
 vSave := fnMaxName()
 vBat := &quot;save &quot; vSave &quot;`r`n&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return

^F2:: ; Сохранение в след. файл
 vSave := fnMaxName() + 1
 vBat := &quot;save &quot; vSave &quot;`r`n&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return

F3:: ; Загрузка из последнего файла
F6::
 vSave := fnMaxName()
 vBat := &quot;load &quot; vSave &quot;`r`n&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return


F4:: ; ON/OFF = пауза+свободная камера 
 vBat := &quot;tfc 1&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return

F10:: ; ON/OFF = клавиши дубликаты
 if (vDubKeys = 0){
  vDubKeys := 1
  ;SoundPlay ASOS_RES\ON.mp3, 1
    SoundBeep, 750, 900
 } else {
  vDubKeys := 0
  ;SoundPlay ASOS_RES\OFF.mp3, 1
    SoundBeep, 500, 300
    SoundBeep, 500, 300
    SoundBeep, 500, 300
 }
return

F12:: ; Выход быстрый с записью
 vSave := fnMaxName()
 vBat := &quot;save &quot; vSave &quot;`r`n&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 1000
 vBat := &quot;qqq&quot;
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter} 
 Send {``}
return

^F12:: ; Выход быстрый с без записи 
 vBat := &quot;qqq&quot;
 SetKeyDelay, 10, 10
 Send {``}
 Sleep 100
 Send {Backspace}
 Send %vBat%
 Sleep 100
 Send {Enter}
 Sleep 100
 Send {``}
 Sleep 1000
return


fnMaxName() {
 vPathSave := &quot;c:\Users\SASA\Documents\My Games\Skyrim\Saves\*.ess&quot;
 vNumberSave := 0
 vNumberSaveTmp := vNumberSave
 Loop, %vPathSave%, 0, 0
  {
    vNameSave :=  SubStr(A_LoopFileName, 1,StrLen(A_LoopFileName)-4) ;пишем только имя
    vNumberSaveTmp := Abs(vNameSave)
    if (vNumberSaveTmp&gt;vNumberSave) {
         vNumberSave := vNumberSaveTmp 
       }
  }
return vNumberSave  
}
#IfWinActive
;-----END--Для Skyrim


;-----BEGIN--Для Dungeon Siege II
;#IfWinActive ,Dungeon Siege II,
#If vGameKey &amp;&amp; WinActive(&quot;Dungeon Siege II&quot;)
SetTitleMatchMode, 2

RShift::
LShift::
CapsLock::
   Send, {RButton Down}
   KeyWait, % A_ThisHotkey
   Send, {RButton Up}
Return

RCtrl::
LCtrl::
   Send, {LButton Down}
   KeyWait, % A_ThisHotkey
   Send, {LButton Up}
Return 

F12::
 vTxt := &quot;opnauticus&quot;
 send {\}{vk08}
 loop 100
  {
   Send, {vk6B}%vTxt%{ENTER}
   sleep 50
  }
 sleep 50
 Send, {ENTER}
return  
  
#IfWinActive
;-----END Для Dungeon Siege II

;-----BEGIN--Для The Witcher 2 - Assassins of Kings
#If vGameKey &amp;&amp; WinActive(&quot;The Witcher 2&quot;)
SetTitleMatchMode, 2
#UseHook, On

Tab:: ;карта
  Send, {sc32 Down}
  KeyWait, % A_ThisHotkey
  Send, {sc32  Up}
return

F1::sc2e   ;С - персонаж
return

F3::sc24   ;J - дневник (журнал заданий)
return

F4::sc17   ;I - рюкзак (инвентарь)
return

F8::     ; Сохранить
  Send, {F5 Down}
  KeyWait, % A_ThisHotkey
  Send, {F5  Up}
return

F5::    ; Загрузить
  Send, {F9 Down}
  KeyWait, % A_ThisHotkey
  Send, {F9  Up}
return

WheelUp::      ;Взять прицел
  Send, {Home Down} 
  sleep 100
  Send, {Home  Up}
return

WheelDown::
return

#UseHook, Off
/*
; Массив подмены одной клавиши на три - одиночное/двойное нажатие и удержание.
; 1-й элемент. Клавиша реально нажимаемая (сочетания не работают). 
;     Если это cEndArr, то конец массива и стоп обработки.
;     Если это cNone,  то всё дальнейшее считается текстом и не обрабатывается функцией fnGetParamTrioKey, а так же должна заканчиваться cEndArr.
;    Далее, при cEndArr, игнорируется дальнейшая запись и происходит переход к следующей записи (строке массива).
; 2-й элемент. 1-я виртуальная клавиша, посылается при одном нажатии реальной клавиши.
; 3-й элемент. 2-я виртуальная клавиша посылается при двух нажатиях реальной клавиши.
; 4-й элемент. 3-я виртуальная клавиша посылается при удержании реальной клавиши.
; 5-й элемент. Время определяющее одиночное/двойное нажатие, при больших значениях двойное нажатие может не произойти.
; 6-й элемент. Время ожидания в цикле определения удержания за каждый шаг, при больших значениях блокирует одиночное/двойное нажатие.
; 7-й элемент. Число шагов цикла для определения удержание клавиши/кнопки, при больших значениях блокирует одиночное/двойное нажатие.
; 8-й элемент. Время задержки между эмуляцией нажатия на клавиши/кнопки подмены реально нажатой клавишей/кнопкой.
; 9-й элемент. Автоповтор реально нажатой клавиши/кнопки - включён/выключен True/False.

;Этот массив разбирается один раз при иництализации скрипта и на его основе создаётся одномерный массив
; Индексы, хотя вроде все и не нужны, но описать нужно для функций обработки.
iTrioBaseKey:=1, iTrioAloneKey:=2, iTrioDoubleKey:=3, iTrioHoldingKey:=4, iTrioPause_PressKey:=5
,iTrioWaitHoldingBaseKey:=6, iTrioCountHoldingBaseKey:=7,iTrioWaitVirtualKey:=8, iTrioAutoRepeat:=9
,iTrioEnd  ; Граничный индекс.
    
cEndArr := -1
arSetTrioKey := [[cNone]   ;------------------&gt;&gt;&gt; Для The Witcher 2 - Assassins of Kings &lt;&lt;&lt;&lt;-------------------------------------
                ,[&quot;RShift&quot;, &quot;sc10&quot;, &quot;sc11&quot;, &quot;sc12&quot; ;Вызов=&quot;RShift&quot;, Серебрянный меч=&quot;Q&quot;, Стальной меч=&quot;W&quot;, Убрать оружие=&quot;E&quot;
                ,300],[2],[25],[10],[false],[cEndArr]
                ,[&quot;RCtrl&quot;, &quot;sc10&quot;, &quot;sc11&quot;, &quot;sc12&quot; ;Вызов=&quot;RShift&quot;, Серебрянный меч=&quot;Q&quot;, Стальной меч=&quot;W&quot;, Убрать оружие=&quot;E&quot;
                ,300],[2],[25],[10],[false],[cEndArr]
                ,[cEndArr]]
                
; Фукцая первичного разбора массива, вход подаётся:
; 1-й параметр. UIA (The unique identifier for the application), который генерируется рандомно один раз при старте скрипта.
; 2-й параметр. HotKey клавиши по которой будет осуществляться обработка.
; Возврат. False - ошибка в массиве или входных параметрах иначе индекс для получения параметров из массива arSetTrioKey                
sbGetParamTrioKey(iHoyKey)
{
  ; Общие константы переменные
  Global  arSetTrioKey, cNone, cEndArr 
          ,сMsgOptionsEr, сMsgOptionsOK, сMsgOptionsDg, сMsgOptionsInfo  
    
  ; Индексы в массиве arSetTrioKey
  Global  iTrioBaseKey, iTrioAloneKey, iTrioDoubleKey                         
          ,iTrioHoldingKey, iTrioPause_PressKey, iTrioWaitHoldingBaseKey
          ,iTrioCountHoldingBaseKey, iTrioWaitVirtualKey, iTrioAutoRepeat, iTrioEnd
    
  ; Переменные полученные из массива arSetTrioKey для подпрограммы sbTrioProcessingKeys        
  Global  BaseKey, AloneKey, DoubleKey, iTrioHoldingKey, iTrioPause_PressKey
          ,iTrioWaitHoldingBaseKey, iTrioCountHoldingBaseKey
          ,iTrioWaitVirtualKey, iTrioAutoRepeat
  
  vRet:=false
  for i in arSetTrioKey
    {
      if (arSetTrioKey[i,iTrioBaseKey]=iHoyKey)
          {
            vRet:=true   ; Нашли то что искали, будем считывать и проверять валидность.
            Break
          }
      if (arSetTrioKey[i,iTrioBaseKey]=cEndArr)
          {
            vRet:=false   ; Ничего не нашли, выход с ошибкой.
            Break
          }            
    if (arSetTrioKey[i,iTrioBaseKey]=cNone)
            Continue      ; Это пустая запись или заголовок.
    }
  if (!vRet)
        Goto lErrArr
  for j in arSetTrioKey[i]
      {
        vTmp:=arSetTrioKey[i,j]
        if ((vTmp=cNone) ||  ((vTmp=cEndArr) &amp;&amp; (i!=iTrioEnd)))
            {
              vRet:=false
              Break
            }  
      }
  if ((!vRet) || (j&lt;=iTrioEnd))
    {}
  lErrArr:  
    msgbox, % сMsgOptionsEr, Функция тройных клавиш, Ошибка в масссиве arSetTrioKey при поиске клавиши - %iHoyKey%, 50
return vRet
}
*/   

Enter::    
  сBaseKey              := &quot;Enter&quot;
  cAloneKey             := &quot;Enter&quot;   ; Действия по Enter
  cDoubleKey            := &quot;Space&quot;   ; Взять всё
  cHoldingKey           := &quot;LButton&quot;
  сPause_PressKey       := 300   
  cWaitHoldingBaseKey   := 1     
  cCountHoldingBaseKey  := 40   
  cWaitVirtualKey       := 5    
  cWaitBaselKey         := 10
  fAutoRepeat           := false
  gosub sbTrioProcessingKeys
return
          
RCtrl::    
  сBaseKey              := &quot;RCtrl&quot;  
  cAloneKey             := &quot;RCtrl&quot;  ;Следующий предмет
  cDoubleKey            := &quot;End&quot;    ;Задействовать скилл &quot;Изпользовать адреналин для массового уничтожения&quot;
  cHoldingKey           := &quot;RCtrl&quot;  ;Следующий предмет
  сPause_PressKey       := 300   
  cWaitHoldingBaseKey   := 1     
  cCountHoldingBaseKey  := 40   
  cWaitVirtualKey       := 5    
  cWaitBaselKey         := 10
  fAutoRepeat           := false
  gosub sbTrioProcessingKeys
return

;Numpad0 - что бы всегда срабатывал Медальон, в игре проблема обработки, видимо задержка ожидания нажатия.
sc52::      
  сBaseKey              := &quot;sc52&quot;   ;Numpad0
  cAloneKey             := &quot;sc52&quot;   ;Медальон 
  cDoubleKey            := &quot;sc52&quot;   ;Медальон
  cHoldingKey           := &quot;sc52&quot;   ;Медальон
  сPause_PressKey       := 300   
  cWaitHoldingBaseKey   := 1     
  cCountHoldingBaseKey  := 40   
  cWaitVirtualKey       := 5    
  cWaitBaselKey         := 10
  fAutoRepeat           := false 

  gosub sbTrioProcessingKeys
return
RShift::
;if (!Witcher2_RShift) 
 ;     return

  ;a:=A_ThisHotkey
  ;b:=A_ThisLabel
  
  сBaseKey              := &quot;RShift&quot;
  cAloneKey             := &quot;sc10&quot;     ;Q - Серебрянный меч
  cDoubleKey            := &quot;sc11&quot;     ;W - Стальной меч
  cHoldingKey           := &quot;sc12&quot;   ;E - Убрать оружие  
  сPause_PressKey       := 300   
  cWaitHoldingBaseKey   := 1     
  cCountHoldingBaseKey  := 40   
  cWaitVirtualKey       := 5    
  cWaitBaselKey         := 10
  fAutoRepeat           := false 

  gosub sbTrioProcessingKeys
return

#IfWinActive
;-----END--Для The Witcher 2 - Assassins of Kings


;lActiveWitcher:  ; Точка активации игры
;return

;lDeActiveWitcher:  ; Точка деактивации игры
;msgbox, Точка деактивации игры Для The Witcher 2
;if (arProc[1,5]=0)
;   gosub lExitProc
;return

;lPauseWitcher:  ; Точка паузы игры
;return

;RShift::
;if (fWitcher)
;RCtrl
;return





;***************END******************</code></pre></div></div></div><p>И концовка, т.е. начало <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /> </p><div class="codebox"><pre><code>;-----Инициализация
; Скрипт не выгружается
#Persistent
; Запрет повторного запуска
#SingleInstance

OnExit, EndGames

fnPathUses()          ;Иницализация путей
fnOverallSection()    ;Иницализация блока переменных
return
;----------------------------
;---Точка выхода
EndGames:
ExitApp

;----------------------------
;Пишем модуль/скрипт путей
;Пишем модуль/скрипт переменных

;Пишем модуль/скрипт для игр
;Метка GameKeyOnOff служит для динамческого/принудительного отключения игровых клавишь без выгрузки скрипта</code></pre></div><p> Удачи, может кому то я и помог.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2014-07-08T18:58:24Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=84637#p84637</id>
		</entry>
</feed>
