#1 23-07-2011 17:58

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Запуск двух GTA SA

Итак, давно хотел сделать запуск двух гташек (Точнее сделал).

Но вот проблема! Только что заметил, что миссия грузится только на половину при запуске (В смысле две игры запускаются, но при начале игры, у одной из них загрузка останавливается ровно на середине). Заметил только сейчас, т.к наработкой никогда не пользовался.
Как я сделал запуск двух гта:

Рокстар юзнули простой api FindWindowA, чтобы находить вторую запущенную гта и "подавлять" ее загрузку.

Вот оригинальный кусок:

007468E8  |.  6A 00         PUSH 0                                   ; |ManualReset = FALSE
007468EA  |.  6A 00         PUSH 0                                   ; |pSecurity = NULL
007468EC  |.  FF15 2C818500 CALL DWORD PTR DS:[<&KERNEL32.CreateEven>; \CreateEventA
007468F2  |.  FF15 94808500 CALL DWORD PTR DS:[<&KERNEL32.GetLastErr>; [GetLastError
007468F8  |.  3D B7000000   CMP EAX,0B7
007468FD  |.  75 39         JNZ SHORT gta_sa.00746938
007468FF  |.  8B0D 4070C100 MOV ECX,DWORD PTR DS:[C17040]
00746905  |.  8B15 24628D00 MOV EDX,DWORD PTR DS:[8D6224]            ;  gta_sa.00872ED8
0074690B  |.  51            PUSH ECX                                 ; /Title => NULL
0074690C  |.  52            PUSH EDX                                 ; |Class => "Grand theft auto San Andreas"
0074690D  |.  FF15 B4828500 CALL DWORD PTR DS:[<&USER32.FindWindowA>>; \FindWindowA
00746913  |.  85C0          TEST EAX,EAX
00746915  |.  74 0D         JE SHORT gta_sa.00746924
00746917  |.  50            PUSH EAX                                 ; /hWnd
00746918  |.  FF15 B8828500 CALL DWORD PTR DS:[<&USER32.SetForegroun>; \SetForegroundWindow
0074691E  |.  B8 01000000   MOV EAX,1
00746923  |.  C3            RETN
00746924  |>  A1 5470C100   MOV EAX,DWORD PTR DS:[C17054]
00746929  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
0074692B  |.  51            PUSH ECX                                 ; /hWnd
0074692C  |.  FF15 B8828500 CALL DWORD PTR DS:[<&USER32.SetForegroun>; \SetForegroundWindow
00746932  |.  B8 01000000   MOV EAX,1
00746937  |.  C3            RETN
00746938  |>  33C0          XOR EAX,EAX
0074693A  \.  C3            RETN

Достаточно изменить JNZ SHORT gta_sa.00746938 на JMP 00746938, чтобы все было ок. Но я в первой строке куска вбил xor eax,eax, во второй retn. В результате эффект почти одинаковый.

А теперь суть:
Я не заставляю никого хватать отладчик/дизассемблер и бежать искать способы. Я обращаюсь к тем, кто исследовал гта (Особенно к Листенеру и Симану), если вы знаете про это что-нибудь, то любая информация будет полезной. Спасибо.

P.S Попутный вопрос: при сворачивании игры, довольно часто курсор автоматом прилипает к левому верхнему углу экрана (это бесит grin). Так вот, как думаете, все дело в тех же api? (SetCursorPos и тд).

Last edited by Jack Daniel's (23-07-2011 18:43)

Offline

#2 24-07-2011 03:42

VintProg_Pro
Registered: 17-06-2010
Posts: 153

Re: Запуск двух GTA SA

Такая же ерунда и у ВС...

Offline

#3 24-07-2011 08:53

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Запуск двух GTA SA

Надеюсь, дело не в каких-нибудь main.scm и тд grin

Offline

#4 24-07-2011 10:13

VintProg_Pro
Registered: 17-06-2010
Posts: 153

Re: Запуск двух GTA SA

Jack Daniel's wrote:

Надеюсь, дело не в каких-нибудь main.scm и тд grin

Ну уж точно нет!

Offline

#5 07-08-2011 12:36

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Запуск двух GTA SA

Интересно, что вообще игра делает в момент загрузки новой игры? Просто загружает скрипты/сохранения/все то, что до этого не загрузила?
Кстати, зацените плагин fastloader:
Видео

4 секунды загрузки, без видео заставок, тайтла гта са, полосы загрузки и, судя по исходникам, там все-лишь замена байтов в ~десятке адресов...

Last edited by Jack Daniel's (07-08-2011 12:37)

Offline

#6 07-08-2011 21:20

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Запуск двух GTA SA

@Jack Daniel's -
если есть visual studio скачай с паблика "gta_dll" и замени получившуюся дллку в папке с игрой.
после запуска игры, в папке с игрой будет файл gta_trace.log там расписано что игра загружала и какие ошибки показывала.

Offline

#7 08-08-2011 09:02

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Запуск двух GTA SA

Во, спасибо за совет, вижуал есть.

Last edited by Jack Daniel's (08-08-2011 09:03)

Offline

Board footer

Powered by FluxBB