Статус темы:
Закрыта.
  1. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    Здравствуйте уважаемые, прошу помощи ...

    Есть вот такая функция:
    PHP:
    public Achv_Unlock( const id, const iAchievement )
        {
            new 
    iUnlocks GetUnlocksCountid ) + 1

            
    if( 34 iUnlocks 40 )
            {
                new 
    iData]
                
    iData] = ACH_GOLDEN_MEDAL

                set_task
    0.1"TaskUnlockAchievement"idiData)
            }

            if( ( 
    iAchievement == ACH_SHOTGUN1 && HaveAchievementidACH_SHOTGUN2 ) ) || ( iAchievement == ACH_SHOTGUN2 && HaveAchievementidACH_SHOTGUN1 ) ) )
            {
                new 
    iData]
                
    iData] = ACH_SHOTGUN3

                set_task
    0.1"TaskUnlockAchievement"idiData)
            }
        }
    Все время ошибка вида:
    PHP:
    L 05/30/2016 18:41:16GetUnlocksCountindex out of bounds for id 31 )
    L 05/30/2016 18:41:16: [AMXXDisplaying debug trace (plugin "achievement_default.amxx"version "1.8.3-dev+5057")
    L 05/30/2016 18:41:16: [AMXXRun time error 4index out of bounds
    L 05
    /30/2016 18:41:16: [AMXX]    [0achievement_default.sma::Achv_Unlock (line ***)
    В данном случае ошибка ... на эту строку:
    PHP:
    new iUnlocks GetUnlocksCountid ) + 1
    Сам натив GetUnlocksCount:
    PHP:
    public NativeGetUnlocksCount( const iPlugin, const iParams )
        {
            new 
    iPlayer get_param)
           
            if( 
    iPlayer == )
            {
                return 
    g_iTotalAchievs;
            }
            else if( !
    IsPlayeriPlayer ) )
            {
                
    log_errorAMX_ERR_BOUNDS"GetUnlocksCount: index out of bounds for id ( %i )"iPlayer )

                return 
    0;
            }

            return 
    UTIL_CountUnlocksiPlayer );
        }
     
  2. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    тебе надо наверное тут смотреть
     
  3. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, подскажите пожалуйста ...
    PHP:
    UTIL_CountUnlocks( const iPlayer )
        {
            if( !
    g_iPlayerIdiPlayer ] )
            {
                return 
    0;
            }
           
            new 
    iCountAchievementAchievementData ], ProgressProgressData ]

            for( new 
    ig_iTotalAchievsi++ )
            {
                
    ArrayGetArrayg_aAchievementsiAchievement )
                
    ArrayGetArrayg_aProgressiPlayer ], iProgress )
               
                if( 
    ProgressProgress_Num ] >= AchievementAchv_NeededToGain ] )
                {
                    
    iCount++;
                }
            }

            return 
    iCount;
        }
     
  4. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    Slowpoked, а скинь ка полностью ошибку... вот прям как она есть, не трогая ничего
     
  5. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, полная ошибка ( выше она же ):
    Код:
    L 05/30/2016 - 18:41:16: GetUnlocksCount: index out of bounds for id ( 31 )
    L 05/30/2016 - 18:41:16: [AMXX] Displaying debug trace (plugin "achievement_default.amxx", version "1.8.3-dev+5057")
    L 05/30/2016 - 18:41:16: [AMXX] Run time error 4: index out of bounds
    L 05/30/2016 - 18:41:16: [AMXX]    [0] achievement_default.sma::Achv_Unlock (line 139)
    239 строка, это и есть:
    PHP:
    new iUnlocks GetUnlocksCountid ) + 1
     
  6. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    Slowpoked,
    ну ошибка справедлива, если выполняется условие
    Код:
    else if( !IsPlayer( iPlayer ) )
    скинь инфу про IsPlayer, на что там проверяется...
     
  7. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon,
    PHP:
    #define IsPlayer(%1)                    ( 1 <= %1 <= MaxClients )
     
  8. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    Slowpoked, а...
    А слотов 32?
    просто, если не 32, то бага двигла, что присвает индексы больше чем MaxClients.
    если 32, то amxx ебнулся...
    в порядке бреда:
    Код:
    #define IsPlayer(%0) ( 1 <= %0 <= MaxClients )
     
  9. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, 17 слотов. Спасибо попробую Ваш вариант.
     
  10. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    тогда даже не пробуй.
    и так понятна причина.
    скинь ка лучше кусок кода который передает id в нативу GetUnlocksCount
    можно под хайд или в лс
     
  11. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
     
  12. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    ну конечно, твой косяк ;)
    Код:
    public Achv_Unlock( const id, const iAchievement )
    а экзекаешь ты charsmax ника, то есть 31 :D
    Код:
    ExecuteForward( g_iForwards[ Fwd_Unlock ], iReturn, charsmax( szName ), iAchievement )
    эту строку замени на
    Код:
    ExecuteForward( g_iForwards[ Fwd_Unlock ], iReturn, iPlayer, iAchievement )
     
    Slowpoked нравится это.
  13. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, еще небольшой вопрос по данной же теме, что не верно в 697 строке?
    PHP:
    /* g_szDummy[ 0 ] = Achievement[ Achv_SqlIndex ] = SQL_ReadResult( hQuery, 0 ) */
     
  14. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    Slowpoked, текст ошибки можно? лень компилить)
     
  15. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, компиляция проходит без проблем. Ошибку пока не могу дать, ибо удалил лог, поэтому и закомментировал данную строку ( в таком положение ошибки нет ).

    Просьба тему не закрывать, как только появится, так сразу же скину. Спасибо.
     
  16. zhorzh78 Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    Размерность g_szDummy не совпадает, видимо.. Вообще, гляжу тут майские гадания проходят с самого начала..
    Чтобы понятнее... первый параметр- строковый, остальные 2- числовые
     
    Последнее редактирование: 31.05.16
  17. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.600
    Симпатии:
    4.173
    Пол:
    Мужской
    zhorzh78, забей
    у меня исходники есть.
    не в этом дело.
    ждем-с ошибку..
     
  18. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    neygomon, за ... время ошибка не всплыла, думаю, что был какой то косяк с БД. Спасибо большое за помощь, думаю тему можно закрыть.
     
Статус темы:
Закрыта.