в какой таск засунуть худ

Сообщения
110
Реакции
10
Доброй ночи форумчане. подскажите как за тасковать худ, чо бы он всегда был активен при переменной true , а при false пропадал?
3 Янв 2025
В дополнение к вопросу
Код:
// Обработка выбора дополнительного предмета
public zp_extra_item_selected( pPlayer, itemid ) {
    if ( itemid == szItem ) {
    if( szBarricade[ pPlayer ] > 0 ) {
        client_printcolor( pPlayer, "!y[!gZP!y] Доступно устанавливать по 1 баррикаде." )
        zp_set_user_ammo_packs( pPlayer, zp_get_user_ammo_packs( pPlayer ) + 5 );
        return PLUGIN_HANDLED;
    }
    szBarricade[ pPlayer ]+= 1
    HologramCreate( pPlayer );
    set_task( 0.1, "Hud_Selected", pPlayer, _, _, "a", szBarricade[ pPlayer ] )
    }
    return PLUGIN_HANDLED;
}

// Вывод сообщения о действии дополнительного предмета
public Hud_Selected( pPlayer ) {
    if( szBarricade[ pPlayer ] >= 1 ) {
        set_dhudmessage( 200, 200, 200, -1.0, 0.73, 0, 6.0, 2.0, 1.0, 1.0 );
        show_dhudmessage( pPlayer, "Что бы установить баррикаду^nНажми на [Е]" );
    } else remove_task( pPlayer )
    
    return PLUGIN_HANDLED;
}
Пример что я хочу реализовать, при покупке баррикады +1, нужно что бы худ с информацией об установки был активен на экране пока эту баррикаду не установить. Так сказать зациклить таск :crazy:
 
Сообщения
35
Реакции
8
Kulogram, По идее всё в вашем коде верно (?), только вы ещё в parameter засуньте pPlayer, чтоб Hud_Selected знал игрока (знал наших 😁). Вам также необходимо добавить const либо #define вначале плагина, где провозглашаете различные переменные, назвать эту по вкусу, допустим TASK_BARRICADE_INFO, присвоить ей значение допустим 1234 (ВАЖНО: таски разумеются игрой глобально, то есть нельзя, чтобы существовало два таска с одинаковым таск айди, поскольку будет перезапись, из-за чего можно ожидать неожиданное поведение!), и когда вы делаете set_task, в качестве айди таска указываете pPlayer + TASK_BARRICADE_INFO (и в zp_extra_item_selected и в Hud_Selected, во втором именно не забудьте про remove_task) , таким образом, на каждого игрока будет таск со значением его айди 1234 + оффсет за счёт айди игрока. Насчёт цикличности таска, замените лишний флаг "a", на флаг "b", ибо если верить документации, как раз он прикажет таску "быть в цикле вечно пока таймер(в нашем понимании ‒ таск (?)) не будет остановлен" :)
 
Сообщения
1,097
Реакции
61
Помог
11 раз(а)
Kulogram,
Код:
new bool:gl_bItem[MAX_PLAYERS +1];
const ID_TASK = 1234;

// Обработка выбора дополнительного предмета
public zp_extra_item_selected(pPlayer, itemid) {
    if(!task_exists(pPlayer +ID_TASK))
        set_task(1.0, "Hud_Selected", pPlayer +ID_TASK, .flags = "b");
    
    client_printcolor(pPlayer, "!y[!gZP!y] Вы установили баррикаду.");
    zp_set_user_ammo_packs(pPlayer, zp_get_user_ammo_packs( pPlayer) + 5 );

}

// Вывод сообщения о действии дополнительного предмета
public Hud_Selected(const taskid)  {
    new id = taskid -ID_TASK;

    if(gl_bItem[id]) {
        remove_task(taskid);
    
        return;
    }
    
    set_dhudmessage(200, 200, 200, -1.0, 0.73, .holdtime = 1.0);
    show_dhudmessage(id, "Что бы установить баррикаду^nНажми на [Е]");
}

//ну и не забывай менять bool переменную там где нужно
 
Последнее редактирование:

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

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу