SCRIPTMAN

Убираем спам пикапов

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

Всем привет, столкнулся с проблемой спамов пикапов, у меня был вариант, который до недавнего времени работал: инклуд, но видимо, с чем-то он начал конфликтовать и давать сбой.

 

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

 

1. Создаём массив "bool: pPickup" (название можете свое, важно, чтобы тип был "bool")

bool: pPickup

2. В действие пикапов, где у вас вызываются диалоги или еще что-то что не должно спамить, добавляете:

if(Player[playerid][pPickup]) return true; // Если значение true, то ничего не происходит
Player[playerid][pPickup] = true; // присваиваем значение true

Получится что-то по типу этого:

if(pickupid == loader_work_pick) // устройство на работу грузчика
{
    if(Player[playerid][pPickup]) return true; // проверка
    Player[playerid][pPickup] = true; // приравнивагте
    if(GetPVarInt(playerid, "loader_work_check") == 0)
    {
        ShowPlayerDialog(playerid, DIALOG_WORK_LOADER, DSM,
        "{2B69E9}Устройство на работу грузчика",
        "{FFFFFF}Вы действительно хотите устроиться\nна работу {2979FF}грузчика?", "Да", "Нет");
        return true;
	}
	else
	{
        ShowPlayerDialog(playerid, DIALOG_WORK_LOADER, DSM,
        "{2B69E9}Увольнение с работы грузчика",
        "{FFFFFF}Вы действительно хотите уволиться\nс работы {2979FF}грузчика?", "Да", "Нет");
        return true;
	}
}

Да, придётся писать в каждом нужном действии, но возможно, именно это вас спасет.

3. Обнуление переменной

Самое интересное. Наверняка, у вас не каждый диалог заканчивается именно этим диалогом, поэтому нам не нужно обнулять переменную, чтобы не начался спам, вы обнуляете в том случае, если заканчивается действие диалога, то есть, например игрок нажимает на правую кнопку "Отмена, нет и т. д.", если же у вас можно идти дальше, но и нажать эту кнопку, то в проверке на левую кнопку вставляете код, который ниже, и идётё по коду дальше, когда у вас будет конечный диалог, после которого ничего уже не будет идти, вы вставляете этот код:

SetTimerEx("@_PickupCheck", 1500, false, "i", playerid); // На правую кнопку не забудье return, вариант на правую кнопку ниже:
return SetTimerEx("@_PickupCheck", 1500, false, "i", playerid);

Так же обнуление следует делать в нулевом диалоге, но с некой проверкой, в последнем примере видно, что у меня заканчивается нулевым диалогом, у меня пойдет обнуление, но для наглядности в конец выполнения кода я добавил еще 1 обнуление:

case DIALOG_NULL: if(Player[playerid][pPickup]) return SetTimerEx("@_PickupCheck", 1500, false, "i", playerid);
// Если массив истинна, то обнуляем.

Сам паблик, который задействован в таймере:

@_PickupCheck(playerid);
@_PickupCheck(playerid)
{
	Player[playerid][pPickup] = false;
}

 

 

Пример обнуления с продолжением диалога:

	   	case DIALOG_PASSPORT_NATIONALITY_END:
	    {
	        if(!response) return SetTimerEx("@_PickupCheck", 1500, false, "i", playerid); // нажал на правую кнопку
            switch(listitem)
            {
                case 0: Player[playerid][pNation] = 1;
                case 1: Player[playerid][pNation] = 2;
                case 2: Player[playerid][pNation] = 3;
 				case 3: Player[playerid][pNation] = 4;
				case 4: Player[playerid][pNation] = 5;
            }
			static const fmt_str[] = "{FFFFFF}Вы {FFFF00}%s\n{FFFFFF}Всё верно?";
    		new string[sizeof(fmt_str)-2+11];
    		format(string, sizeof(string), fmt_str, nationality_name[Player[playerid][pNation]]);
			SPD(playerid, 15, DSM, !"{2B69E9}Получение паспорта", string, !"Да", !"Нет");
	    } // здесь таймера не было, т. к. идёт диалог под номером 15 (у меня он именован)

