pickfix.inc | Фикс повторного срабатывания пикапов
Исправление повторения срабатывания пикапов
Как вы поняли, речь пойдёт о повторении срабатывания пикапа, когда игрок стоит на нём.
Ни для кого не секрет, что в САМП не предусмотрено "выхода" из пикапов. Они безжалостно срабатывают каждые две секунды, мешая игроку производить действия, например, диалоговыми окнами. Кто-то борется с этим таймерами, кто-то записывает в PVar время подбора, и прибавляет по 5/10 секунд на следующее срабатывание, кто-то мучается со 2 типом пикапов, который подбирается, а потом появляется неизвестно когда. Где-то видел даже установку таймера игроку и проверку его координат.. Всё это порядочно бесит, все пытаются найти какой-нибудь оптимальный способ для себя. Более опытные скриптеры пишут фиксы, не самые опытные обходятся простым сохранением времени в формате Unix, а малоопытные вообще не знают что делать, создают кучу вопросов в разделе вопросов "как это убрать", "помогите", "что такое", или даже вообще вынуждены платить более опытным.
Итак, с помощью этого инклуда, пикапы будут вызываться повторно только при повторном подборе.
Автор: Edwin (то бишь я)
Так же, прилагается версия +, которая имеет в себе некоторые дополнительные полезные функции для работы с пикапами
Инклуд pickfix
Коллбэки:
- OnPlayerPickupExit (playerid, pickupid) // Срабатывает при выходе игрока из пикапа
- OnPlayerDynamicPickupExit (playerid, pickupid) // Срабатывает при выходе игрока из динамического пикапа
Функций не содержит.
Инклуд pickfix+
Коллбэки:
Содержит в себе коллбэки инклуда pickfix.
Функции:
- IsValidPickup (pickupid) // Проверяет сущствование пикапа
- GetPickupPos (pickupid, &Float:x, &Float:y, &Float:z) // Получает X, Y и Z позицию пикапа
- GetDynamicPickupPos (pickupid, &Float:x, &Float:y, &Float:z) // Получает X, Y и Z позицию динамического пикапа
- GetPickupVirtualWorld (pickupid) // Получает вирт. мир пикапа. Вернёт -2, если пикапа не существует
- GetDynamicPickupVirtualWorld (pickupid) // Получает вирт. мир динамического пикапа. Вернёт -2, если пикапа не существует
- GetDynamicPickupInterior (pickupid) // Получает интерьер динамического пикапа. Вернёт -2, если пикапа не существует
Важно: инклуд реализован средствами плагина streamer от Incognito, поэтому он должен подключаться до инклуда pickfix.
Подключение и использование:
Просто подключаем инклуд рядом со всеми инклудами в моде
Код HTML:
#include <pickfix>
или
Код HTML:
#include <pickfix+>
и наслаждаемся правильной работой пикапов.
Замечание:
Лимит на динамические пикапы, размером в 4096 пикапов, можно изменить, обозначив макрос
#define MAX_DYNAMIC_PICKUPS (число)
до объявления инклуда в самом гейммоде;
Инклуды pickfix и pickfix+ не стоит подключать вместе, т.к. они будут конфликтовать.
Pickfix.inc
Pastebin
Pickfix+.inc
Pastebin