Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 37

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

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

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

    Система 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. Пользователь сказал cпасибо:
    HarrWe (26.08.2016)
  3. #2
    Аватар для DeimoS
    Модератор?

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

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

    Steve Pavlina

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

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    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); //Кикаем игрока 
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    30.11.2013
    Сообщений
    26
    Репутация:
    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 123 ... ПоследняяПоследняя

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

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

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

Ваши права

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