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

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

    Проблема с пабликом

    Доброго времени суток. Возникла такая проблема. В консоле при уничтожении машины пишет ошибку, она в public OnVehicleDeath, на строчке 6751

    PHP код:
    Run time error 4"Array index out of bounds"
    [debug]  Attempted to read/write array element at negative index -1
    [debugAMX backtrace:
    [
    debug#0 002e29e8 in public OnVehicleDeath (vehicleid=266, killerid=0) at D:\Mod\gamemodes\edit.pwn:6751 

    PHP код:
    public OnVehicleDeath(vehicleidkillerid)
    {
        if(
    killerid != INVALID_PLAYER_ID && !IsPlayerConnected(killerid)) return 0;
        new 
    Floatpos[3];
            
    GetVehicleRotation(vehicleidpos[0], pos[1], pos[2]);
            if((
    pos[1] < 90 && pos[1] > -90) && VehicleInfo[vehicleid][vDriver] == INVALID_PLAYER_ID && GetPVarInt(killerid"lastveh") != vehicleid && killerid != INVALID_PLAYER_ID)
            {
                    if(
    AntiCheatMessage[killerid] == 0)
                    {
                            new 
    string[128];
                            
    format(stringsizeof(string), "%s[%d] возможно использует CarFair"GetName(killerid), killerid);
                            
    SendAdminMessage(COLOR_ORANGEstring);
                            
    WriteLog("CheatLog"string);
                    }
                    
    AntiCheatMessage[killerid] = 10;
                    return 
    0;
            }
            
    DeletePVar(killerid"lastveh");
            if(
    vehicleid >= aTruck[0][0] && vehicleid <= aTruck[2][1])
            {
                    new 
    playerid VehicleInfo[vehicleid][vDriver];
                    if(
    playerid != INVALID_PLAYER_ID)
                    {
                            
    SendClientMessage(playerid,COLOR_RED,"Трак уничтожен.Вам было возвращено 80% от стоимости груза.");
                            new 
    back pTemp[playerid][pTruckWeight]/100*80*2;
                            
    TransferMoney(-1,playerid,back,"Возврат за уничтоженый трак"1);
                            if(
    pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID)
                            {
                                    if(
    IsValidDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]))
                                    {
                                            
    DestroyDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]);
                                            
    pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
                                    }
                                    
    DestroyVehicle(pTemp[playerid][pTruckWagonID]);
                                    
    pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
                                    
    pTemp[playerid][pTruckWagonTime] = 0;
                                    
    pTemp[playerid][pTruckWeight] = 0;
                                    
    pTemp[playerid][pTruckLoadID] = 0;
                                    
    SetPVarInt(playerid,"informed",0);
                                    
    SetPVarInt(playerid,"truckonroad",0);
                            }
                            
    pTemp[playerid][pTruckID] = INVALID_VEHICLE_ID;
                    }
            }
        new 
    get_rent GetArendCarID(vehicleid);
            if(
    get_rent != INVALID_VEHICLE_ID)
            {
                new 
    playerid ArendInfo[get_rent][aPlayerID]; //Вот эта строчка.
                
    ArendInfo[get_rent][aPlayerID] = INVALID_PLAYER_ID;
                if(
    IsPlayerConnected(playerid) && GetPVarInt(playerid"arendkey") == get_rent)
                {
                    
    SendClientMessage(playeridCOLOR_WHITE"Транспорт, который вы арендовали, был уничтожен. Аренда закончилась");
                    
    SetPVarInt(playerid"arendkey", -1);
                }
            }
        return 
    1;

    Pawn ? Не, не слышал. © Ne_nub

    PHP код:
    CMD:info(playeridparams[])
    {
        
    SendClientMessage(playerid,COLOR_GREY,"* Что такое Pawn - вообще не знаю");
        
    SendClientMessage(playerid,COLOR_GREY,"* Как создаю темы - понятия не имею");
        
    SendClientMessage(playerid,COLOR_GREY,"* Как оказался на этом форуме - случайно");
        
    SendClientMessage(playerid,COLOR_GREY,"* Я занимаюсь проектом - естественно");
        
    SendClientMessage(playerid,COLOR_GREY,"* Я говорю сам с собой - псих");
        return 
    true;


  2. #2
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Выход за пределы массива - http://pro-pawn.ru/showthread.php?12957

  3. #3
    Аватар для BodyanZe
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2017
    Сообщений
    23
    Репутация:
    0 ±
    Нету проверки на то, что машина не является арендной, поэтому в проверку
    PHP код:
    if(get_rent != INVALID_VEHICLE_ID
    стоит добавить
    PHP код:
    if(get_rent != INVALID_VEHICLE_ID && get_rent >= 0

 

 

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

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

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

Ваши права

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