Другое С/С++ Вопрос - Ответ

_Vine_

Активный
154
57
Причем тут синтаксис? При использовании многослойного switch/case, внешний break нарушит слой и произойдет незапланированный выход. Зачем лишний раз себе палку в колеса пихать?
Можешь привести пример того, где break нарушит слой?
 
  • Нравится
Реакции: Receiver

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
597
819
C++:
            static DWORD dwTime = 0;

            switch (state)
            {
                case 0: dwTime = GetTickCount(); SF->getSAMP()->getDialog()->SetInputText(""); state++;
                case 1:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_1)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Л");
                        state ++;
                        dwTime = GetTickCount();
                    }

                }
                case 2:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_2)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("О");
                        state ++;
                        dwTime = GetTickCount();
                    }

                }
                case 3:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_3)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Х");
                        state ++;
                        dwTime = GetTickCount();
                    }
                }
               case 6:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_4)
                    {
                        SF->getSAMP()->getDialog()->Close(1);
                        state = 0;
                    }
                }
        }

Скрипт моментально вводит слово и переходит к state 6 (закрытию диалога), как пофиксеть
 

_Vine_

Активный
154
57
C++:
            static DWORD dwTime = 0;

            switch (state)
            {
                case 0: dwTime = GetTickCount(); SF->getSAMP()->getDialog()->SetInputText(""); state++;
                case 1:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_1)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Л");
                        state ++;
                        dwTime = GetTickCount();
                    }

                }
                case 2:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_2)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("О");
                        state ++;
                        dwTime = GetTickCount();
                    }

                }
                case 3:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_3)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Х");
                        state ++;
                        dwTime = GetTickCount();
                    }
                }
               case 6:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_4)
                    {
                        SF->getSAMP()->getDialog()->Close(1);
                        state = 0;
                    }
                }
        }

Скрипт моментально вводит слово и переходит к state 6 (закрытию диалога), как пофиксеть
C++:
            static DWORD dwTime = 0;

            switch (state)
            {
                case 0: dwTime = GetTickCount(); SF->getSAMP()->getDialog()->SetInputText(""); state++; break;
                case 1:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_1)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Л");
                        state ++;
                        dwTime = GetTickCount();
                    }

                } break;
                case 2:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_2)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("О");
                        state ++;
                        dwTime = GetTickCount();
                    }

                } break;
                case 3:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_3)
                    {
                        SF->getSAMP()->getDialog()->SetInputText("Х");
                        state ++;
                        dwTime = GetTickCount();
                    }
                } break;
               case 6:
                {
                    if (GetTickCount() - dwTime > (DWORD)cc_delay_4)
                    {
                        SF->getSAMP()->getDialog()->Close(1);
                        state = 0;
                    }
                } break;
        }
 
  • Нравится
Реакции: Receiver

Vadim.dll

Известный
168
80
Как запустить ЖТА и пропустить всю фигню вначале?
У меня получилось убрать меню и перейти сразу к загрузке, но там начинается катсцена и жта виснет. Как ее пропустить, что нужно занопить?
 

ALF

Известный
Проверенный
320
537
Как запустить ЖТА и пропустить всю фигню вначале?
У меня получилось убрать меню и перейти сразу к загрузке, но там начинается катсцена и жта виснет. Как ее пропустить, что нужно занопить?
https://github.com/Whitetigerswt/gtasa_crashfix/blob/master/crashes/crashes/quickload.cpp#L104
 

Vadim.dll

Известный
168
80

Вложения

  • upload_2019-5-28_23-40-8.png
    upload_2019-5-28_23-40-8.png
    177.7 KB · Просмотры: 182

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
597
819
C++:
bool RegWriteInt(HKEY key, const char *name, int value)
{
    DWORD val = value;
    return RegSetValueExA(key, name, 0, REG_DWORD, (byte *)&val, 1) == ERROR_SUCCESS;
}

bool RegReadInt(HKEY key, const char *name, int &value)
{
    DWORD val = 0, type = REG_DWORD, size = 4;
    bool result = RegQueryValueExA(key, name, NULL, &type, (byte *)&val, &size) == ERROR_SUCCESS;
    value = val;
    return result;
}
нужно сделать чтение и запись int в реестр, не работает, что не так ?
 

Rjx13

Известный
Проверенный
224
160
C++:
bool RegWriteInt(HKEY key, const char *name, int value)
{
    DWORD val = value;
    return RegSetValueExA(key, name, 0, REG_DWORD, (byte *)&val, 1) == ERROR_SUCCESS;
}

bool RegReadInt(HKEY key, const char *name, int &value)
{
    DWORD val = 0, type = REG_DWORD, size = 4;
    bool result = RegQueryValueExA(key, name, NULL, &type, (byte *)&val, &size) == ERROR_SUCCESS;
    value = val;
    return result;
}
нужно сделать чтение и запись int в реестр, не работает, что не так ?
https://blast.hk/threads/13855/
 

TheRuthArbiter

Неповторимый РПшер
Проверенный
523
305
Скорее всего не установлены компоненты для работы с C++ при установке студии либо DirectX 9-12
всё установлено.
Целевая платформа в свойствах проекта верно стоит?
upload_2019-5-31_15-58-55.png

Там вроде ничего не выставишь

Я переоткрыл проект, в итоге вот:
upload_2019-5-31_16-13-32.png
 

Cake_

Известный
Проверенный
263
313
всё установлено.

Посмотреть вложение 30891
Там вроде ничего не выставишь

Я переоткрыл проект, в итоге вот:
Посмотреть вложение 30893
Ты его с архива открываешь?

всё установлено.

Посмотреть вложение 30891
Там вроде ничего не выставишь

Я переоткрыл проект, в итоге вот:
Посмотреть вложение 30893
При установке студии надо установить запусти установщик и установи компоненты для работы с C++ которые у тебя не установлены
 

TheRuthArbiter

Неповторимый РПшер
Проверенный
523
305
Ты его с архива открываешь?


При установке студии надо установить запусти установщик и установи компоненты для работы с C++ которые у тебя не установлены
не с архива. Я НАПИСАЛ: ВСЕ КОМПОНЕНТЫ УСТАНОВЛЕНЫ УЖЕ!