Материал из GTAModding.ru
Бинарные файлы с расширением .gxt используются для хранения текстовых строк на разных языках (для каждого языка свой файл). В упрощённом виде файл состоит из нескольких таблиц, которые содержат наборы пар ключ=значение.
Формат .gxt файлов для GTA 4 идентичен формату файлов для GTA San Andreas. Основное отличие состоит в алгоритме вычисления хэша строки, а также в длине и наборе символов в идентификаторах.
Алгоритм вычисления хэша строки
Для вычисления хэша используется следующая разновидность алгоритма Jenkins One-at-a-time hash:
DWORD GetHash(char *szKeyName)
{
DWORD hash = 0;
BOOL bQuote = FALSE;
char ch;
if(*szKeyName == '"')
{
bQuote = TRUE;
szKeyName++;
}
ch = *szKeyName;
while(ch != '\0')
{
if(bQuote != FALSE)
{
if(ch == '"')
break;
}
if((ch >= 'A') && (ch <= 'Z')) // make lowercase
ch += 0x20;
else if(ch == '\\')
ch = '/';
hash = (hash + (ch)) * 1025; // 0x0401
hash = hash ^ (hash >> 6);
szKeyName++;
ch = *szKeyName;
}
hash *= 9;
hash = ((hash >> 11) ^ hash) * 32769; // 0x8001
return hash;
}
Хэш строки вычисляется из идентификатора, представляющего собой ASCIIZ строку переменной длины (предположительно до 32 байт). В идентификаторе допускаются следующие символы:
- заглавные латинские буквы ( A-Z )
- символ подчеркивания ( _ )
Перед вычислением хэша идентификатор приводится к нижнему регистру.
Примеры идентификаторов:
BLISTA
GERV4_AIDS_86
PB_MISC_02
Теги
В текст GXT можно вставлять различные теги, которые изменяют цвет последующего текста или вставляют различные объекты в текст. Теги отгораживаются с двух сторон знаками ~ (тильда), например: ~INPUT_JUMP~ и состоят из знаков латинского алфавита, цифр и знака подчёркивания.
Теги вставки скриптовых значений
| Тег
| Что вставляет
|
| ~1~
| Вставляет целое число (Скриптовые функции PRINT_HELP_FOREVER_WITH_NUMBER, PRINT_HELP_WITH_NUMBER, PRINT_WITH_2_NUMBERS, PRINT_WITH_2_NUMBERS_NOW, PRINT_WITH_NUMBER, PRINT_WITH_NUMBER_BIG, PRINT_WITH_NUMBER_NOW и др.)
|
| ~a~
| Вставляет GXT-строку (Скриптовые функции PRINT_HELP_FOREVER_WITH_STRING, PRINT_HELP_FOREVER_WITH_STRING_NO_SOUND, PRINT_HELP_WITH_STRING, PRINT_HELP_WITH_STRING_NO_SOUND, PRINT_STRING_IN_STRING, PRINT_STRING_IN_STRING_NOW и др.)
|
| ~e~
| Вставляет литеральную строку (Скриптовые функции PRINT_STRING_WITH_LITERAL_STRING_NOW и др.)
|
Теги изменения цвета
| Цвет
| Тег
| Примечание
|
|
| ~b~
| Имя друга или машина
|
|
| ~c~
| На другом языке
|
|
| ~g~
| Предмет
|
|
| ~h~
| Выделение слов
|
|
| ~l~
|
|
|
| ~m~
|
|
|
| ~p~
|
|
|
| ~r~
| Враг
|
|
| ~s~
| Обычный цвет
|
|
| ~w~
| Обычный цвет
|
|
| ~y~
| Название места
|
|
| ~COL_NET_1~
|
|
|
| ~COL_NET_2~
|
|
|
| ~COL_NET_3~
|
|
|
| ~COL_NET_4~
|
|
|
| ~COL_NET_5~
|
|
|
| ~COL_NET_6~
|
|
|
| ~COL_NET_7~
|
|
|
| ~COL_NET_8~
|
|
|
| ~COL_NET_9~
|
|
|
| ~COL_NET_10~
|
|
|
| ~COL_NET_11~
|
|
|
| ~COL_NET_12~
|
|
|
| ~COL_NET_13~
|
|
|
| ~COL_NET_14~
|
|
|
| ~COL_NET_15~
|
|
|
| ~COL_NET_16~
|
|
Теги вставки изображений
В GTA4 в текст можно вставить значки радара тегом ~BLIP_НомерЗначка~, например тег ~BLIP_74~ вставит в текст значок радара
. Номера значков можно узнать из статьи Иконки радара.
Теги кнопок геймпада
В ПК-версии осталась возможность вставлять в текст значки кнопок геймпада Xbox360:
| Рисунок
| Тег
| Описание
| В ПК-версии
|
| ~PAD_A~
| Кнопка A
| Да
|
| ~PAD_B~
| Кнопка B
| Да
|
| ~PAD_X~
| Кнопка X
| Заменяется на кл. ПРОБЕЛ
|
| ~PAD_Y~
| Кнопка Y
| Заменяется на кл. F
|
| ~PAD_LSTICK_ALL~
| Левый стик
| Заменяется на кл. W S A D
|
| ~PAD_LSTICK_LEFTRIGHT~ или ~PAD_LSTICK_LEFTRIGHT_VEH~
| Левый стик вправо-влево
| Заменяется на кл. A D
|
| ~PAD_LSTICK_UPDOWN~
| Левый стик вверх-вниз
| Заменяется на кл. W S
|
| ~PAD_LSTICK_LEFT~
| Левый стик влево
| Заменяется на кл. A
|
| ~PAD_LSTICK_RIGHT~
| Левый стик вправо
| Заменяется на кл. D
|
| ~PAD_LSTICK_UP~
| Левый стик вверх
| Заменяется на кл. W
|
| ~PAD_LSTICK_DOWN~
| Левый стик вниз
| Заменяется на кл. S
|
| ~PAD_LSTICK_NONE~
| Левый стик ничего
| Заменяется на кл. W S A D
|
| ~PAD_RSTICK_ALL~
| Правый стик во все стороны
| Заменяется на кл. МЫШЬ
|
| ~PAD_RSTICK_LEFTRIGHT~
| Правый стик влево-вправо
| Заменяется на кл. МЫШЬ
|
| ~PAD_RSTICK_UPDOWN~
| Правый стик вверх-вниз
| Заменяется на кл. МЫШЬ
|
| ~PAD_RSTICK_UPDOWN_ONLY~
|
| Да
|
| ~PAD_RSTICK_LEFT~
| Правый стик влево
| Да
|
| ~PAD_RSTICK_RIGHT~
| Правый стик вправо
| Да
|
| ~PAD_RSTICK_UP~
| Правый стик вверх
| Да
|
| ~PAD_RSTICK_DOWN~
| Правый стик вниз
| Да
|
| ~PAD_RSTICK_NONE~
| Правый стик ничего
| Заменяется на кл. МЫШЬ
|
| ~PAD_DPAD_ALL~
| Крестовина во все стороны
| Заменяется на кл.   
|
| ~PAD_DPAD_LEFTRIGHT~
| Крестовина влево-вправо
| Заменяется на кл. 
|
| ~PAD_DPAD_UPDOWN~
| Крестовина вверх-вниз
| Заменяется на кл. 
|
| ~PAD_DPAD_LEFT~
| Крестовина влево
| Заменяется на кл.
|
| ~PAD_DPAD_RIGHT~
| Крестовина вправо
| Заменяется на кл.
|
| ~PAD_DPAD_UP~
| Крестовина вверх
| Заменяется на кл.
|
| ~PAD_DPAD_DOWN~
| Крестовина вниз
| Заменяется на кл.
|
| ~PAD_DPAD_NONE~
| Крестовина ничего
| Да
|
| ~PAD_BACK~
| Назад
| Заменяется на кл. V
|
| ~PAD_START~
| Старт
| Заменяется на кл. ESC
|
| ~PAD_LT~
| Левый шифт
| Да
|
| ~PAD_LB~
| Левый курок
| Заменяется на кл. E
|
| ~PAD_RT~
| Правый шифт
| Да
|
| ~PAD_RB~
| Правый курок
| Заменяется на кл. Q
|
| ~PAD_LEFT~
| Влево(?)
| Да?
|
| ~PAD_RIGHT~
| Вправо(?)
| Да?
|
| ~PAD_UP~
| Вверх(?)
| Да?
|
| ~PAD_DOWN~
| Вниз(?)
| Да?
|
Теги игровых клавиш
Эта часть статьи не завершена. Вы поможете проекту, исправив и дополнив её.
| Тег
| Функция
| Клавиша по умолчанию
|
| ~INPUT_AIM~
| Прицелиться
| ПКМ
|
| ~INPUT_ATTACK~
| Атаковать
| ЛКМ
|
| ~INPUT_COVER~
| В укрытие
| Q
|
| ~INPUT_DROP_WEAPON~
| Бросить(?) оружие
| R
|
| ~INPUT_DUCK~
| Присесть, нагнуться
| Левый CTRL
|
| ~INPUT_ENTER~
| Enter
| F
|
| ~INPUT_FE_REPLAY_PREVIEW~
|
| Пробел
|
| ~INPUT_FE_REPLAY_TOGGLETIME~
|
| C
|
| ~INPUT_FE_REPLAY_TOGGLETIPS~
|
| V
|
| ~INPUT_FREE_AIM~
|
| ПКМ
|
| ~INPUT_FRONTEND_ACCEPT~
|
| Enter
|
| ~INPUT_FRONTEND_APPLY~
|
| Пробел
|
| ~INPUT_FRONTEND_AXIS_BACK~
|
| S
|
| ~INPUT_FRONTEND_AXIS_FWD~
|
| W
|
| ~INPUT_FRONTEND_AXIS_LEFT~
|
| A
|
| ~INPUT_FRONTEND_AXIS_RIGHT~
|
| D
|
| ~INPUT_FRONTEND_CANCEL~
|
| Backspace
|
| ~INPUT_FRONTEND_CUT~
|
| CTRL+X
|
| ~INPUT_FRONTEND_COPY~
|
| CTRL+C
|
| ~INPUT_FRONTEND_PASTE~
|
| CTRL+V
|
| ~INPUT_FRONTEND_DELETE_FILTER~
|
| DEL
|
| ~INPUT_FRONTEND_UP~
|
|
|
| ~INPUT_FRONTEND_DOWN~
|
|
|
| ~INPUT_FRONTEND_F6~
|
| F6
|
| ~INPUT_FRONTEND_LB~
|
| E
|
| ~INPUT_FRONTEND_LEGEND~
|
| Tab
|
| ~INPUT_FRONTEND_LOCK_LOBBY~
|
| Левый Shift
|
| ~INPUT_FRONTEND_LT~
|
| Колёсико вниз
|
| ~INPUT_FRONTEND_MARKER_DELETE~
|
| Del
|
| ~INPUT_FRONTEND_MINIGAME_1~
|
| 1
|
| ~INPUT_FRONTEND_MINIGAME_2~
|
| 2
|
| ~INPUT_FRONTEND_MINIGAME_3~
|
| 3
|
| ~INPUT_FRONTEND_MINIGAME_4~
|
| 4
|
| ~INPUT_FRONTEND_MODEL_SCREEN~
|
| M
|
| ~INPUT_FRONTEND_PAUSE~
|
| ESC
|
| ~INPUT_FRONTEND_PLAYER_LIST~
|
| P
|
| ~INPUT_FRONTEND_RB~
|
| Q
|
| ~INPUT_FRONTEND_REFRESH~
|
| F5
|
| ~INPUT_FRONTEND_REPLAY_ADVANCE~
|
|
|
| ~INPUT_FRONTEND_REPLAY_BACK~
|
|
|
| ~INPUT_FRONTEND_REPLAY_CYCLEMARKERLEFT~
|
| ,
|
| ~INPUT_FRONTEND_REPLAY_CYCLEMARKERRIGHT~
|
| .
|
| ~INPUT_FRONTEND_REPLAY_FFWD~
|
|
|
| ~INPUT_FRONTEND_REPLAY_HIDEHUD~
|
| H
|
| ~INPUT_FRONTEND_REPLAY_NEWMARKER~
|
| M
|
| ~INPUT_FRONTEND_REPLAY_PAUSE~
|
| Пробел
|
| ~INPUT_FRONTEND_REPLAY_RESTART~
|
| B
|
| ~INPUT_FRONTEND_REPLAY_REWIND~
|
|
|
| ~INPUT_FRONTEND_REPLAY_SCREENSHOT~
|
| U
|
| ~INPUT_FRONTEND_REPLAY_SHOWHOTKEY~
|
| K
|
| ~INPUT_FRONTEND_REPLAY_TOOLS~
|
| T
|
| ~INPUT_FRONTEND_RT~
|
| Колёсико вверх
|
| ~INPUT_FRONTEND_VEHICLE_TOGGLE~
|
| V
|
| ~INPUT_FRONTEND_X~
|
| Пробел
|
| ~INPUT_FRONTEND_Y~
|
| F
|
| ~INPUT_JUMP~
|
| Пробел
|
| ~INPUT_KB_DOWN~
|
|
|
| ~INPUT_KB_LEFT~
|
|
|
| ~INPUT_KB_RIGHT~
|
|
|
| ~INPUT_KB_UP~
|
|
|
| ~INPUT_MELEE_ATTACK1~
|
| ЛКМ
|
| ~INPUT_MELEE_ATTACK2~
|
| R
|
| ~INPUT_MELEE_ATTACK3~
|
| ESC
|
| ~INPUT_MELEE_BLOCK~
|
| Пробел
|
| ~INPUT_MELEE_KICK~
|
| Q
|
| ~INPUT_MOUSE_LMB~
|
| ЛКМ
|
| ~INPUT_MOUSE_RMB~
|
| ПКМ
|
| ~INPUT_MOUSE_UD~
|
| Мышь
|
| ~INPUT_MOUSE_WHEEL_DOWN~
|
| Колёсико вниз
|
| ~INPUT_MOUSE_WHEEL_UP~
|
| Колёсико вверх
|
| ~INPUT_MOVE_LEFT~
|
|
|
| ~INPUT_NEXT_CAMERA~
|
| V
|
| ~INPUT_NEXT_TRACK~
|
| N
|
| ~INPUT_NEXT_WEAPON~
|
| Колёсико вверх
|
| ~INPUT_PHONE_ACCEPT~
|
| Enter
|
| ~INPUT_PHONE_CANCEL~
|
| Backspace
|
| ~INPUT_PHONE_PUT_AWAY~
|
| Scroll Lock
|
| ~INPUT_PHONE_TAKE_OUT~
|
|
|
| ~INPUT_PICKUP~
|
| E
|
| ~INPUT_PREV_TRACK~
|
| B
|
| ~INPUT_PREV_WEAPON~
|
| Колёсико вниз
|
| ~INPUT_RELOAD~
|
| R
|
| ~INPUT_REPLAY_SAVE_TO_HDD~
|
| F2
|
| ~INPUT_SNIPER_ZOOM_IN_ALTERNATE~
|
| Колёсико вверх
|
| ~INPUT_SNIPER_ZOOM_IN~
|
| Колёсико вверх
|
| ~INPUT_SNIPER_ZOOM_OUT_ALTERNATE~
|
| Колёсико вниз
|
| ~INPUT_SNIPER_ZOOM_OUT~
|
| Колёсико вниз
|
| ~INPUT_SPRINT~
|
| Левый Shift
|
| ~INPUT_TEXT_CHAT_RESULTS_TOGGLE~
|
| C
|
| ~INPUT_TEXT_CHAT_Y~
|
| Y
|
| ~INPUT_TURN_OFF_RADIO~
|
| X
|
| ~INPUT_VEH_ACCELERATE~
|
| W
|
| ~INPUT_VEH_ATTACK~
|
| ЛКМ
|
| ~INPUT_VEH_ATTACK2~
|
| ЛКМ
|
| ~INPUT_VEH_BRAKE~
|
| S
|
| ~INPUT_VEH_CIN_CAM~
|
| Caps Lock
|
| ~INPUT_VEH_EXIT~
|
| F
|
| ~INPUT_VEH_FLY_PITCH_DOWN~
|
| Цифр. кл. "2"
|
| ~INPUT_VEH_FLY_PITCH_UP~
|
| Цифр. кл. "8"
|
| ~INPUT_VEH_FLY_ROLL_LEFT~
|
| A
|
| ~INPUT_VEH_FLY_ROLL_RIGHT~
|
| D
|
| ~INPUT_VEH_FLY_THROTTLE_DOWN~
|
| S
|
| ~INPUT_VEH_FLY_THROTTLE_UP~
|
| W
|
| ~INPUT_VEH_FLY_YAW_LEFT~
|
| Цифр. кл. "4"
|
| ~INPUT_VEH_FLY_YAW_RIGHT~
|
| Цифр. кл. "6"
|
| ~INPUT_VEH_HANDBRAKE_ALT~
|
|
|
| ~INPUT_VEH_HANDBRAKE~
|
| Пробел
|
| ~INPUT_VEH_HEADLIGHT~
|
| H
|
| ~INPUT_VEH_HORN~
|
| G
|
| ~INPUT_VEH_HOTWIRE_LEFT~
|
| W
|
| ~INPUT_VEH_HOTWIRE_RIGHT~
|
| S
|
| ~INPUT_VEH_KEY_UD~
|
| [Левый Shift][Левый CTRL]
|
| ~INPUT_VEH_KEY_LR~
|
| [A][D]
|
| ~INPUT_VEH_LOOK_BEHIND~
|
| C
|
| ~INPUT_VEH_LOOK_LEFT~
|
| нет?
|
| ~INPUT_VEH_LOOK_RIGHT~
|
| нет?
|
| ~INPUT_VEH_NEXT_RADIO~
|
| Колёсико вверх
|
| ~INPUT_VEH_NEXT_WEAPON~
|
| Q
|
| ~INPUT_VEH_PREV_RADIO~
|
| Колёсико вниз
|
| ~INPUT_ZOOM_RADAR~
|
| T
|
Другие теги
Эта часть статьи не завершена. Вы поможете проекту, исправив и дополнив её.
- ~z~ - Применяется, если текст - реплика диалога
- ~x~ - Неизвестно. Применяется всегда вместе с ~z~
Ссылки