pesnike
Умник
Урок создание 3д текста над головой персонажа, если он выкинулся из игры (ESC, свернул окно). Вроде такого урока ещё не было, но я могу и заблуждаться.
К PlayerInfo добавляем:
HTML:
pAFKStat,
pAFKTime,
Text3D:pAFKText,
pAFKTextStat,
HTML:
forward afk();
HTML:
PlayerInfo[playerid][pAFKTextStat] = 55555;
HTML:
public AFK(playerid)
{
if(PlayerInfo[playerid][pAFKStat] == 1)
{
PlayerInfo[playerid][pAFKStat] = 0; // Если равен одному, то есть игрок в игре, даём значение нуля.
PlayerInfo[playerid][pAFKTime] = 0;
if(PlayerInfo[playerid][pAFKTextStat] != 55555) // если уже был создан текст над головой, удаляем
{
Delete3DTextLabel(PlayerInfo[playerid][pAFKText]);
PlayerInfo[playerid][pAFKTextStat] = 55555;
}
}
else
{
PlayerInfo[playerid][pAFKTime]++; //переменная равна нулю, значит игрок в афк
new string[128];
format(string, sizeof(string),"{CC6600}[AFK: {FFFFFF}%d/900{CC6600}]",PlayerInfo[playerid][pAFKTime]);
if(PlayerInfo[playerid][pAFKTime] == 1)
{
PlayerInfo[playerid][pAFKText] = Create3DTextLabel(string, COLOR_WHITE, 0.0, 0.0, 0.0, 20.0, 0, 1);
Attach3DTextLabelToPlayer(PlayerInfo[playerid][pAFKText],playerid, 0.0, 0.0, 0.4);
PlayerInfo[playerid][pAFKTextStat] = 0;
}
else
{
Update3DTextLabelText(PlayerInfo[playerid][pAFKText], COLOR_WHITE, string);
if(PlayerInfo[playerid][pAFKTime] == 900) // 900 это время в секундах через которое игрока кикнет, можно заменить на своё.
{
SendClientMessage(playerid, COLOR_WHITE, "(( Вы слишком долго находились вне игрового процесса. Вы кикнуты. ))");
Delete3DTextLabel(PlayerInfo[playerid][pAFKText]);
PlayerInfo[playerid][pAFKTextStat] = 55555;
Kick(playerid);
}
}
}
}
HTML:
PlayerInfo[playerid][pAFKStat] = 1;
Да, и в OnPlayerDisconnect:
HTML:
if(PlayerInfo[playerid][pAFKTextStat] != 55555)
{
Delete3DTextLabel(PlayerInfo[playerid][pAFKText]);
}
HTML:
SetTimer("AFK",1000,true);
Да, разрешаю копировать, но с ссылкой на первоисточник!
Последнее редактирование:
