GXT (GTA 4)

Материал из 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:

Рисунок Тег Описание В ПК-версии
A butt.png ~PAD_A~ Кнопка A Да
B butt.png ~PAD_B~ Кнопка B Да
X butt.png ~PAD_X~ Кнопка X Заменяется на кл. ПРОБЕЛ
Y butt.png ~PAD_Y~ Кнопка Y Заменяется на кл. F
Lstick all.png ~PAD_LSTICK_ALL~ Левый стик Заменяется на кл. W S A D
Lstick leftright.png ~PAD_LSTICK_LEFTRIGHT~ или ~PAD_LSTICK_LEFTRIGHT_VEH~ Левый стик вправо-влево Заменяется на кл. A D
Lstick updown.png ~PAD_LSTICK_UPDOWN~ Левый стик вверх-вниз Заменяется на кл. W S
Lstick left.png ~PAD_LSTICK_LEFT~ Левый стик влево Заменяется на кл. A
Lstick right.png ~PAD_LSTICK_RIGHT~ Левый стик вправо Заменяется на кл. D
Lstick up.png ~PAD_LSTICK_UP~ Левый стик вверх Заменяется на кл. W
Lstick down.png ~PAD_LSTICK_DOWN~ Левый стик вниз Заменяется на кл. S
Lstick none.png ~PAD_LSTICK_NONE~ Левый стик ничего Заменяется на кл. W S A D
Rstick all.png ~PAD_RSTICK_ALL~ Правый стик во все стороны Заменяется на кл. МЫШЬ
Rstick leftright.png ~PAD_RSTICK_LEFTRIGHT~ Правый стик влево-вправо Заменяется на кл. МЫШЬ
Rstick updown.png ~PAD_RSTICK_UPDOWN~ Правый стик вверх-вниз Заменяется на кл. МЫШЬ
Rstick updown.png ~PAD_RSTICK_UPDOWN_ONLY~ Да
Rstick left.png ~PAD_RSTICK_LEFT~ Правый стик влево Да
Rstick right.png ~PAD_RSTICK_RIGHT~ Правый стик вправо Да
Rstick up.png ~PAD_RSTICK_UP~ Правый стик вверх Да
Rstick down.png ~PAD_RSTICK_DOWN~ Правый стик вниз Да
Rstick none.png ~PAD_RSTICK_NONE~ Правый стик ничего Заменяется на кл. МЫШЬ
Dpad all.png ~PAD_DPAD_ALL~ Крестовина во все стороны Заменяется на кл. Arrow up pc.pngArrow down pc.pngArrow left pc.pngArrow right pc.png
Dpad leftright.png ~PAD_DPAD_LEFTRIGHT~ Крестовина влево-вправо Заменяется на кл. Arrow left pc.pngArrow right pc.png
Dpad updown.png ~PAD_DPAD_UPDOWN~ Крестовина вверх-вниз Заменяется на кл. Arrow up pc.pngArrow down pc.png
Dpad left.png ~PAD_DPAD_LEFT~ Крестовина влево Заменяется на кл. Arrow left pc.png
Dpad right.png ~PAD_DPAD_RIGHT~ Крестовина вправо Заменяется на кл. Arrow right pc.png
Dpad up.png ~PAD_DPAD_UP~ Крестовина вверх Заменяется на кл. Arrow up pc.png
Dpad down.png ~PAD_DPAD_DOWN~ Крестовина вниз Заменяется на кл. Arrow down pc.png
Dpad none.png ~PAD_DPAD_NONE~ Крестовина ничего Да
Back butt.png ~PAD_BACK~ Назад Заменяется на кл. V
Start butt.png ~PAD_START~ Старт Заменяется на кл. ESC
Lt butt.png ~PAD_LT~ Левый шифт Да
Lb butt.png ~PAD_LB~ Левый шифт Заменяется на кл. E
Rt butt.png ~PAD_RT~ Правый шифт Да
Rb butt.png ~PAD_RB~ Правый шифт Заменяется на кл. Q
Left arrow.png ~PAD_LEFT~ Влево(?) Да?
Right arrow.png ~PAD_RIGHT~ Вправо(?) Да?
Up arrow.png ~PAD_UP~ Вверх(?) Да?
Down arrow.png ~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~ Arrow up pc.png
~INPUT_FRONTEND_DOWN~ Arrow down pc.png
~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~ Arrow up pc.png
~INPUT_FRONTEND_REPLAY_BACK~ Arrow down pc.png
~INPUT_FRONTEND_REPLAY_CYCLEMARKERLEFT~ ,
~INPUT_FRONTEND_REPLAY_CYCLEMARKERRIGHT~ .
~INPUT_FRONTEND_REPLAY_FFWD~ Arrow right pc.png
~INPUT_FRONTEND_REPLAY_HIDEHUD~ H
~INPUT_FRONTEND_REPLAY_NEWMARKER~ M
~INPUT_FRONTEND_REPLAY_PAUSE~ Пробел
~INPUT_FRONTEND_REPLAY_RESTART~ B
~INPUT_FRONTEND_REPLAY_REWIND~ Arrow left pc.png
~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~ Arrow down pc.png
~INPUT_KB_LEFT~ Arrow left pc.png
~INPUT_KB_RIGHT~ Arrow right pc.png
~INPUT_KB_UP~ Arrow up pc.png
~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~ Lstick leftright.png
~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~ Arrow up pc.png
~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~ A butt.png
~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~

Ссылки

п · о · р
GTA 4 Grand Theft Auto IV
Форматы файлов.dat.gxt.ide.img.ipl.nod.sco.rpf.rrr.wdd.wdr.wft.wbd/wbn.whm.wad.wnv.wpl.wtd
Документация Handling.datgta.datОружиеКатсценыПутиСкриптовые функцииШифрованиеФормат CFG файла настроек
Скриптинг в GTA 4
ИнструментыAPE IVASI LoaderIV NeedleGIMSOpenIVPathViewerSparkIVXLiveLessRaCon
Скриптовые программыAliceC++ Script HookScocl.NET Script HookDelphi Hook
ТуториалыИмпортирование текстур с помощью OpenIVИмпортирование текстур с помощью SparkIV
МодификацииGTA Vice City RageIV:SAGostown Paradise IV