Код:
 new Text:Mutetxd;


В колбэк OnGameModeInit вставляем само создание TXD.

Код:

Mutetxd = TextDrawCreate(25.500000, 130.666809, "LD_CHAT:thumbdn");
TextDrawFont(Mutetxd, 4);
TextDrawTextSize(Mutetxd, 25.0, 25.0);
TextDrawAlignment(Mutetxd, 2);
TextDrawColor(Mutetxd, -1);


Туда , где вы даёте бан чату игроку , после вынесения значения переменной мута , вставляем следующее. То есть показываем TXD тому игроку , которому выдали мут.

Код:

TextDrawShowForPlayer(playa, Mutetxd);


playa - меняем конечно на своё  Например: giveplayerid, giveplayer и т.д.
У меня это выглядит примерно так.

admin пишет:

PlayerInfo[playa][pMutedTime] = money*60;
TextDrawShowForPlayer(playa, Mutetxd);

Затем в секундный таймер или в OnPlayerUpdate , или еще куда-то , главное туда , где проверяется условие: "Истёк ли бан чата?" Вставляем следующее. Это будет скрывать наш TXD , когда мут закончится) 

Код:

TextDrawHideForPlayer(i, Mutetxd);


i - (playerid)
Собсна , у меня это в секундном паблике и выглядит вот так:

admin пишет:

if(PlayerInfo[i][pMutedTime] <= 0)
{
TextDrawHideForPlayer(i, Mutetxd);
SendClientMessage(i,-1,"{3399FF}Информация: {E3BE88}Вы снова можете разговаривать");
}

И чтобы после перезахода игрока , иконка не пропала , добавляем или в onplayerconenct либо в onplayerspawn условие с показом TXD.

Код:

if(PlayerInfo[playerid][pMutedTime] > 0)//проверка своя
{
    TextDrawShowForPlayer(playerid, Mutetxd);
    
}