iWoody
Новичок
Всем привет. Меня зовут Виктор, и в этом мануале я бы хотел объяснить, как реализовать на сервере новую сис-му ников. Подойдет она абсолютно для всех типов SA:MP серверов.
И так...
Первым делом, нам нужно отключить стандартные ники.
Для этого мы идем в public OnGameModeInit()
Вставим туда такой код:
Далее нам нужно создать переменные:
Так же нам нужно создать один forward
Теперь отправимся в коллбэк OnPlayerConnect и пропишим там такую конструкцию:
Перейдем в коллбэк OnPlayerDisconnect
Теперь нам нужно создать обновление ХП и цвета ника, если его изменяли.
Ранее мы добавили forward, теперь нам нужно сделать public
Вот так это будет выглядеть в игре:
На этом всё. Автор я - (iWoody)
ПРИМЕЧАНИЕ!
Цвет ника зависит от того, что вы укажите в SetPlayerColor
Код, который получает ник из нашего коллбэка UpdatePBar(playerid) лучше убрать и поставить свою функцию.
Спасибо за внимание! Жду комментарии и критику...
И так...
Первым делом, нам нужно отключить стандартные ники.
Для этого мы идем в public OnGameModeInit()
Вставим туда такой код:
PHP:
ShowNameTags(0);
PHP:
new Text3D:PlayerBar[MAX_PLAYERS]; //3D текст будущего ника
new sUpdatePBar[MAX_PLAYERS]; //Переменная, с помощью которой мы укажем таймер
PHP:
forward UpdatePBar(playerid); //Будет обновлять информацию о нике. ХП, Броню и цвет
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 текст к игроку. Параметры изменять не нужно
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) лучше убрать и поставить свою функцию.
Спасибо за внимание! Жду комментарии и критику...
