• 0
Sign in to follow this  
Followers 0
Ruman

[закрыто] При компиляции выдает 5 ошибок

Question

Когда я пытаюсь скомпилировать код, выдает следующие строчки:

 

D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(445) : error 028: invalid subscript (not an array or too many subscripts): "strval"
D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(453) : error 002: only a single statement (or expression) can follow each "case"
D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(453) : error 029: invalid expression, assumed zero
D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(453) : error 001: expected token: ";", but found "]"
D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(453) : fatal error 107: too many error messages on one line

Compilation aborted.

Pawn compiler 3.10.10           Copyright (c) 1997-2006, ITB CompuPhase


5 Errors.

Ниже указан код, строчки которые я закомментировал именно на них жалуется Compiler.

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DLG_REG:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Âû íè÷åãî íå ââåëè!");
                }
                if(strlen(inputtext) < 8 || strlen(inputtext) > 32)
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ïàðîëü äîëæåí áûòü äëèíîé îò 8-ìè äî 32-óõ ñèìâîëîâ!");
                }
                new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
                if(regex_check(inputtext, rg_passwordcheck))
                {
                    strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 32);
                    SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Ââîä Email",
                        "{FFFFFF}Ââåäèòå âàø íàñòîÿùèé Email àäðåñ â ïîëå íèæå.\n\
                        Â ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü åãî ÷åðåç Email.\n\
                        Äàííîå äåéñòâèå ñäåëàòü íàäî îáåçàòåëüíî!",
                    "Äàëåå""");
                }
                else
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ïàðîëü äîëæåí ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ è ÷èñåë!");
                }
                regex_delete(rg_passwordcheck);
            }
            else
            {
                SCM(playerid, COLOR_WHITE, "{FFFFFF}Èñïîëüçóéòå êîìàíäó /q ÷òîáû âûéòè èç èãðû.");
                SPD(playerid, -10" "" "" """);
                return Kick(playerid);
            }
        }
        case DLG_REGMAIL:
        {
            if(!strlen(inputtext))
            {
                SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Email",
                    "{FFFFFF}Ââåäèòå âàø íàñòîÿùèé Email àäðåñ â ïîëå íèæå.\n\
                    Â ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü åãî ÷åðåç Email.\n\
                    Äàííîå äåéñòâèå ñäåëàòü íàäî îáåçàòåëüíî!",
                "Äàëåå""");
                return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ââåäèòå Email â ïîëå íèæå.");
            }
            new regex:rg_emailcheck = regex_new("^[a-zA-Z0-9.-_]{1,43}@[a-zA-Z]{1,12}.[a-zA-Z]{1,8}$");
            if(regex_check(inputtext, rg_emailcheck))
            {
                strmid(player_info[playerid][EMAIL], inputtext, 0, strlen(inputtext), 64);
                SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Íèê ïðèãëàñèâøîãî",
                    "{FFFFFF}Çàøëè íà ñåðâåð ïî ïðèãëàøåíèþ?\n\
                    Òîãäà ââåäèòå íèê ïðèãëàñèâøîãî âàñ íà ñåðâåð â ïîëå íèæå:",
                "Äàëåå""Ïðîïóñòèòü");
            }
            else
            {
                SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Email",
                    "{FFFFFF}Ââåäèòå âàø íàñòîÿùèé Email àäðåñ â ïîëå íèæå.\n\
                    Â ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü åãî ÷åðåç Email.\n\
                    Äàííîå äåéñòâèå ñäåëàòü íàäî îáåçàòåëüíî!",
                "Äàëåå""");
                return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Óêàæèòå ïðàâèëüíî âàø Email àäðåñ. Ïðèìåð: samper@mail.ru");
            }
            regex_delete(rg_emailcheck);
        }
        case DLG_REGREF:
        {
            if(response)
            {
                    new regex:rg_refcheck = regex_new("^[a-zA-Z_]{4,24}$");
                if(regex_check(inputtext, rg_refcheck))
                {
                    static const fmt_query [] = "SELECT * FROM users WHERE name = '%s'";
                    new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
                    format(query, sizeof(query), "SELECT * FROM users WHERE name = '%s';", inputtext);
                    mysql_tquery(dbHandle, query, "CheckReferation""is", playerid, inputtext);
                }
                else
                {
                    SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Íèê ïðèãëàñèâøîãî",
                        "{FFFFFF}Çàøëè íà ñåðâåð ïî ïðèãëàøåíèþ?\n\
                        Òîãäà ââåäèòå íèê ïðèãëàñèâøîãî âàñ íà ñåðâåð â ïîëå íèæå:",
                    "Äàëåå""Ïðîïóñòèòü");
                    return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ââåäèòå íèê ïðèãëàñèâøîãî âàñ íà ñåðâåð â ôîðìàòå   Èìÿ_Ôàìèëèÿ");
                }
                regex_delete(rg_refcheck);
            }
            else
            {
                SPD(playerid, DLG_REGSEX, DIALOG_STYLE_MSGBOX, "Ðåãèñòðàöèÿ  > {00FFFF}Âûáîð ïîëà",
                    "{FFFFFF}Âûáåðèòå ïîë âàøåãî ïåðîíàæà:",
                "Ìóæñêîé""Æåíñêèé");
            }
        }
        case DLG_REGSEX:
        {
            if(response) player_info[playerid][SEX] = 1;
            else player_info[playerid][SEX] = 2;
            SPD(playerid, DLG_REGRACE, DIALOG_STYLE_LIST, "Ðåãèñòðàöèÿ  > {00FFFF}Âûáîð ðàñû",
                "Íåãðîèäíàÿ\n\
                Åâðîïåîèäíàÿ\n\
                Ìîíãîëîèäíàÿ\n\
                Àçèàòñêàÿ",
            "Äàëåå""");
        }
        case DLG_REGRACE:
        {
            switch(listitem)
            {
                case 0: player_info[playerid][RACE] = 1;
                case 1: player_info[playerid][RACE] = 2;
                case 2: player_info[playerid][RACE] = 3;
            }
            SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Èãðîâîé âîçâðàñò",
                "{FFFFFF}Ââåäèòå èãðîâîé âîçâðàñò âàøåãî áóäóùåãî ïåðñîíàæà\n\
                Íå ââîäèòå âàø ðåàëüíûé âîçâðàñò!\n\n\
                \t- Âîçâðàñò äîëæåí áûòü äëèíîé îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò",
            "Äàëåå""");
        }
        case DLG_REGAGE:
        { // 445 строка
            if(!strlen(inputtext))
            {
             SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Èãðîâîé âîçâðàñò",
                "{FFFFFF}Ââåäèòå èãðîâîé âîçâðàñò âàøåãî áóäóùåãî ïåðñîíàæà\n\
                Íå ââîäèòå âàø ðåàëüíûé âîçâðàñò!\n\n\
                \t- Âîçâðàñò äîëæåí áûòü äëèíîé îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò",
            "Äàëåå""");
            return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Âû íè÷åãî íå ââåëè!");
            }
            if(strval(inputtext) < 18 || (strval(inputtext) > 60)
            {
            SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Èãðîâîé âîçâðàñò",
                "{FFFFFF}Ââåäèòå èãðîâîé âîçâðàñò âàøåãî áóäóùåãî ïåðñîíàæà\n\
                Íå ââîäèòå âàø ðåàëüíûé âîçâðàñò!\n\n\
                \t- Âîçâðàñò äîëæåí áûòü äëèíîé îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò",
            "Äàëåå""");
            return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Âîçâðàñò ïåðñîíàæà äîëæåí áûòü îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò");
            }
            player_info[playerid][AGE] = strval(inputtext); // 453 строка
            SCM(playerid, COLOR_WHITE, "Success");
        }
    }
}
    return 1;
}

forward CheckReferation(playerid, referal[]);
public CheckReferation(playerid, referal[])
{
    new rows;
    cache_get_row_count(rows);
    if(rows)
    {
        new refid;
        cache_get_value_name_int(0"id", refid);
        player_info[playerid][REF] = refid;
        SPD(playerid, DLG_REGSEX, DIALOG_STYLE_MSGBOX, "Ðåãèñòðàöèÿ  > {00FFFF}Âûáîð ïîëà",
            "{FFFFFF}Âûáåðèòå ïîë âàøåãî ïåðîíàæà:",
        "Ìóæñêîé""Æåíñêèé");
    }
    else
    {
        SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Íèê ïðèãëàñèâøîãî",
            "{FFFFFF}Çàøëè íà ñåðâåð ïî ïðèãëàøåíèþ?\n\
            Òîãäà ââåäèòå íèê ïðèãëàñèâøîãî âàñ íà ñåðâåð â ïîëå íèæå:",
        "Äàëåå""Ïðîïóñòèòü");
        return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Àêêàóíò ñ òàêèì íèêîì íå çàðåãèñòðèðîâàí íà ñåðâåðå.");
    }
    return 1;
}
//Не обращайте внимания на эроглифы это от русского языка

Надеюсь объяснил точно.

Share this post


Link to post
Share on other sites

1 answer to this question

  • 0

В конце паблика с диалогами вижу лишнюю скобку. Удали, перед return 1;. Отметил её в куске кода

        case DLG_REGAGE:
        { // 445 строка
            if(!strlen(inputtext))
            {
             SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Èãðîâîé âîçâðàñò",
                "{FFFFFF}Ââåäèòå èãðîâîé âîçâðàñò âàøåãî áóäóùåãî ïåðñîíàæà\n\
                Íå ââîäèòå âàø ðåàëüíûé âîçâðàñò!\n\n\
                \t- Âîçâðàñò äîëæåí áûòü äëèíîé îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò",
            "Äàëåå""");
            return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Âû íè÷åãî íå ââåëè!");
            }
            if(strval(inputtext) < 18 || (strval(inputtext) > 60)
            {
            SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ  > {00FFFF}Èãðîâîé âîçâðàñò",
                "{FFFFFF}Ââåäèòå èãðîâîé âîçâðàñò âàøåãî áóäóùåãî ïåðñîíàæà\n\
                Íå ââîäèòå âàø ðåàëüíûé âîçâðàñò!\n\n\
                \t- Âîçâðàñò äîëæåí áûòü äëèíîé îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò",
            "Äàëåå""");
            return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Âîçâðàñò ïåðñîíàæà äîëæåí áûòü îò {FFFF00}18-òè {FFFFFF}äî {FFFF00}60-òè {FFFFFF}ëåò");
            }
            player_info[playerid][AGE] = strval(inputtext); // 453 строка
            SCM(playerid, COLOR_WHITE, "Success");
        }
    }
// удали скобку
    return 1;
}

 

P. S. Не нужно извиняться за иероглифы, извинения здесь не помогут, нужно просто раскладку перевести на русский язык при копировании из Pawno.

Имхо, 22 год, а ты до сих пор юзаешь павно. Советую посмотреть в сторону других более современных редакторов кода. Sublime Text 3, Notepad++ даже лучше павно будет, или VS

