Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Новая система ников

Статус
В этой теме нельзя размещать новые ответы.

iWoody

Новичок
Всем привет. Меня зовут Виктор, и в этом мануале я бы хотел объяснить, как реализовать на сервере новую сис-му ников. Подойдет она абсолютно для всех типов SA:MP серверов.

И так...
Первым делом, нам нужно отключить стандартные ники.
Для этого мы идем в public OnGameModeInit()
Вставим туда такой код:
PHP:
ShowNameTags(0);
Далее нам нужно создать переменные:
PHP:
new Text3D:PlayerBar[MAX_PLAYERS]; //3D текст будущего ника
new sUpdatePBar[MAX_PLAYERS]; //Переменная, с помощью которой мы укажем таймер
Так же нам нужно создать один forward
PHP:
forward UpdatePBar(playerid); //Будет обновлять информацию о нике. ХП, Броню и цвет
Теперь отправимся в коллбэк OnPlayerConnect и пропишим там такую конструкцию:
PHP:
sUpdatePBar[playerid] = SetTimerEx("UpdatePBar",350,true,"i",playerid); //Задаем таймер
PlayerBar[playerid] = Create3DTextLabel("---", 0xFFFFFFFF, 0.0, 0.0, 0.3, 30.0, -1,1); //Присваиваем переменной 3D текст. Параметры изменять не нужно. Разве что 30.0 Это радиус видимости
Attach3DTextLabelToPlayer(PlayerBar[playerid], playerid, 0.0, 0.0, 0.3); //Прикрепляем 3D текст к игроку. Параметры изменять не нужно
Перейдем в коллбэк OnPlayerDisconnect
PHP:
Delete3DTextLabel(PlayerBar[playerid]); // Удаляем 3D текст. Чтобы небыло погрешностей у других игроков
KillTimer(sUpdatePBar[playerid]); //Удаляем таймер
Теперь нам нужно создать обновление ХП и цвета ника, если его изменяли.
Ранее мы добавили forward, теперь нам нужно сделать public
PHP:
public UpdatePBar(playerid)
{
	new Float:Health,Float:Armour,string[80],getName[24];
	GetPlayerName(playerid,getName,sizeof(getName));//Узнаем имя
	GetPlayerHealth(playerid,Health);//Получаем ХП игрока
	GetPlayerArmour(playerid,Armour); //Получаем Броню игрока
	format(string,sizeof(string),"%s[%d]\n{F4F800}H: %.0f {AFAFAF}A: %.0f",getName,playerid,Health,Armour);
	Update3DTextLabelText(PlayerBar[playerid],GetPlayerColor(playerid),string);
 	return true;
}
Вот так это будет выглядеть в игре:


На этом всё. Автор я - (iWoody)
ПРИМЕЧАНИЕ!
Цвет ника зависит от того, что вы укажите в SetPlayerColor
Код, который получает ник из нашего коллбэка UpdatePBar(playerid) лучше убрать и поставить свою функцию.

Спасибо за внимание! Жду комментарии и критику...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу