Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для wea
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.01.2016
    Сообщений
    31
    Репутация:
    1 ±

    проблема с ackslimit

    Всем привет.
    Вот проблема с системой рекламы суть в том что когда в обьявление водишь мат то в логах появляется много
    Код HTML:
    client exceeded 'ackslimit' 127.0.0.1:64358 (4012) Limit: 3000/sec
    Ну как бы ackslimit для меня не хорошо :D и не хочу его увеличивать проблемы я выявил и вот она ниже

    Код:
    static const stock ArchiNeMateritsa[33][33] = {"***","сука","суки","ебаные","пизда", "тварь","пидор","пидар","пидорас","блять", "блядь","долбаёб"	,"долбаеб","гандон","уёбок","уебок","пиздец","ебало",	"пидарас", "еблан","ебать","охуеть","ебаться","чмошник","сучара","казлина",".ru","****","даун","пнх","пидорасы","пидр","хуесосы"};
    Код:
    case 5388:
    		{
    		    if(!response) return SPD(playerid, 5387, DIALOG_STYLE_LIST, "{FF6F00}>> Управление баннером", "{FFFFFF}Выберите одно из списка меню:\n- Редактировать баннер\n- Удалить баннер", "Принять", "Отмена");
    			for(new s; s < sizeof(ArchiNeMateritsa); s++)
    			{
    				new pos;
    				while((pos = strfind(inputtext,ArchiNeMateritsa[s],true)) != -1) for(new i = pos, j = pos + strlen(ArchiNeMateritsa[s]); i < j; i++)
    				{
    		    		new string[144+8];
    					format(string, 144+8, "{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
    					SPD(playerid, 5387, DIALOG_STYLE_INPUT, "{FF6F00}>> Редактирование баннера", string, "Принять", "Отмена");
    					break;
    				}
    			}
    			if(strval(inputtext) > 144 || !Reklama(playerid, inputtext))
    			{
    				new string[144+8];
    				format(string, 144+8, "{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
    				SPD(playerid, 5387, DIALOG_STYLE_INPUT, "{FF6F00}>> Редактирование баннера", string, "Принять", "Отмена");
    				return 1;
    			}
    			strmid(BannerInfo[Player_Number_Banner[playerid]-1][tText], inputtext, 0, strlen(inputtext), 255);
    			new string[144+8];
    			format(string,sizeof(string),"{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
    		   	SetDynamicObjectMaterialText(addnews[Player_Number_Banner[playerid]-1], 0, string, 90, "Impact", 24, 0, -32256, -16777216, 1);
    			new mysql_string[100];
    			mysql_format(connects, mysql_string, 100, "UPDATE `banners` SET `tText` = '%s' WHERE `tID` = '%d'", inputtext, Player_Number_Banner[playerid]);
    			mysql_empty(connects, mysql_string);
    			return 1;
    		}
    Код:
    case 5315:
    		{
    			if(!response)
    			{
    				new string[200];
    				format(string, 200, "{FFFFFF}Баннер №%d\nДанный баннер свободен!\n\nДля аренды баннера укажите количество дней для аренды [1-7]", Player_Number_Banner[playerid]);
    				SPD(playerid, 5314, DIALOG_STYLE_INPUT, "{FF6F00}>> Аренда баннера [1]", string, "Далее", "Отмена");
    			    return 1;
    			}
    			for(new s; s < sizeof(ArchiNeMateritsa); s++)
    			{
    				new pos;
    				while((pos = strfind(inputtext,ArchiNeMateritsa[s],true)) != -1) for(new i = pos, j = pos + strlen(ArchiNeMateritsa[s]); i < j; i++)
    				{
    					SPD(playerid, 5315, DIALOG_STYLE_INPUT, "{FF6F00}>> Аренда баннера [2]", "{FFFFFF}Введите текст для рекламы, чтобы перенести строку вниз, перед перенесущим словом поставьте знак ''\n''!\n\n* Примечание:\n- Текст не должен содержать матершинные слова!\n- Запрещено использование транслита!\n- Лидер организации в праве удалить Ваш баннер в случае несоблюдения правил!\n- Запрещено использовать больше 144 символов!", "Далее", "Назад");
    					break;
    				}
    			}
    			if(strval(inputtext) > 144) return SPD(playerid, 5315, DIALOG_STYLE_INPUT, "{FF6F00}>> Аренда баннера [2]", "{FFFFFF}Введите текст для рекламы, чтобы перенести строку вниз, перед перенесущим словом поставьте знак ''\n''!\n\n* Примечание:\n- Текст не должен содержать матершинные слова!\n- Запрещено использование транслита!\n- Лидер организации в праве удалить Ваш баннер в случае несоблюдения правил!\n- Запрещено использовать больше 144 символов!", "Далее", "Назад");
    			if(!Reklama(playerid, inputtext)) return SPD(playerid, 5315, DIALOG_STYLE_INPUT, "{FF6F00}>> Аренда баннера [2]", "{FFFFFF}Введите текст для рекламы, чтобы перенести строку вниз, перед перенесущим словом поставьте знак ''\n''!\n\n* Примечание:\n- Текст не должен содержать матершинные слова!\n- Запрещено использование транслита!\n- Лидер организации в праве удалить Ваш баннер в случае несоблюдения правил!\n- Запрещено использовать больше 144 символов!", "Далее", "Назад");
    			SetPVarString(playerid, #banner_text, inputtext);
    			new string[200];
    			format(string, 200, "{FFFFFF}Вы успешно заполнили все поля для аренды, осталась лишь оплата!\nПо расчётам Вы должны за аренду {FF6F00}%d${FFFFFF}.\nВы согласны?",strlen(inputtext)*150);
    			SPD(playerid, 5316, DIALOG_STYLE_MSGBOX, "{FF6F00}>> Аренда баннера [3]", string, "Далее", "Назад");
    			return 1;
    		}
    Как исправить можно?
    только чтобы не увеличивать ackslimit

  2. #2
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    PHP код:
    static const stock 
    ново-непонятное что-то происходит :)

  3. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Очевидно, что проблема здесь:
    PHP код:
    for(new ssizeof(ArchiNeMateritsa); s++)
    {
        new 
    pos;
        while((
    pos strfind(inputtext,ArchiNeMateritsa[s],true)) != -1)
            for(new 
    pospos strlen(ArchiNeMateritsa[s]); ji++)
            {
                new 
    string[144+8];
                
    format(string144+8"{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
                
    SPD(playerid5387DIALOG_STYLE_INPUT"{FF6F00}>> Редактирование баннера"string"Принять""Отмена");
                break;
            }

    Можно использовать goto (не рекомендую):
    PHP код:
    for(new ssizeof(ArchiNeMateritsa); s++)
    {
        new 
    pos;
        while((
    pos strfind(inputtext,ArchiNeMateritsa[s],true)) != -1)
            for(new 
    pospos strlen(ArchiNeMateritsa[s]); ji++)
            {
                new 
    string[144+8];
                
    format(string144+8"{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
                
    SPD(playerid5387DIALOG_STYLE_INPUT"{FF6F00}>> Редактирование баннера"string"Принять""Отмена");
                goto 
    loop_exit;
            }
    }
    loop_exit
    Можно с помощью переменной (не очень красиво):
    PHP код:
    new bool:is_loop_end;

    for(new 
    ssizeof(ArchiNeMateritsa); s++)
    {
        new 
    pos;
        while((
    pos strfind(inputtext,ArchiNeMateritsa[s],true)) != -1)
        {
            for(new 
    pospos strlen(ArchiNeMateritsa[s]); ji++)
            {
                new 
    string[144+8];
                
    format(string144+8"{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
                
    SPD(playerid5387DIALOG_STYLE_INPUT"{FF6F00}>> Редактирование баннера"string"Принять""Отмена");
                
    is_loop_end true;
                break;
            }
            if (
    is_loop_end)
            {
                break;
            }
        }
        if (
    is_loop_end)
        {
            break;
        }

    Наилучшим вариантом будет выделить этот код в функцию:
    PHP код:
    stock FindBadWords(inputtext[])
    {
        for(new 
    ssizeof(ArchiNeMateritsa); s++)
        {
            new 
    pos;
            while((
    pos strfind(inputtext,ArchiNeMateritsa[s],true)) != -1)
            {
                for(new 
    pospos strlen(ArchiNeMateritsa[s]); ji++)
                {
                    return 
    1;
                }
            }
        }

        return 
    0;
    }

    if (
    FindBadWords(inputtext))
    {
        new 
    string[144+8];
        
    format(string144+8"{FFFFFF}%s",BannerInfo[Player_Number_Banner[playerid]-1][tText]);
        
    SPD(playerid5387DIALOG_STYLE_INPUT"{FF6F00}>> Редактирование баннера"string"Принять""Отмена");


    Цитата Сообщение от BadPawn Посмотреть сообщение
    PHP код:
    static const stock 
    ново-непонятное что-то происходит :)
    Что именно непонятно? static ограничивает область видимости, const делает переменную константой, а со stock не выводится предупреждение о неиспользовании.

  4. 2 пользователя(ей) сказали cпасибо:
    BadPawn (04.02.2016) wea (03.02.2016)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •