[Мануал] Создание обычной системы AFK - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Мануал] Создание обычной системы AFK
Chester_Master Дата: Воскресенье, 30.11.2014, 11:42 | Сообщение # 1
Бывалый
Сообщений: 339
Статус: Offline
Всем добрый день. Решил сделать мануал по созданию "AFK системы", в этом нет ничего сложного, и пойдет на все игровые моды. p.s Не увидел подобной темы в разделе, по этому решил выложить.


И так, пожалуй начнем:

В public OnPlayerExitVehicle(playerid, vehicleid)
Код

SetPVarInt(playerid,"AFK_Time",0);


ко всем #define добавим ( Если нету )
Код
#define publics:%0(%1)     forward %0(%1); public %0(%1)


В конец мода добавим:
Код
publics: GlobalAfkCheck()
{
        foreach(new i: Player)
        {
            if(!gPlayerLogged[i]) continue;
            if(GetPVarInt(i,"AFK_Tick") > 10000)
            {
                SetPVarInt(i,"AFK_Tick",1);
                SetPVarInt(i,"AFK_Check",0);
            }
            if(GetPVarInt(i,"AFK_Check") < GetPVarInt(i,"AFK_Tick") && GetPlayerState(i))
            {
                SetPVarInt(i,"AFK_Check",GetPVarInt(i,"AFK_Tick"));
                SetPVarInt(i,"AFK_Time",0);
            }
            if(GetPVarInt(i,"AFK_Check") == GetPVarInt(i,"AFK_Tick") && GetPlayerState(i))
            {
                SetPVarInt(i,"AFK_Time",GetPVarInt(i,"AFK_Time") + 1);
                if(GetPVarInt(i, "AFK_Time") > 2)
                {
                 new CB[30];
                 Convert1(GetPVarInt(i,"AFK_Time")-2,CB);
                 strins(CB,"На паузе: ",0);
                 SetPlayerChatBubble(i,CB,COLOR_LIGHTRED,20.0,1200);
                }
            }
        }
}


В public OnPlayerUpdate(playerid)
Код
SetPVarInt(playerid,"AFK_Tick", GetPVarInt(playerid,"AFK_Tick") + 1);


В конец мода добавим:
Код
stock Convert1(seconds, stringTo[], size = sizeof(stringTo))
{
           stringTo[0] = 0x0;
           new result[4];
           result[0] = floatround(seconds / (3600 * 24));
           result[1] = floatround(seconds / 3600);
           result[2] = floatround((seconds / 60) - (result[1] * 60));
           result[3] = floatround(seconds - ((result[1] * 3600) + (result[2] * 60)));
           switch(result[0])
           {
               case 0:
               {
                   switch(result[1])
                   {
                       case 0: format(stringTo,size,"%02d:%02d",result[2],result[3]);
                       default: format(stringTo,size,"%d:%02d:%02d",result[1],result[2],result[3]);
                   }
               }
           }
           return stringTo;
}


А так же, в stock Fresh()
Код
GlobalAfkCheck();

Вот и все, нет ничего сложно. У кого будут ошибки при вставке системы, обращайтесь, помогу.


Сообщение отредактировал Chester_Master - Воскресенье, 30.11.2014, 12:22
[CM]Morente Дата: Воскресенье, 30.11.2014, 11:53 | Сообщение # 2
Новичок
Сообщений: 16
Статус: Offline
Вырезано не до конца , + не видно функции кика и уведомление о большем проведение времени в AFK.
Chester_Master Дата: Воскресенье, 30.11.2014, 12:08 | Сообщение # 3
Бывалый
Сообщений: 339
Статус: Offline
Цитата [CM]Morente ()
Вырезано не до конца , + не видно функции кика и уведомление о большем проведение времени в AFK.


До конца, а на счет кика и уведомлении о большем времени проведения в АФК нету.
Я же в заголовке указал, что самая обычная система АФК.
Монашка Дата: Воскресенье, 30.11.2014, 14:57 | Сообщение # 4
Боец
Сообщений: 109
Статус: Offline
Спасибо, для тех кто с 0 делает пригодиться)

R259737627414
[CM]Morente Дата: Воскресенье, 30.11.2014, 15:38 | Сообщение # 5
Новичок
Сообщений: 16
Статус: Offline
Цитата Chester_Master ()
До конца, а на счет кика и уведомлении о большем времени проведения в АФК нету.
Я же в заголовке указал, что самая обычная система АФК.


Зачем тогда такое гавно сюда выкладывать? Если можно написать в несколько раз меньше и рабочий код.
Quonx Дата: Воскресенье, 30.11.2014, 16:36 | Сообщение # 6
Боец
Сообщений: 110
Статус: Offline
[CM]Morente, А давайте мы подождем твой код? покажи нам как нужно правильно писать код

Продаю много аккаунтов Steam/Origin/Uplay! http://cheat-master.ru/forum/140-513506-1
Chester_Master Дата: Воскресенье, 30.11.2014, 20:44 | Сообщение # 7
Бывалый
Сообщений: 339
Статус: Offline
Цитата [CM]Morente ()
Зачем тогда такое гавно сюда выкладывать? Если можно написать в несколько раз меньше и рабочий код.


Может прекратишь писать чушь тут? Кому нужно - тот возьмет данную систему. Ах да, давай ка профессионал, покажи как нужно писать системы. Жду, в течении 24 часов не выложишь, будешь конченным болоболом.
TITANIK Дата: Понедельник, 01.12.2014, 00:13 | Сообщение # 8
Боец
Сообщений: 65
Статус: Offline
Хороший мануал,попробую что нибудь смастерить.

Регистрация: 19.06.2009
Вы здесь: 1968-й день
[CM]Morente Дата: Понедельник, 01.12.2014, 08:55 | Сообщение # 9
Новичок
Сообщений: 16
Статус: Offline
К forward:

Код

forward AFK();


В Public OnPlayerConnect

Код

PlayerForeach(i)
{
  if (GetPVarInt(i, "AFK") > 0)
  {
   if (GetPVarInt(i, "AFK") >=1200)
   {
      SendClientMessage(i, COLOR_LIGHTRED,"Вы были кикнуты за 20 просто без движения.");
      Kick(playerid);
   }
   }
  return 1;
   }
  return 1;
}


OnPlayerDisconect

Код


SetPVarInt(playerid, "AFK", -2);



OnPlayerUpdate
Код


if (GetPVarInt(playerid, "Kick") != 0) Kick(playerid);
if (GetPVarInt(playerid, "AFK") > -2)
{
   if (GetPVarInt(playerid, "AFK") > 2) SetPlayerChatBubble(playerid, "Игрок на паузе 0сек.",COLOR_ORANGE, 10.0, 500);
   SetPVarInt(playerid, "AFK", 0);
  }


в UpdatePlayer

Код


AFK();



В конце мода создаем Public AFK()

Код


public AFK()
{
  PlayerForeach(i)
  {
   new str[56];
   if (IsPlayerConnected(i))
   {
    if (GetPVarInt(i, "AFK") == 0) SetPVarInt(i, "AFK", -1);
    else if (GetPVarInt(i, "AFK") == -1)
    {
     SetPVarInt(i, "AFK", 1);
     format(str, sizeof(str), "Игрок на паузе: %s .", Convertsec(GetPVarInt(i, "AFK")));
     SetPlayerChatBubble(i, str, COLOR_ORANGE, 10.0, 1200);
    }
    else if (GetPVarInt(i, "AFK") > 0)
    {
     SetPVarInt(i, "AFK", GetPVarInt(i, "AFK")+1);
     format(str, sizeof(str), "Игрок на паузе: %s.", Convertsec(GetPVarInt(i, "AFK")));
     SetPlayerChatBubble(i, str, COLOR_ORANGE, 10.0, 1200);
    }
   }
  }
}



Для проверки копипаста: http://text.ru

Если во время вшивки системы в мод вылезли ошибки , обращайтесь в skype: ywilson225 , помогу.
Chester_Master Дата: Понедельник, 01.12.2014, 11:44 | Сообщение # 10
Бывалый
Сообщений: 339
Статус: Offline
Оптимизация кода? Нет, не слышал?

[CM]Morente, Посмотри на мой код, и на свой. На всех пабликах практически стоит твоя подобная система АФК, твоя система всего лишь лишняя нагрузка на мод.

Прошу не критиковать, если делать лучше можете - пожалуйста, создавайте мануалы, вам никто не запрещает. Тому, кому нужна система - берите и пользуйтесь.


Сообщение отредактировал Chester_Master - Понедельник, 01.12.2014, 12:26
  • Страница 1 из 1
  • 1
Поиск: