Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 32
  1. #1
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±

    Выход за пределы массива

    Здравствуйте Ув.Пользователи портала.

    Такой вопрос, почему ругается CrashDetect и почему закрывается диалог?

    Переделываю статистику и раньше она выглядела так:

     Тык
    PHP код:
    new veh;
    new 
    avto[20];
    if(
    pStats[targetid][Mycar] == 1000){ avto "Нет"; }
                    else if(
    pStats[targetid][Mycar] < 1000){
                    
    veh GetVehicleModel(pStats[targetid][Mycar]);
                    
    veh -= 400;
                    
    format(avto,sizeof(avto), "%s"PlayerVehicle[veh]);}
    new 
    bike[20];
    if(
    pStats[targetid][Mybike] == 0){ bike "Нет"; }
                    else if(
    pStats[targetid][Mybike] > 0){
                    
    veh GetVehicleModel(pStats[targetid][Mybike]);
                    
    veh -= 400;
                    
    format(bike,sizeof(bike), "%s"PlayerVehicle[veh]);} 


    И все работало отлично, но я решил переделать и сделать вот так:
    PHP код:
    new avto[20];
                    for(new 
    iMAX_xCARS1i++)
                    {
                        
    GetPlayerName(targetidPlayerNname24);
                        if(
    strcmp(cInfo[i][cOwner], PlayerNnamefalse) == 0)
                         {
                        
    veh GetVehicleModel(cInfo[i][cCarID]);
                        
    veh -=400;
                        
    format(avto,sizeof(avto), "%s"PlayerVehicle[veh]);
                         }
                    }
                    new 
    bike[20];
                    for(new 
    iMAX_BIKEi++)
                    {
                        
    GetPlayerName(targetidPlayerNname24);
                        if(
    strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == 0)
                         {
                        
    veh GetVehicleModel(BikeInfo[i][cCarID]);
                        
    veh -=400;
                        
    format(bike,sizeof(bike), "%s"PlayerVehicle[veh]);
                        }
                    } 
    И теперь когда я пытаюсь открыть статистику игрока, она не открывается, а вот что пишет CrashDetect

    Код HTML:
    [16:32:19] [debug] Run time error 4: "Array index out of bounds"
    [16:32:19] [debug]  Accessing element at negative index -400
    [16:32:19] [debug] AMX backtrace:
    [16:32:19] [debug] #0 000536ac in ShowStats (playerid=0, targetid=0) at D:\игры\mode(New)!\gamemodes\mode_new.pwn:4733
    [16:32:19] [debug] #1 00172314 in public OnPlayerClickPlayer (playerid=0, clickedplayerid=0, source=0) at D:\игры\mode(New)!\gamemodes\mode_new.pwn:25589

    Но если убрать:
    PHP код:
    new bike[20];
                    for(new 
    iMAX_BIKEi++)
                    {
                        
    GetPlayerName(targetidPlayerNname24);
                        if(
    strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == 0)
                         {
                        
    veh GetVehicleModel(BikeInfo[i][cCarID]);
                        
    veh -=400;
                        
    format(bike,sizeof(bike), "%s"PlayerVehicle[veh]);
                        }
                    } 
    то статистика открывается нормально.

    Плюсами не обижу. Спасибо всем заранее.

  2. #2
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Если не ошибаюсь, здесь выход за пределы массива

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

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Если не ошибаюсь, здесь выход за пределы массива
    Да верно, я загуглил и там тоже так же пишут, а как исправить Вы не знаете?

  4. #4
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Скинь весь stock ShowStats, параметры проверь

  5. #5
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Скинь весь stock ShowStats, параметры проверь
    PHP код:
    stock ShowStats(playeridtargetid)
    {
                    new 
    veh;
                    new 
    vehbike;
                    new 
    PlayerNname[MAX_PLAYER_NAME];
                    new 
    house[20];//дом
                    
    if(pStats[targetid][House] <= 999){ house "Да"; }
                    else if(
    pStats[targetid][House] == 1000) { house "Нет"; }
                    new 
    dachaa[20];//дом
                    
    if(pStats[targetid][Dacha] <= 999){ dachaa "Да"; }
                    else if(
    pStats[targetid][Dacha] == 1000) { dachaa "Нет"; }
                    new 
    bizzn[64], monyerr;//biz
                    
    if(pStats[targetid][Biznes] <= 999){
                    
    format(bizzn,sizeof(bizzn), "%s"BizzInfo[pStats[targetid][Biznes]][Name]);
                    
    monyerr =  BizzInfo[pStats[targetid][Biznes]][dohod];}
                    else if(
    pStats[targetid][Biznes] == 1000) { bizzn "Нет"monyerr 0; }
                    new 
    avto[20];
                    for(new 
    iMAX_xCARS1i++)
                    {
                        
    GetPlayerName(targetidPlayerNname24);
                        if(
    strcmp(cInfo[i][cOwner], PlayerNnamefalse) == 0)
                         {
                        
    veh GetVehicleModel(cInfo[i][cCarID]);
                        
    veh -=400;
                        
    format(avto,sizeof(avto), "%s"PlayerVehicle[veh]);
                         }
                    }
                    new 
    bike[20];
                    for(new 
    iMAX_BIKEi++)
                    {
                        
    GetPlayerName(targetidPlayerNname24);
                        if(
    strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == 0)
                         {
                        
    veh GetVehicleModel(BikeInfo[i][cCarID]);
                        
    veh -=400;
                        
    format(bike,sizeof(bike), "%s"PlayerVehicle[veh]);
                        }
                    }
    /*=====================================================================*/
    /*ниже идет по стандарту, но я буду переделывать все что находится ниже*/
    /*=====================================================================*/
                    
    new jeeeep[20];
                    if(
    pStats[targetid][Myjeep] == 0){ jeeeep "Нет"; }
                    else if(
    pStats[targetid][Myjeep] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Myjeep]);
                    
    veh -= 400;
                    
    format(jeeeep,sizeof(jeeeep), "%s"PlayerVehicle[veh]);}
                    new 
    voen[20];
                    if(
    pStats[targetid][Mytank] == 0){ voen "Нет"; }
                    else if(
    pStats[targetid][Mytank] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Mytank]);
                    
    veh -= 400;
                    
    format(voen,sizeof(voen), "%s"PlayerVehicle[veh]);}
                    new 
    boat[20];
                    if(
    pStats[targetid][Myboat] == 0){ boat "Нет"; }
                    else if(
    pStats[targetid][Myboat] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Myboat]);
                    
    veh -= 400;
                    
    format(boat,sizeof(boat), "%s"PlayerVehicle[veh]);}
                    new 
    gruz[20];
                    if(
    pStats[targetid][Myfred] == 0){ gruz "Нет"; }
                    else if(
    pStats[targetid][Myfred] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Myfred]);
                    
    veh -= 400;
                    
    format(gruz,sizeof(gruz), "%s"PlayerVehicle[veh]);}
                    new 
    vertt[20];
                    if(
    pStats[targetid][Myyaht] == 0){ vertt "Нет"; }
                    else if(
    pStats[targetid][Myyaht] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Myyaht]);
                    
    veh -= 400;
                    
    format(vertt,sizeof(vertt), "%s"PlayerVehicle[veh]);}
                    new 
    velikk[20];
                    if(
    pStats[targetid][Myvele] == 0){ velikk "Нет"; }
                    else if(
    pStats[targetid][Myvele] > 0) {
                    
    veh GetVehicleModel(pStats[targetid][Myvele]);
                    
    veh -= 400;
                    
    format(velikk,sizeof(velikk), "%s"PlayerVehicle[veh]);}
                    if(
    pStats[targetid][M4] <= 100){ pStats[targetid][M42] = pStats[targetid][M4]; }
                    else if(
    pStats[targetid][M4] > 100) { pStats[targetid][M42] = 100; }
                    if(
    pStats[targetid][Sniper] <= 100){ pStats[targetid][Sniper2] = pStats[targetid][Sniper]; }
                    else if(
    pStats[targetid][Sniper] > 100) { pStats[targetid][Sniper2] = 100; }
                    if(
    pStats[targetid][AK47] <= 100){ pStats[targetid][AK472] = pStats[targetid][AK47]; }
                    else if(
    pStats[targetid][AK47] > 100) { pStats[targetid][AK472] = 100; }
                    if(
    pStats[targetid][MP5] <= 100){ pStats[targetid][MP52] = pStats[targetid][MP5]; }
                    else if(
    pStats[targetid][MP5] > 100) { pStats[targetid][MP52] = 100; }
                    if(
    pStats[targetid][HOG] <= 100){ pStats[targetid][HOG2] = pStats[targetid][HOG]; }
                    else if(
    pStats[targetid][HOG] > 100) { pStats[targetid][HOG2] = 100; }
                    if(
    pStats[targetid][YZI] <= 100){ pStats[targetid][YZI2] = pStats[targetid][YZI]; }
                    else if(
    pStats[targetid][YZI] > 100) { pStats[targetid][YZI2] = 100; }
                    if(
    pStats[targetid][MM] <= 100){ pStats[targetid][MM2] = pStats[targetid][MM]; }
                    else if(
    pStats[targetid][MM] > 100) { pStats[targetid][MM2] = 100; }
                    if(
    pStats[targetid][Drobov] <= 100){ pStats[targetid][Drobov2] = pStats[targetid][Drobov]; }
                    else if(
    pStats[targetid][Drobov] > 100) { pStats[targetid][Drobov2] = 100; }
                    if(
    pStats[targetid][Digl] <= 100){ pStats[targetid][Digl2] = pStats[targetid][Digl]; }
                    else if(
    pStats[targetid][Digl] > 100) { pStats[targetid][Digl2] = 100; }
                    if(
    pStats[targetid][Spaz] <= 100){ pStats[targetid][Spaz2] = pStats[targetid][Spaz]; }
                    else if(
    pStats[targetid][Spaz] > 100) { pStats[targetid][Spaz2] = 100; }
                    if(
    pStats[targetid][Vintov] <= 100){ pStats[targetid][Vintov2] = pStats[targetid][Vintov]; }
                    else if(
    pStats[targetid][Vintov] > 100) { pStats[targetid][Vintov2] = 100; }
                    if(
    pStats[targetid][Tec] <= 100){ pStats[targetid][Tec2] = pStats[targetid][Tec]; }
                    else if(
    pStats[targetid][Tec] > 100) { pStats[targetid][Tec2] = 100; }
                    
    stmp[0] = 0;
                    
    format(stmp,sizeof(stmp),"\
                    {F78C00}===Очки===\n\
                    {BFFE01}Убийств: {FFFFFF}%d\n\
                    {BFFE01}Смертей: {FFFFFF}%d\n\
                    {BFFE01}Уровень: {FFFFFF}%d\n\
                    {BFFE01}Опыт дрифта: {FFFFFF}%d\n\
                    {F78C00}===Деньги===\n\
                    {BFFE01}Наличные: {FFFFFF}$%d\n\
                    {BFFE01}Банк: {FFFFFF}$%d\n\
                    {F78C00}===Собственность===\n\
                    {BFFE01}Дом: {FFFFFF}%s\n\
                    {BFFE01}Дача: {FFFFFF}%s\n\
                    {BFFE01}Бизнес: {FFFFFF}%s\n\
                    {BFFE01}Прибыль от бизнеса: {FFFFFF}$%d\n\
                    {BFFE01}Легковое Авто: {FFFFFF}%s\n\
                    {BFFE01}Внедорожник: {FFFFFF}%s"
    ,
                    
    pStats[targetid][Kills],
                    
    pStats[targetid][Deads],
                    
    status[targetid],
                    
    pStats[targetid][pScore],
                    
    pStats[targetid][Money],
                    
    pStats[targetid][Bank],
                    
    house,
                    
    dachaa,
                    
    bizzn,
                    
    monyerr,
                    
    avto,
                    
    jeeeep);
                    
    format(stmp,sizeof(stmp),"%s\n\
                    {BFFE01}Грузовик: {FFFFFF}%s\n\
                    {BFFE01}Самолет/вертолет: {FFFFFF}%s\n\
                    {BFFE01}Военная техника: {FFFFFF}%s\n\
                    {BFFE01}Водный транспорт: {FFFFFF}%s\n\
                    {BFFE01}Мотоцикл: {FFFFFF}%s\n\
                    {BFFE01}Велосипед: {FFFFFF}%s\n\
                    {F78C00}===Оружие===\n\
                    {BFFE01}Мастер Ножа: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Пистолета: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Пустынного Орла: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Дробовика: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер SPAS-12: {FFFFFF}%d.0 проц."
    ,
                    
    stmp,
                    
    gruz,
                    
    vertt,
                    
    voen,
                    
    boat,
                    
    bike,
                    
    velikk,
                    
    pStats[targetid][HOG2],
                    
    pStats[targetid][MM2],
                    
    pStats[targetid][Digl2],
                    
    pStats[targetid][Drobov2],
                    
    pStats[targetid][Spaz2]);
                    
    format(stmp,sizeof(stmp),"%s\n\
                    {BFFE01}Мастер Микро Узи: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Tec9: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер MP5: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер АК47: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер М4: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Ружья: {FFFFFF}%d.0 проц.\n\
                    {BFFE01}Мастер Снайперской Винтовки: {FFFFFF}%d.0 проц."
    ,
                    
    stmp,
                    
    pStats[targetid][YZI2],
                    
    pStats[targetid][Tec2],
                    
    pStats[targetid][MP52],
                    
    pStats[targetid][AK472],
                    
    pStats[targetid][M42],
                    
    pStats[targetid][Vintov2],
                    
    pStats[targetid][Sniper2]);
                    
    ShowPlayerDialog(playerid,18,DIALOG_STYLE_MSGBOX,PlayerName(targetid),stmp,"Закрыть","");
                    if(
    pStats[playerid][Admin] == || targetid != playerid)
                    {
                    
    format(GlobalInfosizeof(GlobalInfo), "%s просматривает вашу статистику"PlayerEx[playerid][pNameEx]);
                    
    SendClientMessage(targetid0xF60000AAGlobalInfo);
                    }
                    return 
    1;


  6. #6
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    new avto[20];
    new bike[20];

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

  7. Пользователь сказал cпасибо:
    Дёня (31.07.2014)
  8. #7
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    new avto[20];
    new bike[20];

    попробуй поиграй с этим. Если я правильно понял, то у игрока может быть несколько авто. Значит в эту переменную записываются все имена его авто и байков.
    попробовал изменить new avto[200]; и bike так же, но ничего не вышло, все таже проблема и та же ошибка

  9. #8
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == 0
    на
    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == && (veh GetVehicleModel(cInfo[i][cCarID])) != 0
    И уберите это:
    PHP код:
    veh GetVehicleModel(cInfo[i][cCarID]); 
    Тоже самое проделайте с остальными циклами.

  10. 2 пользователя(ей) сказали cпасибо:
    MR_BEN (31.07.2014) Дёня (05.08.2014)
  11. #9
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    ммм, наверно на

    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == && (veh GetVehicleModel(BikeInfo[i][cCarID])) != 0

  12. #10
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    ммм, наверно на

    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == && (veh GetVehicleModel(BikeInfo[i][cCarID])) != 0
    Цитата Сообщение от Londlem Посмотреть сообщение
    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == 0
    на
    PHP код:
    if(strcmp(BikeInfo[i][cOwner], PlayerNnamefalse) == && (veh GetVehicleModel(cInfo[i][cCarID])) != 0
    Тоже самое проделайте с остальными циклами.
    Эм?

  13. Пользователь сказал cпасибо:
    Дёня (05.08.2014)
 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

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

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

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

Ваши права

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