Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Espo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2018
    Сообщений
    7
    Репутация:
    0 ±

    Ошибка при заходе на сервер

    Здравствуйте, сделал систему регистрации, захожу на сервер нажимаю кнопку "Далее" ничего не происходит, а в server_log выдает это:

    [08:56:45] [debug] Run time error 6: "Invalid instruction"
    [08:56:45] [debug] Unknown opcode 0x0 at address 0x00000004
    [08:56:45] [debug] AMX backtrace:
    [08:56:45] [debug] #0 00000004 in public CheckRegistration () at <unknown file>:0
    [08:56:48] [debug] Run time error 6: "Invalid instruction"
    [08:56:48] [debug] Unknown opcode 0x0 at address 0x00000004
    [08:56:48] [debug] AMX backtrace:
    [08:56:48] [debug] #0 00000004 in public OnDialogResponse () at <unknown file>:0

    Помогите пожалуйста

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    CheckRegistration и код диалога регистрации покажи
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для Espo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2018
    Сообщений
    7
    Репутация:
    0 ±
    Вот OneDialogResponse
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        switch (
    dialogid)
        {
            case 
    DLG_REG:
            {
                if(
    response)
                {
                    if(!
    strlen(inputtext))
                    {
                        
    ShowRegistration(playerid);
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Введите пароль в поле ниже и нажмите \"Далее\"");
                    }
                    if(
    strlen(inputtext) < || strlen(inputtext) > 16)
                    {
                        
    ShowRegistration(playerid);
                         return 
    SCM(playeridCOLOR_RED"{FFFFFF}Длина пароля должна быть от 8-ми до 16-и символов");
                    }
                    new 
    regex:rg_passwordcheck regex_new("^[a-zA-Z0-9{1,}]$");
                    if(
    regex_check(inputtextrg_passwordcheck))
                    {
                        
    strmid(player_info[playerid][PASSWORD], inputtext0strlen(inputtext), 16);
                        
    SPD(playeridDLG_REGEMAILDIALOG_STYLE_INPUT,"{C3C3C3}Ввод Email",
                        
    "{FFFFFF}Введите адрес Вашей электронной почты\n\
                        Используя его, вы сможете восстановить доступ к аккаунту\n\
                        в случае взлома или если забудете пароль.\n\n\
                        Убедитесь в правильности ввода и нажмите \"Далее\""
    ,
                        
    "Далее");
                    }
                    else
                    {
                        
    ShowRegistration(playerid);
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Пароль может состоять только из чисел и латинских символов");
                    }
                }
                else
                {
                     
    SCM(playeridCOLOR_RED"Используйте \"/q\", чтобы покинуть сервер!");
                     
    SPD(playerid, -10" "" "" """);
                     return 
    Kick(playerid);
                }
            }
        }
        return 
    1;



    А это CheckRegistration

    PHP код:
    forward CheckRegistration(playerid);
    public 
    CheckRegistration(playerid)
    {
        new 
    rows;
        
    cache_get_row_count(rows);
        if(
    rowsShowLogin(playerid);
        else 
    ShowRegistration(playerid);

    Последний раз редактировалось DeimoS; 07.04.2018 в 13:06. Причина: Исправил кодировку и убрал код в [php]

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Скомпилируй мод с ключом "-d3", приписав его в файле "pawn.cfg", который находится в папке с Pawno (если такого файла нет, то создай его). После этого опять вызови краш и скинь логи, а так же покажи результаты компиляции
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #5
    Аватар для Espo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2018
    Сообщений
    7
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Скомпилируй мод с ключом "-d3", приписав его в файле "pawn.cfg", который находится в папке с Pawno (если такого файла нет, то создай его). После этого опять вызови краш и скинь логи, а так же покажи результаты компиляции
    Он у меня был прописан уже..
    Вот компиляция
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(109) : warning 217: loose indentation
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(115) : warning 202: number of arguments does not match definition
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(300 -- 305) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Header size: 2176 bytes
    Code size: 36040 bytes
    Data size: 455852 bytes
    Stack/heap size: 16384 bytes; estimated max. usage=182 cells (728 bytes)
    Total requirements: 510452 bytes

    3 Warnings.

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    У меня есть пара идей, но все они не основываются на опыте и знаниях (например, проблема с функциями плагина регулярок), так что лучше пойдём путём дебага.
    Вставь такой код:
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        print(
    "OnDialogResponse 1");
        switch (
    dialogid)
        {
            case 
    DLG_REG:
            {
                if(
    response)
                {
                    print(
    "OnDialogResponse 2");
                    if(!
    strlen(inputtext))
                    {
                        print(
    "OnDialogResponse 3");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 4");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Введите пароль в поле ниже и нажмите \"Далее\"");
                    }
                    print(
    "OnDialogResponse 4");
                    if(
    strlen(inputtext) < || strlen(inputtext) > 16)
                    {
                        print(
    "OnDialogResponse 5");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 6");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Длина пароля должна быть от 8-ми до 16-и символов");
                    }
                    print(
    "OnDialogResponse 7");
                    new 
    regex:rg_passwordcheck regex_new("^[a-zA-Z0-9{1,}]$");
                    print(
    "OnDialogResponse 8");
                    if(
    regex_check(inputtextrg_passwordcheck))
                    {
                        print(
    "OnDialogResponse 9");
                        
    strmid(player_info[playerid][PASSWORD], inputtext0strlen(inputtext), 16);
                        print(
    "OnDialogResponse 10");
                        
    SPD(playeridDLG_REGEMAILDIALOG_STYLE_INPUT,"{C3C3C3}Ввод Email",
                            
    "{FFFFFF}Введите адрес Вашей электронной почты\n\
                            Используя его, вы сможете восстановить доступ к аккаунту\n\
                            в случае взлома или если забудете пароль.\n\n\
                            Убедитесь в правильности ввода и нажмите \"Далее\""
    ,
                            
    "Далее");
                        print(
    "OnDialogResponse 11");
                    }
                    else
                    {
                        print(
    "OnDialogResponse 12");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 13");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Пароль может состоять только из чисел и латинских символов");
                    }
                    print(
    "OnDialogResponse 14");
                }
                else
                {
                    print(
    "OnDialogResponse 15");
                    
    SCM(playeridCOLOR_RED"Используйте \"/q\", чтобы покинуть сервер!");
                    print(
    "OnDialogResponse 16");
                    
    SPD(playerid, -10" "" "" """);
                    print(
    "OnDialogResponse 17");
                    return 
    Kick(playerid);
                }
            }
        }
        print(
    "OnDialogResponse 18");
        return 
    1;
    }  

    forward CheckRegistration(playerid);
    public 
    CheckRegistration(playerid)
    {
        new 
    rows;
        print(
    "CheckRegistration 1");
        
    cache_get_row_count(rows);
        print(
    "CheckRegistration 2");
        if(
    rows
        {
            print(
    "CheckRegistration 3");
            
    ShowLogin(playerid);
            print(
    "CheckRegistration 4");
        }
        else 
        {
            print(
    "CheckRegistration 5");
            
    ShowRegistration(playerid);
            print(
    "CheckRegistration 6");
        }
        print(
    "CheckRegistration 7");

    И после краша скинь логи
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #7
    Аватар для Espo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2018
    Сообщений
    7
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    У меня есть пара идей, но все они не основываются на опыте и знаниях (например, проблема с функциями плагина регулярок), так что лучше пойдём путём дебага.
    Вставь такой код:
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        print(
    "OnDialogResponse 1");
        switch (
    dialogid)
        {
            case 
    DLG_REG:
            {
                if(
    response)
                {
                    print(
    "OnDialogResponse 2");
                    if(!
    strlen(inputtext))
                    {
                        print(
    "OnDialogResponse 3");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 4");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Введите пароль в поле ниже и нажмите \"Далее\"");
                    }
                    print(
    "OnDialogResponse 4");
                    if(
    strlen(inputtext) < || strlen(inputtext) > 16)
                    {
                        print(
    "OnDialogResponse 5");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 6");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Длина пароля должна быть от 8-ми до 16-и символов");
                    }
                    print(
    "OnDialogResponse 7");
                    new 
    regex:rg_passwordcheck regex_new("^[a-zA-Z0-9{1,}]$");
                    print(
    "OnDialogResponse 8");
                    if(
    regex_check(inputtextrg_passwordcheck))
                    {
                        print(
    "OnDialogResponse 9");
                        
    strmid(player_info[playerid][PASSWORD], inputtext0strlen(inputtext), 16);
                        print(
    "OnDialogResponse 10");
                        
    SPD(playeridDLG_REGEMAILDIALOG_STYLE_INPUT,"{C3C3C3}Ввод Email",
                            
    "{FFFFFF}Введите адрес Вашей электронной почты\n\
                            Используя его, вы сможете восстановить доступ к аккаунту\n\
                            в случае взлома или если забудете пароль.\n\n\
                            Убедитесь в правильности ввода и нажмите \"Далее\""
    ,
                            
    "Далее");
                        print(
    "OnDialogResponse 11");
                    }
                    else
                    {
                        print(
    "OnDialogResponse 12");
                        
    ShowRegistration(playerid);
                        print(
    "OnDialogResponse 13");
                        return 
    SCM(playeridCOLOR_RED"{FFFFFF}Пароль может состоять только из чисел и латинских символов");
                    }
                    print(
    "OnDialogResponse 14");
                }
                else
                {
                    print(
    "OnDialogResponse 15");
                    
    SCM(playeridCOLOR_RED"Используйте \"/q\", чтобы покинуть сервер!");
                    print(
    "OnDialogResponse 16");
                    
    SPD(playerid, -10" "" "" """);
                    print(
    "OnDialogResponse 17");
                    return 
    Kick(playerid);
                }
            }
        }
        print(
    "OnDialogResponse 18");
        return 
    1;
    }  

    forward CheckRegistration(playerid);
    public 
    CheckRegistration(playerid)
    {
        new 
    rows;
        print(
    "CheckRegistration 1");
        
    cache_get_row_count(rows);
        print(
    "CheckRegistration 2");
        if(
    rows
        {
            print(
    "CheckRegistration 3");
            
    ShowLogin(playerid);
            print(
    "CheckRegistration 4");
        }
        else 
        {
            print(
    "CheckRegistration 5");
            
    ShowRegistration(playerid);
            print(
    "CheckRegistration 6");
        }
        print(
    "CheckRegistration 7");

    И после краша скинь логи
    теперь в компиляции вылезли эти ошибки
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(109) : warning 217: loose indentation
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(115) : warning 202: number of arguments does not match definition
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(311 -- 316) : warning 202: number of arguments does not match definition
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(324) : error 035: argument type mismatch (argument 2)
    C:\Users\Ðóñëàí\Desktop\server\gamemodes\Future.pwn(345) : error 021: symbol already defined: "CheckRegistration"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    2 Errors.

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм, это никак с кодом, что я дал, не связано. Ты свой код на мой заменяй, а не просто вставляй
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #9
    Аватар для Espo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2018
    Сообщений
    7
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, это никак с кодом, что я дал, не связано. Ты свой код на мой заменяй, а не просто вставляй
    я удалил тот код и вставил твой начиная с паблика ОнДиалогРеспонс до print("CheckRegistration 7");
    }

  10. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Если ты не знаешь как правильно вставлять код, который ты сам же дал, то стоит либо отложить задуманное и заняться изучением основ, либо оплатить услуги скриптера. Но если даже такое простое действие вызывает трудности, то дальше будет ещё хуже
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •