Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в коде PAWN Samp

qwe rt Ученик (128), открыт 3 недели назад
Писал ивент, и тут появилась ошибка - error 040: duplicate "case" label (value 0).
Всеми силами пытался её исправить, но безуспешно. Похожих case у меня нет.

Код вот такой:

enum // event
{
DIALOG_PLAYER_INTRODUCTION
};

enum // quest
{
DIALOG_EVENT_QUEST_ONE,
DIALOG_EVENT_QUEST_TWO,
DIALOG_EVENT_QUEST_THRY,
DIALOG_EVENT_QUEST_FOUR,
DIALOG_EVENT_QUEST_FIVE
};

Response

case DIALOG_PLAYER_INTRODUCTION:
{
if(!response) return true;
if(response) return EventIntroduction(playerid);
} // quest 1
case DIALOG_EVENT_QUEST_ONE:
{
if(!response) return true;
if(response)
{
if(quest_one[playerid] == 0)
{
quest_one[playerid] = 1;
SetPlayerCheckpoint(playerid, 2280.6287,-1643.0352,15.2643, 2.0);
SendClientMessage(playerid, -1, "{FFA500}info: {FFFFFF}Text!");
SendClientMessage(playerid, -1, "{FFA500}Info: {FFFFFF}text.");
}
}
}


Буду рад если поможете!
2 ответа
Сергей Искусственный Интеллект (241519) 3 недели назад
Ни о чём не говорит. Номер строчки на которую ссылается отладчик и что именно там написано бы посмотреть.
qwe rtУченик (128) 3 недели назад
Немного не понял вас.
Сергей Искусственный Интеллект (241519) Ну компилятор когда выдаёт ошибку, пишет номер строки в которой она была замечена. Мало ли в какой именно части у тебя ошибка. По фото ничего с уверенностью сказать нельтзя.
Рустам Абдрашитов Мыслитель (9520) 3 недели назад
Спасибо за предоставленный код. Я понимаю вашу проблему с ошибкой "error 040: duplicate "case" label (value 0)". Эта ошибка обычно возникает, когда у вас есть два или более case с одинаковым значением в одном switch statement.

Давайте разберем возможные причины этой ошибки:

1. Перечисления (enums) в PAWN по умолчанию начинаются с 0 и увеличиваются на 1 для каждого следующего элемента. В вашем коде у вас есть два enum, и оба начинаются с 0.

2. DIALOG_PLAYER_INTRODUCTION и DIALOG_EVENT_QUEST_ONE оба имеют значение 0, что приводит к конфликту в switch statement.

Чтобы исправить эту ошибку, вы можете изменить второй enum, чтобы он начинался со значения, следующего за последним значением первого enum. Вот как это можно сделать:
 enum // event  
{
DIALOG_PLAYER_INTRODUCTION
};

enum // quest
{
DIALOG_EVENT_QUEST_ONE = DIALOG_PLAYER_INTRODUCTION + 1,
DIALOG_EVENT_QUEST_TWO,
DIALOG_EVENT_QUEST_THRY,
DIALOG_EVENT_QUEST_FOUR,
DIALOG_EVENT_QUEST_FIVE
};
Теперь DIALOG_EVENT_QUEST_ONE будет иметь значение 1, DIALOG_EVENT_QUEST_TWO будет 2 и так далее. Это должно устранить конфликт и решить проблему с дублирующимися case labels.

Также обратите внимание на опечатку в DIALOG_EVENT_QUEST_THRY. Возможно, вы имели в виду DIALOG_EVENT_QUEST_THREE.

После внесения этих изменений ваш код должен компилироваться без ошибки "duplicate case label". Если проблема сохраняется, убедитесь, что у вас нет других case statements с одинаковыми значениями в том же switch block.
Похожие вопросы