#1 Re: Программы для GTA » SAGE - GXT Editor » 23-02-2009 23:47

Seemann wrote:

это я так понял .lst файлы? Для чего они?

Изначально Sage задумывался как инструмент для перевода, поэтому была создана возможность работать с текстом для конкретной миссии (без учёта того, как разбросан текст миссии по файлу). Просто скидываем имена (по одному на строку) в lst файл и открываем - включается "режим списка". В этом режиме можно также импортировать/экспортировать текст (только указанный в списке).

Seemann wrote:

Готовых таблиц для русифицированного gxt GTA 4 (1С) нет?

English - с исправленным знаком (R)
Russian - 1С (возможны мелкие недочёты)

Seemann wrote:

Как соотносятся названия Surface-Air GXT Editor в заголовке и SA GXT Editor в About? Какому верить? И что такое Surface-Air? smile

В смысле летает wink, как ракета grin

Seemann wrote:

"Подбор имени" приколол. Занятие для терпеливых wink

А это на случай типа:

NAME_03
0a14f6e9
NAME_05

где можно попробовать имя NAME_04.

Seemann wrote:

да, и совсем забыл, на Висте 64/СП1/РУС есть небольшой глюк с шрифтом в центральном списке

Это с выбранной кириллической кодировкой?

Dageron wrote:

4)Локализация Xbox360 версии от неизвестных авторов (текст от ПК 1С, но новые шрифты и транслитерация)

Это, наверное, от того типа, которого постоянно пинают на гтафорумс lol

#2 Программы для GTA » SAGE - GXT Editor » 22-02-2009 01:52

AleX AciD
Replies: 7

Обновлённая версия редактора Sage: sage-097b.zip

* Открывает и сохраняет GXT файлы версий GTA III, GTA: Vice City, GTA: San Andreas, GTA IV.
* Поддерживает [де]кодирование строк (aka локализованные файлы)
* Редактирование таблицы [де]кодирования в самой программе
* Импорт/экспорт текста (текущая таблица)
* Работа в режиме списка (с виртуальной таблицей - "сценарием", собранной по списку ключей)
* Поиск по строке, ключу или хэшу ключа

Прилагается:
* Почти полный список ключей из GTA:SA
* Неполный список ключей из GTA IV
* Примеры списков (сценариев) для GTA:SA и GTA IV

PS: Во время редактирования таблицы декодирования производится автоматический обмен символов для обеспечения обратного кодирования.
Например, при замене М на 4, четвёрка будет автоматически заменена на М
При загрузке таблицы декодирования результат показывается автоматически, а при ручном редактировании нужно нажимать кнопку "Применить" wink

#3 Re: Серия GTA » GTA IV » 12-01-2009 02:33

@Seemann - диск уже куплен, описания сцен выдраны, скрипты декомпилированы wink
Сейчас переписываю редактор, чтобы поддерживал все версии gxt, начиная с gta1 gta3 (можно было бы наштамповать под каждую версию свой, но это неудобно). Версия файла определяется автоматически (уже).

[small]*уходит, бормоча: так, наверно 32 байта на имя строки будет достаточно...*[/small]

#4 Re: Серия GTA » GTA IV » 21-12-2008 22:48

Seemann wrote:

@AleX AciD - А ты не планируешь заняться восстановлением ключей GXT, как ты делал это для SA? Это было очень полезно.

Планирую, только сначала куплю диск с игрой.
[small]Всё, что у меня сейчас есть - это два перевода и exe-шник *кхе-кхе*вылеченный*кхе-кхе*[/small]

Seemann wrote:

Edit: твоей программе не хватает списка последних открытых файлов.

*записывает в блокнот*

Seemann wrote:

Для справки: в качестве алгоритма хэширования R* теперь используют не CRC32, а Jenkins One-at-a-time hash.

А вот за это отдельное спасибо! Я так понимаю и строки (ключи) теперь не по восемь байт?

#5 Re: Справочная информация » Процедуры и функции GTAIV.exe 1.0 » 15-12-2008 15:28

Регистратор функций для скриптов:

s_7E5A80_register_script_fns        сам регистратор
s_583420_reg_scr_fn                 регистрация одной функции - параметры: 
имя функции и адрес функции-обработчика

вызывает регистраторы категорий:

s_B40840_regscr_audio               
s_BA1350_regscr_camera              
s_B9DAF0_regscr_debug               
s_B9CB70_regscr_text_hud            надписи, радар
s_B961E0_regscr_misc_math_secur     разное, мат.функции, секуром
s_B92290_regscr_input               клавиатура, мышь
s_B8F400_regscr_pedchar             актеры
s_B7E7C0_regscr_player              
s_B7A2E0_regscr_pedtask             задачи актеров
s_B6D2D0_regscr_vehicle             транспорт
s_B62C00_regscr_object              объекты, pickup'ы
s_B5A180_regscr_extscript           внешние скрипты
s_B59BD0_regscr_stat                
s_B58D50_regscr_streaming           загрузка/выгрузка ресурсов
s_B57C00_regscr_path                
s_B54390_regscr_weapon              
s_B53410_regscr_fire_expl           огни, пожары, взрывы
s_B52910_regscr_zone                
s_A09DA0_regscr_gfx                 маркеры, эффекты, рисование
s_B52170_regscr_gang                
s_B52090_regscr_cutscene            
s_B51CA0_regscr_time                дата/время
s_B50940_regscr_net                 сеть

ещё один регистратор (вызывается отдельно):

s_584260_reg_scr_timer_math         таймеры, мат.функции (снова?)

Удобно, теперь все функции скриптов с именами, не нужно гадать, что это за функция...

#6 Re: Серия GTA » GTA IV » 15-12-2008 13:53

@listener - Спасибо, а не найдётся ещё gxt (american и russian) из того же комплекта? blush
Выложенные шрифты - из американской версии?

#7 Re: Серия GTA » GTA IV » 15-12-2008 04:16

Capushon wrote:

Всё отлично, но нет редактора новых таблиц перекодировки как в sagxtedit. Например открыть russian.gxt от 1C в твоём редакторе проблема, а в sagxtedit для создания новой таблицы перекодировки уходит максимум 15 минут, но там нет импорта/экспорта текста...

Встроенного редактора нет, таблицу надо писать в блокноте (пример таблицы идёт в комплекте), сохранять с расширением tbl.
Формат таблицы простой - построчно код символа (шестнадцатеричный) на текстуре (ASCII-код - 0x20), и буква, соответствующая ему при редактировании:

21=А        <- русские буквы
22=В
23=С
25=Е
28=Н

2b=К
2d=М
2f=О
...

Но выложенная версия написана под SA (точнее под его особенности кодирования символов), поэтому [де]кодирование (пока) работать не будет.
Кто-нибудь может выложить текстуры шрифтов в обычных форматах (TGA/BMP/GIF/JPG) ?
Нужно смотреть, что они выкинули на этот раз...

Capushon wrote:
AleX AciD wrote:

пробовали нажимать на иконку в окне "О программе"?

Да, а че том необычного?

Это была реклама пасхалки wink

#8 Re: Серия GTA » GTA IV » 14-12-2008 04:26

Capushon wrote:

редактор от AleX AciD (SAGE)

Че-то нет его нигде ... А там редактор таблиц есть?

О, программа потихоньку расползается... wink
Вообще давно надо было куда-нибудь выложить, да всё руки не доходили...

Пользуясь случаем, выкладываю тут:
http://public.sannybuilder.com/tools/sage09.zip
PS: А вы пробовали нажимать на иконку в окне "О программе"? wink

#9 Re: Серия GTA » GTA IV » 10-12-2008 07:25

Хорошая новость - формат gxt файлов совсем не изменился со времен сан-андреаса smile

PS: Rockstar - "мы признаем, что у игроков есть проблемы с GTA 4..."
http://gta-real.com/news/2008-12-08-588
(Между строк: "мы так наварились на приставочной версии, что нам абсолютно положить на писишников...")

#10 Re: Серия GTA » GTA IV » 09-12-2008 14:27

Игра действительно тормозит на новейших компьютерах?

#11 Re: О сайте и форумах » Вопросы и предложения » 25-09-2008 22:36

Можно подправить блок "код"? (да, опять tongue )

У меня включен скин Drone, очень трудно читать некоторые строки, например:
22297602ii7.th.gif

edit:
И, заодно, можно добавить/вернуть/включить флаг страны Jolly Roger (с черепком)?

#12 Re: Программы для GTA » Vehicle Audio loader » 04-02-2008 09:15

jayrocc wrote:

А в чем конкретно отличия загрузчика от Alexander'ского? Кроме конечно внешнего вида настроек аудиопараметров каждой машины, хотя они тоже похожи

+ параметры представлены таблицей (что облегчает сравнение параметров, в т.ч. неизвестных)
- редактируются параметры машин только с id от 400 до 630 (другие недоступны)

#13 Re: Программы для GTA » Vehicle Audio loader » 03-02-2008 04:46

:wow: blush
Файл залился нулевого размера (из-за недонастроенной локальной сети).
Перезалил туда же.

#14 Программы для GTA » Vehicle Audio loader » 01-02-2008 04:30

AleX AciD
Replies: 4

Залил на public свою версию загручика аудио-параметров машин (ASI-plugin).
- Используется табличный файл конфигурации a-la handling.cfg wink
- Прилагается оптимизированный ASI-loader (3 kb)

Ссылка: http://public.sannybuilder.com/saVehAudio_080201.zip

#15 Re: О сайте и форумах » Вопросы и предложения » 31-01-2008 23:33

Решение: smile

В файле style/Radium.css изменить последний стиль:

DIV.code1 {
	OVERFLOW: hidden; PADDING: 0px;
}

После него добавить этот стиль:

DIV.code1 PRE {
	WIDTH: 98%;
	OVERFLOW: auto;
	FONT-SIZE: 11px;
	FONT-FAMILY: Courier New;
	COLOR: #000000;
	BACKGROUND-COLOR: lightyellow;
	PADDING: 5px;
	BORDER: rgb(190,190,190) 1px dotted;
}

А также поправить движок форума, чтобы вместо

<DIV class=code1 style="HEIGHT: 13.5em"><PRE>

выдавалось:

<DIV class=code1><PRE style="HEIGHT: 13.5em">

Протестировано в IE 6, Firefox 2 и Opera 9. :good:

edit:
Решение основано на версии форума от 30.01.2008 wink

#16 Re: О сайте и форумах » Вопросы и предложения » 30-01-2008 09:04

Можно поставить в блок "Код" горизонтальную прокрутку?
Когда текст не помещается, очень неудобно, его никак не прокрутить. hmm

#17 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 30-01-2008 08:51

Переменная

dword_859D9C -> fFive    ;ext. script trigger def. radius

хранит 5.0 - радиус, используемый по умолчанию, при регистрации внешних скриптов-триггеров опкодами 0928 и 0929.

Функции

sub_43D6A0 -> reset_player_destroyed_model_counters
sub_46A930 -> init_external_script_trigger    // находит свободный элемент массива и заполняет его
sub_46A8C0 -> init_ext_script_triggers        // инициализирует массив структур ext_script_triggers
dummy_46B260 -> __init_ext_script_triggers    // вызывает предыдущую
.text:0084A740     unknown_libname_128 -> _init_script_triggers   // вызывает предыдущую

Переменная

stru_A90CF0 -> ext_script_triggers

- массив структур extScriptTrigger (размером по 0x14 байт) в количестве 70 (0x46) штук.

Структура

00000000 extScriptTrigger struc ; (sizeof=0x14)
00000000 script_index    dw ?
00000002 is_object       db ?                    ; 1: object, 0: actor
00000003 type            db ?
00000004 field_4         db ?
00000005 __pad           db 3 dup(?)
00000008 radius          dd ?          ;; <- float
0000000C model           dw ?
0000000E priority        dw ?
00000010 field_10        dd ?
00000014 extScriptTrigger ends

хранит информацию о внешнем скрипте-триггере (заполняется опкодами 0928 и 0929)


PS:
Функция

.text:0084A740     unknown_libname_128 -> _init_script_triggers

входит в большую таблицу функций, начинающуюся с адреса 0x008A4000. Это, случаем, не "основной класс игры" (CGame) ? cool

#18 Re: Справочная информация » Новые описания для опкодов » 26-01-2008 02:03

03c8=0,rotate_player-180-degrees

действует аналогично 0373: set_camera_directly_behind_player, только камера размещается перед игроком, а не за ним, поэтому более подходящее название для него:

03c8=0,set_camera_directly_before_player

Ранее неизвестный:

0822=1,set_bumper_camera_available %1d%

параметр равный:
0 - делает недоступной камеру "вид с бампера" и переключает камеру на "вид со средней дистанции".
1 - делает камеру доступной (без переключения вида)

#19 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 25-01-2008 23:33

Seemann wrote:

вообще-то 4 - это среда wink 1 января 1992 года было средой (время начала игры). Кстати, внутриигровой год тоже високосный (в феврале 29 дней, см. 008CCF24 MonthsDays).

Точно, у них же неделя начинается с воскресенья crazy

Несколько функций:

