Автор перевода: Daniel_Cortez
Оригинальный текст: http://forum.sa-mp.com/showthread.php?t=644105
Перевод подготовлен для Pro-Pawn.ru.
Публикация данного текста на других ресурсах без разрешения автора перевода запрещена.
Обновления:
0.3.DL-R1 (Client/Server)
- Импортированы все изменения из последнего RC-релиза 0.3.8 (RC4-4).
0.3.8 RC4-4 (Client)
- Клиент всё тот же, что и в RC4-3, однако исправлен баг с некорректно активирующимся сообщением "Server timer wrapped". После тестирования я пришёл к выводу, что от переполнения таймера не наблюдается никаких негативных эффектов.
0.3.8 RC4-3 (Client) (опциональное обновление)
- Актёры больше не поднимают руки вверх, если в них прицелиться.
- Увеличен лимит игрового таймера для исправления багов с интерполяцией камеры, однако это увеличивает риск переполнения таймера.
- Теперь можно использовать скачанные файлы TXD в качестве текстур для текстдравов, для этого нужно указать тег "mdl-ID:texturename", где "ID" - идентификатор модели, добавленной с помощью AddSimpleModel, а "texturename" - имя текстуры.
Скорее всего, система текстдравов будет улучшена в будущих RC с добавлением нового функционала, как в MaterialText, поэтому рекомендуется пока что не использовать скачиваемые текстуры для текстовых сообщений.- Количество слотов для спрайтов на стороне клиента увеличено с 100 до 200.
- Улучшена валидация файлов TXD. Клиент не станет принимать текстуры с шириной или высотой более 2048 пикселей.
- Теперь выход из транспорта должен работать на объектах, созданных сервером.
0.3.8 RC4-2 (Client)
- При загрузке "2D-эффектов" из скачиваемой модели клиент будет загружать только огни и эскалаторы. Все эффекты с рассеиваемыми частицами, которые есть в игре, уже доступны в SA-MP в виде отдельных моделей.
0.3.8 RC4-1 (Client/Server) (опциональное обновление)
- Теперь при попытке скачать файл по нерабочей ссылке клиент отобразит ошибку HTTP вместо "bad checksum".
- Исправлен баг на сервере: Если после вызова функции RedirectDownload() в OnPlayerRequestDownload возвращать 1, клиент не знал, какой метод загрузки использовать.
- Если использовать SetSpawnInfo с пользовательским скином, его ID не будет заменён на 0.
0.3.8 RC4 (Client/Server)
- Добавлена поддержка перенаправления загрузки моделей/текстур на указанный адрес (URL). Теперь можно держать загружаемые файлы на отдельном веб-сервере, вместо того чтобы добавлять нагрузку от их скачивания на сервер SA-MP. На стороне клиента загрузка файлов производится с помощью библиотеки libcurl версии 7.57.0, скомпилированной с поддержкой HTTP, HTTPS и zlib (gzip).
- Если для скачивания по HTTP вам требуется прокси-сервер, его можно указать в браузере серверов в диалоге "Tools > Settings".
- Добавлено несколько функций для Pawn, предназначенных для перенаправления закачек.
Для большей информации см. скрипт dl_redirect.pwn.PHP код:
forward OnPlayerRequestDownload(playerid, type, crc); // Вызывается, когда клиент запрашивает файл
native FindModelFileNameFromCRC(crc, retstr[], retstr_size);
native FindTextureFileNameFromCRC(crc, retstr[], retstr_size);
native RedirectDownload(playerid, url[]);
- Добавлена функция GetPlayerCustomSkin().
После того, как функция SetPlayerSkin используется для установки пользовательского скина (скачанного с сервера), GetPlayerSkin возвращает ID базового скина (стандартного), а не пользовательского. Чтобы получить ID пользовательского скина, следует использовать функцию GetPlayerCustomSkin. Клиент и сервер SA-MP учитывают возможность того, что скачивание моделей/текстур может окончиться обрывом связи, либо клиент может не открыть модель, в случае чего базовый скин будет основным после вызова AddCharModel.PHP код:
native GetPlayerCustomSkin(playerid);
0.3.8 RC3-4 (Client)
- Из меню F5 удалён пункт "FreeTXDs", поскольку он приводил к крашу на некоторых клиентах.
0.3.8 RC3-3 (Client)
- Улучшена валидация файлов DFF и TXD.
0.3.8 RC3-2 (Client)
- Код выгрузки пользовательских моделей вызывал краши у некоторых игроков, поэтому пока что он отключен.
0.3.8 RC3-1 (Client)
- На некоторых скинах обработчик файлов DFF не мог прочесть расширение скина.
0.3.8 RC3 (Client/Server)
- Добавлен первый слой защиты для загрузки моделей/текстур. Больше защитных методик будет добавлено при дальнейшем развитии 0.3.8 RC. Пока что рекомендуется заходить только на те сервера, владельцам которых вы доверяете.
- Теперь вы можете изменить расположение кэша моделей через меню "Tools > Settings" в браузере серверов.
- Память, зарезервированная под объекты, создаваемые из пользовательских объектов, теперь высвобождается после удаления объектов.
- Добавлено сжатие скачиваемых данных. Примечание: процесс загрузки тысяч мелких файлов всё ещё может быть медленным.
0.3.8 RC2 (Client/Server)
- Лимит объектов (MAX_OBJECTS) увеличен до 2000.
- Исправлено некорректное отображение снайперской винтовки.
- В RC1 функция SelectObject отображала отладочную информацию о коллизиях и могла привести к падению, если эта информация была недоступна.
- Исправлено падение из-за невалидной модели персонажа, затрагивавшее некоторых игроков на 0.3.8 RC1.
- Добавлен концепт "локального" кэша. Данная функция ещё не доработана до конца, позже по ней будет больше информации.
- В RC1 стриминг мог производиться неправильно, если игрок телепортировался из одного интерьера в тот же самый интерьер.
- Добавлена поддержка для временных объектов в пользовательских моделях (функция AddSimpleModelTimed).
- Функции AddCharModel/AddSimpleModel теперь могут быть вызваны из Pawn. На данный момент нет никаких ограничений в плане места использования этих функций, но имейте в виду, что если не вызывать их не из OnFilterScriptInit/OnGameModeInit, некоторые игроки, которые уже зашли на сервер, могут не загрузить модели.
PHP код:
native AddCharModel(baseid, newid, dffname[], txdname[]);
native AddSimpleModel(virtualworld, baseid, newid, dffname[], txdname[]);
native AddSimpleModelTimed(virtualworld, baseid, newid, dffname[], txdname[], timeon, timeoff);
Основное новшество SA-MP версии 0.3.8 - нестандартные модели на стороне сервера. На данный момент поддерживаются пользовательские объекты и скины, в будущем планируется добавить больше новых типов. Поскольку данное нововведение имеет широкий потенциал применения, была выпущена предварительная версия (RC) 0.3.8. Благодаря этому у владельцев серверов будет достаточно времени для подготовки. Данные нововведения потребуют некоторое время на формулирование, поэтому, пожалуйста, проявите терпение до стабильного релиза.
Также есть несколько новых защитных техник, связанных с пользовательскими моделями, однако они не включены в данный билд. Используйте данную RC-версию только с теми серверами, которым доверяете, поскольку могут существовать неизвестные уязвимости, связанные с форматом моделей GTA:SA.
Как пользовательские модели работают в SA-MP
Пользовательские модели хранятся на сервере SA-MP, обычно располагаясь в папке "models". Когда игрок подключается, ему предоставляется список всех моделей, используемых на сервере. Игроки будут загружать модели по требованию и хранить их по CRC в папке "cache". Для каждого сервера, к которому подключается игрок, создаётся свой кэш моделей. Локальный кэш находится в папке "Мои документы\GTA San Andreas User Files\SAMP\cache", в которой находятся подпапки в формате "IP.порт".
Пользовательские скины работают немного иначе: игрок загрузит их все с самого начала игры, поскольку игру нельзя приостановить для загрузки скинов. Для объектов, прикрепляемых к игроку как аксессуары, модели также должны быть загружены с самого начала. Для объектов игрового мира модели будут загружены в зависимости от того, в каком виртуальном мире находится игрок. Таким образом возможно создание нестандартных карт, модели для которых будут загружаться только при вхождении игрока в виртуальный мир.
Загрузку моделей можно отслеживать при помощи автовызываемой функции OnPlayerFinishedDownloading:
Данная функция вызывается каждый раз, когда игрок заканчивает загрузку какой-либо модели, т.е. либо при подключении, либо при переходе игрока в другой виртуальный мир.PHP код:
forward OnPlayerFinishedDownloading(playerid, virtualworld);
Формат моделей
Формат скинов тот же самый, что и обычный формат моделей в игре. Модели объектов требуют информацию о коллизиях в файлах *.dff, эта информация должна быть добавлена при помощи утилиты kdff.
Основные инструменты 3D-моделирования для GTA;SA сделаны для 3DSMax, хоть и есть также некоторые инструменты для Blender. Небольшой урок по экспортированию моделей из Blender можно найти здесь.
Объявление мользовательских моделей в файле artconfig.txt
На данный момент пользовательские модели объявляются на сервере в файле artconfig.txt. Строка AddCharModel используется для добавления новых скинов, а AddSimpleModel - для остальных пользовательских моделей, включая и объекты игрового мира, и объекты, прикрепляемые к игрокам.
Диапазон ID пользовательских объектов: от 20000 до 30000 (10000 слотов)
Остальные объекты используют отрицательные ID: от -1000 до -30000 (29000 слотов)
Другие исправления с момента 0.3.7
- Теперь контур радара правильно масштабируется при широкоэкранных разрешениях.
- Исправлен баг, связанный со звуком ID 0 в PlayerPlaySound.
- Актёры теперь снова должны быть способны поворачиваться.
Скачать:
Клиент 0.3.DL-R1
Установщик клиента SA-MP 0.3.DL-R1
Сервер 0.3.DL-R1
Сервер 0.3.DL-R1 (Windows)
Сервер 0.3.DL-R1 (Linux)