Динамически выделить std::string или std::vectorКак заставить vector и string в std выделять динамическую память, а не стек?
C++:void CALLBACK mainloop() { static bool init = false; if (!init) { if (GAME == nullptr) return; if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME) return; if (!SF->getSAMP()->IsInitialized()) return; SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255,55,55), "хуйня загружена." ); init = true; } if (SF->getSAMP()->getDialog()->iIsActive && (SF->getSAMP()->getDialog()->DialogID == 1) { static DWORD dwTime = 0; char result[5]; char * text = "лох"; static int state = 0; switch (state) { case 0: dwTime = GetTickCount(); state ++; case 1: { if (GetTickCount() - dwTime > 500) { sprintf(result, "%c", text[0]); SF->getSAMP()->getDialog()->SetInputText(result); state ++; dwTime = GetTickCount(); } } case 2: { if (GetTickCount() - dwTime > 600) { sprintf(result, "%c%c", text[0], text[1]); SF->getSAMP()->getDialog()->SetInputText(result); state ++; dwTime = GetTickCount(); } } case 3: { if (GetTickCount() - dwTime > 700) { sprintf(result, "%c%c%c", text[0], text[1], text[2]); SF->getSAMP()->getDialog()->SetInputText(result); state ++; dwTime = GetTickCount(); } } } char result2[255]; sprintf(result2, "%d | %d | %d", GetTickCount(), GetTickCount() - dwTime, state); SF->getSAMP()->getChat()->AddChatMessage(-1, result2); } }
если в зоне стрима есть человек, то скрипт сразу переходит к state 3, то есть вводу последнего символа
switch (a){
case 0: {
// code
} break;
case 1: {
// code
} break;
}
Он должен стоять внутри конструкции.Динамически выделить std::string или std::vector
Ты забыл оператор break после case X:
C++:switch (a){ case 0: { // code } break; case 1: { // code } break; }
Если ты про скобки после case - то их можно вообще не ставить, и break может быть хоть в них, хоть за ними.Он должен стоять внутри конструкции.
for (int i = 0; i < 4; i++) {
printf("Switch test %d: ", i);
switch (i) {
case 0: printf("1 ");
case 1: {
printf("2 ");
}
case 2: {
printf("3 ");
break;
}
case 3: {
printf("4 ");
} break;
}
printf("\n");
}
Switch test 0: 1 2 3
Switch test 1: 2 3
Switch test 2: 3
Switch test 3: 4
Причем тут синтаксис? При использовании многослойного switch/case, внешний break нарушит слой и произойдет незапланированный выход. Зачем лишний раз себе палку в колеса пихать?Если ты про скобки после case - то их можно вообще не ставить
Можешь привести пример того, где break нарушит слой?Причем тут синтаксис? При использовании многослойного switch/case, внешний break нарушит слой и произойдет незапланированный выход. Зачем лишний раз себе палку в колеса пихать?
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;
}
}
}
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 (закрытию диалога), как пофиксеть
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;
}
https://github.com/Whitetigerswt/gtasa_crashfix/blob/master/crashes/crashes/quickload.cpp#L104Как запустить ЖТА и пропустить всю фигню вначале?
У меня получилось убрать меню и перейти сразу к загрузке, но там начинается катсцена и жта виснет. Как ее пропустить, что нужно занопить?
Не то, я имел ввиду, как пропустить вот эту шнягу:
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;
}
https://blast.hk/threads/13855/нужно сделать чтение и запись int в реестр, не работает, что не так ?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; }
Целевая платформа в свойствах проекта верно стоит?Почему такая ошибка при компиляции? Windows SDK есть.
Посмотреть вложение 30890