SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 02/12/2013, 01:24 PM   #131
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

Кол-во входов
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) { return 1; }
numplayers ++;

не совпадает с кол-вом выходов
public OnPlayerDisconnect(playerid, reason)
{
if(IsPlayerNPC(playerid)) { return 1; }
numplayers --;

Как такое может быть? При чем кол-во numplayers ушло на -1206513.
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 01:42 PM   #132
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Атака сервера

Да. Читер отключается, но остаётся на сетевом уровне.
http://forum.sa-mp.com/showthread.php?t=470156
Поковыряй.
__________________
White_116 is offline   Reply With Quote
Old 02/12/2013, 04:20 PM   #133
stabker
High-roller
 
Join Date: Mar 2012
Posts: 1,311
Reputation: 86
Default Re: Атака сервера

Если не желаете юзать ничего лишнего, то вот мой вариант фикса фейкового-дисконнекта.

pawn Code:
new AT_Timerid[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    if(AT_Timerid[playerid]) //На практике это вряд ли произойдет, но для самоуспокоения добавил
    {
        KillTimer(AT_Timerid[playerid]);
        AT_Timerid[playerid] = 0;
    }
    //...
}

public OnPlayerDisconnect(playerid, reason)
{
    //...
    AT_Timerid[playerid] = SetTimerEx("AfterDisconnectTimer", 500, 0, "i", playerid);
}

forward AfterDisconnectTimer(const playerid);
public AfterDisconnectTimer(const playerid)
{
    FastKick(playerid); //Это у меня для вызова обычного моментального Kick. Оставил, т.к. советую обратить на это внимание, учитывая то, что почти у всех щас макрос на Kick()
    AT_Timerid[playerid] = 0;
}
stabker is offline   Reply With Quote
Old 02/12/2013, 04:27 PM   #134
Jon_De
High-roller
 
Join Date: Mar 2011
Location: ru
Posts: 1,246
Reputation: 21
Default Re: Атака сервера

Code:
OnPlayerDisconnect(...)
{
 // ваш код
  Kick(playerid);
  return 1;
}
не?
Jon_De is offline   Reply With Quote
Old 02/12/2013, 04:29 PM   #135
stabker
High-roller
 
Join Date: Mar 2012
Posts: 1,311
Reputation: 86
Default Re: Атака сервера

Quote:
Originally Posted by Jon_De View Post
Code:
OnPlayerDisconnect(...)
{
 // ваш код
  Kick(playerid);
  return 1;
}
не?
http://forum.sa-mp.com/showthread.php?t=400823&page=11
stabker is offline   Reply With Quote
Old 02/12/2013, 04:33 PM   #136
Jon_De
High-roller
 
Join Date: Mar 2011
Location: ru
Posts: 1,246
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by stabker View Post
краткий вариант так сказать.

new bool:connected[MAX_PLAYERS];

Code:
OnPlayerConnect(..)
{
   if(connected[playerid] == true)
   {
      BanEx(playerid, "Connect flood");
      return 1;
   }
   connected[playerid] = true;
   return 1;
}

OnPlayerDisconnect(...)
{
    if(connected[playerid] == false) return 1;
    connected[playerid] = false;
    // ваш код
    Kick(playerid);
    return 1;
}
правда есть чит который вызывает и Onplayerdisconnect И коннект и флудит этим, короче про защиту от хаков долго писать можно. то что выше - это капля в море
Jon_De is offline   Reply With Quote
Old 02/12/2013, 04:37 PM   #137
stabker
High-roller
 
Join Date: Mar 2012
Posts: 1,311
Reputation: 86
Default Re: Атака сервера

Ну, попробуйте так сделать, и посмотрите на реакцию инклудов типа foreach. Все "OnPlayerDisconnect", которые выше, все равно выполняться будут.
stabker is offline   Reply With Quote
Old 02/12/2013, 04:37 PM   #138
Jon_De
High-roller
 
Join Date: Mar 2011
Location: ru
Posts: 1,246
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by stabker View Post
Ну, попробуйте так сделать, и посмотрите на реакцию инклудов типа foreach. Все "OnPlayerDisconnect" которые выше, все равно выполняться будут.
у меня так и сделано. всякие левые инклуды не использую
в конце концов, можно это в инклуд засунуть и поместить его выше остальных, не знаю точно как там всё делается, но коллбэки будут вызываться так как и было задумано
Jon_De is offline   Reply With Quote
Old 02/12/2013, 06:34 PM   #139
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

В OnPlayerDisconnect нельзя выполнять Kick, т.к. ф-ия Kick вызовет множественное срабатывание OnPlayerDisconnect.
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 06:52 PM   #140
Jon_De
High-roller
 
Join Date: Mar 2011
Location: ru
Posts: 1,246
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by DANGER1979 View Post
В OnPlayerDisconnect нельзя выполнять Kick, т.к. ф-ия Kick вызовет множественное срабатывание OnPlayerDisconnect.
Смотри последний мой код внимательно
Jon_De is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Взлом сервера! Ghost~Ride Русский/Russian 7 11/12/2012 03:31 PM
SA-MP 0.3e R2 обновление сервера Stepashka Русский/Russian 20 17/11/2012 12:37 PM
Атака сервера stabker Русский/Russian 22 08/09/2012 12:59 PM
Зависание сервера RoAChik Русский/Russian 7 30/07/2012 02:03 PM
Вылетаение сервера serpip Русский/Russian 43 11/05/2012 05:10 PM


All times are GMT. The time now is 05:55 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.