L1ghT
13.03.2014, 23:09 | Сообщение # 21
Пользователи
Сообщений: 36
|
Видел в данном разделе тему про создание систему АФК. Но она по координатам. А сейчас я напишу, как создать систему АФК без координат
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
|
|