You are not logged in.
все отлично работает (на пропатченном), правда при первом запуске текстура капюшона не убралась, но это уже глюк мода наверно, больше не повторялось (перезапускал игру, проверял)
мультимод лежит здесь: http://capushon.sannybuilder.com
ссылку на патч убрал, чтобы не ушел раньше времени, не против?
Last edited by Seemann (14-01-2007 11:32)
Offline
ссылку на патч убрал, чтобы не ушел раньше времени, не против?
Да нет
Last edited by Sanchez (14-01-2007 11:38)
Offline
Работает и на оригинальной игре, но вот в мультимоде поначалу опять текстура не убиралась и скрипты не шли. Но это вряд ли относится к делу.
Назови патч более конкретно, плиз, что-нибудь вроде SA Mission Packs Fix, а то просто патч ни о чем не говорит. Хотя конечно - твое право
Last edited by Seemann (14-01-2007 11:44)
Offline
Работает и на оригинальной игре, но вот в мультимоде поначалу опять текстура не убиралась и скрипты не шли. Но это вряд ли относится к делу.
Это при первом старте?
Назови патч более конкретно, плиз, что-нибудь вроде SA Mission Packs Fix, а то просто патч ни о чем не говорит. Хотя конечно - твое право
Торопиться некуда это тестовя версия. Когда с загрузкой разберусь посмотрим.
Offline
Ты не учел важную деталь! В 03ad нужно добавить xor al, al перед end чтобы опкод считался нопом а не unsupported
игра вылетает когда на этот опкод приходит
Это при первом старте?
ну когда я новый ехе пропатчил и запустил игру в первый раз. странный баг
Last edited by Seemann (14-01-2007 12:07)
Offline
Ты не учел важную деталь! В 03ad нужно добавить xor al, al перед end чтобы опкод считался нопом а не unsupported игра вылетает когда на этот опкод приходит
Спасибо за информацию обнулим.
Offline
Торопиться некуда это тестовя версия. Когда с загрузкой разберусь посмотрим
хе, а я уже релизить готов )
Offline
хе, а я уже релизить готов )
Лучше сначало все баги отловить. Если я успею что нибудь до завтра раскопать можно и релизить. Если нет то выложу как есть.
Seemann
на сессии...
А уменя с завтрашнего дня. :):)
Offline
Насчет загрузки имга. Скрипты загружаются динамически по мере необходимости, игра читает указатель в некой структуре и через LoadIMG загружает нужно кол-во байтов из файла (примерно так). Полученный указатель записывается в структуру eScriptsInfoPool (я писал ее в комментах выше). Можно покопать здесь, посмотреть как они выгружаются. Заставить игру перечитывать gta.dat возможно проблематичнее. Хотя наверняка есть какие-то флаги, указывающие на необходимость/ненужность загрузки этого файла.
у меня тоже завтра первая консультация
Last edited by Seemann (14-01-2007 12:23)
Offline
2Seemann:
2Sanchez:
в мультимоде поначалу опять текстура не убиралась и скрипты не шли.
При первом запуске действительно так происходит - текстура и первые 2 буквы, почему???
Чем отличает второй запуск от первого?
Изменения в .set ???
ps: скрипты начинают работать только после завершения заставки.
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
При первом запуске действительно так происходит - текстура и первые 2 буквы, почему???
Чем отличает второй запуск от первого?
Изменения в .set ???
Я и сам не понимаю. То исчезает, то нет. Set файл здесь может и не при чем, возможно проблема в спидометре, там же тоже текстура выводится, возможно они конфликтуют (капюшон появляется когда на мотоцикле садишься же).
Offline
2Seemann:
капюшон появляется когда на мотоцикле садишься же
Не-а, это происходит когда удаляешься от старта на определённое расстояние (заканчивается стандартный INTRO поток), можно пешком.
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
При первом запуске действительно так происходит - текстура и первые 2 буквы, почему???
У меня все нормально. Хотя поле детально я не тестил.
Ты не учел важную деталь! В 03ad нужно добавить xor al, al перед end чтобы опкод считался нопом а не unsupported игра вылетает когда на этот опкод приходит
Исправил.
2Seemann:
2Capushon:
Смотрити в приват.
Offline
а ты только xor al, al добавил больше ничего?
Offline
Нет, все равно висло. Не стал разбтраться почему, написал так
PUSH 1 MOV ECX,ESI CALL 00464080 XOR AL,AL JMP end
Пришлось убрать одну проверку.
Насчет сравнивания строк: обе строки должны оканчиваться нулом?
зы
mov ecx,esi можно не писать
Last edited by Sanchez (15-01-2007 11:43)
Offline
Усе кажется работает 03ad нопится, скрипты грузятся, сейвы работают. Релизим?
Насчет сравнивания строк: обе строки должны оканчиваться нулом?
да обе, все строки хранятся как null-terminated
Last edited by Seemann (15-01-2007 11:45)
Offline
сейвы работают
Точно? Я их не проверял.
Если все нормально, то можно, потом если что изменить недолго.
Last edited by Sanchez (15-01-2007 11:47)
Offline
да обе, все строки хранятся как null-terminated
Я так и знал. Мне кажется это только увеличит код.
Offline
Не стал разбтраться почему, написал так
погоди, т.е. если я пишу в скрипте 03ad он пойдет на загрузку имга?
Offline
погоди, т.е. если я пишу в скрипте 03ad он пойдет на загрузку имга?
Нет. Не должен. Это опкод 3ad так выглядит. А код имг идет после джампа.
Offline
Да, все понял. Это же опкод с параметром, там надо CollectNumberParams(1) вызвать, все правильно.
блин, без перезагрузки имга плохо, по сути функциональности не много прибавилось. Будет работать только для скм-ов с одинаковыми скриптами
Last edited by Seemann (15-01-2007 12:04)
Offline
блин, без перезагрузки имга плохо, по сути функциональности не много прибавилось. Будет работать только для скм-ов с одинаковыми скриптами
Это да. Сейчас вообще времени мало, разбирать придется в свободное время. А свободного времени совсем мало.
Offline
Не говори, та же проблема в принципе можно и опубликовать, если сделать оговорку, что скрипты не перегружаются
Сегодня 19:10:00
прикольная дата, три нуля
Last edited by Seemann (15-01-2007 12:16)
Offline
кстати, а ты как ищешь места для добавления кода? Просто пишешь по фиксированным адресам, или еще читаешь их для проверки корректности? Просто на других версиях может не работать.
На версии 1.01 US не работает, пишет pattern not found, хотя адреса несложно найти.
Last edited by Seemann (15-01-2007 12:25)
Offline
Для IMG файлов процедура StoreIMGName
Вообще, назвать эту функцию так - не совсем корректно. Она не просто сохраняет имя файла, а создает для него stream reader.
Все внутриигровое чтение файлов (не при начальной загрузке, а во время игры), делается stream reader-ами - объектами для асинхронного чтения файлов.
По идее, правильнее было бы назвать ее CreateImgStream или CreateImgReader.
Имг хранится в динамической памяти, процедура загрузки в
Code:
.text:005B6170 ; int __cdecl LoadIMG(char *FileName,int IntImgIndex)
IntImgIndex - это индекс имг, для script.img он равен 3.Вот пока не знаю, как обновить имг. Заставить игру перечитывать gta.dat?
И с этой функцией не все так гладко. IMG в память целиком не грузятся. (GTA, изначально делался под PS2, с ее 32M памяти, поэтому память экономят)
Эта функция считывает из IMG каталог (у меня она называется gta_read_img_header, хотя, окончательным названием будет что-то вроде CImgFile::readDirectory). При этом, IntImgIndex - это, на самом деле, хэндл ридера, созданного для этого файла.
Вообще, насколько я пока разобрался, GTA абсолютно пофигу, в каком из описанных в gta.dat IMG хранятся .scm. На них строится каталог, в котором указывается из какого стрима и из какого места этот .scm читается. Есть подозрение, что просто так перечитать gta.dat не получится - надо будет предварительно закрыть все созданные стримы (количество открытых стримов ограничено) и очистить все считанные заголовки, texture dictionary и т.д.
Если в выходные будет свободный часик - попробую разобраться со всем этим подробнее.
Offline