sub_50BD40 -> camera_set_behind_player      // поставить камеру за игроком
sub_50BD70 -> camera_set_before_player      // поставить камеру перед игроком
sub_4414C0 -> time_increase_by_minutes      // добавить X минут к текущему времени

PS:
Мне кажется, или это жестко запрограммированый "вылет" из игры?

.text:00484BD6                  xor     eax, eax
.text:00484BD8                  or      byte ptr [eax+1Eh], 4

#20 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 13-01-2008 06:58

Пара функций:

sub_56E580 - set_player_wasted
sub_56E5D0 - set_player_busted

Устанавливают состояние переменной wasted_busted в структуре игрока (wasted = 1, busted = 2).

edit:
Функция

sub_52CD90 -> init_game_time

устанавливает текущее игровое время/дату как Четверг, 01 Января 12:00:00

несколько переменных:

byte_B70144 -> _isTimeSaved
byte_B7014D -> _savedMonth
byte_B7014C -> _savedMonthDay
word_B70148 -> _savedSeconds
byte_B7014E -> _currentWeekDay

edit2:
Функция

sub_55C0C0 -> init_stats

инициализирует статистику (задает начальные значения, читает AR_STATS.DAT , STATDISP.DAT)

8-байтовый буфер

dword_B78A00 -> _gxtLastMissionPassed
dword_B78A04 -> _gxtLastMissionPassed_2nd_part

хранит gxt-ключ имени последней пройденной миссии

#21 Модификации » Реалистичный трафик » 04-01-2008 07:52

AleX AciD
Replies: 14

Сделал модификатор трафика на дорогах (в зависимости от времени суток, с увеличенным уровнем в городах).

Используется два потока (можно обойтись и одним, просто лень переписывать wink )

// put your create_thread commands here

create_thread @TIME_WATCH
create_thread @TRAFFIC_MOD

Один поток просто следит за временем и устанавливает "сигнальные" переменные:

// time intervals
:TIME_WATCH
thread 'TIME'

var
$TIME_HOURS: Integer
$TIME_MINS: Integer
$TIME_MS: Integer
$LAST_HOUR: Integer
$LAST_MIN: Integer
$IS_NEXT_HOUR: Integer
$IS_NEXT_5MIN: Integer
$IS_NEXT_MIN: Integer
end

00BF: $LAST_HOUR = current_time_hours, $LAST_MIN = current_time_minutes

while TRUE
    wait 200
    00BF: $TIME_HOURS = current_time_hours, $TIME_MINS = current_time_minutes
    01BD: $TIME_MS = current_time_in_ms 
    $IS_NEXT_HOUR = FALSE
    $IS_NEXT_MIN = FALSE
    $IS_NEXT_5MIN = FALSE
    
    if
        not $LAST_HOUR == $TIME_HOURS
    then
        $IS_NEXT_HOUR = TRUE   // срабатывает каждый час
    end
    $LAST_HOUR = $TIME_HOURS
    
    if
        not $LAST_MIN == $TIME_MINS
    then
        0006: 0@ = $TIME_MINS
        0006: 1@ = 0@
        0@ /= 5             // 17 / 5 = 3    20 / 5 = 4   (целочисленное деление)
        0@ *= 5
        000E: 1@ -= 0@      // 17 - ((17 / 5) * 5) = 2    20 - ((20 / 5) * 5) = 0
        if
            1@ == 0     // если остаток от деления минут на 5 равен нулю
        then
            $IS_NEXT_5MIN = TRUE   // срабатывает каждые 5 минут
        end 
        $IS_NEXT_MIN = TRUE   // срабатывает каждую минуту
    end
    $LAST_MIN = $TIME_MINS
end
end_thread

Второй контролирует трафик по такой схеме:

время:    00  01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16  17  18  19  20  21  22  23
уровень: 0.1 |    0.09   |0.1 0.2 0.4|    1.0    |          0.6              |   1.0    |  0.6   |0.4 0.2
// traffic modifier, based on current time
:TRAFFIC_MOD
thread 'TRAFFIC'

var
$trafic_multiplier: Float
$traffic_density: Float
end

$IS_NEXT_HOUR = TRUE

