Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция CreateBacklightPickup - подсвечиваемые пикапы

OKStyle

Эксперт
Много встречал вопросов по поводу посвечиваемых пикапов. Решил написать простенькую функцию для более успешной реализации этой задумки.



Версия 1

PHP:
stock CreateBacklightPickup(model, type, Float:x, Float:y, Float:z, virtualworld = 0, color = 5)
{
    new lightcolor[4] = {19281, 19282, 19283, 19284};
    if(color != 5) CreatePickup(lightcolor[color], type, x, y, z, virtualworld); // если цвет 5, подсветка не создаётся
    return CreatePickup(model, type, x, y, z, virtualworld);
}
lightcolor - постоянный точечный свет, можно поменять по желанию на:
19289 - 19292 - плавно мигающий точечный свет
19295 - 19298 - заполняющий радиальный свет

Использование:
PHP:
CreateBacklightPickup(model, type, x, y, z, _, 1); // Цвета от 0 до 3, _ если виртуальный мир не задаётся
Автор: OKStyle

Версия 2

Дабы упростить работу с созданием и удалением, сделаем так:

PHP:
new PU_BL_Name[MAX_PICKUPS], pu_bl_index;
Сами функции:
PHP:
stock CreateBacklightPickup(model, type, Float:x, Float:y, Float:z, virtualworld = 0, color = 5)
{
    new lightcolor[4] = {19281, 19282, 19283, 19284};
    PU_BL_Name[pu_bl_index] = CreatePickup(model, type, x, y, z, virtualworld);
    if(0 <= color <= 4) PU_BL_Name[pu_bl_index + 1] = CreatePickup(lightcolor[color], type, x, y, z, virtualworld);
    pu_bl_index += 2;
    return 1;
}
stock DestroyBacklightPickup(pickupid)
{
    if(PU_BL_Name[0] <= pickupid < PU_BL_Name[pu_bl_index])
    {
        DestroyPickup(pickupid);
        DestroyPickup(pickupid + 1);
    }
    return 1;
}
stock CheckBacklightPickup(pickupid) // вынесем кастом-проверки за нативную функцию
{
    for(new i = PU_BL_Name[0]; i < pu_bl_index; i += 2)
    {
        if(i != pickupid) continue;
        switch(i)
        {
            case 0: // начало
            case 2: // каждый второй
            default: return 1;
        }
    }
    return 1;
}
В OnPlayerPickUpPickup (в самое начало):
PHP:
CheckBacklightPickup(pickupid);
Вариант набросан на коленке, не тестировался, предлагайте варианты доработок. Только без понтокодов, в которых не разбираетесь, пожалуйста. Нам юзер-фрэндли надо :)
 
Последнее редактирование:
Сверху Снизу