#201 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 20-01-2007 11:21

А как ты ее получил?

Есть много способов wink Я например с помощью PEiD с соответствующим плагином.

#203 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 20-01-2007 11:09

Нужно для таких случев договориться о каком-то едином exe-шнике.

Контрольная сумма чистого, не чем не пропатченного, gta_sa.exe. (У меня)

CRC32: ACFF1F28

#204 Re: Вопросы по скриптингу » Выбор произвольного педа. » 19-01-2007 10:42

Seemann wrote:

if and
  0@ == 0 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 25.0 25.0 15.0
  00FE: actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_181

ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке smile Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).

Тут проверяется что игрок находится
25 < местоположение < 35
Может есть спец. опкод для этого?

Соответственно, если игрок появляется вне этой зоны клоун непоявиться, надо будет сначало убежать на расстояние 25 < местоположение < 35, а потом вернуться.

У меня этот скрипт прекрасно работает wink

#205 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 12:10

блин, без перезагрузки имга плохо, по сути функциональности не много прибавилось. Будет работать только для скм-ов с одинаковыми скриптами

Это да. Сейчас вообще времени мало, разбирать придется в свободное время. А свободного времени совсем мало.

#206 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 11:54

погоди, т.е. если я пишу в скрипте 03ad он пойдет на загрузку имга?

Нет. Не должен. Это опкод 3ad так выглядит. А код имг идет после джампа.

#207 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 11:48

да обе, все строки хранятся как null-terminated

Я так и знал. Мне кажется это только увеличит код.

#208 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 11:43

сейвы работают

Точно? Я их не проверял.

Если все нормально, то можно, потом если что изменить недолго.

#209 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 11:42

Нет, все равно висло. Не стал разбтраться почему, написал так

PUSH 1
MOV ECX,ESI
CALL 00464080
XOR AL,AL
JMP end

Пришлось убрать одну проверку.
Насчет сравнивания строк: обе строки должны оканчиваться нулом?

зы
mov ecx,esi можно не писать

#210 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 15-01-2007 11:22

При первом запуске действительно так происходит - текстура и первые 2 буквы, почему???

У меня все нормально. Хотя поле детально я не тестил.

Ты не учел важную деталь! В 03ad нужно добавить xor al, al перед end чтобы опкод считался нопом а не unsupported игра вылетает когда на этот опкод приходит

Исправил.

http://slil.ru/23747965

2Seemann:
2Capushon:
Смотрити в приват.

#211 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 12:14

хе, а я уже релизить готов )

Лучше сначало все баги отловить. Если я успею что нибудь до завтра раскопать можно и релизить. Если нет то выложу как есть.

Seemann
на сессии...

А уменя с завтрашнего дня. smile:):)

#212 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 12:06

Ты не учел важную деталь! В 03ad нужно добавить xor al, al перед end чтобы опкод считался нопом а не unsupported игра вылетает когда на этот опкод приходит

Спасибо за информацию обнулим.

#213 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 11:52

Работает и на оригинальной игре, но вот в мультимоде поначалу опять текстура не убиралась и скрипты не шли. Но это вряд ли относится к делу.

Это при первом старте?

Назови патч более конкретно, плиз, что-нибудь вроде SA Mission Packs Fix, а то просто патч ни о чем не говорит. Хотя конечно - твое право

Торопиться некуда это тестовя версия.  Когда с загрузкой разберусь посмотрим.

#214 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 11:38

ссылку на патч убрал, чтобы не ушел раньше времени, не против?

Да нет cool

#215 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 11:24

а имя скрипта какое? попробовал мультимод - скрипты не работают, хотя в остальном вроде норм (еще не проверял в отладчике)

mpack1-script1.img
mpack2-script2.img
...

ps где мультимод можно скачать

#216 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 14-01-2007 11:05

правда могут возникнуть нестыковки, при несовпадении регистров (lowercase, uppercase). кстати, у тебя тоже такое возможно (буквы S, s различаются).

Они вроде приводятся к верхнему регистру хотя х.з.

Или попробовать CompareText, там вроде case-insensetiveОни

Есть апишная функция lstrcmpi там регистр не важен.

-----
Никак немогу заставить при загрузке читать gta.dat.

Небольшие изменения в патче. Процедуру вставил на место опкода 3ad. Занопил 8 байт smile

00468F8A   .  90                  NOP
00468F8B   .  90                  NOP
00468F8C   .  90                  NOP
00468F8D   .  90                  NOP
00468F8E   .  90                  NOP
00468F8F   .  90                  NOP
00468F90   .  90                  NOP
00468F91   .  90                  NOP


005B915B   .  E8 ABE4E4FF         CALL gta_sa.0040760B


0040760B   $  E8 4FD10700         CALL gta_sa.0048475F


0048475A   > \E9 3C0F0000         JMP gta_sa.0048569B                     ;  Case 3AD of switch 00483BF2
0048475F  /$  8A50 05             MOV DL,BYTE PTR DS:[EAX+5]
00484762  |.  80FA 53             CMP DL,53
00484765  |.  75 20               JNZ SHORT gta_sa.00484787
00484767  |.  8A50 0C             MOV DL,BYTE PTR DS:[EAX+C]
0048476A  |.  80FA 53             CMP DL,53
0048476D  |.  75 18               JNZ SHORT gta_sa.00484787
0048476F  |.  8A15 1029B700       MOV DL,BYTE PTR DS:[B72910]
00484775  |.  80FA 00             CMP DL,0
00484778  |.  74 0D               JE SHORT gta_sa.00484787
0048477A  |.  80C2 30             ADD DL,30
0048477D  |.  8850 12             MOV BYTE PTR DS:[EAX+12],DL
00484780  |.  C740 13 2E494D47    MOV DWORD PTR DS:[EAX+13],474D492E
00484787  \>  C3                  RETN
00484788      90                  NOP
00484789      90                  NOP
0048478A      90                  NOP
0048478B      90                  NOP
0048478C      90                  NOP
0048478D      90                  NOP

И сделать совместимость с ксионовским патчем, у меня он стоял

Вот попробуй это:

cсылочку убрал пока wink

#217 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 10:37

Так мультимод паком на оригинале работает, правда скрипты нет, но это надо нопить то условие.

Непонял sad

И сделать совместимость с ксионовским патчем, у меня он стоял

Вот из-за этого, наверно, патч и не ставиться.

Есть процедура CompareStrings, она должна помочь.

Поподробнее. Я только lstrcmp и lstrcmpi знаю.

зы Как проверить в игре что опр. scriptX.img запустился

#218 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 10:21

Я чето не врубился как там пропатчилось:

Нет, у меня там пусто.

Перенеси в др. место.

Можно вместо пустых опкодов добавить.

#219 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 10:14

я кстати когда тестировал, игра не показывает больше 10 паков на экране, не знаю почему. Так что можно и цифрами.

Это я тоже заметил.

попробуй edx вместо ecx, он свободный, не надо будет пуш/поп.

Да какая разница. Я даже не проверял, может игра и не вылетит wink Хотя можно и заменить.

и, кстати, вторую проблему этот способ не решает.

Над этим я пока думаю, не заню за что зацепиться.

#220 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 09:52

это обязательно нужно нопить, иначе игра не будет читать инфу о скриптах, записанную в скм (define scrtipt и пр.)! без этого все теряет смысл, даже если скрипты будут загружены, игра не будет их использовать

ну это легко поправить smile

Как проверить в игре что опр. scriptX.img запустился

#221 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 09:50

попробовал я, патч сказал byte not found, но вроде done. Игра при запуске вылетает

х.з. у меня все нормально попробуй пропатчить чистый gta-sa.exe, или все вручную можно сделать (олька рулит wink)

Поставь бряк по адресу 005B915B и посмотри что у тебя в B72910

#222 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 09:43

т.е на выходе получается script1.img?

Нет в зависимости от номера мпака на выходе получается:

mpack1 - scripta.img
mpack2 - scriptb.img
mpack3 - scriptc.img

Если надо цифры прибавляем не 40h а 30h только с цифрами получается до девяти, потом будут всякие символы, я первый раз сам с цифрами делал потом на буквы перешел.

Оригинальная игра, если ее запустить как мпак, выдает ошибку (пропатченная или нет без разницы) пока х.з. в чем дело.

#223 Re: Вопросы по скриптингу » Выбор произвольного педа. » 13-01-2007 09:38

Вобщем попробовала просто скомпилировать твой код - педа пока нет.

Смотри по этим координатам (около дома CJ) 2510.2615, -1671.3036, 13.4114

Если появляешься рядом с педом. Отбеги от него подальше затем вернись обратно.

#224 Re: Модификации » [EXE|Patch] San Andreas Mission Packs » 13-01-2007 09:34

8 байтов. Ее мы затираем нафик, либо меняем условие, чтобы игра читала сегмент скриптов всегда.

Зачем нопить 8 байт я так и не понял.

По адресу B72910 храниться номер запущенного мпака (byte), если 0, то загружается стандартная игра.

Вот так у меня выглядет процедура SetNewIMGDir

00856CD0  /$  51                  PUSH ECX                                ;  Сохраняем ECX на всякий случай
00856CD1  |.  8A48 05             MOV CL,BYTE PTR DS:[EAX+5]              ;  Заносим в CL 6 символ
00856CD4  |.  80F9 53             CMP CL,53                               ;  Сравниваем 6 символ (в CL) с символом 'S'
00856CD7  |.  75 20               JNZ SHORT gta_saa.00856CF9              ;  Если CL != 'S', то на выход
00856CD9  |.  8A48 0C             MOV CL,BYTE PTR DS:[EAX+C]              ;  Заносим в CL 13 символ
00856CDC  |.  80F9 53             CMP CL,53                               ;  Сравниваем 13 символ (в CL) с символом 'S'
00856CDF  |.  75 18               JNZ SHORT gta_saa.00856CF9              ;  Если CL != 'S', то на выход
00856CE1  |.  8A0D 1029B700       MOV CL,BYTE PTR DS:[B72910]             ;  По адресу B72910 берем байт, равный номеру запущенного мпака
00856CE7  |.  80F9 00             CMP CL,0                                ;  Сравниваем CL c нулем
00856CEA  |.  74 0D               JE SHORT gta_saa.00856CF9               ;  Если CL == 0, то на выход
00856CEC  |.  80C1 40             ADD CL,40                               ;  CL = CL + 40 так надо :)
00856CEF  |.  8848 12             MOV BYTE PTR DS:[EAX+12],CL             ;  Добовлаем к строке (в EAX) символ CL
00856CF2  |.  C740 13 2E494D47    MOV DWORD PTR DS:[EAX+13],474D492E      ;  Добовлаем к строке (в EAX) расширение '.IMG'
00856CF9  |>  59                  POP ECX                                 ;  Восстанавливаем ECX
00856CFA  \.  C3                  RETN                                    ;  Возвращаемся обратно

Здесь я проверяю чтобы 6 и 13 символы были "S" DATA\SCRIPT\SCRIPT.IMG

Вот короче байты кот. я патчил

    RAW Offset   | Old Byte | New Byte
-----------------+----------+----------
     00006A0B         90         E8
     00006A0C         90         C0
     00006A0D         90         F6
     00006A0E         90         44
     00006A0F         90         00
     001B855C         B0         AB
     004560D0         00         51
     004560D1         00         8A
     004560D2         00         48
     004560D3         00         05
     004560D4         00         80
     004560D5         00         F9
     004560D6         00         53
     004560D7         00         75
     004560D8         00         20
     004560D9         00         8A
     004560DA         00         48
     004560DB         00         0C
     004560DC         00         80
     004560DD         00         F9
     004560DE         00         53
     004560DF         00         75
     004560E0         00         18
     004560E1         00         8A
     004560E2         00         0D
     004560E3         00         10
     004560E4         00         29
     004560E5         00         B7
     004560E7         00         80
     004560E8         00         F9
     004560EA         00         74
     004560EB         00         0D
     004560EC         00         80
     004560ED         00         C1
     004560EE         00         40
     004560EF         00         88
     004560F0         00         48
     004560F1         00         12
     004560F2         00         C7
     004560F3         00         40
     004560F4         00         13
     004560F5         00         2E
     004560F6         00         49
     004560F7         00         4D
     004560F8         00         47
     004560F9         00         59
     004560FA         00         C3

#225 Re: Вопросы по скриптингу » Выбор произвольного педа. » 12-01-2007 12:24

А воспользоваться твоим кодом я не понимаю как. Где в нем Вася нападает на CJ? Мне надо, чтоб Вася  нападал. И чтобы умирал как полагается

Дык, в коде написанно

// Другие проверки...

Вот туда добовляй что хочешь:

if and
  $SA_VASYA_FLAG == 1
  00F2:   actor $PLAYER_ACTOR near_actor $SA_VASYA radius 10.0 10.0 0
then
  05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR
end

Или добавь сразу после создания актера команду 05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR, вот так:

    $SA_VASYA_FLAG = 1
    $SA_VASYA.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114)
    $SA_VASYA.Angle = 84.2641
    $SA_VASYA_MARKER.CreateAboveActor($SA_VASYA)
    05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR

Board footer

Powered by FluxBB