Все вопросы по скриптингу для 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 != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
jbe_informer_offset_up(id);
new szMenu[512], iKeys = (1<<7|1<<8|1<<9), iLen = formatex(szMenu, charsmax(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(id, iKeys, szMenu, -1, "Show_CountDownMenu");
}
public Handle_CountDownMenu(id, iKey)
{
if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
switch(iKey)
{
case 0: g_iCountDown = 31;
case 1: g_iCountDown = 16;
case 2: g_iCountDown = 11;
case 3: g_iCountDown = 6;
case 4: g_iCountDown = 4;
case 5:
{
emit_sound(0, CHAN_AUTO, "jb_engine/boxing/gong.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
case 6:
{
emit_sound(0, CHAN_AUTO, "jb_engine/soccer/whitle_start.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
case 7: remove_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_iCountDown) client_print(0, print_center, "%L", LANG_PLAYER, "JBE_MENU_COUNT_DOWN_TIME", g_iCountDown);
else client_print(0, print_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
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
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13