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

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

    Ошибка в репорте.

    Взял систему репорта по очереди, и теперь вылетают варинги от крашдетекта и в самом списке меню, не убавляется список, примерный код где выходят ошибки:

    PHP код:
        if(GetPVarInt(playerid"report_id"))
        {
            new 
    report_id GetPVarInt(playerid"report_id");
            
    aReportInfo[report_id][rIsTooked] = false;
            
    aReportInfo[report_id][rID] = report_id;
            
    aReportInfo[report_id][rPlayerID] = -1;
            
    aReportInfo[report_id][rText][0] = EOS;
            
    aReportInfo[report_id][rWhenWroted_Time] = -1;
            
    aReportInfo[report_id][rWhenWroted_Text][0] = EOS;
        } 
    И

    PHP код:
                    new
                        
    report_id GetPVarInt(playerid"report_id_to_answer"),
                        
    target_id aReportInfo[report_id][rPlayerID];
                    if(
    target_id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, !""INPP"Данный игрок отключился от сервера!");
                    static const
                        
    target_msg[] = "Ответ от %s[%d]: %s",
                        
    admins_msg[] = "[A] Администратор %s[%d] ответил %s[%d]: %s";
                    new 
    string[sizeof(admins_msg) + (-2+MAX_PLAYER_NAME)*+ (-2+90)];
                    
    format(stringsizeof(string), admins_msgPlayerInfo[playerid][pName], playeridPlayerInfo[target_id][pName], target_idinputtext);
                    
    SendAdminMessage(COLOR_ADMINKstring);
                    
    format(stringsizeof(string), target_msgPlayerInfo[playerid][pName], playeridinputtext);
                    
    SendClientMessage(target_id, -1string);
                    
    DeletePVar(target_id"report_id");
                    
    aReportInfo[report_id][rIsTooked] = false;
                    
    aReportInfo[report_id][rID] = report_id;
                    
    aReportInfo[report_id][rPlayerID] = -1;
                    
    aReportInfo[report_id][rText][0] = EOS;
                    
    aReportInfo[report_id][rWhenWroted_Time] = -1;
                    
    aReportInfo[report_id][rWhenWroted_Text][0] = EOS;
                }
                return 
    true;
            } 
    Что делать?

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

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

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Vander (05.10.2017)
  4. #3
    Аватар для Vander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.07.2017
    Сообщений
    20
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну так покажи ошибки от crashdetect для начала
    PHP код:
    [23:19:51] [debugRun time error 4"Array index out of bounds"
    [23:19:51] [debug]  Attempted to read/write array element at index 65535 in array of size 1000
    [23:19:51] [debugAMX backtrace:
    [
    23:19:51] [debug#0 00207a74 in public Itter_OnPlayerDisconnect (0, 1)
    [23:19:51] [debug#1 native CallLocalFunction () from samp-server.exe
    [23:19:51] [debug#2 0003700c in public SSCANF_OnPlayerDisconnect (0, 1)
    [23:19:51] [debug#3 0002cfe8 in public ac_OnPlayerDisconnect (0, 1)
    [23:19:51] [debug#4 0000a2d8 in public OnPlayerDisconnect (0, 1) 

  5. #4
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±

  6. Пользователь сказал cпасибо:
    Vander (05.10.2017)
  7. #5
    Аватар для Vander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.07.2017
    Сообщений
    20
    Репутация:
    0 ±
    Вроде-бы все убрал, но проблема в другом осталась, репорт не работает правильно, т.е. выполняете ответ на репорт и когда открываете окно вновь для проверки запросов, опять остается имя игрока, но когда уже нажимаете - окно закрывается, вновь открываем и получаем ответ - игроку уже отвечают.

    Диалог отвечающий за ответ:
    PHP код:
    case 801
            { 
                if(!
    response
                { 
                    
    aReportInfo[GetPVarInt(playerid"report_id_to_answer")][rIsTooked] = false
                    
    DeletePVar(playerid"report_id_to_answer"); 
                    
    ShowPlayer_Admin_Report_List(playerid); 
                } 
                else 
                { 
                    new 
                        
    report_id GetPVarInt(playerid"report_id_to_answer"), 
                        
    target_id aReportInfo[report_id][rPlayerID]; 

                    if(
    target_id == INVALID_PLAYER_ID
                        return 
    SendClientMessage(playerid, -1, !"Ошибка: Данный игрок отключился от сервера!"); 

                    static const 
                        
    target_msg[] = "[report] Ответ от %s[%d]: %s"
                        
    admins_msg[] = "[ADMIN-REPORT] Администратор %s[%d] ответил %s[%d]: %s"

                    new 
                        
    string[sizeof(admins_msg) + (-2+MAX_PLAYER_NAME)*+ (-2+90)]; 

                    
    format(stringsizeof(string), admins_msgPlayerInfo[playerid][pNames], playeridPlayerInfo[target_id][pNames], target_idinputtext); 
                    
    SendAdminMessage(-1string); 
                    
    format(stringsizeof(string), target_msgPlayerInfo[playerid][pNames], playeridinputtext); 
                    
    SendClientMessage(target_id, -1string); 

                    
    DeletePVar(target_id"report_id"); 

                    
    aReportInfo[report_id][rIsTooked] = false
                    
    aReportInfo[report_id][rID] = report_id
                    
    aReportInfo[report_id][rPlayerID] = -1
                    
    aReportInfo[report_id][rText][0] = EOS
                    
    aReportInfo[report_id][rWhenWroted_Time] = -1
                    
    aReportInfo[report_id][rWhenWroted_Text][0] = EOS
                } 
            } 

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

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

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

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    Vander (05.10.2017)
  10. #7
    Аватар для Vander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.07.2017
    Сообщений
    20
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Шта? А теперь то же самое, только по-русски.
    И код показа списка покажи
    PHP код:
    stock ShowPlayer_Admin_Report_List(playerid)
    {
        static 
    string[1048], total_admin_reports 0;
        for(new 
    1MAX_ADMIN_REPORTSi++)
        {
            if(
    aReportInfo[i][rPlayerID] == -1) continue;
            
    format(stringsizeof(string), "%s %d. %s\n"stringiPlayerInfo[aReportInfo[i][rPlayerID]][pName]);
            
    total_admin_reports++;
        }
        if(
    total_admin_reports == 0) return SendClientMessage(playerid, -1, !""ERPP"На данный момент нет доступных жалоб/сообщений от игроков.");
        
    ShowPlayerDialog(playerid800DIALOG_STYLE_LIST""CSERV"Список жалоб/сообщений от игроков"string"Выбрать""Отмена");
        return 
    1;


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

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

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

    Steve Pavlina

  12. Пользователь сказал cпасибо:
    Vander (05.10.2017)
  13. #9
    Аватар для Vander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.07.2017
    Сообщений
    20
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Диалог под ID 800 скинь
    PHP код:
              case 800:
            {
                if(!
    response) return 1;
                if(
    aReportInfo[listitem 1][rIsTooked] == falseShowPlayer_Admin_Report_Answer(playeridlistitem 1);
                else 
    SendClientMessage(playerid, -1, !""ERPP"Àäìèíèñòðàöèÿ óæå îòâå÷àåò íà äàííóþ æàëîáó/ñîîáùåíèå.");
                return 
    true;
            } 

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    if(aReportInfo[listitem 1][rIsTooked] == falseShowPlayer_Admin_Report_Answer(playeridlistitem 1); 
    Не проще сделать так?
    PHP код:
    listitem++;
    if(
    aReportInfo[listitem][rIsTooked] == falseShowPlayer_Admin_Report_Answer(playeridlistitem); 
    Но не суть.

    Получается, ты отвечаешь на report игрока и диалог закрывается. Когда открываешь диалог ещё раз, старая информация о репорте остаётся? И когда нажимаешь на неё, диалог закрывается, при этом, ничего не пишется?
    И только после этого информация исчезает из диалога, так?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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