В теме 44 сообщения

не работает оффбан и бан. Хотя бан по ип работает и iban - бан навсегда тоже.

Спойлер

CMD:ban(playerid,params[])
{
    AdminCommand(3);
    new nsa[120];
    if(sscanf(params,"ids[60]",params[0], params[1], params[2])) return SCM(playerid, COLOR_GREY, "Используйте: /ban [id] [дни] [причина]");
    if(params[1] < 1 || params[1] > 30) return SCM(playerid, COLOR_GREY, "Нельзя меньше 1 и больше 30!");
    GetPlayerName(params[0], gp, sizeof(gp));
    new ip[16];
    GetPlayerIp(params[0], ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
    com
    format(nsa,128,"Администратор %s[%d] заблокировал аккаунт %s на %d дней. Причина: %s",sn, playerid, gp, params[1],params[2]);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(params[0], slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[A] [IP: %s] REG-IP: [%s]",slip, info[params[0]][pRegIP]);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + params[2]*86400;
    new data[16];
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,params[2]);
    mysql_query(query);
    Kicked(params[0]);
    ainfo[playerid][aBan] ++;
    return 1;
}
CMD:offban(playerid, params[])
{
    AdminCommand(4);
    new nick,result[128],ip[16],data[16];
    if(sscanf(params, "s[32]s[60]", nick,result)) return SCM(playerid, COLOR_GREY, "Èñïîëüçóéòå: /offban [nick_name] [ïðè÷èíà]");
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(!mysql_fetch_row_format(query)) return SCM(playerid, -1, "Äàííûé àêêàóíò íå íàéäåí â áàçå äàííûõ!");
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query) == 1) return SCM(playerid, -1, "Äàííûé àêêàóíò óæå íàõîäèòñÿ â áàíëèñòå!");
    GetPlayerName(nick, gp, sizeof(gp));
    GetPlayerIp(nick, ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
     new nsa[128];
    format(nsa,128,"Àäìèíèñòðàòîð %s[%d] çàáëîêèðîâàë àêêàóíò %s . Ïðè÷èíà: %s",sn, playerid, gp,result);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(playerid, slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[IP: %s]",slip);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + 31*86400;
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,result);
    mysql_query(query);
    mysql_free_result();
    return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что означает не отображается? При бане игроку не отображается причина, не кикает и т.д, или все это выполняется, или при перезаходе пускает на сервер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при перезаходе пускает на сервер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, Pirat сказал:

при перезаходе пускает на сервер

Посмотри mysql_log, может не заносится запись в бд, и скинь проверку на бан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где проверка на бан?

 

 

mysql log пуст

При оффбане стопается сервер тестил на 2 хостах результат тот же 

Заметка от Cawfee , создано

Объединил сообщения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
58 минут назад, Pirat сказал:

mysql log пуст

При оффбане стопается сервер тестил на 2 хостах результат тот же 

Проверка на бан должна быть при коннекте игрока, то есть начинай с OnPlayerConnect и иди дальше по функциям, которые в нем вызывается. Чаще всего называется она "OnCheckPlayerBan" и т.д, что-то таком духе. Скинь код оффбана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat Посмотри в таблице база данных типо такого -  "bans", есть ли там ник игрока которого вы забанили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

паблик онплаерконнект
 

Спойлер

public OnPlayerConnect(playerid)
{
    SetPlayerColor(playerid, 0xFFFFFF22);
    if(rej[playerid] > gettime())
    {
        SCM(playerid, -1, "(Слово удалено системой)! "c_red"Неизвестная ошибка");
        Kicked(playerid);
        return 0;
    }
    GetPlayerName(playerid, info[playerid][pName], MAX_PLAYER_NAME);
    Clear(playerid);
    LoadBanList(playerid);
    LoadBanIpList(playerid);
    rej[playerid] = gettime()+2;
    SetPlayerMapIcon(playerid, 12, 2495.3909,-1691.1396,14.7656, 62, 0, MAPICON_LOCAL); //Иконка Grove
    SetPlayerMapIcon(playerid, 13, 2000.0322, -1114.0546, 16.7380, 59, 0, MAPICON_LOCAL); //Иконка Ballas
    SetPlayerMapIcon(playerid, 14, 2801.9202,-1936.3910,13.5469, 61, 0, MAPICON_LOCAL); //Иконка Rifa
    SetPlayerMapIcon(playerid, 15, 2756.3247, -1182.8079, 16.7380, 60, 0, MAPICON_LOCAL); //Иконка Vagos
    SetPlayerMapIcon(playerid, 16, 2185.8733,-1815.2267,13.5469, 58, 0, MAPICON_LOCAL); //Иконка Aztecas
    //-TextDraw-----------------------------------------------------------------
    capt0[playerid] = TextDrawCreate(129.000000, 218.862899, "usebox");
    TextDrawLetterSize(capt0[playerid], 0.000000, 5.925307);
    TextDrawTextSize(capt0[playerid], 13.666652, 0.000000);
    TextDrawAlignment(capt0[playerid], 1);
    TextDrawColor(capt0[playerid], 0);
    TextDrawUseBox(capt0[playerid], true);
    TextDrawBoxColor(capt0[playerid], 102);
    TextDrawSetShadow(capt0[playerid], 0);
    TextDrawSetOutline(capt0[playerid], 0);
    TextDrawFont(capt0[playerid], 0);

    capt1[playerid] = TextDrawCreate(128.666687, 218.863052, "usebox");
    TextDrawLetterSize(capt1[playerid], 0.000000, 1.083744);
    TextDrawTextSize(capt1[playerid], 13.666645, 0.000000);
    TextDrawAlignment(capt1[playerid], 1);
    TextDrawColor(capt1[playerid], 0);
    TextDrawUseBox(capt1[playerid], true);
    TextDrawBoxColor(capt1[playerid], 102);
    TextDrawSetShadow(capt1[playerid], 0);
    TextDrawSetOutline(capt1[playerid], 0);
    TextDrawFont(capt1[playerid], 0);

    capt2[playerid] = TextDrawCreate(16.333328, 230.477691, "usebox");
    TextDrawLetterSize(capt2[playerid], 0.000000, -0.198973);
    TextDrawTextSize(capt2[playerid], 126.333358, 0.000000);
    TextDrawAlignment(capt2[playerid], 1);
    TextDrawColor(capt2[playerid], 0);
    TextDrawUseBox(capt2[playerid], true);
    TextDrawBoxColor(capt2[playerid], -2139094785);
    TextDrawSetShadow(capt2[playerid], 0);
    TextDrawSetOutline(capt2[playerid], 0);
    TextDrawFont(capt2[playerid], 0);

    capt3[playerid] = TextDrawCreate(38.999950, 216.533325, "CAPTURE");
    TextDrawLetterSize(capt3[playerid], 0.350999, 1.301333);
    TextDrawAlignment(capt3[playerid], 1);
    TextDrawColor(capt3[playerid], 512819199);
    TextDrawUseBox(capt3[playerid], true);
    TextDrawBoxColor(capt3[playerid], 0);
    TextDrawSetShadow(capt3[playerid], 0);
    TextDrawSetOutline(capt3[playerid], 1);
    TextDrawBackgroundColor(capt3[playerid], 51);
    TextDrawFont(capt3[playerid], 2);
    TextDrawSetProportional(capt3[playerid], 1);

    capt4[playerid] = TextDrawCreate(16.999986, 229.807449, "CMDONES");
    TextDrawLetterSize(capt4[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt4[playerid], 1);
    TextDrawColor(capt4[playerid], -2139062017);
    TextDrawSetShadow(capt4[playerid], 0);
    TextDrawSetOutline(capt4[playerid], 1);
    TextDrawBackgroundColor(capt4[playerid], 255);
    TextDrawFont(capt4[playerid], 2);
    TextDrawSetProportional(capt4[playerid], 1);

    capt5[playerid] = TextDrawCreate(31.666654, 239.933410, "VS");
    TextDrawLetterSize(capt5[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt5[playerid], 1);
    TextDrawColor(capt5[playerid], -12254977);
    TextDrawSetShadow(capt5[playerid], 0);
    TextDrawSetOutline(capt5[playerid], 1);
    TextDrawBackgroundColor(capt5[playerid], 255);
    TextDrawFont(capt5[playerid], 2);
    TextDrawSetProportional(capt5[playerid], 1);

    capt6[playerid] = TextDrawCreate(16.999984, 249.888885, "CMDONES");
    TextDrawLetterSize(capt6[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt6[playerid], 1);
    TextDrawColor(capt6[playerid], -2139062017);
    TextDrawSetShadow(capt6[playerid], 0);
    TextDrawSetOutline(capt6[playerid], 1);
    TextDrawBackgroundColor(capt6[playerid], 255);
    TextDrawFont(capt6[playerid], 2);
    TextDrawSetProportional(capt6[playerid], 1);

    capt7[playerid] = TextDrawCreate(16.999982, 261.259338, "TIME:");
    TextDrawLetterSize(capt7[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt7[playerid], 1);
    TextDrawColor(capt7[playerid], -1378294017);
    TextDrawSetShadow(capt7[playerid], 0);
    TextDrawSetOutline(capt7[playerid], 1);
    TextDrawBackgroundColor(capt7[playerid], 255);
    TextDrawFont(capt7[playerid], 2);
    TextDrawSetProportional(capt7[playerid], 1);

    capt8[playerid] = TextDrawCreate(103.333290, 229.488952, "0");
    TextDrawLetterSize(capt8[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt8[playerid], 1);
    TextDrawColor(capt8[playerid], -2139062017);
    TextDrawSetShadow(capt8[playerid], 0);
    TextDrawSetOutline(capt8[playerid], 1);
    TextDrawBackgroundColor(capt8[playerid], 255);
    TextDrawFont(capt8[playerid], 2);
    TextDrawSetProportional(capt8[playerid], 1);

    capt9[playerid] = TextDrawCreate(103.333282, 249.155563, "1");
    TextDrawLetterSize(capt9[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt9[playerid], 1);
    TextDrawColor(capt9[playerid], -2139062017);
    TextDrawSetShadow(capt9[playerid], 0);
    TextDrawSetOutline(capt9[playerid], 1);
    TextDrawBackgroundColor(capt9[playerid], 255);
    TextDrawFont(capt9[playerid], 2);
    TextDrawSetProportional(capt9[playerid], 1);

    capt10 = TextDrawCreate(93.999938, 261.355651, "10:00");
    TextDrawLetterSize(capt10, 0.300667, 1.301333);
    TextDrawAlignment(capt10, 1);
    TextDrawColor(capt10, -1378294017);
    TextDrawSetShadow(capt10, 0);
    TextDrawSetOutline(capt10, 1);
    TextDrawBackgroundColor(capt10, 255);
    TextDrawFont(capt10, 2);
    TextDrawSetProportional(capt10, 1);
    for(new i = 0; i < 100; i++)
    {
        GangZoneShowForPlayer(playerid, GZInfo[gID], GetGangZoneColor(i));
        if(BattleZone == true)
        {
            GangZoneFlashForPlayer(playerid,GZInfo[gID], GetGangZoneColor(GZInfo[gFrak]));
        }
    }
    return 1;
}

offban
CMD:offban(playerid, params[])
{
    AdminCommand(4);
    new nick,result[128],ip[16],data[16];
    if(sscanf(params, "s[32]s[60]", nick,result)) return SCM(playerid, COLOR_GREY, "Èñïîëüçóéòå: /offban [nick_name] [ïðè÷èíà]");
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(!mysql_fetch_row_format(query)) return SCM(playerid, -1, "Äàííûé àêêàóíò íå íàéäåí â áàçå äàííûõ!");
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query) == 1) return SCM(playerid, -1, "Äàííûé àêêàóíò óæå íàõîäèòñÿ â áàíëèñòå!");
    GetPlayerName(nick, gp, sizeof(gp));
    GetPlayerIp(nick, ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
     new nsa[128];
    format(nsa,128,"Àäìèíèñòðàòîð %s[%d] çàáëîêèðîâàë àêêàóíò %s . Ïðè÷èíà: %s",sn, playerid, gp,result);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(playerid, slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[IP: %s]",slip);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + 31*86400;
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,result);
    mysql_query(query);
    mysql_free_result();
    return 1;
}

 

 

нету в таблице mysql того кого я забанил

 

Заметка от Cawfee , создано

3.2. Код больше 10 строк брать еще и под спойлер. Как это сделать рассказано в разделе "FAQ"

Устное предупреждение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так что ктото поможет?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LoadBanList(playerid)     

LoadBanIpList(playerid)

 

В студию

при выполнении команд "mysql_log" нет? таблица "banlist" есть в базе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SCRIPTMAN,

LoadBanList(playerid)     

LoadBanIpList(playerid)

 

В студию

Вот это не понял.

Таблица есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat, вспомните телеперадачу "Поле чудес" с Леонидом Якубовичем. Как он говорил постоянно "В студию", чтобы какой-либо предмет (например, подарок для победителя) вынесли в зал съемок на публику, тем самым продемонстрировали предмет всем. Вот и на форумах так. Частенько можно услышать "в студию", что предполагает необходимость отправить что-либо (в данном случае код функций LoadBanList и LoadBanIpList).

 

Спойлер

Безымянный.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спойлер

stock LoadBanIpList(playerid)
{
    new ip[16], endpos = 0;
    GetPlayerIp(playerid, ip, sizeof(ip));
    format(query, sizeof(query), "SELECT * FROM `baniplist` WHERE `IP` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query))
    {
        SCM(playerid, COLOR_LIGHTRED,"Âàø IP çàáëîêèðîâàí!");
        Kicked(playerid);
        return 1;
    }
    mysql_free_result();
    //
    for(new i = 0; i < 2; i++)
    {
        endpos = strfind(ip, ".", true,endpos+1);
    }
    if(endpos != -1) strdel(ip, endpos, sizeof(ip));
    format(query, sizeof(query), "SELECT * FROM `baniplist` WHERE `IP` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query))
    {
        SCM(playerid, COLOR_LIGHTRED, "Âàø IP àäðåñ çàáëîêèðîâàí!");
        Kicked(playerid);
        return 1;
    }
    mysql_free_result();
    return 1;
}

 

Спойлер

stock LoadBanList(playerid)
{
    new name[MAX_PLAYER_NAME], unbandate, dates[16],reason[128];
    new str[150],totalstr[600];
    GetPlayerName(playerid, sn, sizeof(sn));
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", sn);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row(query) == 1)
    {
        mysql_fetch_row_format(query, "|");
        sscanf(query, "p<|>s[32]s[16]s[32]s[128]",name,dates,unbandate,reason);
        mysql_free_result();
        if(unbandate > gettime())
        {
            format(str, sizeof(str),"{FF6347}NICK:\t\t\t%s\n",name);
            strcat(totalstr, str);
            format(str, sizeof(str),"Äàòà áàíà:\t\t%s\n",dates);
            strcat(totalstr, str);
            format(str, sizeof(str),"Ïðè÷èíà:\t\t%s",reason);
            strcat(totalstr, str);
            SPD(playerid,0,DIALOG_STYLE_MSGBOX,"Áëîêèðîâêà",totalstr,"Çàêðûòü","");
            Kicked(playerid);
        }
        else
        {
            format(query, sizeof(query), "DELETE FROM `banlist` WHERE `Name` = '%s'",sn);
            mysql_query(query);
            SCM(playerid, COLOR_YELLOW, "Âàø àêêàóíò óñïåøíî {00FF00}ðàçáëîêèðîâàí!{33FFFF} Âû ìîæåòå ïðîäîëæèòü èãðó!");
        }
        mysql_free_result();
    }
    return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat Попробуйте заменить в команде /ban, вот эту строчку на мою. И зайдите в FileZilla, и скиньте нам строки из файла - mysql_log.txt

format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUES ('%s', '%s', '%i', '%s')",gp,data,unbandate,params[2]);

Отредактировано пользователем Nekit_Krut18
Причина: Подправил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Nekit_Krut18 А для чего тебе конфигурационный файл сервера понадобился, позволь поинтересоваться? :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@20th century Какой конфигурационные? Логи мускулы.?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При вводе команды, говоришь, сервер останавливается? Подключи crashdetect, заново введи команду и покажи логи из файла server_log.txt.

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

При копировании участков кода из текстового редактора переключай раскладку на русский язык, дабы избежать кривого копирования кириллицы.

Покажи команду /iban если уверен, что она точно работает в отличии от твоих.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Nekit_Krut18, На что заменить? mysql после банов пуст

@20th century, У меня нету крашдетекта. КМД iban идет заспись в табл с аками в раздел iban. Кмд проверил работает отлично. А ban offban нет может и unban тоже

 

Спойлер

CMD:iban(playerid, params[])
{
    AdminCommand(5);
    if(sscanf(params,"is[60]",params[0], params[1]))return SCM(playerid, COLOR_GREY, "Используйте: /iban [id] [причина]");
    GPN
    GGGPN
    new nsa[120];
    format(nsa, sizeof(nsa), "Администратор %s[%d] навсегда заблокировал доступ игроку %s на сервер. Причина: %s", sn, playerid, gp, params[1]);
    SCMToAll(COLOR_LIGHTRED, nsa);
    info[params[0]][pIBAN] = 1;
    new ip[20];
    new n[65];
    GetPlayerIp(params[0], ip, sizeof(ip));
    format(n, sizeof(n), "[A] IP: [%s] REG-IP: [%s]", ip, info[params[0]][pRegIP]);
    SCMA(COLOR_LIGHTRED, n);
    Kicked(params[0]);
    return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так..

В OnGameModeInit:

mysql_log(ALL);

 

Заходишь на сервер, и используешь команду /ban, после выходишь, mysql_log скидываешь нам сюда. И ещё, в таблице вообще появляется аккаунт игрока в списке забаненных или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SCRIPTMAN, я проверял после бана пуст, нету в табл

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat включи логирование и сделай что я тебе сказал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, SCRIPTMAN сказал:

@Pirat включи логирование и сделай что я тебе сказал

как включить логирование?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat я писал выше. Посмотри.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SCRIPTMAN,

C:\Users\User\Desktop\gamemodes\dm.pwn(386) : error 017: undefined symbol "mysql_log"
Pawn compiler 3.2.3664              Copyright (c) 1997-2016, ITB CompuPhase


1 Error.
Ошибка

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Pirat Попробуйте - 

mysql_log(LOG_ALL);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От pigeon
      доброго времени суток. делал квесты для самп сервера, при компиляции возникла ошибка (9230) : error 052: multi-dimensional arrays must be fully initialized. помогите, пожалуйста, я чайник. ошибка в строке 9230.
      P. S. на орфографию в квестах не обращайте внимания,  это не я писал.
       
       

    • От Tookie Johnson
      Здравствуйте, не будет ли у кого нибудь системы анти-толкания транспортного средства для всего сервера?