Русское сообщество по скриптингу

[ReAPI] Превышен индекс массива?  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

[ReAPI] Превышен индекс массива?

Сообщение limbooc » 19 мар 2018, 00:06

Добрый вечер форумчане

в логах ошибка:
Код: Выделить всё
public HC_CBasePlayer_TakeDamage_Player(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
{
    if(g_iDayMode == 3 && g_iTeamUser[iVictim] == g_iTeamUser[iAttacker] && iBitDamage & (1<<24)) 
    
{ 
        SetHookChainReturn
(ATYPE_INTEGER, false);
        return HC_SUPERCEDE; 
    
}
}


сам лог:

Код: Выделить всё
L 03/18/2018 - 15:35:39: [AMXX] Displaying debug trace (plugin "jbe_core_RE.amxx", version "1.0")
L 03/18/2018 - 15:35:39: [AMXX] Run time error 4: index out of bounds
L 03
/18/2018 - 15:35:39: [AMXX]    [0] jbe_core_RE.sma::HC_CBasePlayer_TakeDamage_Player (line 10537)
L 03/18/2018 - 15:35:40: [AMXX] Displaying debug trace (plugin "jbe_core_RE.amxx", version "1.0")
L 03/18/2018 - 15:35:40: [AMXX] Run time error 4: index out of bounds
L 03
/18/2018 - 15:35:40: [AMXX]    [0] jbe_core_RE.sma::HC_CBasePlayer_TakeDamage_Player (line 10537)


Код: Выделить всё
line 10537 строка это:

if(
g_iDayMode == 3 && g_iTeamUser[iVictim] == g_iTeamUser[iAttacker] && iBitDamage & (1<<24))



Код: Выделить всё

new g_iDayMode
, g_iTeamUser[MAX_PLAYERS + 1]


Вопрос в следующем, где было превышено массив индексов?
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [ReAPI] Превышен индекс массива?

Сообщение fl0wer » 19 мар 2018, 00:08

Ты только в g_iTeamUser указываешь индекс, очевидно, что в нем.
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: [ReAPI] Превышен индекс массива?

Сообщение limbooc » 19 мар 2018, 00:14

fl0wer, как исправить? мб проверку на валидность надо?

Код: Выделить всё


if(g_iDayMode == 3)
    {
        if(
IsPlayer(iAttacker) && iBitDamage & (1<<24))
        {
            if(
g_iTeamUser[iVictim] == g_iTeamUser[iAttacker]) 
            {
            
SetHookChainReturn(ATYPE_INTEGERfalse);
            return 
HC_SUPERCEDE
            }
        }
    } 


Код: Выделить всё
#define IsPlayer(%0) (%0 && %0 <= g_iMaxPlayers) 
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [ReAPI] Превышен индекс массива?

Сообщение fl0wer » 19 мар 2018, 00:22

Да. Можно проще ExecuteHam( Ham_IsPlayer, iAttacker ).
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: [ReAPI] Превышен индекс массива?  [Решено]

Сообщение limbooc » 19 мар 2018, 00:27

cпс,решено
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 7