Добавление картинки в модпак (TXD-архив)

В теме 27 сообщений

keyl
Великий Гуру

В этой теме вы узнаете... 

Многие у меня лично, да и на форумах, спрашивали: "Как сделать логотип как на ГринТече?" (GreenTechRP - проект в CRMP). А сделать это очень просто, нужно всего лишь навсего добавить картинку в модпак (txd) и в моде уже использовать как стандартную картинку из стандартной библиотеки TXD, т.е. : название_библиотеки(txd):название_самого_тд


От вас потребуется:

  1. Фотошоп (здесь рекомендуется использовать AdobePhotoshopCS6, так как все примеры даны именно на нем)
  2. TXD WorkShop
  3. Тестовый мод <ИЛИ> ваш основной мод. 

От слов к действиям: 

Урок можно поделить на две части: работа в Фотошопе и работа в TXD WorkShop. 

Приступим к первой части. 

  1. Открываем Ваш графический редактор и создаете изображение. Для примера возьмем 600 на 600 точек. 
      Скриншот (открыть спойлер)

     

  2. Далее вы можете приступать к оформлению вашего изображения.
  3. После того как вы сделали свой шедевр, вам необходимо добавить альфа-канал. Для примера возьмем AdobePhotoshopCS6. Нажимаем "Выделение -> загрузить выделенную область". 
    ПРИМЕЧАНИЕ: если у текста есть обводка, то для нанесения альфа-канала необходимо сначала преобразовать его (текст) в смарт-объект. 
    После жмем "Выделение -> Сохранить выделенную область". Название может быть произвольным. 
    Далее нажимаем на "глаз" у альфа-канала, т.е. делаем его невидимым. 
  4. После вы можете сохранить свою работу в формате TGA (В случае с фотошоп кс6: "Файл -> Сохранить как - Формат targa (tga)")

На этом первая часть урока завершена. Мы на полпути у финиша. Переходим ко второй части урока, работе с TXD WorkShop. 

  1. Открываем TXD WorkShop и добавляем созданный в Фотошопе файл. 
  2. Выбираем: "Image -> Decompress ALL Image"
  3. Выбираем: "Image -> Compress ALL Image"
  4. Сохраняем готовый файл в директорию. Если хотите использовать с модпаком, то сохраняйте по пути: /путь к игре/multiplayer_browser_cr/custom/, если же вы хотите просто протестировать это ТОЛЬКО у себя на компьютере, сохраняйте по пути: /путь к игре/models/txd

Далее вы можете заходить на тестовый (Ipleomax) или другой сервер и пробовать добавлять. 

На этом все. 


Над темой работали: 

Автор теоретического материала (фотошоп): Первый

Корректор: @DEST

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@DEST  проблемка, и так всегда, и через игру добавляется такой рисунок, делал так же вроде

  скрин (открыть спойлер)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@DEST В фш он был нормальным, и да, когда импортирую в воркшоп tga файл, вылазиет ошибка: floating point division by zero

Добавил alpha, в картинке текста нету, а изображение png было.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 12/23/2017 в 16:50, DEST сказал:

После того как вы сделали свой шедевр, вам необходимо добавить альфа-канал. Для примера возьмем AdobePhotoshopCS6. Нажимаем "Выделение -> загрузить выделенную область". 
ПРИМЕЧАНИЕ: если у текста есть обводка, то для нанесения альфа-канала необходимо сначала преобразовать его (текст) в смарт-объект. 
После жмем "Выделение -> Сохранить выделенную область". Название может быть произвольным. 
Далее нажимаем на "глаз" у альфа-канала, т.е. делаем его невидимым. 

Читать далее...  

 

Справа сбоку есть управление слоями в PhotoshopCS6

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
Великий Гуру

@Nicinen подключаешь мод-пак, а точнее, эту библиотеку TXD, которую ты создал, и вводишь: "mp_name-modpack:image_name" по такому шаблону. Можешь её сразу кинуть в TXD в папке с игрой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок

Можно видео урок? не много не понятно как это все будет происходить 

к примеру у меня уже есть даже готовый фон и  иконка и сделал фш я загрузил в Txd изменил к примеру там фон итд и что дальше? как мне это сделать в Iplemax и залить к себе на сервер SAMP 

было подробней на видео примере вашем как до что 

Отредактировано пользователем Rafael_Rosse

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
Великий Гуру

@Rafael_Rosse зачем делать урок по элементарной теме? В TDE добавляешь спрайт, растягиваешь до нужных размеров, сохраняешь, добавляешь в мод и в названии пишешь как теме описывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок
  В 4/10/2019 в 13:31, SCRIPTMAN сказал:

@Rafael_Rosse зачем делать урок по элементарной теме? В TDE добавляешь спрайт, растягиваешь до нужных размеров, сохраняешь, добавляешь в мод и в названии пишешь как теме описывается.

Читать далее...  

ты хоть понял что сказал? у меня даже тд не нарисован я обычный фон (Слово удалено системой) куда запинаю? 

жду видео урока или тема без полезная и не понятная

у меня фон есть и иконка допустим фотошопе ну и что дальше? я сделал фон итд а текстдрав кто делать будет как это все хуякнуть 

итд 

и в мод куда потом залить итд  В МОД SAMP САМП GTA 

 

ДА И У МЕНЯ НЕТУ НОРМАЛЬНОГО ТДЕ КОТОРЫЙ С МОДЕЛЯМИ НАЙТИ НЕ МОГУ ИТД 

Отредактировано пользователем Rafael_Rosse

Заметка от Shakoladka , создано

Не обязательно писать большими буквами(Caps) достаточно просто сделать предложение/слово жирным текстом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
Великий Гуру

@Rafael_Rosse TDEditor v2.3, в интернете введи. Бомбить на меня тут не надо, я всё доступно объяснил, иди лучше русский язык подтяни. Неужели трудно самому сделать TextDraw Sprite? Сделал, изменил на нужную позицию и размер, сохранил, добавил в мод, ввёл имя библиотеки и название картинки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок
  В 4/10/2019 в 17:57, SCRIPTMAN сказал:

@Rafael_Rosse TDEditor v2.3, в интернете введи. Бомбить на меня тут не надо, я всё доступно объяснил, иди лучше русский язык подтяни. Неужели трудно самому сделать TextDraw Sprite? Сделал, изменил на нужную позицию и размер, сохранил, добавил в мод, ввёл имя библиотеки и название картинки.

Читать далее...  

как сделать TextDraw Sprite как туда добавить чтобы я в тде спрайт нажал выбрал и у меня на экране появилась это моя картинка ? свою картинку обьяснишь поставлю лайки на все пост итд надеюсь теперь ясно выяснился? 

Отредактировано пользователем Rafael_Rosse
Причина: Дополнил текст

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок

И еще вопрос всем игрокам видно будет моя картинка? который я сделаю? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок
  В 4/12/2019 в 07:02, odosenok сказал:

@Rafael_Rosse, свою картинку - никак.

Читать далее...  

как так  если вон даймонд рп  не реклама пример кристал как то сделали и когда скачиваю чистую где не будь гта их кристал не проподает в сампе 

hZPd-cSyq0k.jpg.8b32b9a3d247377d5ea7b0eef37a7a73.jpg

Отредактировано пользователем Rafael_Rosse
Причина: Дополнил текст

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 4/12/2019 в 00:04, Rafael_Rosse сказал:

а как  без мод пака в сампе сделать

Читать далее...  

Вот есть утилита, которая конвертирует картинку в TD, но естественно с потерей качества - https://forum.sa-mp.com/showthread.php?t=274064

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rafael_Rosse
Новичок
  В 4/12/2019 в 12:11, DEST сказал:

Вот есть утилита, которая конвертирует картинку в TD, но естественно с потерей качества - https://forum.sa-mp.com/showthread.php?t=274064

Читать далее...  

иё все  будут видеть игроки? без модпака? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Senwik
      От Senwik
      Здравствуйте,где можно скачать КРМП 0.3.7 не бета тест?
    • breznov
      От breznov
      Доброго времени суток уважаемые форумчане !
      Хочу попросить помощь у вас, у меня проблемы с сохранением лидерки в базу данных, код:
       
      new FactionName[32] = "Скинхеды"; new Float:FactionHQX = 123.45, Float:FactionHQY = 678.90, Float:FactionHQZ = 10.11; new FactionMembers[MAX_PLAYERS]; new FactionRank[MAX_PLAYERS]; new FactionLeader = -1; // ID лидера (-1 означает, что лидера нет) new FactionDeputy = -1; // ID заместителя (-1 означает, что заместителя нет)

       
      #define FACTION_SKINHEDS 1 #define LEADER_INFO_DIALOG 1


       
      new const FactionRankNames[][] = {     "Новичок",     "Боец",     "Стрелок",     "Головорез",     "Бригадир",     "Доверенное лицо",     "Советник",     "Заместитель",     "Консильери",     "Дон" };  
      public OnGameModeInit():

       
      public OnGameModeInit() {     ConnectMySQL();     DisableInteriorEnterExits();     EnableStuntBonusForAll(0);     SetGameModeText("Armade RP v2.0");     SendRconCommand("hostname "SERVER_NAME" by Didenko");     LoadMapping();     Iter_Clear(Admins_ITER);     Iter_Clear(Question_ITER);     actor1 = CreateActor(159, 1800.0490, 2506.0791, 15.8725, 269.5358);     ApplyActorAnimation(actor1, "PED", "ROADROSS_FEMALE", 4.1, 1, 1, 1, 0, 0);     Create3DTextLabel("{FFFFFF}Нажмите {ffff00}L.ALT{FFFFFF} чтобы начать взаимодействие", COLOR_GREEN, 1800.0490, 2506.0791, 15.8725, 10.0, 0, 1);     //======================[ Пикапы ]==================================     magazvhod1 = CreatePickup(1318, 23, 2074.3257,1838.3256,12.5391, -1);     magazvihod1 = CreatePickup(1318, 23, -25.5779,-184.9357,1003.5469, -1);     SetTimer("SecondUpdate", 1000, true);     SetTimer("MinuteUpdate", 60000, true);     LoadFactionsData(); // Загружаем данные о фракциях и лидерах     return 1; }
       
      Стоки:

       
      stock LoadFactionsData() {     print("LoadFactionsData: Starting to load factions data...");     new query[64];     format(query, sizeof(query), "SELECT id, FactionLeader FROM factions");     mysql_tquery(dbHandle, query, "LoadFactionsData_Callback");     print("LoadFactionsData: Query sent.");     return 1; } forward LoadFactionsData_Callback(MySQL:handle, Cache:result); public LoadFactionsData_Callback(MySQL:handle, Cache:result) {     new rows = cache_num_rows();     printf("LoadFactionsData_Callback: Number of rows loaded: %d", rows);     if(rows > 0)     {         for(new i = 0; i < rows; i++)         {             cache_set_result(0);             new factionID, factionLeaderID;             if (!cache_get_value_name_int(i, "id", factionID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'id' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить ID             }             if (!cache_get_value_name_int(i, "FactionLeader", factionLeaderID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'FactionLeader' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить FactionLeader             }             printf("LoadFactionsData_Callback: Row %d: factionID = %d, factionLeaderID = %d", i, factionID, factionLeaderID);             if(factionLeaderID != 0)             {                 FactionLeader = factionLeaderID;                 FactionRank[factionLeaderID] = 10;                 printf("LoadFactionsData_Callback: Setting FactionLeader to %d and rank to 10.", factionLeaderID);                 // Не вызываем здесь SetPlayerSkin, пока не подключится игрок                 //if(IsPlayerConnected(factionLeaderID))                 //{                 //    SetPlayerSkin(factionLeaderID, 115);                 //    PlayerSkin[factionLeaderID] = 115;                 //}             }         }     }     else {         print("LoadFactionsData_Callback: No factions data found in the database.");     }     return 1; } stock SetFactionLeader(playerid, targetid) {     if(player_info[playerid][ADMIN] < 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого лидера     if(FactionLeader != -1)     {         FactionRank[FactionLeader] = 1; // Понижаем ранг старого лидера     }     // Назначаем нового лидера     FactionLeader = targetid;     FactionRank[targetid] = 10;     // Сохраняем ID лидера в базу данных     new query[128];     format(query, sizeof(query), "UPDATE factions SET FactionLeader = '%d' WHERE id = '1'", targetid); // Замените '1' на ID вашей фракции, если у вас их несколько     mysql_tquery(dbHandle, query);     new szString[128];     format(szString, sizeof(szString), "Игрок %s назначен лидером фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены лидером фракции!");     // Выдаем скин 115     SetPlayerSkin(targetid, 115);     PlayerSkin[targetid] = 115; // Обновляем массив PlayerSkin     SPD(playerid, DLG_LEADERINFO1, DIALOG_STYLE_LIST, "Информация необходимая к прочтению", "{FF0000}!!!ПРОЧИТАТЬ!!!\n{0089ff}[1]{ffffff} Команды лидера", "Выбрать", "Закрыть");     return 1; } stock SetFactionDeputy(playerid, targetid) {     // Проверка на то, является ли игрок админом     if(player_info[playerid][ADMIN] > 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого заместителя     if(FactionDeputy != -1) FactionRank[FactionDeputy] = 1; // Понижаем ранг старого заместителя     // Назначаем нового заместителя     FactionDeputy = targetid;     FactionRank[targetid] = 9; // Устанавливаем ранг 9 (Консильери)     new szString[128];     format(szString, sizeof(szString), "Игрок %d назначен заместителем фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены заместителем фракции!");     return 1; } // Функция проверки, является ли игрок лидером stock IsPlayerLeader(playerid) {     if(playerid == FactionLeader)     {         return 1;     }     return 0; } // Функция проверки, является ли игрок заместителем stock IsPlayerDeputy(playerid) {     if(playerid == FactionDeputy)     {         return 1;     }     return 0; } // Функция вступления во фракцию stock JoinFaction(playerid, inviterid) {     // Проверяем, состоит ли игрок уже в какой-либо фракции     for(new i = 0; i < MAX_PLAYERS; i++)     {         if(FactionMembers[playerid] != 0)         {             SendClientMessage(playerid, 0xFF0000AA, "Вы уже состоите в другой фракции!");             return 1;         }     }     // Добавляем игрока во фракцию     FactionMembers[playerid] = FACTION_SKINHEDS;     FactionRank[playerid] = 1; // Рядовой (Новичок) - Устанавливаем ранг     new szString[128];     format(szString, sizeof(szString), "Вы вступили в '%s' по приглашению игрока %d!", FactionName, inviterid);     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Игрок %d вступил в '%s' по вашему приглашению!", playerid, FactionName);     SendClientMessage(inviterid, 0x00FF00AA, szString);     return 1; } stock LeaveFaction(playerid) {     if(!IsPlayerInFaction(playerid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не состоите в этой фракции!");         return 1;     }     FactionMembers[playerid] = 0; // Обнуляем ID фракции (0 - значит, не состоит)     FactionRank[playerid] = 0;     SendClientMessage(playerid, 0x00FF00AA, "Вы покинули Семью Рейес!");     return 1; } stock GetFactionRank(playerid) {     return FactionRank[playerid]; } stock SetFactionRank(playerid, targetid, rank) {     // Проверка на то, является ли игрок лидером или заместителем     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права устанавливать ранги!");         return 1;     }     // Проверка на то, чтобы ранг не был слишком высоким     if(rank > 10 || rank < 1)     {         SendClientMessage(playerid, 0xFF0000AA, "Неверный ранг!");         return 1;     }     FactionRank[targetid] = rank;     new szString[128];     format(szString, sizeof(szString), "Вы установили ранг '%s' для игрока %d", FactionRankNames[rank - 1], targetid); // Получаем название из массива     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Вам установлен ранг '%s' игроком %d", FactionRankNames[rank - 1], playerid); // Получаем название из массива     SendClientMessage(targetid, 0x00FF00AA, szString);     return 1; } // Функция проверки, состоит ли игрок во фракции stock IsPlayerInFaction(playerid, factionid) {     if(FactionMembers[playerid] == factionid)     {         return 1;     }     return 0; }
      Ну и команды естественно:

       
      // Команда для установки ранга (пример, только для лидеров) CMD:setrank(playerid, cmdtext[]) {     new targetid, rank;     if(sscanf(cmdtext, "dd", targetid, rank))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setrank [ID игрока] [Ранг]");         return 1;     }     SetFactionRank(playerid, targetid, rank);     return 1; } // Команда информации о фракции CMD:factioninfo(playerid, cmdtext[]) {     new szString[256];     format(szString, sizeof(szString), "Название: %s, Штаб-квартира: %.2f %.2f %.2f", FactionName, FactionHQX, FactionHQY, FactionHQZ);     SendClientMessage(playerid, 0x00FF00AA, szString);     return 1; } CMD:setleader(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setleader [ID игрока]");         return 1;     }     SetFactionLeader(playerid, targetid);     return 1; } CMD:setdeputy(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setdeputy [ID игрока]");         return 1;     }     SetFactionDeputy(playerid, targetid);     return 1; } // -------------------------------------------------------------------------- // Команда для приглашения игрока во фракцию (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:invite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права приглашать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /invite [ID игрока]");         return 1;     }     // Добавим проверку на приглашение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете пригласить самого себя!");         return 1;     }     JoinFaction(targetid, playerid);     return 1; } // -------------------------------------------------------------------------- // Команда для исключения игрока из фракции (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:uninvite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права исключать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /uninvite [ID игрока]");         return 1;     }     // Добавим проверку на исключение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете увольнять самого себя!");         return 1;     }     if(!IsPlayerInFaction(targetid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Этот игрок не состоит в вашей фракции!");         return 1;     }     LeaveFaction(targetid);     return 1; }

      Ребят, не судите строго пожалуйста, делал с помощью ChatGPT, помогите пожалуйста сохранение лидерки и заместителя сделать
    • Senwik
      От Senwik
      Всем привет! Я горю желанием сделать свой хороший Крмп проект, чтоб люди играли и радовались. Но только есть одна большая проблемка. я мало разбираюсь в создании Крмп. Вот хотел спросить, где можно почитать, чтоб научится делать Крмп, то-есть что такое scriptfiles и как настраивать файлики внутри него, как делать всякие дополнительные панельки. К примеру, человек вводит команду /frak и у него открывается панель фракции, кто в ней и так далее.
      PS:Спасибо всем кто поможет
      Также, если кто-то захочет как-то помочь в разработке или просто поговорить на тему разработки, то вот мой дс @triptolin.
    • breznov
      От breznov
      Всем доброго времени суток ! Я пишу мод с нуля, дело дошло до подключения cef интерфейсов, я от слова совсем не понимаю как в моде прописать подключения cef.
      Пробовал конечно же подключать, создавал браузер через "cef_create_browser(playerid, 0x12345, "ссылка", false, false);", но ничего не получалось.
      Я только начинаю изучать работу данного языка, извиняюсь за то что я тупоголовый. Хочу попросить помощи у специалистов, будьте добры объяснить написание данной системы с отображением cef пожалуйста =(
      Если нужен будет мой код, я могу его предоставить. 
    • Adam_Pawno
      От Adam_Pawno
      https://ibb.co/ycsKnjhx Вот когда сажест взрывается машины я не понимаю как работает систему не могу предоставить код, какие могут быть причины? Это исключительно созданные машины через мод  тиn addveh..