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

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

    Run time error 4: "Array index out of bounds"

    Вот такая ошибка в логах

    [connection] 82.199.202.119:60643 requests connection cookie.
    [16:54:32] [connection] incoming connection: 82.199.202.119:60643 id: 0
    [16:54:32] [join] wInnER has joined the server (0:82.199.202.119)
    [16:54:46] [debug] Run time error 4: "Array index out of bounds"
    [16:54:46] [debug] Attempted to read/write array element at index 1000 in array of size 100
    [16:54:46] [debug] AMX backtrace:
    [16:54:46] [debug] #0 00069fd0 in public OnPlayerLogin (playerid=0, password[]=@0015f448 "PAROL999") at C:\Users\Karen\Desktop\SERV\gamemodes\new.pwn:5520
    [16:54:46] [debug] #1 000e0100 in public OnDialogResponse (playerid=0, dialogid=1, response=1, listitem=-1, inputtext[]=@0015b874 "PAROL999") at C:\Users\Karen\Desktop\SERV\gamemodes\new.pwn:11367


    Вот строка 5520 (5512-5522)

    PHP код:
    }
        else { if(
    PlayerInfo[playerid][pPhousekey] != 1000) { PlayerInfo[playerid][pPhousekey] = 1000; } }
        
    format(string2sizeof(string2), "~w~šO€PO ŒO„A‡O‹A’ ~n~~g~   %s"PlayerName[playerid]);
        
    GameTextForPlayer(playeridstring250001);
        
    gPlayerLogged[playerid] = 1;
        
    SetSpawnInfoPlayer(playerid);
        
    SpawnPlayer(playerid);
        
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
        for(new 
    0sizeof(HouseInfo); i++) SetPlayerMapIcon(playeridi,HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancex], HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancey], HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancez],35,-1,1);
        return 
    true;

    А вот строка 11367 (11366-11367)

    PHP код:
    strmid(tpassinputtext0strlen(inputtext), 255);
                    
    OnPlayerLogin(playerid,tpass); 

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Очень странно, что вы не заметили вот эту тему. Кроме того, на данном сайте очень много вопросов, связанных именно с выходом за пределы массива.

    В вашем же случае необходимо увеличить массив HouseInfo.

    Почему именно массив HouseInfo? Потому что вы сами изменяете значение PlayerInfo[playerid][pPhousekey] на 1000.
    PHP код:
    else { if(PlayerInfo[playerid][pPhousekey] != 1000) { PlayerInfo[playerid][pPhousekey] = 1000; } } 
    P.S. RLS-подобный код на данном сайте не приветствуется...
    Последний раз редактировалось VVWVV; 24.12.2016 в 20:15.

  3. Пользователь сказал cпасибо:
    DoN_SancheS (24.12.2016)
  4. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Очень странно, что вы не заметили вот эту тему. Кроме того, на данном сайте очень много вопросов, связанных именно с выходом за пределы массива.

    В вашем же случае необходимо увеличить массив HouseInfo.

    Почему именно массив HouseInfo? Потому что вы сами изменяете значение PlayerInfo[playerid][pPhousekey] на 1000.
    PHP код:
    else { if(PlayerInfo[playerid][pPhousekey] != 1000) { PlayerInfo[playerid][pPhousekey] = 1000; } } 
    P.S. RLS-подобный код на данном сайте не приветствуется...
    Не нужно тут ничего увеличивать. 1000 явно означает неправильный ID дома, т.е. если pPhousekey равен 1000, у игрока нет дома. Нужно просто добавить проверку на наличие дома и все дела.

    ТС настоятельно рекоменую посмотреть пункты 7, 8 и 9 в этой теме: http://pro-pawn.ru/showthread.php?8347
    Пункт 9 добавил буквально только что, основываясь на вашем примере.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. Пользователь сказал cпасибо:
    DoN_SancheS (24.12.2016)
  6. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не нужно тут ничего увеличивать. 1000 явно означает неправильный ID дома, т.е. если pPhousekey равен 1000, у игрока нет дома. Нужно просто добавить проверку на наличие дома и все дела.
    Как-то странно делать такое...

  7. Пользователь сказал cпасибо:
    DoN_SancheS (24.12.2016)
  8. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Как-то странно делать такое...
    Да, это странно брать число 1000 за неправильный ID дома - мало того, что никому кроме автора не известное "магическое число", так ещё и положительное. В своих рекомендациях (как раз в новом 9-м пункте) я уже описал этот антипаттерн.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. 2 пользователя(ей) сказали cпасибо:
    DoN_SancheS (24.12.2016) VVWVV (24.12.2016)
  10. #6
    Аватар для DoN_SancheS
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.11.2016
    Сообщений
    64
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не нужно тут ничего увеличивать. 1000 явно означает неправильный ID дома, т.е. если pPhousekey равен 1000, у игрока нет дома. Нужно просто добавить проверку на наличие дома и все дела.

    ТС настоятельно рекоменую посмотреть пункты 7, 8 и 9 в этой теме: http://pro-pawn.ru/showthread.php?8347
    Пункт 9 добавил буквально только что, основываясь на вашем примере.
    Daniel Спасибо за твою работу, но чтобы не напортачить, так сейчас я должен взять и просто везде где есть
    PHP код:
    if(PlayerInfo[playerid][pPhousekey] != 1000
    изменить 1000 на -1?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от DoN_SancheS Посмотреть сообщение
    Daniel Спасибо за твою работу, но чтобы не напортачить, так сейчас я должен взять и просто везде где есть
    PHP код:
    if(PlayerInfo[playerid][pPhousekey] != 1000
    изменить 1000 на -1?
    Не люблю отвечать вопросом на вопрос, но вы точно читали пункты 7 и 8?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  12. #8
    Аватар для DoN_SancheS
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.11.2016
    Сообщений
    64
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не люблю отвечать вопросом на вопрос, но вы точно читали пункты 7 и 8?
    Естественно читал, но у вас там пример другой у вас там есть констант INVALID_HOUSE_ID а у меня нет такого, у меня просто в нескольких местах
    PHP код:
    if(PlayerInfo[playerid][pPhousekey] != 1000

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от DoN_SancheS Посмотреть сообщение
    Естественно читал, но у вас там пример другой у вас там есть констант INVALID_HOUSE_ID а у меня нет такого, у меня просто в нескольких местах
    PHP код:
    if(PlayerInfo[playerid][pPhousekey] != 1000
    Ну так создайте эту константу и уже используйте её, вместо пресловутого "1000"
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  14. #10
    Аватар для DoN_SancheS
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.11.2016
    Сообщений
    64
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну так создайте эту константу и уже используйте её, вместо пресловутого "1000"
    Сделаю, тогда как поступать с if(PlayerInfo[playerid][pPhousekey] != 1000) ?
    В смысле что на что поменять, а вообще ошибка на строке 5520
    где есть вот это
    PHP код:
    [hEntrancez],35,-1,1); 
    может дело вообще не связанно с if(PlayerInfo[playerid][pPhousekey] != 1000)

 

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

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

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

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

Ваши права

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