Вопросы

Zonterrrr
Новичок

Всем привет, проблема в том, что команда /capture перестала работать
до этого было все хорошо и команда работала

Спойлер

cmd:capture(playerid) {
    if(!IsPlayerOPG(playerid))  return SendClientMessage(playerid, CG, "Вы не состоите в ОПГ");
    if(PI[playerid][data_RANK] < 7return SendClientMessage(playerid, CG, "Данную команду можно использовать с 7-го ранга");
    new gz = GetPlayerGangZone(playerid);
    if(gz == -1return SendClientMessage(playerid, CG, "Вы не находитесь ни в одной из зон");
    if(GetPVarInt(playerid,"Counting_Capture") > gettime()) return SendClientMessage(playerid, CG, "Команду можно использовать раз в 1 минуту");
    SetPVarInt(playerid,"Counting_Capture",gettime() + 59);
    new hour, minute, second;
    gettime(hour, minute, second);
    if(capturetime == 1) {
        if(hour != 10 && minute != 0 || 
        hour != 11 && minute != 0 || 
        hour != 12 && minute != 0 ||
        hour != 13 && minute != 0 ||
        hour != 14 && minute != 0 ||
        hour != 15 && minute != 0 ||
        hour != 16 && minute != 0 ||
        hour != 17 && minute != 0 ||
        hour != 18 && minute != 0 ||
        hour != 19 && minute != 0 ||
        hour != 20 && minute != 0 ||
        hour != 21 && minute != 0 ||
        hour != 22 && minute != 0 ||
        hour != 23 && minute != 0 ||
        hour == 00 ||
        hour == 01 ||
        hour == 02 ||
        hour == 03 ||
        hour == 04 ||
        hour == 05 ||
        hour == 06 ||
        hour == 07 ||
        hour == 08 ||
        hour == 09return SendClientMessage(playerid, CG, "Захват территорий для вашей ОПГ доступен в 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00, 20:00, 21:00, 22:00, 23:00");
    }
    if(gangwar == 1return SendClientMessage(playerid, CG, "В данный момент уже идет война за территорию");
    if(gz_info[gz][gzopg] == PI[playerid][data_MEMBER]) return SendClientMessage(playerid, CG, "Вы не можете захватить свою территорию");
    switch(gz_info[gz][gzopg]) {
        case 5if(m_skinhead > 1return SendClientMessage(playerid, CG, "В данной ОПГ замороженны захваты территорий");
        case 6if(m_gopota > 1return SendClientMessage(playerid, CG, "В данной ОПГ замороженны захваты территорий");
        case 7if(m_kavkaz > 1return SendClientMessage(playerid, CG, "В данной ОПГ замороженны захваты территорий");
    }
    switch(PI[playerid][data_MEMBER]) {
        case 5if(m_skinhead > 1return SendClientMessage(playerid, CG, "В Вашей ОПГ замороженны захваты территорий");
        case 6if(m_gopota > 1return SendClientMessage(playerid, CG, "В Вашей ОПГ замороженны захваты территорий");
        case 7if(m_kavkaz > 1return SendClientMessage(playerid, CG, "В Вашей ОПГ замороженны захваты территорий");
    }
    if(gz_info[gz][gzid] == 101return 1;
    new warname[15];
    if(gz_info[gz][gzopg] == 5) warname = "'Лысые'";
    if(gz_info[gz][gzopg] == 6) warname = "'Козырьки'";
    if(gz_info[gz][gzopg] == 7) warname = "'Чеченцы'";
    PI[playerid][data_CAPTURECMD]++;
    SavePlayerData(playerid);
    if(server == 1) {
        WarTimeMin = 10;
        WarTimeSec = 01;
    }
    else {
        WarTimeMin = 1;
        WarTimeSec = 01;
    }
    CommandKill[0]= 0;
    CommandKill[1]= 0;
    WarZone = gz;
    Command[0] = PI[playerid][data_MEMBER];
    Command[1] = gz_info[gz][gzopg];
    gangwar = 1;
    static name[24];
    SetString(name, NameRang(playerid));
    name = NameRang(playerid);
    new str[145];
    switch(PI[playerid][data_MEMBER]) {
         case 5:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
           case 6:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
        case 7:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
    }
    static name_org[15], nameorg[15];
    switch(Command[0]) {
        case 5: name_org = "Лысые";
        case 6: name_org = "Козырьки";
        case 7: name_org = "Чеченцы";
    }
    switch(Command[1]) {
        case 5: nameorg = "Лысые";
        case 6: nameorg = "Козырьки";
        case 7: nameorg = "Чеченцы";
    }
    SendClientMessage(playerid, CY, "За инициацию захвата территории Вы получите вознаграждение в PayDay");
    foreach(new i:Player) {
        if(IsPlayerOPG(i)) {
            if(PI[data_MEMBER] == Command[0]) {
                SendClientMessage(i, CY, str);
                SendClientMessage(i, CY, "Территория отмечена у Вас на мини-карте красным (мигающим) прямоугольником");
                SendClientMessage(i, CY, "Место стрельбы отмечено у Вас на мини-карте красным (не мигающим!) прямоугольником в южной части карты");
                SendClientMessage(i, CY, "Используйте команду {3377CC}/cteam{FFFF00}, чтобы посмотреть список участников своей ОПГ на территории стрелы");
                cef_emit_event(i, "show-capture");
                cef_emit_event(i, "capture-score", CEFINT(CommandKill[0]), CEFINT(CommandKill[1]));
                cef_emit_event(i, "capture-text", CEFSTR("подготовка"));
                cef_emit_event(i, "capture-info-name", CEFSTR(name_org), CEFSTR(nameorg));
                cef_emit_event(i, "show_kill_list");
                GangZoneFlashForPlayer(i, gz, 0xFF000055);    
            }
            if(PI[data_MEMBER] == Command[1]) {
                SendClientMessage(i, CY, str);
                SendClientMessage(i, CY, "Территория отмечена у Вас на мини-карте красным (мигающим) прямоугольником");
                SendClientMessage(i, CY, "Место стрельбы отмечено у Вас на мини-карте красным (не мигающим!) прямоугольником в южной части карты");
                SendClientMessage(i, CY, "Используйте команду {3377CC}/cteam{FFFF00}, чтобы посмотреть список участников своей ОПГ на территории стрелы");
                cef_emit_event(i, "show-capture");
                cef_emit_event(i, "capture-score", CEFINT(CommandKill[0]), CEFINT(CommandKill[1]));
                cef_emit_event(i, "capture-text", CEFSTR("подготовка"));
                cef_emit_event(i, "capture-info-name", CEFSTR(name_org), CEFSTR(nameorg));
                cef_emit_event(i, "show_kill_list");
                GangZoneFlashForPlayer(i, gz, 0xFF000055);
            }
        }
    }
    for(new g; g < totalgz; g++) {
        if(gz_info[g][gzid] == 101) {
            CaptZone = GangZoneCreate(gz_info[g][gzminx], gz_info[g][gzminy], gz_info[g][gzmaxx], gz_info[g][gzmaxy]);
            foreach(new i:Player) if(PI[data_MEMBER] >= 5 && PI[data_MEMBER] <= 7) GangZoneShowForPlayer(i, g, 0xFF000055);
        }
    }
    return 1;
}

 

  

Отредактировано пользователем Cawfee

Заметка от Cawfee , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Поделиться сообщением


Ссылка на сообщение

8 ответов на этот вопрос

  • 1
Sleash
Завсегдатый
Спойлер

cmd:capture(playerid) {
    if(!IsPlayerOPG(playerid))  return SendClientMessage(playerid, CG, "Вы не состоите в ОПГ");
    if(PI[playerid][data_RANK] < 7return SendClientMessage(playerid, CG, "Данную команду можно использовать с 7-го ранга");
    new gz = GetPlayerGangZone(playerid);
    if(gz == -1return SendClientMessage(playerid, CG, "Вы не находитесь ни в одной из зон");
    if(GetPVarInt(playerid,"Counting_Capture") > gettime()) return SendClientMessage(playerid, CG, "Команду можно использовать раз в 1 минуту");
    SetPVarInt(playerid,"Counting_Capture",gettime() + 59);
    new hour, minute, second;
    gettime(hour, minute, second);
    if(capturetime == 1 && (hour >= 00 || hour <= 09) && minute == 0return SendClientMessage(playerid, CG, "Захват территорий для вашей ОПГ доступен в 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00, 20:00, 21:00, 22:00, 23:00");
    if(gangwar == 1return SendClientMessage(playerid, CG, "В данный момент уже идет война за территорию");
    if(gz_info[gz][gzopg] == PI[playerid][data_MEMBER]) return SendClientMessage(playerid, CG, "Вы не можете захватить свою территорию");
    if(gz_info[gz][gzopg] >= 5 && gz_info[gz][gzopg] <= 7 && (m_skinhead > 1 || m_gopota > 1 || m_kavkaz > 1)) return SendClientMessage(playerid, CG, "В данной ОПГ замороженны захваты территорий");
    if(PI[playerid][data_MEMBER] >= 5 && PI[playerid][data_MEMBER] <= 7 && (m_skinhead > 1 || m_gopota > 1 || m_kavkaz > 1)) return SendClientMessage(playerid, CG, "В Вашей ОПГ замороженны захваты территорий");
    if(gz_info[gz][gzid] == 101return 1;
    new warname[15];
    switch(gz_info[gz][gzopg]){
        case 5: warname = "\'Лысые\'";
        case 6: warname = "\'Козырьки\'";
        case 7: warname = "\'Чеченцы\'";
    }
    PI[playerid][data_CAPTURECMD]++;
    SavePlayerData(playerid);
    WarTimeMin = (server==1)? 10:1;
    WarTimeSec = 1;
    CommandKill[0]= 0;
    CommandKill[1]= 0;
    WarZone = gz;
    Command[0] = PI[playerid][data_MEMBER];
    Command[1] = gz_info[gz][gzopg];
    gangwar = 1;
    strmid(name, NameRabg(playerid), 024);
    new str[145];
    switch(PI[playerid][data_MEMBER]) {
         case 5:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
           case 6:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
        case 7:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
    }
    new name_org[15], nameorg[15];
    switch(Command[0]) {
        case 5: name_org = "Лысые";
        case 6: name_org = "Козырьки";
        case 7: name_org = "Чеченцы";
    }
    switch(Command[1]) {
        case 5: nameorg = "Лысые";
        case 6: nameorg = "Козырьки";
        case 7: nameorg = "Чеченцы";
    }
    SendClientMessage(playerid, CY, "За инициацию захвата территории Вы получите вознаграждение в PayDay");
    foreach(new i:Player) {
        if((PI[data_MEMBER] == Command[0] || PI[data_MEMBER] == Command[1]) && IsPlayerOPG(i)) {
            SendClientMessage(i, CY, str);
            SendClientMessage(i, CY, "Территория отмечена у Вас на мини-карте красным (мигающим) прямоугольником");
            SendClientMessage(i, CY, "Место стрельбы отмечено у Вас на мини-карте красным (не мигающим!) прямоугольником в южной части карты");
            SendClientMessage(i, CY, "Используйте команду {3377CC}/cteam{FFFF00}, чтобы посмотреть список участников своей ОПГ на территории стрелы");
            cef_emit_event(i, "show-capture");
            cef_emit_event(i, "capture-score", CEFINT(CommandKill[0]), CEFINT(CommandKill[1]));
            cef_emit_event(i, "capture-text", CEFSTR("подготовка"));
            cef_emit_event(i, "capture-info-name", CEFSTR(name_org), CEFSTR(nameorg));
            cef_emit_event(i, "show_kill_list");
            GangZoneFlashForPlayer(i, gz, 0xFF000055);
        }
    }
    for(new g; g < totalgz; g++) {
        if(gz_info[g][gzid] == 101) {
            CaptZone = GangZoneCreate(gz_info[g][gzminx], gz_info[g][gzminy], gz_info[g][gzmaxx], gz_info[g][gzmaxy]);
            foreach(new i:Player) if(PI[data_MEMBER] >= 5 && PI[data_MEMBER] <= 7) GangZoneShowForPlayer(i, g, 0xFF000055);
            return 1;
        }
    }
    return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Доналдо Фарекелка
Постоянный
cmd:capture(playerid) 
{
    if(!IsPlayerOPG(playerid))  return SendClientMessage(playerid, CG, "Вы не состоите в ОПГ");

?
 

Отредактировано пользователем Доналдо Фарекелка

Поделиться сообщением


Ссылка на сообщение
  • 0
Zonterrrr
Новичок
15 часов назад, trevison сказал:

Какая именно проблема? При вводе команды в чат что-нибудь пишет?

ничего не пишет и ничего не происходит.
если даже убрать таймер в 1 минуту, ничего не происходит

Поделиться сообщением


Ссылка на сообщение
  • 0
Доналдо Фарекелка
Постоянный

@Zonterrrr 

Цитата

Перестала работать команда

Скинь команду до такого как она работала или после чего она перестала работать?

Поделиться сообщением


Ссылка на сообщение
  • 0
Zonterrrr
Новичок
В 08.08.2023 в 00:06, Sleash сказал:
  закрыть спойлер


cmd:capture(playerid) {
    if(!IsPlayerOPG(playerid))  return SendClientMessage(playerid, CG, "Вы не состоите в ОПГ");
    if(PI[playerid][data_RANK] < 7return SendClientMessage(playerid, CG, "Данную команду можно использовать с 7-го ранга");
    new gz = GetPlayerGangZone(playerid);
    if(gz == -1return SendClientMessage(playerid, CG, "Вы не находитесь ни в одной из зон");
    if(GetPVarInt(playerid,"Counting_Capture") > gettime()) return SendClientMessage(playerid, CG, "Команду можно использовать раз в 1 минуту");
    SetPVarInt(playerid,"Counting_Capture",gettime() + 59);
    new hour, minute, second;
    gettime(hour, minute, second);
    if(capturetime == 1 && (hour >= 00 || hour <= 09) && minute == 0return SendClientMessage(playerid, CG, "Захват территорий для вашей ОПГ доступен в 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00, 20:00, 21:00, 22:00, 23:00");
    if(gangwar == 1return SendClientMessage(playerid, CG, "В данный момент уже идет война за территорию");
    if(gz_info[gz][gzopg] == PI[playerid][data_MEMBER]) return SendClientMessage(playerid, CG, "Вы не можете захватить свою территорию");
    if(gz_info[gz][gzopg] >= 5 && gz_info[gz][gzopg] <= 7 && (m_skinhead > 1 || m_gopota > 1 || m_kavkaz > 1)) return SendClientMessage(playerid, CG, "В данной ОПГ замороженны захваты территорий");
    if(PI[playerid][data_MEMBER] >= 5 && PI[playerid][data_MEMBER] <= 7 && (m_skinhead > 1 || m_gopota > 1 || m_kavkaz > 1)) return SendClientMessage(playerid, CG, "В Вашей ОПГ замороженны захваты территорий");
    if(gz_info[gz][gzid] == 101return 1;
    new warname[15];
    switch(gz_info[gz][gzopg]){
        case 5: warname = "\'Лысые\'";
        case 6: warname = "\'Козырьки\'";
        case 7: warname = "\'Чеченцы\'";
    }
    PI[playerid][data_CAPTURECMD]++;
    SavePlayerData(playerid);
    WarTimeMin = (server==1)? 10:1;
    WarTimeSec = 1;
    CommandKill[0]= 0;
    CommandKill[1]= 0;
    WarZone = gz;
    Command[0] = PI[playerid][data_MEMBER];
    Command[1] = gz_info[gz][gzopg];
    gangwar = 1;
    strmid(name, NameRabg(playerid), 024);
    new str[145];
    switch(PI[playerid][data_MEMBER]) {
         case 5:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
           case 6:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
        case 7:format(str,sizeof(str),"%s {3377CC}%s[%d] {3377CC}(%s){FFFF00} инициировал захват территории {3377CC}(%s)", name, PI[playerid][data_NAME], playerid, Fraction_Name[PI[playerid][data_MEMBER]], warname);
    }
    new name_org[15], nameorg[15];
    switch(Command[0]) {
        case 5: name_org = "Лысые";
        case 6: name_org = "Козырьки";
        case 7: name_org = "Чеченцы";
    }
    switch(Command[1]) {
        case 5: nameorg = "Лысые";
        case 6: nameorg = "Козырьки";
        case 7: nameorg = "Чеченцы";
    }
    SendClientMessage(playerid, CY, "За инициацию захвата территории Вы получите вознаграждение в PayDay");
    foreach(new i:Player) {
        if((PI[data_MEMBER] == Command[0] || PI[data_MEMBER] == Command[1]) && IsPlayerOPG(i)) {
            SendClientMessage(i, CY, str);
            SendClientMessage(i, CY, "Территория отмечена у Вас на мини-карте красным (мигающим) прямоугольником");
            SendClientMessage(i, CY, "Место стрельбы отмечено у Вас на мини-карте красным (не мигающим!) прямоугольником в южной части карты");
            SendClientMessage(i, CY, "Используйте команду {3377CC}/cteam{FFFF00}, чтобы посмотреть список участников своей ОПГ на территории стрелы");
            cef_emit_event(i, "show-capture");
            cef_emit_event(i, "capture-score", CEFINT(CommandKill[0]), CEFINT(CommandKill[1]));
            cef_emit_event(i, "capture-text", CEFSTR("подготовка"));
            cef_emit_event(i, "capture-info-name", CEFSTR(name_org), CEFSTR(nameorg));
            cef_emit_event(i, "show_kill_list");
            GangZoneFlashForPlayer(i, gz, 0xFF000055);
        }
    }
    for(new g; g < totalgz; g++) {
        if(gz_info[g][gzid] == 101) {
            CaptZone = GangZoneCreate(gz_info[g][gzminx], gz_info[g][gzminy], gz_info[g][gzmaxx], gz_info[g][gzmaxy]);
            foreach(new i:Player) if(PI[data_MEMBER] >= 5 && PI[data_MEMBER] <= 7) GangZoneShowForPlayer(i, g, 0xFF000055);
            return 1;
        }
    }
    return 1;
}

 

 

щас попробую

Заметка от Cawfee , создано

Сначала пробуйте, затем уведомляйте о результатах.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба