Добро пожаловать на Pawno-Info.Ru - Портал о программировании №1

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

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andrease? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

Антифлуд пикапов(оптимизированая)

Статус
В этой теме нельзя размещать новые ответы.

akvarizum

Интересующийся
Пользователь
Регистрация
29 Ноя 2015
Сообщения
15
Лучшие ответы
0
Реакции
0
Простенький, и как по мне оптимизированный антифлуд пикапов, поправьте если я не прав.
Как по мне это убирает необходимость создавать лишний таймер и задействовать всего одну переменную
Код:
enum pInfo
{
    PickupActive
};
new Player[MAX_PLAYERS]; // можно создать переменную или в enum pInfo и тд
//В начало паблика
OnPlayerPickUpPickup(playerid, pickupid)
{
    if(Player[playerid][PickupActive] != 0) return 1;
    Player[playerid][PickupActive] = 5;//5 это секунда, настраивайте в зависимости частоты вызова паблика
    //далее остальной код...
}
Далее в постоянный секундный паблик обновления игрока или любой где есть playerid
UpdatePlayerTimer(playerid)
{
    if(Player[playerid][PickupActive] > 0) Player[playerid][PickupActive]--;//будет уменьшать значение до нуля
    //остальной код...
}
 

Николай93

Участник форума
Пользователь
Регистрация
6 Июн 2011
Сообщения
414
Лучшие ответы
8
Реакции
121
Адрес
Воронеж
Всё равно событие для игрока будет вызвано когда переменная будет равна нулю. Если игрок что то заполняет в диалоге, то это помешает, особенно если откроется новый диалог. Вариант с проверкой координат самый нормальный и не стоит экономить процессорное время там, где это не нужно. Лучше сделать более тяжело, но более лучше в работе.
 

Saibot

• Профик •
Регистрация
20 Сен 2013
Сообщения
2,017
Лучшие ответы
28
Реакции
922
Адрес
Unknown
  • OLD
  • Активный модератор
akvarizum написал(а):
Как по мне это убирает необходимость создавать лишний таймер
Лишний таймер?
Если у тебя в моде, находится все в одном таймере, то мне жаль тот мод.
akvarizum написал(а):
задействовать всего одну переменную
Да, с перечислением.

Вот, простенький вариант
PHP:
OnPlayerPickUpPickup(playerid, pickupid)
{
     if(GetPVarInt(playerid, "anti_flood_pickup") > gettime())
        return 1;

    SetPVarInt(playerid, "anti_flood_pickup", gettime() + 4);

    //далее остальной код...
}
 
Последнее редактирование:

akvarizum

Интересующийся
Пользователь
Регистрация
29 Ноя 2015
Сообщения
15
Лучшие ответы
0
Реакции
0
@Saibot, спасибо за ответ, и нет, я не пихаю всё в один таймер, использую постоянный таймер на каждого игрока, глобальный таймер и на транспорт
 
Статус
В этой теме нельзя размещать новые ответы.
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу