Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 37
  1. #1
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±

    Ограничение времени на регистрацию/авторизацию

    Думаю у многих есть такое: Если игрок в течении нескольких секунд не вводит пароль, то его кикает с сервера, и используют таймер для игрока. Сейчас я покажу пример как можно сделать практически то же самое.

     Способ #1

    В начало скрипта:
    PHP код:
    new
        
    player_kick_time[MAX_PLAYERS char]; 
    В OnPlayerConnect:
    PHP код:
    player_kick_time{playerid} = 30
    Думаю у каждого есть односекундный глобальный таймер, если нет, то создадим его.

    В OnGameModeInit:
    PHP код:
    SetTimer("@__login_timer"10001); 
    Далее создадим паблик (если у вас есть односекундный паблик, то его создавать не нужно):
    PHP код:
    @__login_timer();
    @
    __login_timer() {
        for (new 
    GetPlayerPoolSize() + 1; -->= 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 
    GetPlayerPoolSize() + 1; -->= 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


    Копирование данной статьи без разрешения автора запрещено!
    Последний раз редактировалось L0ndl3m; 17.01.2020 в 15:00.

  2. 10 пользователя(ей) сказали cпасибо:
    #Vito (01.11.2013) Astrakhan30 (25.05.2016) BadPawn (21.01.2016) Daniel_Cortez (16.03.2014) Desulaid (03.05.2015) Osetin (09.04.2015) Processing (25.02.2018) Wilso[N] (02.11.2013) [ForD] (08.01.2014) Иван Бубнов (01.04.2016)
  3. #2
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    Понравилось :3

  4. Пользователь сказал cпасибо:
    Salvacore (01.11.2013)
  5. #3
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Неплохо, молодец..

  6. #4
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Уже стоит:)

  7. #5
    Аватар для fleimos
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    30.07.2013
    Сообщений
    75
    Репутация:
    16 ±
    неплохо

  8. #6
    Аватар для Ra4ok
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.10.2013
    Адрес
    Pro-Pawn.Ru
    Сообщений
    98
    Репутация:
    7 ±
    Давно искал

  9. #7

  10. #8
    Аватар для ImpreZa177
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.04.2015
    Сообщений
    1
    Репутация:
    0 ±
    Eror 017: undefined symbol @__loginTimer ЧТО ДЕЛАТЬ? HELP!!!!

  11. #9
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от ImpreZa177 Посмотреть сообщение
    Eror 017: undefined symbol @__loginTimer ЧТО ДЕЛАТЬ? HELP!!!!
    Если делать всё по мануалу, то ошибок не должно быть.

  12. #10
    Аватар для Valera_Trefilov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±
    Я бы сделал так:

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid,"Loginned",1);
        
    SetTimerEx("LoginnedTimer"600000"i"playerid);
        return 
    true;


    PHP код:
    forward LoginnedTimer(i);
    public 
    LoginnedTimer(i)
    {
        if(
    GetPVarInt(i,"Loginned")==1)
            
    Kick(i);
        return 
    true;

    это туда где вы авторизуетесь:
    PHP код:
    if(GetPVarInt(playerid,"Loginned")==1DeletePVar(playerid,"Loginned"); 
    Последний раз редактировалось Valera_Trefilov; 09.04.2015 в 15:27.

  13. Пользователь сказал cпасибо:
    VeRyNaYa (25.04.2015)
 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •