SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian > Релизы/Releases

Reply
 
Thread Tools Display Modes
Old 13/07/2010, 08:06 AM   #1
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Thumbs up Anti Quick Reconnect

Крохотный FS по просьбам участников форума. FS не дает игроку быстро реконектится после выхода. Если пауза между выходом и входом одного и того же игрока меньше 5 сек, то войти он не сможет. Если у игрока был просто тайм аут соединения, то его этот запрет не коснется.

Скрипт оптимизирован, юзает динамическую память и надежную систему запрета доступа.
Учтены пожелания.

НОВЫЙ ОПТИМИЗИРОВАННЫЙ КОД
PHP Code:
/*
    Этот FS не дает реконектится игроку быстрее чем через 5 сек.
    после выхода. Для проверки используется IP игрока.

    Скрипт оптимизирован, юзает динамическую память и
    надежную систему запрета доступа.

    MX_Master, 14.07.2010 2:46:25
*/

#include <a_samp>



const player_machine 1// ид виртуальной машины для хранения IP игроков, которые онлайн
      
rec_delay_sec  5// сек. после дисконекта, после котороых снова можно конектится



public OnFilterScriptExit()
{
    
// при выгрузке скрипта, освободим, используюемую им, память
    
for ( new GetMaxPlayers() - 1>= 0; --)
        if ( 
existpropertyplayer_machine_) ) deletepropertyplayer_machine_);
}

public 
OnPlayerConnect playerid )
{
    new 
cur_str_ip[16];
    
GetPlayerIpplayeridcur_str_ip16 );
    
setpropertyplayer_machine_playeridcur_str_ip );
    return 
1;
}

public 
OnPlayerDisconnect playeridreason )
{
    if ( 
reason == ) return 1// если был тайм аут соединения у игрока

    
new saved_str_ip[16];
    
getproperty(    player_machine_playeridsaved_str_ip );
    
deletepropertyplayer_machine_playerid );
    
strunpacksaved_str_ipsaved_str_ip );

    new 
rcon_cmd[32];
    
formatrcon_cmd32"banip %s"saved_str_ip );
    
SendRconCommand(rcon_cmd);

    
SetTimerEx"unban_ip"rec_delay_sec 10000"s"saved_str_ip );

    return 
1;
}



forward unban_ip ip[] );
public  
unban_ip ip[] )
{
    new 
rcon_cmd[32];
    
formatrcon_cmd32"unbanip %s"ip );
    
SendRconCommand(rcon_cmd);

код старой версии - http://pawn.pastebin.com/46EN4w2U
MX_Master is offline   Reply With Quote
Old 13/07/2010, 08:26 AM   #2
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,750
Reputation: 138
Default Re: Anti Quick Reconnect

Так не проще?
PHP Code:
#include <a_samp>

#define RTIME  5
new LastIP[MAX_PLAYERS][20],LastTime[MAX_PLAYERS];

public 
OnPlayerConnect(playerid)
{
    new 
str_ip[20];
    
GetPlayerIpplayeridstr_ip20 );
    for(new 
i,gettime();i<sizeof(LastIP),i++)
    {
        if(!
strlen(LastIP[i]))break;
        if(
strcmp(str_ip,LastIP[i],false) == 0)
        {
            if(
s-LastTime[i] < RTIME)return Kick(playerid);
            else
            {
                
LastIP[i] = "";
                
LastTime[i] = 0;
                break;
            }
        }
    }
    return 
1;
}

public 
OnPlayerDisconnect(playeridreason)
{
    for(new 
i,gettime();i<sizeof(LastIP),i++)
    {
        if(
s-LastTime[i] > RTIME)
        {
            
LastIP[i] = "";
            
LastTime[i] = 0;
        }
        if(
strlen(LastIP[i]))continue;
        
GetPlayerIp(playeridLastIP[i], 20 );
        
LastTime[i] = gettime();
        break;
    }
    return 
1;

Stepashka is offline   Reply With Quote
Old 13/07/2010, 08:35 AM   #3
Maggi
Little Clucker
 
Join Date: Jul 2010
Posts: 31
Reputation: 0
Default Re: Anti Quick Reconnect

Ip адрес хранится в 4 байтах...и сравнение будет тогда легче .... слабо запаковать?)
__________________
[RUS] NN J-Actio
--= SA:MP FAN =--
Эй, скрипетры, вы знаете что такое творческая свобода? в любом случае посетите сайт мта, поиграйте немного на гоночных/дм серверах, посмотрите как часто происходят обновления проекта (где то раз в 2 дня) а потом сами решайте...это не реклама, просто проверьте если вы никогда не играли в мта...ЗЫ: если модер спросит что тут написано вы не знаете о чем идет речь))) И еще, не позволяйте куйману обманывать себя...ясное дело, ктото делает гигантский рп сервер и он на 80% завершен и читая это сообщение он закроет глаза, но это ваше дело, я лишь предлагаю попробовать самим что это такое а потом решить: продолжать обманываться или делать реальные моды с большими возможностями
Maggi is offline   Reply With Quote
Old 13/07/2010, 08:41 AM   #4
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,750
Reputation: 138
Default Re: Anti Quick Reconnect

Сомневаюсь что все эти запаковки прибавять скорости, а ради небольшого выйгриша в используемой памяти вообще глупо.
Stepashka is offline   Reply With Quote
Old 13/07/2010, 12:19 PM   #5
slikki
Big Clucker
 
slikki's Avatar
 
Join Date: Dec 2009
Posts: 60
Reputation: 0
Default Re: Anti Quick Reconnect

Code:
[16:14:00] [join] Test has joined the server (3:127.0.0.1)
[16:14:03] [part] Test has left the server (3:1)
[16:14:03] Incoming connection: 127.0.0.1:4097
[16:14:03] [join] Test has joined the server (3:127.0.0.1)
[16:14:03] [part] Test has left the server (3:2)
[16:14:04] Incoming connection: 127.0.0.1:4099
[16:14:04] [join] Test has joined the server (4:127.0.0.1)
[16:14:04] [part] Test has left the server (4:2)
[16:14:05] Incoming connection: 127.0.0.1:4101
[16:14:05] [join] Test has joined the server (5:127.0.0.1)
[16:14:05] [part] Test has left the server (5:2)
[16:14:05] Incoming connection: 127.0.0.1:4103
[16:14:05] [join] Test has joined the server (6:127.0.0.1)
[16:14:05] [part] Test has left the server (6:2)
[16:14:06] Incoming connection: 127.0.0.1:4105
[16:14:06] [join] Test has joined the server (7:127.0.0.1)
[16:14:06] [part] Test has left the server (7:2)
[16:14:07] Incoming connection: 127.0.0.1:4107
[16:14:07] [join] Test has joined the server (8:127.0.0.1)
[16:14:07] [part] Test has left the server (8:2)
[16:14:07] Incoming connection: 127.0.0.1:4109
[16:14:07] [join] Test has joined the server (9:127.0.0.1)
[16:14:07] [part] Test has left the server (9:2)
[16:14:08] Incoming connection: 127.0.0.1:4111
[16:14:08] [join] Test has joined the server (10:127.0.0.1)
[16:14:08] [part] Test has left the server (10:2)
[16:14:08] Incoming connection: 127.0.0.1:4113
[16:14:08] [join] Test has joined the server (11:127.0.0.1)
[16:14:08] [part] Test has left the server (11:2)
[16:14:09] Incoming connection: 127.0.0.1:4115
[16:14:09] [join] Test has joined the server (12:127.0.0.1)
[16:14:09] [part] Test has left the server (12:2)
[16:14:10] Incoming connection: 127.0.0.1:4117
[16:14:10] [join] Test has joined the server (13:127.0.0.1)
[16:14:10] [part] Test has left the server (13:2)
[16:14:10] Incoming connection: 127.0.0.1:4119
[16:14:10] [join] Test has joined the server (14:127.0.0.1)
[16:14:10] [part] Test has left the server (14:2)
[16:14:11] Incoming connection: 127.0.0.1:4121
[16:14:11] [join] Test has joined the server (15:127.0.0.1)
[16:14:11] [part] Test has left the server (15:2)
[16:14:11] Incoming connection: 127.0.0.1:4123
[16:14:11] [join] Test has joined the server (16:127.0.0.1)
[16:14:11] [part] Test has left the server (16:2)
[16:14:12] Incoming connection: 127.0.0.1:4125
[16:14:12] [join] Test has joined the server (17:127.0.0.1)
[16:14:12] [part] Test has left the server (17:2)
[16:14:13] Incoming connection: 127.0.0.1:4129
[16:14:13] [join] Test has joined the server (19:127.0.0.1)
[16:14:13] [part] Test has left the server (19:1)
[16:14:14] Incoming connection: 127.0.0.1:4131
[16:14:14] [join] Test has joined the server (20:127.0.0.1)
[16:14:14] [part] Test has left the server (20:1)
[16:14:15] Incoming connection: 127.0.0.1:4133
[16:14:15] [join] Test has joined the server (4:127.0.0.1)
[16:14:15] [part] Test has left the server (4:1)
[16:14:16] Incoming connection: 127.0.0.1:4135
[16:14:16] [join] Test has joined the server (5:127.0.0.1)
[16:14:17] [part] Test has left the server (5:1)
[16:14:17] Incoming connection: 127.0.0.1:4137
[16:14:17] [join] Test has joined the server (6:127.0.0.1)
[16:14:18] [part] Test has left the server (6:1)
[16:14:18] Incoming connection: 127.0.0.1:4139
[16:14:18] [join] Test has joined the server (7:127.0.0.1)
[16:14:18] [part] Test has left the server (7:2)
[16:14:19] Incoming connection: 127.0.0.1:4141
[16:14:19] [join] Test has joined the server (8:127.0.0.1)
[16:14:20] [part] Test has left the server (8:1)
[16:14:20] Incoming connection: 127.0.0.1:4143
[16:14:20] [join] Test has joined the server (8:127.0.0.1)
[16:14:20] [part] Test has left the server (8:2)
[16:14:21] Incoming connection: 127.0.0.1:4145
[16:14:21] [join] Test has joined the server (8:127.0.0.1)
[16:14:21] [part] Test has left the server (8:1)
[16:14:21] Incoming connection: 127.0.0.1:4147
[16:14:21] [join] Test has joined the server (11:127.0.0.1)
[16:14:21] [part] Test has left the server (11:2)
[16:14:22] Incoming connection: 127.0.0.1:4149
[16:14:22] [join] Test has joined the server (12:127.0.0.1)
[16:14:23] [part] Test has left the server (12:1)
[16:14:23] Incoming connection: 127.0.0.1:4151
[16:14:23] [join] Test has joined the server (13:127.0.0.1)
[16:14:23] [part] Test has left the server (13:2)
[16:14:24] Incoming connection: 127.0.0.1:4153
[16:14:24] [join] Test has joined the server (14:127.0.0.1)
[16:14:24] [part] Test has left the server (14:1)
[16:14:24] Incoming connection: 127.0.0.1:4155
[16:14:24] [join] Test has joined the server (14:127.0.0.1)
[16:14:24] [part] Test has left the server (14:2)
[16:14:26] Incoming connection: 127.0.0.1:4157
[16:14:26] [join] Test has joined the server (14:127.0.0.1)
[16:14:26] [part] Test has left the server (14:1)
[16:14:26] Incoming connection: 127.0.0.1:4159
[16:14:26] [join] Test has joined the server (14:127.0.0.1)
[16:14:26] [part] Test has left the server (14:2)
[16:14:27] Incoming connection: 127.0.0.1:4161
[16:14:27] [join] Test has joined the server (15:127.0.0.1)
[16:14:27] [part] Test has left the server (15:1)
[16:14:28] Incoming connection: 127.0.0.1:4163
[16:14:28] [join] Test has joined the server (15:127.0.0.1)
[16:14:28] [part] Test has left the server (15:2)
хм, я поменял кик на бан и перед тем как забанит успеваю зафлудить весь чат банить только с 20 раза, изза чего так может быть?
slikki is offline   Reply With Quote
Old 13/07/2010, 01:19 PM   #6
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: Anti Quick Reconnect

Степаха, ты не прав ((: Ты не сомневайся, если мастер так сделал, значит оно имеет значение, смысл и предназначение, ну и, естественно, выигрыш в скорости, меньший объем озу и т.д. и т.п. Кстати, ты не учел в своем скрипте другие важные аспекты.

slikki, сэмп ваще не совершенен, поэтому к одной блокировочной системе надо (кто бы сомневался) добавлять дополнительные, которые: что-то блокируют в чате, в игре, в моде и еще где-то. Я сам не люблю ФСки запускать, исключением являются только те, которые абсолютно не влияют на механизмы в самом моде.

- Не слышно отзывов по коду, неужели все работает как часы?
- Отзывы по поведению скрипта выкладывайте более детальные.
MX_Master is offline   Reply With Quote
Old 13/07/2010, 03:45 PM   #7
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,750
Reputation: 138
Default Re: Anti Quick Reconnect

Quote:
Originally Posted by MX_Master View Post
ты не учел в своем скрипте другие важные аспекты.
и какие?
Stepashka is offline   Reply With Quote
Old 13/07/2010, 04:12 PM   #8
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: Anti Quick Reconnect

Самый главный аспект - ФС может быть включен уже после того, как игроки на серв законектились. И как раз таких игроков ФС твой выпустит из виду. Это ваще ошибка многих ФСописателей. Забывается, что ФС это не мод, который загружается до любого из конектов. А фс - это динамичный скрипт, который требует в себе больше динамики в обработке данных.
MX_Master is offline   Reply With Quote
Old 13/07/2010, 04:24 PM   #9
slikki
Big Clucker
 
slikki's Avatar
 
Join Date: Dec 2009
Posts: 60
Reputation: 0
Default Re: Anti Quick Reconnect

хм, а при дисконнекте не нужно учитывать как игрок отключился? ведь бывает вылетает при обрыве связи и тут же подключается обратно, скрипт посчитает как реконнект?
slikki is offline   Reply With Quote
Old 13/07/2010, 04:29 PM   #10
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: Anti Quick Reconnect

при вылете все равно же ты тратишь время, чтобы нажать на конект, а у кого-то хак стоит, он не выходя с игры сразу конектится.

-- слегка подумав --

ты после вылета игры сможешь зайти обратно быстрее чем за 5 секунд? ))
MX_Master 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



All times are GMT. The time now is 05:03 AM.


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