Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Многие, наверное, видели мою реализацию меню амму-нации на кликабельных текстдравах (текстурах), поэтому настало время рассказать о технологии использования кастомных TXD-файлов. Для реализации иконок оружия нужно поместить в папку \models\tхd свой *.tхd файл. А что будет, если игроку вывести это меню, если у него в папке с игрой нет необходимого файла? Ничего... Иконок в этом случае игроку видно не будет, и правильной работы системы тоже не будет. Поэтому нужно отслеживать, есть ли необходимые для работы файлы.
Этап № 1. Создание текстуры.
Если вы делаете не амму-нацию или вас не устраивают стандартные иконки оружия (например, хотите из Вайс-Сити или из GTA 3, 4, 5) - необходимо создавать новые текстуры.
1. Запускаем TXD WorkShop (я использую TXD Workshop 5.0 (beerbearbee edition) Build 290312 by Jernej L.);
2. Создадим новый файл: нажимаем File->New (Ctrl + N);
3. Выбираем 16 (можно и другие, но я выбираю всегда 16);
4. Затем нажимаем Import;
5. Выбираем вашу картинку;
6. Когда она загрузилась - Properties;
7. Убираем галочку с Alpha;
8. Меняем название;
9. Save TXD;
10. Кидаем ваш *.txd файл в <папка с гта>\models\txd
Этап № 2. Изменение версии клиента.
1. Открываем samp.dll Hex-редактором;
2. Переходим на смещение 000cdab4:04(для 0.3x R1, в ином случае ищем текст "0.3x", на втором вхождении меняем); - соответственно, ищем свою версию
3. Меняем 0.3x на любую понравившуюся(хоть АААА, но только латиницей и только 4 символа);
4. Сохраняем;
Этап № 3. Скрипт проверки.
PHP:
new Text:ctext; // создаем переменную для текстдрава
#define PATH "x:y" // где x - название вашего файла без расширения, а y - название картинки внутри него;
#define CLIENT_VER "0.3z-R3" // версия клиента (поставленная на втором этапе)
...
ctext = TextDrawCreate(320, 240, PATH);
TextDrawFont(ctext, 4);
TextDrawTextSize(ctext, 31, 27);
...
if(strcmp(cmdtext,"/showtxtdraw",true) == 0)
{
new version[32];
GetPlayerVersion(playerid, version, sizeof(version)); // получаем версию
if(strcmp(version, CLIENT_VER, true) != 0) return SendClientMessage(playerid, 0xFFFFFFFF, "У вас не установлены дополнительные необходимые для игры компоненты!");
TextDrawShowForPlayer(playerid, ctest);
return 1;
}
Авторы: OKStyle, Games, Max1548.