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

Тема: Система AFK

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

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

    Система AFK

    Ко всем new:
    PHP код:
    const MAX_AFK_TIME 10*60// макс. время в AFK - 10 минут
    new afk_time[MAX_PLAYERS];
    new 
    Float:afk_pos[MAX_PLAYERS][3]; 
    В OnGameModeInit:
    PHP код:
    SetTimer("AFKCheck",1000,1); 
    В OnPlayerConnect:
    PHP код:
    afk_time[playerid] = 0
    В конец скрипта:
    PHP код:
    forward AFKCheck();
    public 
    AFKCheck()
    {
        static const 
    str[] = " кикнут за АФК.";
        new 
    string[MAX_PLAYER_NAME+sizeof(str)];
        new 
    Float:xFloat:yFloat:z;
        foreach(new 
    i:Player)
        {
            
    GetPlayerPos(ixyz);
            if(
    IsPlayerInRangeOfPoint(i2.0afk_pos[i][0], afk_pos[i][1], afk_pos[i][2]))
            {
                if(++
    afk_time[i] == MAX_AFK_TIME)
                {
                    
    GetPlayerName(istringsizeof(string));
                    
    strcat(stringstr);
                    
    SendClientMessageToAll(-1string);
                    
    Kick(i);
                }
            }
            else
                
    afk_time[i] = 0;
            
    afk_pos[i][0] = xafk_pos[i][1] = yafk_pos[i][2] = z;
        }
        return 
    1;

    Автор: Pro-Pawn Team
    Последний раз редактировалось Salvacore; 09.08.2014 в 18:35.

  2. 2 пользователя(ей) сказали cпасибо:
    HarrWe (26.08.2016) Nexius_Tailer (18.11.2018)
  3. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    Kick(playerid); //Кикаем игрока 
    ололо
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    Kick(playerid); //Кикаем игрока 
    ололо
    Объяснил бы....

  5. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    public AFKCheck();
    public 
    AFKCheck()
    {
        new 
    Float:Pos[3];
        foreach(new 
    i:Player// Перебираем игроков
        
    {
            
    GetPlayerPos(i,Pos[0],Pos[1],Pos[2]); // Получает позицию игрока и сохраняем в своих переменных.
            
    if(IsPlayerInRangeOfPoint(i,2,Pos[0],Pos[1],Pos[2])) // Если игрок находится на одном месте
            
    {
                
    AFK[i]++; // Увеличиваем переменную АФК (за каждую секунду, если игрок находится на том же месте, увеличиваем переменную АФК на 1)
            
    }
            if(
    AFK[i] == 60// Если игрок на том же месте N-ое кол-во секунд
            
    {
                
    AFK[i] = 0// Сбрасываем переменную афк
                
    static const fmt_str[] = "%s кикнуло за афк.";
                const 
    fmt_size sizeof(fmt_str)-2+MAX_PLAYER_NAME;
                new 
    string[fmt_size];
                
    format(string,sizeof(string),fmt_str,pName(i));
                
    SendClientMessageToAll(COLOR_WHITE,string);//Передаём всем какой он лох.
                
    Kick(playerid); //Кикаем игрока
            
    }
        }
        return 
    1;

    PHP код:
    foreach(new i:Player// Перебираем игроков 
    PHP код:
    Kick(playerid); //Кикаем игрока 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. Пользователь сказал cпасибо:
    Salvacore (13.04.2014)
  7. #5
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    public AFKCheck();
    public 
    AFKCheck()
    {
        new 
    Float:Pos[3];
        foreach(new 
    i:Player// Перебираем игроков
        
    {
            
    GetPlayerPos(i,Pos[0],Pos[1],Pos[2]); // Получает позицию игрока и сохраняем в своих переменных.
            
    if(IsPlayerInRangeOfPoint(i,2,Pos[0],Pos[1],Pos[2])) // Если игрок находится на одном месте
            
    {
                
    AFK[i]++; // Увеличиваем переменную АФК (за каждую секунду, если игрок находится на том же месте, увеличиваем переменную АФК на 1)
            
    }
            if(
    AFK[i] == 60// Если игрок на том же месте N-ое кол-во секунд
            
    {
                
    AFK[i] = 0// Сбрасываем переменную афк
                
    static const fmt_str[] = "%s кикнуло за афк.";
                const 
    fmt_size sizeof(fmt_str)-2+MAX_PLAYER_NAME;
                new 
    string[fmt_size];
                
    format(string,sizeof(string),fmt_str,pName(i));
                
    SendClientMessageToAll(COLOR_WHITE,string);//Передаём всем какой он лох.
                
    Kick(playerid); //Кикаем игрока
            
    }
        }
        return 
    1;

    PHP код:
    foreach(new i:Player// Перебираем игроков 
    PHP код:
    Kick(playerid); //Кикаем игрока 
    Спасибо :3

  8. #6
    Аватар для (Wh)AnGeL
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.01.2014
    Сообщений
    26
    Репутация:
    0 ±
    Исправь с
    public AFKCheck();
    на
    forward AFKCheck();
    skype-system.killer2

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от (Wh)AnGeL Посмотреть сообщение
    Исправь с
    public AFKCheck();
    на
    forward AFKCheck();
    No.

  10. #8
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    No.
    Думаю он имел ввиду:
    PHP код:
    public AFKCheck();
    public 
    AFKCheck() 

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

    Статус
    Оффлайн
    Регистрация
    30.11.2013
    Сообщений
    22
    Репутация:
    25 ±
    Тестирование (ну или хотя бы визуальная проверка кода) для слабаков!

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

    Статус
    Оффлайн
    Регистрация
    10.04.2014
    Сообщений
    3
    Репутация:
    0 ±
    Принимайте баги, господин разработчик. Я всё время двигался, а секунды то шли, потом меня кикнуло.
      Открыть/закрыть

    У кого не грузит - http://imgdepo.ru/id/i6469944

    PHP код:
    public AFKCheck()
    {
        new 
    Float:Pos[3], string[100];
        for(new 
    i,zx GetMaxPlayers( ); zxi++)
        {
          
    GetPlayerPos(i,Pos[0],Pos[1],Pos[2]);
          if(
    IsPlayerInRangeOfPoint(i,2,Pos[0],Pos[1],Pos[2]))
          {
            
    AFK[i]++; 
            
    format(string,sizeof(string), "%d сек.",AFK[i]);
            
    SendClientMessage(i,COLOR_YELLOW,string);
          }
          if(
    AFK[i] == 10
          {
            
    AFK[i] = 0;
            
    format(string,sizeof(string), "Игрок %s кикнут сервером, причина: AFK более 10 секунд.",pNick(i));
            
    SendClientMessageToAll(COLOR_WHITE,string);
            
    SKick(i);                                                            
          }
        }
        return 
    true;

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    RemovePlayerInfo(playerid);
        
    GetPlayerName(playerid,pInfo[playerid][pName],MAX_PLAYER_NAME);
        
    AFKTime[playerid] = SetTimer("AFKCheck",1000,1);
        new 
    account[37];
        
    format(account,sizeof(account),"users/%s.ini",pNick(playerid));
        if(!
    fexist(account)) ShowRegisterDialog(playerid);
        else if(
    fexist(account)) ShowLoginDialog(playerid);
        return 
    true;


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

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

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

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

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

Ваши права

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