Ограничение времени на регистрацию/авторизацию
Думаю у многих есть такое: Если игрок в течении нескольких секунд не вводит пароль, то его кикает с сервера, и используют таймер для игрока. Сейчас я покажу пример как можно сделать практически то же самое.
Способ #1
В начало скрипта:
PHP код:
new
player_kick_time[MAX_PLAYERS char];
В
OnPlayerConnect:
PHP код:
player_kick_time{playerid} = 30;
Думаю у каждого есть односекундный глобальный таймер, если нет, то создадим его.
В
OnGameModeInit:
PHP код:
SetTimer("@__login_timer", 1000, 1);
Далее создадим паблик (
если у вас есть односекундный паблик, то его создавать не нужно):
PHP код:
@__login_timer();
@__login_timer() {
for (new i = GetPlayerPoolSize() + 1; --i >= 0;) {
if (IsPlayerConnected(i)
&& player_kick_time{i} != 0
&& --player_kick_time{i} == 0) {
SendClientMessage(i, -1, "Время на регистрацию / авторизацию закончилось, вы кикнуты.");
Kick(i);
}
}
}
И после того как игрок вошёл в аккаунт / зарегистрировался:
PHP код:
player_kick_time{playerid} = 0;
Способ #2
В
OnPlayerConnect:
PHP код:
SetPVarInt(playerid, "player_kick_time", GetTickCount() + 15000);
В конец мода, всё тот-же паблик (
если у вас есть односекундный таймер, его создавать не нужно ):
PHP код:
@__login_timer();
@__login_timer() {
new
tick = GetTickCount();
for (new i = GetPlayerPoolSize() + 1; --i >= 0;) {
if (IsPlayerConnected(i)
&& GetPVarInt(i, "player_kick_time") != 0
&& GetPVarInt(i, "player_kick_time") < tick) {
SendClientMessage(i, -1, "Время на регистрацию / авторизацию закончилось, вы кикнуты.");
Kick(i);
}
}
}
Теперь после того, как игрок зарегистрировался / вошёл в аккаунт:
PHP код:
DeletePVar(playerid, "player_kick_time");
Автор: L0ndl3m
Специально для: Pro-Pawn.Ru
Копирование данной статьи без разрешения автора запрещено!