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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±

    Run Time error 4 "Array index out of bounds" (OnPlayerDeath)

    Вот у меня вопрос как определить ошибку в CrashDetectore я подключил его к моду и меня вышло вот это!

    PHP код:
    run Time error 4 "Array index out of bounds"

    accessing element at index 65535 past array upper bound 499

    AMX backtrace
    :

    #0 0000e138 in public OnPlayerDeath (1, 65535, 54) From new.amx 
    Перевод:
    Код HTML:
    пробег Время ошибка 4 "Индекс массива выходит за границы"
    
    доступ элемент в индекс 65535 прошлом массива верхняя граница 499
    
    AMX трассировку:
    
    # 0 0000e138 в общественном OnPlayerDeath (1, 65535, 54) От new.amx
    /========================[Теперь во Фрагам]============================/
    проблема в том когда убиваешь человека в Квадрате зоны SKills не прибавляется помогите!

    PHP код:
    new ScoreZahvat[MAX_PLAYERS];//Скиллы
    new Time[MAX_PLAYERS];//Время Войны
    new Text:CaptureMafia[2];//ТекстДрав!
    new Capture[MAX_PLAYERS];//Зона Войны
    enum Mz
    {
        
    mFrackVlad,//Владельцы бизнеса
        
    mNapad,//Нападение на бизнеса
    }
    new 
    MZInfo[1][Mz]; 
    PHP код:
        if(strcmp(cmd"/bizwar"true) == 0)
        {
            if(
    IsAMafia(playerid))
            {
                for(new 
    0TotalSBizzb++)
                {
                    if(
    PlayerToPoint(3playeridSBizzInfo[b][sbEntranceX], SBizzInfo[b][sbEntranceY], SBizzInfo[b][sbEntranceZ]))
                    {
                        
    MZInfo[0][mNapad] = PlayerInfo[playerid][pMember];
                        
    MZInfo[0][mFrackVlad] = SBizzInfo[b][sbMafia];
                        
                        
    format(Stringerssizeof(Stringers), "%s Напала на %s. Бизнес: %s"GetMafiaName(PlayerInfo[playerid][pMember]), GetMafiaName(SBizzInfo[b][sbMafia]), SBizzInfo[b][sbMessage]);
                        
    SendFamilyMessage(SBizzInfo[b][sbMafia], COLOR_BLUEStringers);
                        
    format(Stringerssizeof(Stringers), "%s Напала на %s. Бизнес: %s"GetMafiaName(PlayerInfo[playerid][pMember]), GetMafiaName(SBizzInfo[b][sbMafia]), SBizzInfo[b][sbMessage]);
                        
    SendFamilyMessage(PlayerInfo[playerid][pMember], COLOR_GREENStringers);
                        
                        
    Capture[playerid] = GangZoneCreate(328.7557062412.644531448.7557062564.644531);
                        
    GangZoneShowForAll(Capture[playerid], COLOR_YELLOW);
                        
    GangZoneFlashForAll(Capture[playerid], COLOR_BLUE);
    //                    ScoreZahvat[MZInfo[0][mNapad]] = 0;
    //                    ScoreZahvat[MZInfo[0][mFrackVlad]] = 0;
                        
    Time[playerid] = 350;
                        for(new 
    0MAX_PLAYERSi++)
                        {
                            if(
    PlayerInfo[i][pMember] == MZInfo[0][mNapad] || PlayerInfo[i][pMember] == MZInfo[0][mFrackVlad])
                            {
                                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"GetMafiaName(MZInfo[0][mNapad]), ScoreZahvat[MZInfo[0][mNapad]]);
                                
    TextDrawSetString(CaptureMafia[0], Stringers);
                                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"GetMafiaName(MZInfo[0][mFrackVlad]), ScoreZahvat[MZInfo[0][mFrackVlad]]);
                                
    TextDrawSetString(CaptureMafia[1], Stringers);
                                
    TextDrawShowForPlayer(iCaptureMafia[0]), TextDrawShowForPlayer(iCaptureMafia[1]);
                            }
                        }
                    }
                }
            }
            return 
    1;
        } 
    PHP код:
            if(Time[i] > 0)
            {
                
    Time[i] --;//Отмимаем время
                
    if(Time[i] == 300)
                {
                    
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE,"[Внимание]: Время до захвата бизнеса осталось 5 минут!");
                    
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE,"[Внимание]: Время до захвата бизнеса осталось 5 минут!");
                    return 
    1;
                }
                if(
    Time[i] == 120)
                {
                    
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE,"[Внимание]: Время до захвата бизнеса осталось 2 минут!");
                    
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE,"[Внимание]: Время до захвата бизнеса осталось 2 минут!");
                    return 
    1;
                }
                if(
    Time[i] == 60)
                {
                    
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE"[Внимание]: Время до захвата бизнеса осталось 1 минута");
                    
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE"[Внимание]: Время до захвата бизнеса осталось 1 минута");
                    return 
    1;
                }
                if(
    Time[i] == 0)
                {
                    for(new 
    0TotalSBizze++)
                    {
                        
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE"[Внимание]: Время до захвата бизнеса вышло!");
                        
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE"[Внимание]: Время до захвата бизнеса вышло!");
                        if(
    ScoreZahvat[MZInfo[0][mFrackVlad]] > ScoreZahvat[MZInfo[0][mNapad]])
                        {
                            
    MZInfo[0][mFrackVlad] = SBizzInfo[i][sbMafia];
                            
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE"[Победа!]: Вы отстояли свой бизнес!");
                            
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE"[Поражение]: Вы не смогли захватить новый бизнес!");
                            
    SaveSBizz(e);
                            return 
    1;
                        }
                        else
                        {
                            
    MZInfo[0][mNapad] = SBizzInfo[i][sbMafia];
                            
    SendFamilyMessage(MZInfo[0][mNapad], COLOR_WHITE"[Победа!]: Вы захватили новый бизнес!");
                            
    SendFamilyMessage(MZInfo[0][mFrackVlad], COLOR_WHITE"[Поражение]: Вы не смогли отстоять свой бизнес!");
                            
    SaveSBizz(e);
                            return 
    1;
                        }
                    }
    //                   ScoreZahvat[MZInfo[0][mFrackVlad]] = 0;
    //                ScoreZahvat[MZInfo[0][mNapad]] = 0;
                    
    Time[i] = 0;
                    
    GangZoneStopFlashForAll(Capture[i]);
                    
    GangZoneHideForAll(Capture[i]);
                    
    GangZoneShowForAll(Capture[i], COLOR_YELLOW);
                    
    TextDrawHideForPlayer(iCaptureMafia[0]);
                    
    TextDrawHideForPlayer(iCaptureMafia[0]);
                    return 
    1;
                }
            } 
    PHP код:
    public OnPlayerDeath(playeridkilleridreason)
    {

        if(
    SelectChar[playerid] == 9999)
        {
            
    SetPlayerSkin(playeridOldSkin[playerid]);
            
    PlayerInfo[playerid][pSkin] = OldSkin[playerid];
            
    SelectChar[playerid] = 0;
        }
        
    CharPrice[playerid] = 0;
        
    SelectCharID[playerid] = 0;
        if(
    IsAMafia(playerid))
        {
            if(
    PlayerToKvadrat(playerid328.7557062412.644531448.7557062564.644531))
            {
                if(
    MZInfo[0][mFrackVlad] == PlayerInfo[killerid][pMember] && MZInfo[0][mNapad] == PlayerInfo[playerid][pMember])
                {
                    
    ScoreZahvat[MZInfo[0][mNapad]]++;
                }
                if(
    MZInfo[0][mNapad] == PlayerInfo[killerid][pMember] && MZInfo[0][mFrackVlad] == PlayerInfo[playerid][pMember])
                {
                    
    ScoreZahvat[MZInfo[0][mFrackVlad]]++;
                }
                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"MZInfo[0][mNapad], ScoreZahvat[MZInfo[0][mNapad]]);
                
    TextDrawSetString(CaptureMafia[0], Stringers);
                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"MZInfo[0][mFrackVlad], ScoreZahvat[MZInfo[0][mFrackVlad]]);
                
    TextDrawSetString(CaptureMafia[1], Stringers);
            }
            return 
    1;
        }
        return 
    1;

    Последний раз редактировалось DeimoS; 10.11.2014 в 14:15.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Выход за пределы массива. В данном случае это случается, когда игрок умирает сам по себе. В параметр killerid передаётся значение INVALID_PLAYER_ID (это макрос, в котором указано число 65535) и чтоб избежать подобной ошибки, нужно просто проверять killerid
    PHP код:
    public OnPlayerDeath(playeridkilleridreason)
    {

        if(
    SelectChar[playerid] == 9999)
        {
            
    SetPlayerSkin(playeridOldSkin[playerid]);
            
    PlayerInfo[playerid][pSkin] = OldSkin[playerid];
            
    SelectChar[playerid] = 0;
        }
        
    CharPrice[playerid] = 0;
        
    SelectCharID[playerid] = 0;
        if(
    IsAMafia(playerid))
        {
            if(
    PlayerToKvadrat(playerid328.7557062412.644531448.7557062564.644531))
            {
                if((
    MZInfo[0][mFrackVlad] == PlayerInfo[killerid][pMember] && killerid != INVALID_PLAYER_ID) && MZInfo[0][mNapad] == PlayerInfo[playerid][pMember])
                {
                    
    ScoreZahvat[MZInfo[0][mNapad]]++;
                }
                if((
    MZInfo[0][mNapad] == PlayerInfo[killerid][pMember] && killerid != INVALID_PLAYER_ID) && MZInfo[0][mFrackVlad] == PlayerInfo[playerid][pMember])
                {
                    
    ScoreZahvat[MZInfo[0][mFrackVlad]]++;
                }
                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"MZInfo[0][mNapad], ScoreZahvat[MZInfo[0][mNapad]]);
                
    TextDrawSetString(CaptureMafia[0], Stringers);
                
    format(Stringerssizeof(Stringers), "~g~%s~y~: ~g~Skills: ~y~%d"MZInfo[0][mFrackVlad], ScoreZahvat[MZInfo[0][mFrackVlad]]);
                
    TextDrawSetString(CaptureMafia[1], Stringers);
            }
            return 
    1;
        }
        return 
    1;

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    хе-хе блин все знаете ) Спасибо!

 

 

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

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

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

Ваши права

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