Профиль
Информация Управление
Здравствуйте, уважаемый посетитель. К сожалению, Вы не были распознаны форумом, как зарегистрированный пользователь. Для полноценного использования возможностей нашего форума вам необходимо зарегистрироваться. Если вы уже зарегистрированы на форуме, то вам необходимо пройти авторизацию, используя Ваш логин и пароль. Зарегистрированные пользователи получают возможность возможность общения на нашем форуме.


[Новые сообщения · Правила форума · RSS ]
  • Страница 1 из 1
  • 1
Форум » PAWN-скриптинг в San-Andreas Multiplayer » Нестандартные инклюды » [Include] pause
[Include] pause
OKStyle Дата: Четверг, 03.03.2011, 13:38 | Сообщение # 1
Архивариус
Группа: Администраторы
Зарегистрирован: 19.02.2011
Сообщений: 125
Репутация: 8
Статус: Offline
Инклюд, позволяющий определить нахождение игрока в AFK/паузе/меню игры pause.

Подключаем так:

Code
#include <pause>

Содержимое инклюда:

Code
//VERSION 2.1

#define ACCURACY 500 //Lowering this it will make it more accurate, but it could use more CPU. (Do not lower it above 500 MS)

forward C_Paused(playerid);
forward OnPlayerPause(playerid);
forward OnPlayerUnPause(playerid);

new g_Paused[MAX_PLAYERS];
new g_Timer[MAX_PLAYERS];
new bool:g_Requesting[MAX_PLAYERS];
new bool:g_IsPaused[MAX_PLAYERS];

P_OnPlayerConnect(playerid)
{
     g_IsPaused[playerid] = false;
     g_Requesting[playerid] = false;  
     g_Timer[playerid] = SetTimerEx("C_Paused", ACCURACY, 1, "i", playerid);
     return 1;
}

P_OnPlayerUpdate(playerid)
{
     g_Paused[playerid] = GetTickCount();
     return 1;
}

P_OnPlayerRequestClass(playerid)
{
  g_Requesting[playerid] = true;
  g_IsPaused[playerid] = false;
  return 1;
}

P_OnPlayerDisconnect(playerid)
{
  KillTimer(g_Timer[playerid]);
     g_Requesting[playerid] = false;
     g_IsPaused[playerid] = false;
  return 1;
}

P_OnPlayerSpawn(playerid)
{
  g_Requesting[playerid] = false;
  g_IsPaused[playerid] = false;
  return 1;
}

public C_Paused(playerid)
{
     if(GetTickCount()-g_Paused[playerid] > ACCURACY && g_Requesting[playerid] != true && g_IsPaused[playerid] != true && InvalidStates(playerid) != 1)
  {
   OnPlayerPause(playerid);
   g_IsPaused[playerid] = true;
  }
  else if(GetTickCount()-g_Paused[playerid] < ACCURACY && g_Requesting[playerid] != true && g_IsPaused[playerid] != false && InvalidStates(playerid) != 1)
  {
      OnPlayerUnPause(playerid);
      g_IsPaused[playerid] = false;
  }
  return 1;
}

stock IsPlayerPaused(playerid)
{
  return g_IsPaused[playerid];
}

stock InvalidStates(playerid)
{
  new pState = GetPlayerState(playerid);
     if(pState == 0 || pState == 7)
     {
   return 1;
  }
  else
  {
   return 0;
  }
}

Автор: The_Moddler

Скрипт проверки:

Code
#include a_samp
#include paused

public OnFilterScriptInit()
{
  print("Player pause test script loaded.");
}

public OnPlayerConnect(playerid)
{
     P_OnPlayerConnect(playerid);
     return 1;
}

public OnPlayerDisconnect(playerid)
{
     P_OnPlayerDisconnect(playerid);
     return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
     P_OnPlayerRequestClass(playerid);
     return 1;
}

public OnPlayerSpawn(playerid)
{
  P_OnPlayerSpawn(playerid);
}

public OnPlayerUpdate(playerid)
{
  P_OnPlayerUpdate(playerid);
  return 1;
}

public OnPlayerPause(playerid)
{
  printf("ID %d paused the game.", playerid);
  return 1;
}

public OnPlayerUnPause(playerid)
{
  printf("ID %d unpaused the game.", playerid);
     return 1;
}


 
CaHeK Дата: Среда, 22.08.2012, 21:16 | Сообщение # 2
Рядовой
Группа: Пользователи
Зарегистрирован: 12.08.2012
Сообщений: 1
Репутация: 0
Статус: Offline
Не лучшее решение smile

Сообщение отредактировал CaHeK - Среда, 22.08.2012, 21:17
 
Форум » PAWN-скриптинг в San-Andreas Multiplayer » Нестандартные инклюды » [Include] pause
  • Страница 1 из 1
  • 1
Поиск:

Сайт управляется системой uCoz