Пример обнуления без продолжения, в конце получения паспорта:

 case DIALOG_PASSPORT_END:
	    {
	        if(response)
	        {
				SPD(playerid, 0, DSM, "{2B69E9}Поздравляем!",
				!"\
					{FF6A00}Отлично! Вы получили паспорт! Устроиться на работу вы можете в Мэрии!", !"Спасибо", "\
				");
	            Player[playerid][pPassport] = 1;
	            SCM(playerid, COLOR_GREY, !"Чтобы посмотреть свой паспорт, введите: \"/showpass [id]\"");
	            new string[350];
				format(string, sizeof(string),
				 "UPDATE `accounts` SET `Age` = %d, `Nation` = %d, `Passport` = %d WHERE `Name` = '%s'",
				 Player[playerid][pAge],
				 Player[playerid][pNation],
				 Player[playerid][pPassport],
				 GN(playerid)
				 );
				mysql_function_query(connect_mysql, string, false, "", "");
				SetTimerEx("@_PickupCheck", 1500, false, "i", playerid); // после всех действий обнуление
	        }
	        else SPD(playerid, 14, DSL, !"{2B69E9}Получение паспорта", // в этом примере, на правую кнопку идёт возвращение к диалогу или вызов другого диалога, на правые кнопки с таким действием или похожим ОБНУЛЕНИЕ ДЕЛАТЬ НЕ НУЖНО
			!"\
				Русский\nБелорус\nАмериканец\nИтальянец\nУкраинец", !"Выбрать", !"Выход\
			");
			return true;
	    }

 

Использовал таймер в полторы секунды, чтобы игрок успел уйти из зоны действия пикапа, я думаю этого времени хватит.

 

ВНИМАНИЕ: примеры и код я брал из своего мода(уж простите за мой быдло код), все массивы, названия пабликов (@_name) у вас может быть благодаря форвардам, смотрите по своему коду, мой берите как пример.

 

Автор: SCRIPTMAN

 

P.S. Сори за большое кол-во текста =)

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


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

 

(@_name)


Для отделения таймеров от прочих public-функций использую @ как префикс. Удобно весьма.

А насчет большого текста, может просто стоило не кидать огромные куски кода из своего мода? ;)

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


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

@odosenok я его всегда юзаю, а отделяю "Timer" в конце, но думаю еще упростить чтение кода и сделаю @_название паблика_timer(check и т. д.).

Стоило бы и не кидать, но как будто ты не знаешь новичков) Начнут "покажи, а как, а что, а где". Пришлось. Я сам не в восторге от своего кода, так еще и вам показал)))

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

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

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

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

    • SystemDev
      От SystemDev
      Universal RP 1.0
      Скачать файл Доброго времени суток, уважаемые пользователи Pawno-Rus!
      В первую очередь, хочу поздравить всех вас с наступающим новым годом и пожелать вам хорошего окончания этого года, и исполнения всех ваших желаний.
      Ну а теперь перейдём к самой теме, в которой я хочу представить вам свою доработку игрового мода Rockford RP.
      Мод был полностью протестирован моей командой и пофикшен максимум найденных нами багов. Мод был хорошо доработан и я могу с уверенностью заявить что он отлично подойдёт для основы или же под открытие с ним целого проекта!
      Что-ж, не будем много говорить и давайте перейдём к списку проделанной нами работы:
      1. Была полностью переписана система регистрации и авторизации. Более подробно вы можете взглянуть на неё на прикреплённых к теме изображениях.
      2. У домов и квартир теперь есть названия классов: Эконом, Комфорт, Комфорт+, Бизнес, Элитный
      3. Теперь  у каждого бизнеса есть иконка на карте (Их не было у продуктовых магазинов и 24/7)
      4. Были пофикшены актёры в бизнесах и актёры были добавлены в те бизнесы, в которых их не было (Не отображались)
      5. Был подключен и хорошо настроен античит Nex-AC, так-же у администрации теперь есть лист читеров в виде текстдрава в левом нижнем углу
      6. Был удалён весь лишний маппинг с улиц и пляжей, а так-же весь оставшийся маппинг был перенесён в модули
      7. Все текстравы были перенесены в модуль
      8. Проработаны начальные квесты
      9. Теперь у домов есть 3д текст на въезде в гараж и на выходе из гаража
      10. Меню дома теперь можно открыть нажав в доме "F"
      11. Теперь перед покупкой дома, можно взглянуть на него изнутри и уже после этого купить его нажав кнопку "F" в доме
      12. Теперь если нет медиков в игре, то мед.карту можно получить в регистратуре любой из больниц
      13. Пофикшен навигатор (Не всегда совпадали пункты)
      14. Добавлена 5 банда - The Rifa Gang
      15. Гетто теперь стало более обширным (130 квадратов)
      16. Новая система сытости и жажды (При уровне сытости и жажды ниже 20, появляются 2 иконки возле худа с деньгами игрока, их можно увидеть на одном из скриншотов)
      17. Система рулетки (Выдаётся за каждые 3 отыгранных часа. Использовать можно в /mm > Рулетка)
      18. Теперь у стрел мафий тоже есть своя табличка + киллы считаются
      19. Отредактированы и оптимизированы начальные работы (+ ЗП теперь выдаётся в случае смерти, спавна или вылета)
      20. Работа развозчика пиццы была улучшена и добавлена в /gps и в квесты
      21. Рабочий транспорт на работе газонокосильщика теперь бесплатный
      22. Теперь у всех дверей, ворот и шлагбаумов есть 3д текст с информацией как их открыть
      23. Ставка в автоматах казино ЛС теперь снимается сразу
      24. Добавлено казино ЛВ и игра в кости (5 игроков и крупье)
      25. Спавн в гетто был вырезан
      26. Теперь мафии не могут начать стрелу за бизнес, если у бизнеса нет владельца
      27. Крыша бизнеса теперь отображается
      28. Пофикшен "Online/Offline" в /leaders (Не правильно отображала)
      29. Бандам за капт теперь не даётся по 500 вирт
      30. Во время капта или стрелы участники теперь спавнятся на базе организации (Раньше спавнились в больнице с 10 ХП)
      31. Лечение в больнице теперь бесплатное (+ Лечение теперь начинается при нажатии ALT)
      32. Кокаин теперь тяжелый наркотик, а марихуанна лёгкий (Было наоборот)
      33. Убраны звуки в диалогах
      34. Метка поиска дома теперь удаляется
      35. При включении/выключении акций администрацией теперь всех уведомляет и автоматически меняется название сервера (Пример: Universal RP | Акция!)
      36. Переписана /ahelp
      37. Администрация теперь может останавливать стрелу мафий за бизнес (/stopbizwar)
      38. Добавлен запрет на оружие миниган, прибор ночного видения и т.п
      39. Пофикшены все сделки по продаже/обмене имущества (Деньги выдавались наоборот или вовсе не выдавались)
      40. Новая система операций с наличными
      41. Теперь все сделки и предложения происходят по Y/N
      42. Администрация теперь прямо из игры может удалить дом или бизнес: /delbiz /delhouse
      43. Теперь нельзя использовать /invite во время капта и стрелы
      44. Пофикшен текст при /unload (не отображалось кол-во привезённых матов)
      45. Новый 3д текст складов банд и мафий
      46. Для использования часов (/time) теперь нужно купить их в магазине аксессуаров и надеть на персонажа
      47. Для использования макси (/mask) теперь нужно купить её в магазине аксессуаров и надеть на персонажа (Так-же срок действия маски теперь 10 минут)
      и еще 30+ пунктов которые сюда не влезут так что тг @qnusn ( там покажу подробно описание мода)
      Если возникли какие-либо вопросы, пишите в Telegram - @qnusn
      Добавил SystemDev Добавлено 22.11.2024 Категория Моды Автор JobDev  
    • SystemDev
      От SystemDev
      Доброго времени суток, уважаемые пользователи Pawno-Rus!
      В первую очередь, хочу поздравить всех вас с наступающим новым годом и пожелать вам хорошего окончания этого года, и исполнения всех ваших желаний.
      Ну а теперь перейдём к самой теме, в которой я хочу представить вам свою доработку игрового мода Rockford RP.
      Мод был полностью протестирован моей командой и пофикшен максимум найденных нами багов. Мод был хорошо доработан и я могу с уверенностью заявить что он отлично подойдёт для основы или же под открытие с ним целого проекта!
      Что-ж, не будем много говорить и давайте перейдём к списку проделанной нами работы:
      1. Была полностью переписана система регистрации и авторизации. Более подробно вы можете взглянуть на неё на прикреплённых к теме изображениях.
      2. У домов и квартир теперь есть названия классов: Эконом, Комфорт, Комфорт+, Бизнес, Элитный
      3. Теперь  у каждого бизнеса есть иконка на карте (Их не было у продуктовых магазинов и 24/7)
      4. Были пофикшены актёры в бизнесах и актёры были добавлены в те бизнесы, в которых их не было (Не отображались)
      5. Был подключен и хорошо настроен античит Nex-AC, так-же у администрации теперь есть лист читеров в виде текстдрава в левом нижнем углу
      6. Был удалён весь лишний маппинг с улиц и пляжей, а так-же весь оставшийся маппинг был перенесён в модули
      7. Все текстравы были перенесены в модуль
      8. Проработаны начальные квесты
      9. Теперь у домов есть 3д текст на въезде в гараж и на выходе из гаража
      10. Меню дома теперь можно открыть нажав в доме "F"
      11. Теперь перед покупкой дома, можно взглянуть на него изнутри и уже после этого купить его нажав кнопку "F" в доме
      12. Теперь если нет медиков в игре, то мед.карту можно получить в регистратуре любой из больниц
      13. Пофикшен навигатор (Не всегда совпадали пункты)
      14. Добавлена 5 банда - The Rifa Gang
      15. Гетто теперь стало более обширным (130 квадратов)
      16. Новая система сытости и жажды (При уровне сытости и жажды ниже 20, появляются 2 иконки возле худа с деньгами игрока, их можно увидеть на одном из скриншотов)
      17. Система рулетки (Выдаётся за каждые 3 отыгранных часа. Использовать можно в /mm > Рулетка)
      18. Теперь у стрел мафий тоже есть своя табличка + киллы считаются
      19. Отредактированы и оптимизированы начальные работы (+ ЗП теперь выдаётся в случае смерти, спавна или вылета)
      20. Работа развозчика пиццы была улучшена и добавлена в /gps и в квесты
      21. Рабочий транспорт на работе газонокосильщика теперь бесплатный
      22. Теперь у всех дверей, ворот и шлагбаумов есть 3д текст с информацией как их открыть
      23. Ставка в автоматах казино ЛС теперь снимается сразу
      24. Добавлено казино ЛВ и игра в кости (5 игроков и крупье)
      25. Спавн в гетто был вырезан
      26. Теперь мафии не могут начать стрелу за бизнес, если у бизнеса нет владельца
      27. Крыша бизнеса теперь отображается
      28. Пофикшен "Online/Offline" в /leaders (Не правильно отображала)
      29. Бандам за капт теперь не даётся по 500 вирт
      30. Во время капта или стрелы участники теперь спавнятся на базе организации (Раньше спавнились в больнице с 10 ХП)
      31. Лечение в больнице теперь бесплатное (+ Лечение теперь начинается при нажатии ALT)
      32. Кокаин теперь тяжелый наркотик, а марихуанна лёгкий (Было наоборот)
      33. Убраны звуки в диалогах
      34. Метка поиска дома теперь удаляется
      35. При включении/выключении акций администрацией теперь всех уведомляет и автоматически меняется название сервера (Пример: Universal RP | Акция!)
      36. Переписана /ahelp
      37. Администрация теперь может останавливать стрелу мафий за бизнес (/stopbizwar)
      38. Добавлен запрет на оружие миниган, прибор ночного видения и т.п
      39. Пофикшены все сделки по продаже/обмене имущества (Деньги выдавались наоборот или вовсе не выдавались)
      40. Новая система операций с наличными
      41. Теперь все сделки и предложения происходят по Y/N
      42. Администрация теперь прямо из игры может удалить дом или бизнес: /delbiz /delhouse
      43. Теперь нельзя использовать /invite во время капта и стрелы
      44. Пофикшен текст при /unload (не отображалось кол-во привезённых матов)
      45. Новый 3д текст складов банд и мафий
      46. Для использования часов (/time) теперь нужно купить их в магазине аксессуаров и надеть на персонажа
      47. Для использования макси (/mask) теперь нужно купить её в магазине аксессуаров и надеть на персонажа (Так-же срок действия маски теперь 10 минут)
      и еще 30+ пунктов которые сюда не влезут так что тг @qnusn ( там покажу подробно описание мода)
      Если возникли какие-либо вопросы, пишите в Telegram - @qnusn
    • gooding
      От gooding


      Скачать файл PAR RP | Доработанный мод Cruela RP | Без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

    • Max Luilchack
      От Max Luilchack
      Нужен человек который сможет сделать примерную карту Украины для сервера crmp mobile. Если есть желающие пишите в дс: lamarlml