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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±

    Ошибка от crashdetect

    Опять я делаю что-то не так?

    [debug] Run time error 4: "Array index out of bounds"
    [debug] Attempted to read/write array element at index 65535 in array of size 100
    [debug] AMX backtrace:
    [debug] #0 00679dc8 in public cmd_addmoder (0, 2738644) in Test_modes.amx


    PHP код:
    CMD:addmoder(playeridparams[])
    {
        new 
    Names[MAX_PLAYER_NAME+1];
        if(
    sscanf(params,"s[24]"Names)) return SCM(playerid, -1"Введите: /addmoder[names]");
        if(
    strlen(Names) >= 24) return SCM(playerid, -1"слишком длинная строка");
        if(
    GetPlayerID(Names) == playerid) return SCM(playeridCOLOR_GREY"Свой ник ввели");
        if(
    PlayerInfo[GetPlayerID(params[0])][pEdits] == true)
        {
            
    SCM(playerid,-1,"Нельзя");
            return 
    1;
        }
        return 
    1;

    PHP код:
    stock GetPlayerID(string[])
    {
        foreach(new 
    iPlayer)
        {
            if(!
    strcmp(PlayerInfo[i][pName], stringfalseMAX_PLAYER_NAME))return i;
        }
        return 
    INVALID_PLAYER_ID;

    Последний раз редактировалось Сергей; 23.02.2019 в 05:56.

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Функция GetPlayerId() возвращает INVALID_PLAYER_ID и при обращении к массиву по этому индексу происход выход за его (массива) пределы.
    http://pro-pawn.ru/showthread.php?12957
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Функция GetPlayerId() возвращает INVALID_PLAYER_ID и при обращении к массиву по этому индексу происход выход за его (массива) пределы.
    http://pro-pawn.ru/showthread.php?12957
    Если даже поставит ей -1
    Всё равно
    PHP код:
    [03:41:02] [debugRun time error 4"Array index out of bounds"
    [03:41:02] [debug]  Attempted to read/write array element at negative index -1
    [03:41:02] [debugAMX backtrace:
    [
    03:41:02] [debug#0 00679dc8 in public cmd_addmoder (0, 2738592) in Test_modes.amx 
    Кстати, хотел спросить, почему дальше свой учебник не развиваете, много полезного там есть, для начинающих.
    По лазил ещё по смотрел, изобрели ещё функцию для этих целей называется ReturnUser
    Возможно ли мне узнать о ней чуть-чуть подробнее, а именно, стоит ли её использовать?
    Последний раз редактировалось Сергей; 23.02.2019 в 05:56.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Для этих целей в самом sscanf давно есть свой спецификатор: u
    Он как раз возращает ид игрока по введённому нику (части ника) или иду.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  6. Пользователь сказал cпасибо:
    Сергей (25.02.2019)
  7. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    1. CMD:addmoder(playerid, params[])
    2. {
    3. if(isnull(params))
    4. return SCM(playerid, -1, "Введите: /addmoder[names]");
    5.  
    6. new len = strlen(params);
    7. if(!(3 <= len <= 20))
    8. return SCM(playerid, -1, "Ник не может быть короче 3-х или длиннее 20-и символов");
    9.  
    10. new giveplayerid = GetPlayerID(params);
    11. if(giveplayerid == INVALID_PLAYER_ID)
    12. return SCM(playerid, COLOR_GREY, "Указанный игрок не найден");
    13.  
    14. if(giveplayerid == playerid)
    15. return SCM(playerid, COLOR_GREY, "Свой ник ввели");
    16.  
    17. if(PlayerInfo[giveplayerid][pEdits] == true)
    18. {
    19. SCM(playerid,-1,"Нельзя");
    20. return 1;
    21. }
    22. return 1;
    23. }
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    Сергей (25.02.2019)
  9. #6
    Аватар для Сергей
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Сообщений
    161
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    1. CMD:addmoder(playerid, params[])
    2. {
    3. if(isnull(params))
    4. return SCM(playerid, -1, "Введите: /addmoder[names]");
    5.  
    6. new len = strlen(params);
    7. if(!(3 <= len <= 20))
    8. return SCM(playerid, -1, "Ник не может быть короче 3-х или длиннее 20-и символов");
    9.  
    10. new giveplayerid = GetPlayerID(params);
    11. if(giveplayerid == INVALID_PLAYER_ID)
    12. return SCM(playerid, COLOR_GREY, "Указанный игрок не найден");
    13.  
    14. if(giveplayerid == playerid)
    15. return SCM(playerid, COLOR_GREY, "Свой ник ввели");
    16.  
    17. if(PlayerInfo[giveplayerid][pEdits] == true)
    18. {
    19. SCM(playerid,-1,"Нельзя");
    20. return 1;
    21. }
    22. return 1;
    23. }
    Вопрос решен. Всем спасибо.
    Последний раз редактировалось Сергей; 25.02.2019 в 06:47.

 

 

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

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

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

Ваши права

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