1

Тема: AHK: Смена размера текста в консоле Dota2.

Собственно в русской версии Dоta2 есть небольшая проблема: текст консоли очень мелкий, и вальве не спешат это фиксить. Есть пара решений проблемы:Играть с английской локализацией или подправить в одном файле значение размера текста. Второй вариант с правкой файла больше подходит для любителей русского языка, но если его подправить, то после обновы доты(которая проходит каждую неделю) файл обновляется к стандартному виду, то есть с малым значением размера шрифта консоли и иногда после перезапуска steam'a дота проходит кеширование и файл с ново перезаписывается. Конечно, можно поставить атрибут "только для чтения", но тогда файл не будет обновляться с обновлениями.
Потому посетила идея написания скриптика на ahk, но регулярные выражения для меня -это камень преткновения. Да и к тому-же надо делать хитрый поиск, так как поиск нужно делать по слову(ConsoleText) которое встречается 3 раза в файле(заменять надо второй результат поиска) и под этим словом найти параметр ("tall" "10") и изменить его значение на "17"
Первое совпадение поиска:

"ConsoleText"
{
"1"
{
"name" "Tahoma"
"tall" "13"
"weight" "500"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}

Второе совпадение поиска: -найти это и изменить "tall" "17"

"ConsoleText"
{
"1"
{
"name" "Lucida Console"
"tall" "10"
"weight" "500"
}
}

Третье совпадение поиска:

"ConsoleText"
{
"1"
{
"name" "Lucida Console"
"tall" "10"
"weight" "500"
}
}

И всё это раскидано по файлу.
Файл примерно такого вида:

+ открыть спойлер

"ConsoleText"
{
"1"
{
"name" "Tahoma"
"tall" "13"
"weight" "500"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}

// this is the symbol font
"Marlett"
{
"1"
{
"name" "Marlett"
"tall" "14"
"weight" "0"
"symbol" "1"
"range" "0x0000 0x007F" // Basic Latin
}
}

"Trebuchet24"
{
"1"
{
"name" "Trebuchet MS"
"tall" "24"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}


"Trebuchet20"
{
"1"
{
"name" "Trebuchet MS"
"tall" "20"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}

"Trebuchet18"
{
"1"
{
"name" "Trebuchet MS"
"tall" "18"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}

// HUD numbers
// We use multiple fonts to 'pulse' them in the HUD, hence the need for many of near size
"HUDNumber"
{
"1"
{
"name" "Trebuchet MS"
"tall" "40"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"HUDNumber1"
{
"1"
{
"name" "Trebuchet MS"
"tall" "41"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"HUDNumber2"
{
"1"
{
"name" "Trebuchet MS"
"tall" "42"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"HUDNumber3"
{
"1"
{
"name" "Trebuchet MS"
"tall" "43"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"HUDNumber4"
{
"1"
{
"name" "Trebuchet MS"
"tall" "44"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"HUDNumber5"
{
"1"
{
"name" "Trebuchet MS"
"tall" "45"
"weight" "900"
"range" "0x0000 0x007F" // Basic Latin
}
}
"DefaultFixed"
{
"1"
{
"name" "Lucida Console"
"tall" "10"
"weight" "0"
"range" "0x0000 0x007F" // Basic Latin
}
// "1"
// {
// "name" "FixedSys"
// "tall" "20"
// "weight" "0"
// "range" "0x0000 0x007F" // Basic Latin
// }
}

"DefaultFixedDropShadow"
{
"1"
{
"name" "Lucida Console"
"tall" "10"
"weight" "0"
"dropshadow" "1"
"range" "0x0000 0x007F" // Basic Latin
}
// "1"
// {
// "name" "FixedSys"
// "tall" "20"
// "weight" "0"
// "range" "0x0000 0x007F" // Basic Latin
// }
}

"DefaultFixedOutline"
{
"1"
{
"name" "Lucida Console"
"tall" "10"
"weight" "0"
"outline" "1"
"range" "0x0000 0x007F" // Basic Latin
}
// "1"
// {
// "name" "FixedSys"
// "tall" "20"
// "weight" "0"
// "range" "0x0000 0x007F" // Basic Latin
// }
}

"CloseCaption_Normal"
{
"1"
{
"name" "Tahoma"
"tall" "16"
"weight" "500"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}
"CloseCaption_Italic"
{
"1"
{
"name" "Tahoma"
"tall" "16"
"weight" "500"
"italic" "1"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}
"CloseCaption_Bold"
{
"1"
{
"name" "Tahoma"
"tall" "16"
"weight" "900"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}
"CloseCaption_BoldItalic"
{
"1"
{
"name" "Tahoma"
"tall" "16"
"weight" "900"
"italic" "1"
"range" "0x0000 0x017F" // Basic Latin, Latin-1 Supplement, Latin Extended-A
}
}

TitleFont
{
"1"
{
"name" "HalfLife2"
"tall" "72"
"weight" "400"
"antialias" "1"
}
}
}

//
//////////////////// BORDERS //////////////////////////////
//
// describes all the border types
Borders
{
BaseBorder
{
"inset" "0 0 1 1"
Left
{
"1"
{
"color" "BorderDark"
"offset" "0 1"
}
}

Right
{
"1"
{
"color" "BorderBright"
"offset" "1 0"
}
}

Top
{
"1"
{
"color" "BorderDark"
"offset" "0 0"
}
}

Bottom
{
"1"
{
"color" "BorderBright"
"offset" "0 0"
}
}
}

TitleButtonBorder
{
"inset" "0 0 1 1"
Left
{
"1"
{
"color" "BorderBright"
"offset" "0 1"
}
}

Right
{
"1"
{
"color" "BorderDark"
"offset" "1 0"
}
}

Top
{
"4"
{
"color" "BorderBright"
"offset" "0 0"
}
}

Bottom
{
"1"
{
"color" "BorderDark"
"offset" "0 0"
}
}
}

TitleButtonDisabledBorder
{
"inset" "0 0 1 1"
Left
{
"1"
{
"color" "BgColor"
"offset" "0 1"
}
}

Right
{
"1"
{
"color" "BgColor"
"offset" "1 0"
}
}
Top
{
"1"
{
"color" "BgColor"
"offset" "0 0"
}
}

Bottom
{
"1"
{
"color" "BgColor"
"offset" "0 0"
}
}
}

TitleButtonDepressedBorder
{
"inset" "1 1 1 1"
Left
{
"1"
{
"color" "BorderDark"
"offset" "0 1"
}
}

Right
{
"1"
{
"color" "BorderBright"
"offset" "1 0"
}
}

Top
{
"1"
{
"color" "BorderDark"
"offset" "0 0"
}
}

Bottom
{
"1"
{
"color" "BorderBright"
"offset" "0 0"
}
}
}

ScrollBarButtonBorder
{
"inset" "2 2 0 0"
Left
{
"1"
{
"color" "BorderBright"
"offset" "0 1"
}
}

Right
{
"1"
{
"color" "BorderDark"
"offset" "1 0"
}
}

Top
{
"1"
{
"color" "BorderBright"
"offset" "0 0"
}
}

Bottom
{
"1"
{
"color" "BorderDark"
"offset" "0 0"
}
}
}

2

Re: AHK: Смена размера текста в консоле Dota2.

Пока вот так, а дальше те самые рег.выражения.


SetBatchLines -1 


RegRead, steamexe, HKCU, Software\Valve\Steam, SteamExe ; читаем из реестра путь до стима
RegRead, steampath, HKCU, Software\Valve\Steam, SteamPath ; эта переменная будет использоваться дальше

pkpath = %steampath%\SteamApps\common\dota 2 beta\dota\pak01_dir.vpk  ; Путь к файлу с текстом
;MsgBox %dota2%\SteamApps\common\dota 2 beta\dota ; Путь с Steam.exe

FilePath = %pkpath%
MsgBox %FilePath%


return

Dota2run:
Process, Exist, dota.exe
If ErrorLevel = 0 ; если Dota2 не запущена, то...
  {
    Run, steam://rungameid/570 ; Запуск игры с параметрами из стима
  }
return

3

Re: AHK: Смена размера текста в консоле Dota2.

Пока вот так, но почему-то создаётся пустой файл.


Loop, Read, %A_ScriptDir%\pak01_dir.vpk, output
Console""\s+""tall""\s+""10""\s+""weight""\s+""500""\s+}\s+}"
Str := RegExReplace(output, """ConsoleText""\s+{\s+""1""\s+{\s+""name""\s+""Lucida Console""\s+""tall""\s+""10""\s+""weight""\s+""500""\s+}\s+}", "ConsoleText`n        {`n            1`n        {`n                name        Lucida Console`n                tall        17`n                weight    500`n            }`n        }`n")
FileDelete, %A_ScriptDir%\pak01_dir1.vpk
FileAppend, %output%, %A_ScriptDir%\pak01_dir1.vpk

Подскажите, что не так? И как изменить только в первом совпадении и не трогать второе совпадение по поиску?