Edited by SCRIPTMAN

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • MetaLife Online
      By MetaLife Online
      Привествую! писал код. проверил работу, в БД отправилось информация криво 
      потом добавил к P_NICK[MAX_PLAYER_NAME] для того чтобы все было окей. Но после этого данные вообще не отпровляються и не показываеться %s. пару раз удалял и не помогло не чего 
      enum PLAYER_INFO {     P_ID,     P_NICK[MAX_PLAYER_NAME],     P_PASS,     P_GENDER,     P_SKIN,     P_LVL, };  

    • Danny_Marcelo
      By Danny_Marcelo
      Всех приветствую. Сегодня я решил обновить систему мероприятий, т.к. на самом проекте Advance RP уже давно видоизменили систему, добавили нового функционала. Мы не должны стоять на месте и я решил тоже свою систему доработать. Вы можете использовать данную систему как аналог Advance RP или же доработать для своего проекта. Все в ваших руках как говорится.
       
      Что нового?
       
      Итак приступим:
      Находим свои переменные и вставляем:
       
      new settp = 0; // Флаг включения/выключения телепортации new Float:TeleportFloat[3]; // Координаты точки телепортации new TeleportInfo[2]; // Интерьер и виртуальный мир new Float:PlayerLastPos[MAX_PLAYERS][3]; // Последние координаты игрока new PlayerLastInt[MAX_PLAYERS]; // Последний интерьер игрока new PlayerLastVW[MAX_PLAYERS]; // Последний виртуальный мир игрока new PlayerWeapons[MAX_PLAYERS][13][2]; // Оружие игрока (слот и патроны) new PlayerUsedTP[MAX_PLAYERS]; // Флаг для отслеживания использования /tp  
      Далее идём в команды, мой случай на Pawn.CMD, но +/- везде одинаково, разве что меняется шапка
       
      CMD:settp(playerid, params[]) {     if (PlayerInfo[playerid][pAdmin] < 4) return 1;     new string[95];     if (settp == 0)     {         GetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);         TeleportInfo[0] = GetPlayerInterior(playerid);         TeleportInfo[1] = GetPlayerVirtualWorld(playerid);         settp = 1;         format(string, sizeof(string), "[A] %s[%d] установил точку телепорта для игроков. {00CC00}ТП включен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);     }     else     {         format(string, sizeof(string), "[A] %s[%d] удалил точку телепорта для игроков. {FF6600}ТП отключен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);         settp = 0;     }     return 1; } CMD:tp(playerid, params[]) {     if (settp == 0) return SendClientMessage(playerid, 0xCECECEFF, !"Функция отключена администратором.");     if (PlayerInfo[playerid][pJailed] >= 1) return SendClientMessage(playerid, 0xCECECEFF, !"Арестованным не разрешено покидать камеру.");     if (PlayerInfo[playerid][pRabota] != 0) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     if (bolkam[playerid] == true) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     GetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     PlayerLastInt[playerid] = GetPlayerInterior(playerid);     PlayerLastVW[playerid] = GetPlayerVirtualWorld(playerid);     for (new i = 0; i < 13; i++)     {         GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);     }     PlayerUsedTP[playerid] = 1;     ShowPlayerDialog(playerid, 22, DIALOG_STYLE_MSGBOX, !"{6699FF}Телепортация",         !"{FFFFFF}Вы уверены, что хотите попасть на место проведения мероприятия?\n{FFCD00}Ваше оружие будет изъято для хранения и возвращено позже.", !"Да", !"Нет");     return 1; }  
       
      CMD:back(playerid, params[]) {     if (!PlayerUsedTP[playerid])     {         return SendClientMessage(playerid, 0xCECECEFF, !"Эту функцию можно использовать после {FF9933}/tp, /go {CECECE}или по окончании {FF9933}мероприятий");     }     SetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     SetPlayerInterior(playerid, PlayerLastInt[playerid]);     SetPlayerVirtualWorld(playerid, PlayerLastVW[playerid]);     ResetPlayerWeapons(playerid);     for (new i = 0; i < 13; i++)     {         if (PlayerWeapons[playerid][i][0] != 0)         {             GivePlayerWeapon(playerid, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);         }     }     PlayerUsedTP[playerid] = 0;     SendClientMessage(playerid, 0x3399FFFF, !"Вы вернулись туда, где были до телепортации");     return 1; } Ну и в OnDialogResponse:
      case 22: // Не забудьте проверить и при надобности изменить id диалога на вашу цифру или ID_NAME         {             if (response)             {                 SetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);                 SetPlayerInterior(playerid, TeleportInfo[0]);                 SetPlayerVirtualWorld(playerid, TeleportInfo[1]);                 ResetPlayerWeapons(playerid);                 SendClientMessage(playerid, 0x66CCFFFF, "Вы были доставлены на место проведения мероприятия");                 SendClientMessage(playerid, 0x66CCFFFF, "Чтобы вернуться обратно, введите {FF9900}/back");             }         } Скриншоты:
       
      Если игрок сидит в КПЗ и вводит /tp:

       
      При включенном /tp:

       
      При выключенном /tp:

       
      Сообщение администраторам:

       
      Если работаешь или лечишься в больнице:

       
      Текст после телепортации:

       
      При вводе /back 1 и более раз:

       
      P.S. Команду /tp на Advance можно нажимать бесконечно, по этому я не стал сюда пихать аналогичную проверку как в /back.
      Если что, не сложно будет добавить 1 строчку проверки. Просто имейте ввиду, что это не баг. Просто нужно же соответствовать названию темы "На 100% КОПИЯ"))
       
      Автор: Danny_Marcelo
      Размещая на другие порталы, обязательно указать автора