Русское сообщество по скриптингу

Отмена отсчета.  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Отмена отсчета.

Сообщение Marsh » 10 июл 2019, 15:36

Не могу сделать отмену отсчета, пытался через remove_task и set_task, но ничего не получается. Подскажите пожалуйста, как это сделать. JBE_MENU_COUNT_DOWN_TIME_END1 = Закончить отсчёт

Код: Выделить всё

Show_CountDownMenu
(id)
{
    if(
g_iDayMode != || id != g_iChiefId || IsNotSetBit(g_iBitUserAliveid)) return PLUGIN_HANDLED;
    
jbe_informer_offset_up(id);
    new 
szMenu[512], iKeys = (1<<7|1<<8|1<<9), iLen formatex(szMenucharsmax(szMenu), "\r%L^n^n"id"JBE_MENU_COUNT_DOWN_TITLE");
    if(
task_exists(TASK_COUNT_DOWN_TIMER))
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[1] \d%L^n"id"JBE_MENU_COUNT_DOWN_30");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[2] \d%L^n"id"JBE_MENU_COUNT_DOWN_15");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[3] \d%L^n"id"JBE_MENU_COUNT_DOWN_10");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[4] \d%L^n"id"JBE_MENU_COUNT_DOWN_5");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[5] \d%L^n^n"id"JBE_MENU_COUNT_DOWN_3");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[6] \d%L^n"id"JBE_MENU_COUNT_GONG");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[7] \d%L^n^n"id"JBE_MENU_COUNT_SVIST");
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[1] \w%L^n"id"JBE_MENU_COUNT_DOWN_30");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[2] \w%L^n"id"JBE_MENU_COUNT_DOWN_15");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[3] \w%L^n"id"JBE_MENU_COUNT_DOWN_10");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[4] \w%L^n"id"JBE_MENU_COUNT_DOWN_5");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[5] \w%L^n^n"id"JBE_MENU_COUNT_DOWN_3");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[6] \w%L^n"id"JBE_MENU_COUNT_GONG");
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[7] \w%L^n^n"id"JBE_MENU_COUNT_SVIST");
        
iKeys |= (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
    }
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[8] \w%L^n^n"id"JBE_MENU_COUNT_DOWN_TIME_END1");
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"^n\y[9] \w%L"id"JBE_MENU_BACK");
    
formatex(szMenu[iLen], charsmax(szMenu) - iLen"^n\y[0] \w%L"id"JBE_MENU_EXIT");
    return 
show_menu(idiKeysszMenu, -1"Show_CountDownMenu");
}

public 
Handle_CountDownMenu(idiKey)
{
    if(
g_iDayMode != || id != g_iChiefId || IsNotSetBit(g_iBitUserAliveid)) return PLUGIN_HANDLED;
    switch(
iKey)
    {
        case 
0g_iCountDown 31;
        case 
1g_iCountDown 16;
        case 
2g_iCountDown 11;
        case 
3g_iCountDown 6;
        case 
4g_iCountDown 4;
        case 
5:
        {
            
emit_sound(0CHAN_AUTO"jb_engine/boxing/gong.wav"VOL_NORMATTN_NORM0PITCH_NORM);
        }
        case 
6:
        {
            
emit_sound(0CHAN_AUTO"jb_engine/soccer/whitle_start.wav"VOL_NORMATTN_NORM0PITCH_NORM);
        }
        case 
7remove_task(TASK_COUNT_DOWN_TIMER);
        case 
8: return Show_ChiefMenu_1(id);
        case 
9: return PLUGIN_HANDLED;
    }    
    
set_task(1.0"jbe_count_down_timer"TASK_COUNT_DOWN_TIMER__"a"g_iCountDown);
    return 
Show_ChiefMenu_1(id);
}

public 
jbe_count_down_timer()
{
    if(--
g_iCountDownclient_print(0print_center"%L"LANG_PLAYER"JBE_MENU_COUNT_DOWN_TIME"g_iCountDown);
    else 
client_print(0print_center"%L"LANG_PLAYER"JBE_MENU_COUNT_DOWN_TIME_END");
    
UTIL_SendAudio(0_"jb_engine/countdown/%d.wav"g_iCountDown);
}
 
Аватара пользователя
Marsh
 
Сообщения: 20
Зарегистрирован: 24 мар 2018, 13:18
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: C++
PascalABC

Re: Отмена отсчета.  [Решено]

Сообщение xbass13 » 10 июл 2019, 18:11

Все верно, через remove_task, только
Код: Выделить всё
case 7: {remove_task(TASK_COUNT_DOWN_TIMER);return Show_ChiefMenu_1(id);}
 

Иначе, как у вас, task перезапускается сразу после отмены
Аватара пользователя
xbass13
 
Сообщения: 96
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 36 раз.
Поблагодарили: 35 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 13