Вопросы

Иван Карнизов
Новичок

Ребят, кто подскажет, как создать систему смены погон при повышении, чтобы когда лидер или заместитель повышал сотрудника, то скин не менялся, а менялись лишь погоны?

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


Ссылка на сообщение

4 ответа на этот вопрос

  • 0
sinvays
Завсегдатый

@Иван Карнизов 

 

Тебе нужно работать с AttachObjectToPlayer или SetPlayerAttachedObject. Когда повышаешь сотрудника, просто удаляешь старые погоны через RemovePlayerAttachedObject и прикрепляешь новые с другой моделькой. Тебе нужно будет найти ID объектов, которые визуально похожи на погоны (или создать свои через текстуры), и для каждого ранга задать свой объект. При команде повышения проверяешь, кто выполняет команду (лидер/зам), снимаешь текущие погоны и вешаешь новые с нужными координатами крепления к скину.

 

Если речь идёт про крмп то в стандартном крмп ты не сможешь сделать так, чтобы менялись только погоны. Там либо менять весь скин целиком под каждый ранг, либо если есть возможность модифицировать клиент - делать разные текстуры скинов с погонами. Большинство серверов на крмп просто используют отдельные скины для каждого звания, где погоны уже вшиты в модель. Другого рабочего варианта без кастомных модификаций клиента практически нет.

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

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


Ссылка на сообщение
  • 0
DevGen
Новичок

Доброй ночи! Подтверждаю ответ выше, можно написать систему используя AttachObjectToPlayer или SetPlayerAttachedObject Есть одно но!

AttachObjectToPlayer или SetPlayerAttachedObject и то и то прикрепляет объекты на скин статично, т.е объекты не динамичны. И будет так, что когда игрок юзает анимацию, объект может остаться на своем месте, и это будет выглядеть очень рванно.

Сделай следующее. К примеру у тебя есть скин для госсника(с погонами). Копируешь TXD и под каждое звание в txd заменяешь погоны(не храни одно название на все txd, сделай к примеру (cop.dff , cop.txd, cop1.txd, cop2.txd, cop3.txd, и так далее)). И пропиши в IDE скин. К примеру:


IDE твоих скинов(не помню где находится в стандарте у гтаса(крмп))

4100, cop.dff, cop.txd, 2990
4101, cop.dff,cop1.txd, 1500
4102, cop.dff, cop2.txd, 3000
4103, cop.dff, cop3.txd, 300128

Значения взял из классического IDE объектов карты, но в общем суть понятна. Желаю удачи в реализации

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


Ссылка на сообщение
  • 0
RayanBueno
Освоившийся

Скины игроков не трогаем.

Погоны (rank/level) меняем в базе данных или в памяти сервера.

Для каждого ранга храним номер погона.

При повышении проверяем:

Кто повышает (лидер/заместитель)

Кого повышаем

Соответствие уровней

Меняем только погоны, используя SetPlayerRank или свою систему (если погоны кастомные).

 

Структура хранения

 

new g_Pogony[MAX_PLAYERS]; // индекс: id игрока, значение: ранг
new g_Ranks[MAX_RANKS];    // номер погона для каждого ранга

Функция повышения

 

// id - тот, кого повышаем
// byid - тот, кто повышает
public PromotePlayer(byid, id)
{
    // Проверка: может ли повысить
    if(!IsLeader(byid) && !IsDeputy(byid))
    {
        SendClientMessage(byid, 0xFF0000FF"У вас нет прав повышать.");
        return 0;
    }

    // Проверка на ранг (лидер не может повысить выше максимума)
    if(g_Pogony[id] >= MAX_RANKS-1)
    {
        SendClientMessage(byid, 0xFF0000FF"Игрок уже на максимальном ранге.");
        return 0;
    }

    // Повышаем
    g_Pogony[id]++; // увеличиваем ранг на 1

    // Меняем погоны (только визуально)
    GivePlayerPogon(id, g_Ranks[g_Pogony[id]]);

    // Сообщения
    SendClientMessage(id, 0x00FF00FF"Вас повысили!");
    SendClientMessage(byid, 0x00FF00FF"Вы повысили игрока.");

    return 1;
}

Функция установки погона

 

public GivePlayerPogon(playerid, pogon)
{
    // Это может быть кастомная система
    // Если ты используешь скины с погонами на руках/погонах на шее, просто меняем параметр
    // Например, через SetPlayerArmour или SetPlayerStat?
    // Или кастомно через татуировки/объекты.

    // Пример (если погоны через объекты на руках):
    CreateObject(OBJ_POGON, x, y, z, 0.00.00.00); 
    AttachObjectToPlayer(playerid, objid, 30.00.01.00.00.00.0);
}

 

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


Ссылка на сообщение
  • 0
sinvays
Завсегдатый

@RayanBueno 

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

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


Ссылка на сообщение

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

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

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

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


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

Войти

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


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

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

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

    • miroki
      От miroki
      Возможно ли как-то в pawno сделать темную тему?