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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±

    Проблемы с ПТС (продолжение)

    Команда показа ПТС:

    1. cmd:pts(playerid, params[])
    2. {
    3. if(login_check{playerid} == false)
    4. return true;
    5. if(!IsPlayerInAnyVehicle(playerid))
    6. return SCM(playerid, COLOR_RED, !"[SERVER] Вы должны находиться в транспорте, чтобы показать ПТС транспорта!");
    7. new vehicleid = GetPlayerVehicleID(playerid);
    8. if(vehicleid == INVALID_VEHICLE_ID) return false;
    9. if(veh[vehicleid][v_ownerid] != playerid)
    10. return SCM(playerid, COLOR_RED, !"[SERVER] Это не ваш транспорт!");
    11. if(spawn_veh{vehicleid} == true)
    12. return SCM(playerid, COLOR_RED, !"[SERVER] У созданных администраторами транспортных средств нету ПТС!");
    13. new
    14. targetid;
    15. if(sscanf(params, "u", targetid))
    16. return SCM(playerid, COLOR_RED, !"[SERVER] Образец показа ПТС транспорта: /pts [id]");
    17. if(!IsPlayerConnected(targetid))
    18. return SCM(playerid, COLOR_RED, !"[SERVER] Игрок с введенным вами ID не в сети!");
    19. if(login_check{targetid} == false)
    20. return SCM(playerid, COLOR_RED, !"[SERVER] Игрок с введенным вами ID не авторизован!");
    21. static
    22. fmt_str[] = "*%s показал%s ПТС автомобиля %s";
    23. new
    24. string[sizeof(fmt_str)-6+MAX_PLAYER_NAME*2+1+1];
    25. format(string, sizeof(string), fmt_str, GetName(playerid), (player[playerid][p_sex] == 1) ? ("") : ("а"), GetName(targetid));
    26. ProxDetector(playerid, 5.0, COLOR_ACTION, string);
    27. ShowPTS(targetid, vehicleid);
    28. return true;
    29. }


    Сток показа ПТС:

    1. stock ShowPTS(playerid, vehid)
    2. {
    3. static
    4. fmt_str[] =
    5. "\
    6. {00C0FF}Владелец:\t\t\t\t{F81414}%s\
    7. \n{00C0FF}ID транспорта:\t\t\t\t{F81414}%d\
    8. \n{00C0FF}Модель:\t\t\t\t\t{F81414}%s\
    9. \n{00C0FF}Класс:\t\t\t\t\t{F81414}%s\
    10. ";
    11. new
    12. string[sizeof(fmt_str)-8+MAX_PLAYER_NAME+11+25+1+1];
    13. format(string, sizeof(string), fmt_str, GetName(veh[vehid][v_ownerid]), veh[vehid][v_tableid], ModelName[veh[vehid][v_model]-400],
    14. car_class[veh[vehid][v_class]-1]);
    15. SPD(playerid, DLG_ID_NONE, DSM, !"{00C0FF}ПТС", string, !"{00C0FF}Понятно", !"");
    16. }


    При вводе команды в консоль выводятся варнинги (крашдетекта)

    1. [15:49:13] [connection] incoming connection: 127.0.0.1:61665 id: 0
    2. [15:49:13] [join] Steve_Stage has joined the server (0:127.0.0.1)
    3. [15:49:23] [debug] Run time error 4: "Array index out of bounds"
    4. [15:49:23] [debug] Attempted to read/write array element at negative index -1
    5. [15:49:23] [debug] AMX backtrace:
    6. [15:49:23] [debug] #0 00027228 in ShowPTS (playerid=0, vehid=1) at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:3193
    7. [15:49:23] [debug] #1 0003522c in public pc_cmd_pts (playerid=0, params[]=@0005b278 "0") at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:4256
    8. [15:49:24] [part] Steve_Stage has left the server (0:1)


    Что делать?

  2. #2
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    У тебя дана ошибка:
    1. [15:49:23] [debug] Run time error 4: "Array index out of bounds"
    2. [15:49:23] [debug] Attempted to read/write array element at negative index -1


    Дан номер строки, где она возникает:
    1. 15:49:23] [debug] #0 00027228 in ShowPTS (playerid=0, vehid=1) at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:3193
    2. [15:49:23] [debug] #1 0003522c in public pc_cmd_pts (playerid=0, params[]=@0005b278 "0") at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:4256


    Что ж делать?))

    p.s ты хоть раз пытался самим что-то исправить?)

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от execution Посмотреть сообщение
    У тебя дана ошибка:
    1. [15:49:23] [debug] Run time error 4: "Array index out of bounds"
    2. [15:49:23] [debug] Attempted to read/write array element at negative index -1


    Дан номер строки, где она возникает:
    1. 15:49:23] [debug] #0 00027228 in ShowPTS (playerid=0, vehid=1) at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:3193
    2. [15:49:23] [debug] #1 0003522c in public pc_cmd_pts (playerid=0, params[]=@0005b278 "0") at C:\Users\HP\Desktop\Документы\2) Pawn\Мои моды\Junction RP\gamemodes\JunctionMode.pwn:4256


    Что ж делать?))
    На строке 4256
    1. return true;
    в команде cmd:pts, а ранее объявление стока ShowPTS, но вот только толку от этого мало.

    Цитата Сообщение от execution Посмотреть сообщение
    p.s ты хоть раз пытался самим что-то исправить?)
    Да, но толку от этого ноль, разве что иногда я хуже только делаю.

    Проблема в этой строке

    1. format(string, sizeof(string), fmt_str, GetName(veh[vehid][v_ownerid]), veh[vehid][v_tableid], ModelName[veh[vehid][v_model]-400],
    2. car_class[veh[vehid][v_class]-1]);


    Но где?
    Последний раз редактировалось SteveStage; 18.12.2019 в 20:41.

  4. #4
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    Проблема в этой строке

    1. format(string, sizeof(string), fmt_str, GetName(veh[vehid][v_ownerid]), veh[vehid][v_tableid], ModelName[veh[vehid][v_model]-400],
    2. car_class[veh[vehid][v_class]-1]);


    Но где?
    Хм
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    [15:49:23] [debug] Attempted to read/write array element at negative index -1
    Хмммм

    car_class[veh[vehid][v_class]-1] - вот где кроется твоя проблема. Класс скорей всего равен нулю, а ты ещё и -1 делаешь.

    - - - Добавлено - - -

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

    В ShowPTC

    1. printf("format:\n%s", string);


    А лучше переименуй функцию в ShowVeh(icle)Pass(port), ибо если не можешь в английский - используй переводчик. Калечно смотреть на мультиязыковые названия функций.

    Если брать глобально, то ПТС на инглише звучит как certificate of title for a vehicle. Но возможно, сойдет и ShowVehPass (если че это было никому не нужное мнение и мини-доё*ка)
    Последний раз редактировалось Kovshevoy; 18.12.2019 в 22:10.

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от Kovshevoy Посмотреть сообщение
    Хм

    Хмммм

    car_class[veh[vehid][v_class]-1] - вот где кроется твоя проблема. Класс скорей всего равен нулю, а ты ещё и -1 делаешь.

    - - - Добавлено - - -

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

    В ShowPTC

    1. printf("format:\n%s", string);


    А лучше переименуй функцию в ShowVeh(icle)Pass(port), ибо если не можешь в английский - используй переводчик. Калечно смотреть на мультиязыковые названия функций.

    Если брать глобально, то ПТС на инглише звучит как certificate of title for a vehicle. Но возможно, сойдет и ShowVehPass (если че это было никому не нужное мнение и мини-доё*ка)
    Проблема решилась) И заключалась она в этой строке при загрузке авто:

    1. if(veh_id != INVALID_VEHICLE_ID) return true;


    Суть в том, что если авто валидное, то загрузка заканчивается, не записывая данные в массив veh. А понял я это, когда в самом конце поставил printf, и после загрузки авто в консоль ничего не вывело (из того, что я писал).
    Решение - такая строка:

    1. if(veh_id == INVALID_VEHICLE_ID) return false;


    Проблема осталась еще со времени, когда все авто грузились циклом, независимо от онлайна владельца, а вместо return true там стоял continue (цикл for)

    Проблема неочевидная даже потому, что крашдетект указывает на форматирование строки, а проблема находится еще при его загрузке, и понятно почему - компилятор не предназначен для отслеживания логических ошибок, ибо это невозможно (вдруг кому-то намеренно надо сделать тут return, а ему выведется ошибка).

    Насчет названия - vehicle passport не звучит, это уже придирки, ибо с чего бы мне не оставить аббревиатуру транслитом? (пример - Щ.И.Т. и S.H.I.E.L.D. - название организации Ника Фьюри из Мстителей переведено транслитом и ничего, никто не жалуется)

    Проблема решена
    Последний раз редактировалось SteveStage; 18.12.2019 в 22:51.

  6. #6
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    Насчет названия - vehicle passport не звучит, это уже придирки, ибо с чего бы мне не оставить аббревиатуру транслитом? (пример - Щ.И.Т. и S.H.I.E.L.D. - название организации Ника Фьюри из Мстителей переведено транслитом и ничего, никто не жалуется)
    Чего, бл*ть?
    http://prntscr.com/qcpzrc

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от Kovshevoy Посмотреть сообщение
    Чего, бл*ть?
    http://prntscr.com/qcpzrc
    Ну во-первых давай общаться без матов
    Во-вторых я про это (рядом с мышкой на скрине): https://ibb.co/PtmzxJx

    Я про то, что аббревиатура S.H.I.E.L.D. расшифровывается, а Щ.И.Т. нет

    Опять тема ушла в оффтоп. Если кто-то еще найдет замечания/недочеты в коде - отписывайте сюда=)
    Последний раз редактировалось SteveStage; 18.12.2019 в 23:58.

 

 

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

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

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

Ваши права

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