Приветствую вас, Гость | Суббота, 18.05.2024, 09:13
Главная ? Форум ? Новости соц.сетей ? Всё для uCoz ? Набор модераторов
Реклама
Мини-чат
Топ пользователей
Баннеробмен
Последние посты
Горячие обсуждения
  • Страница 1 из 1
  • 1
Форум » PAWNO » Готовые решения » AFK System
AFK System
L1ghT
13.03.2014, 23:09 | Сообщение # 21
Пользователи
Сообщений: 36
1

Видел в данном разделе тему про создание систему АФК. Но она по координатам. А сейчас я напишу, как создать систему АФК без координат

1. Делаем следующее:
В OnPlayerSpawn:

Код
SetPVarInt(playerid, "PlayerInAFK", 0);
В OnPlayerConnect и в OnPlayerDeath:

Код
SetPVarInt(playerid, "PlayerInAFK", -2);
2. Делаем, чтобы при выходе из АФК PVar обнулялся

В OnPlayerUpdate:

Код
if(GetPVarInt(playerid, "PlayerInAFK") > -2)
     {
         if(GetPVarInt(playerid, "PlayerInAFK") > 2) SetPlayerChatBubble(playerid, "{FFFF00}АФК: {FFFFFF}завершено", COLOR_WHITE, 20.0, 500);
         SetPVarInt(playerid, "PlayerInAFK", 0);
     }
3. Создаем паблик, отвечающий за саму систему

В OnGameModeInit:

Код
SetTimer("AFKSystem", 1000, 1);
В конец мода:

Код
forward AFKSystem();
public AFKSystem()
{
     for(new playerid;playerid < GetMaxPlayers();playerid++)
     {
         if(IsPlayerConnected(playerid))
         {
             if(GetPVarInt(playerid, "PlayerInAFK") == 0) SetPVarInt(playerid, "PlayerInAFK", -1);
             else if(GetPVarInt(playerid, "PlayerInAFK") == -1)
             {
                 SetPVarInt(playerid, "PlayerInAFK", 1);
                 new string[56];
                 format(string, sizeof(string), "АФК: {FFFFFF}%s", ConvertSeconds(GetPVarInt(playerid, "PlayerInAFK")));
                 SetPlayerChatBubble(playerid, string, 0xFFFF00AA, 20.0, 1200);
             }
             else if(GetPVarInt(playerid, "PlayerInAFK") > 0)
             {
                 new string[56];
                 SetPVarInt(playerid, "PlayerInAFK", GetPVarInt(playerid, "PlayerInAFK")+1);
                 format(string, sizeof(string), "АФК: {FFFFFF}%s", ConvertSeconds(GetPVarInt(playerid, "PlayerInAFK")));
                 SetPlayerChatBubble(playerid, string, 0xFFFF00AA, 20.0, 1200);
             }
}
     }
}
5. Конвертер времени

Суем в конец мода (отвечает за конвертирование времени)

Код
stock ConvertSeconds(time)
{
     new string[128];
     if(time < 60) format(string, sizeof(string), "%d секунд", time);
     else if(time == 60) string = "1 минуту";
     else if(time > 60 && time < 3600)
     {
         new Float: minutes;
         new seconds;
         minutes = time / 60;
         seconds = time % 60;
         format(string, sizeof(string), "%.0f минут и %d секунд", minutes, seconds);
     }
     else if(time == 3600) string = "1 час";
     else if(time > 3600)
     {
         new Float: hours;
         new minutes_int;
         new Float: minutes;
         new seconds;
         hours = time / 3600;
         minutes_int = time % 3600;
         minutes = minutes_int / 60;
         seconds = minutes_int % 60;
         format(string, sizeof(string), "%.0f:%.0f:%d", hours, minutes, seconds);
     }
     return string;
}
 А теперь как же всем этим управлять

Допустим вы хотите, чтобы игрока, который простоял в АФК 30 секунд кикало. Вставляем в AFKSystem:

Код
if(GetPVarInt(playerid, "PlayerInAFK") >= 30)
{
//Тут текст всуните
Kick(playerid);
}
 Это вставлять надо в AFKSystem
/index/8-1
Форум » PAWNO » Готовые решения » AFK System
  • Страница 1 из 1
  • 1
Поиск: