Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    111
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Выход за пределы массива. В данном случае это случается, когда игрок умирает сам по себе. В параметр 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;

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

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

    Steve Pavlina

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

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

 

 

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

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

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

Ваши права

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