while TRUE
    wait 100
    if $IS_NEXT_HOUR == TRUE
    then
        if $TIME_HOURS == 0
        then
            $trafic_multiplier = 0.1
        end 
        if and
            $TIME_HOURS >= 1
            $TIME_HOURS <= 3
        then
            $trafic_multiplier = 0.09
        end 
        if $TIME_HOURS == 4
        then
            $trafic_multiplier = 0.1
        end 
        if $TIME_HOURS == 5
        then
            $trafic_multiplier = 0.2
        end 
        if $TIME_HOURS == 6
        then
            $trafic_multiplier = 0.4
        end 
        if and
            $TIME_HOURS >= 7
            $TIME_HOURS <= 9
        then
            $trafic_multiplier = 1.0
        end 
        if and
            $TIME_HOURS >= 10
            $TIME_HOURS <= 16
        then
            $trafic_multiplier = 0.6
        end 
        if and
            $TIME_HOURS >= 17
            $TIME_HOURS <= 19
        then
            $trafic_multiplier = 1.0
        end 
        if and
            $TIME_HOURS >= 20
            $TIME_HOURS <= 21
        then
            $trafic_multiplier = 0.6
        end
        if $TIME_HOURS == 22
        then
            $trafic_multiplier = 0.4
        end 
        if $TIME_HOURS == 23
        then
            $trafic_multiplier = 0.2
        end 
    end
    
    if $IS_NEXT_5MIN == TRUE
    then
        $traffic_density = $trafic_multiplier
        if or
            0583:   player $PLAYER_CHAR in_zone 'LA'  // los santos 
            0583:   player $PLAYER_CHAR in_zone 'SF'  // san fierro
            0583:   player $PLAYER_CHAR in_zone 'VE'  // las venturas
        then
//01E3: show_text_1number_styled GXT 'NUMBER' number 333 time 1000 style 4
            $traffic_density *= 1.5
        end
        01EB: set_traffic_density_multiplier_to $traffic_density
    end
{    // удалить скобку для проверки переменной
    var
        $di: Integer
        $df: Float
    end
    $df = $traffic_density
    $df *= 10.0
    008C: $di = float $df to_integer 
    01E3: show_text_1number_styled GXT 'NUMBER' number $di time 1000 style 2   //}
end

end_thread

#22 Re: Справочная информация » disassembler-friendly GTA_SA.exe » 18-11-2007 21:05

Alexander wrote:

здесь пак клео-скриптов марсика , в нем скрипт traincam.cs )

Спасибо, покопаюсь. smile

#23 Re: Справочная информация » disassembler-friendly GTA_SA.exe » 18-11-2007 17:46

Alexander wrote:

Хорошо , но это `велосипед` , ведь есть же скрипт нормальной камеры поезда с возможностью переключения вида )

А ссылочки не найдется?

flashTrash wrote:

А вот хорошо бы сделать так, что бы камера, при движении авто, через N-ое время не разворачивалась, как сейчас. А то приходится переодически мышкой двигать, чтоб камера положение не начала менять.

Да, но мне пока не известно, где находится этот код... hmm

PS: По поводу тоннелей, хотел добавить, что этот недостаток позволяет увидеть работу движка. В частности в тоннеле "имени Market station" происходит отключение рендеринга внешнего мира при въезде и включение при выезде.

#24 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 17-11-2007 04:08

Как была отключена динамическая камера для поезда (описание патча):

При включении этой камеры всплывает сообщение "Нажмите NUM4...", id которого - "CINCAM".

В exe-шнике всего 5 функций (показывающих это сообщение) используют этот id, причем все 5 функций, в свою очередь, вызываются в "switch'е" одной функции (sub_527FA0, глядя на граф этой функции можно ужаснуться :wow: ).

После показа сообщения, происходит обращение к какой-то переменной:

.text:0052A71F                  call    sub_526950         ; <-- забито 
.text:0052A724                  mov     dx, word_B70140    ; <-- nop'ами
.text:0052A72B                  jmp     short loc_52A757

Забивая по очереди вызов функции и обращение к переменной в каждой из пяти ветвей "switch'a", я нашел нужную ветвь.

#25 Re: Справочная информация » disassembler-friendly GTA_SA.exe » 17-11-2007 04:04

Еще одна модификация:
- отстреливает динамическую камеру, включающуюся при посадке в поезд (и при его угоне).:cool:
(Но обычного переключения камер все равно нет)
Из-за того, что многие тоннели очень низкие, камера иногда выезжает за потолок. hmm

Патч должен без проблем накладываться на любой из трех вариантов компактного exe (на обычный и на оба моих патча, выложенных выше).

Патч: http://public.sannybuilder.com/GTASA_PA … aincam.zip

edit: все ссылки на патчи исправлены

Board footer

Powered by FluxBB