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

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

    Ошибка записи\чтения массива

    Доброго времени суток. У меня крашит сервер с ошибкой:
    Код:
    00:32:00] [debug] Run time error 4: "Array index out of bounds"
    [00:32:00] [debug]  Attempted to read/write array element at index 65535 in array of size 1000
    [00:32:00] [debug] AMX backtrace:
    [00:32:00] [debug] #0 0013e148 in public Fresh () at C:\Users\Nik\Desktop\Самп серв\gamemodes\Role_Play_.pwn:21859
    [00:32:00] [debug] #1 0032b52c in public TimerUpdate () at C:\Users\Nik\Desktop\Самп серв\gamemodes\Role_Play_.pwn:40137
    
    [22:27:58] [debug] Run time error 4: "Array index out of bounds"
    [22:27:58] [debug]  Attempted to read/write array element at index 65535 in array of size 1000
    [22:27:58] [debug] AMX backtrace:
    [22:27:58] [debug] #0 002ca68c in public OnPlayerCommandText (playerid=2, cmdtext[]=@00761f8c "/goto 1") at C:\Users\Nik\Desktop\Самп серв\gamemodes\Role_Play_.pwn:34837
    PHP код:
    public TimerUpdate() Fresh(); 
    Но crashdetect указывает ниже данного паблика (public TimerUpdate () at ...........pwn:40137 )

    Код:
    40137: foreach(Player,playerid)
    Команда /goto
    PHP код:
    else if(strcmp(cmd"/goto"true) == || strcmp(cmd"/g"true) == 0)
        {
            
    tmp strcharsplit(cmdtextidx);
            if(!
    strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 2) return SendClientMessage(playeridCOLOR_WHITE" Ââåäèòå: /g(oto) [id èãðîêà]");
            new 
    Float:plocx,Float:plocy,Float:plocz;
            new 
    plo ReturnUser(tmp);
            if(
    PlayerInfo[plo][pAdmin] >= 15) return SendClientMessage(playerid,COLOR_GREY,"Íåâîçìîæíîå äåéñòâèå");
            if (!
    IsPlayerConnected(plo)) return SendClientMessage(playeridCOLOR_GREY"[Îøèáêà] Èãðîê íå íàéäåí!");
            {
                if(
    plo != INVALID_PLAYER_ID)
                {
                    if(
    PlayerInfo[playerid][pAdmin] >= 2)
                    {      
    //указывает на эту строчку
                        
    if(specid != INVALID_PLAYER_IDspecid 256;
                        if(
    toggotome[plo] == 1  && PlayerInfo[playerid][pAdmin] < 13) return SendClientMessage(playerid,COLOR_RED," Àäìèíèñòðàòîð çàïðåòèë ê íåìó òåëåïîðòèðîâàòüñÿ!");
                        if(
    GetPlayerState(plo) != && GetPlayerState(plo) != && GetPlayerState(plo) != 3) return SendClientMessage(playeridCOLOR_GRAD1"Èãðîê íå âñòóïèë â èãðó!");
                        if(
    GetPlayerState(plo) == PLAYER_STATE_SPECTATING && gSpectateID[plo] != INVALID_PLAYER_ID) return SendClientMessage(playeridCOLOR_GRAD1"Àäìèí â ðåæèìå íàáëþäåíèÿ");
                        
    GetPlayerPos(ploplocxplocyplocz);
                        if (
    GetPlayerState(playerid) == 2)
                        {
                            new 
    tmpcar GetPlayerVehicleID(playerid);
                            
    SetVehiclePos(tmpcarplocxplocy+4plocz);
                            
    TelePos[playerid][0] = 0.0TelePos[playerid][1] = 0.0;
                        }
                        else
                        {
                            
    SetPPos(playerid,plocx,plocy+2plocz);
                            
    SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(plo));
                            
    SetPlayerInterior(playeridGetPlayerInterior(plo));
                            
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
                        }
                        
    SendClientMessage(playeridCOLOR_WHITE"Âû áûëè òåëåïîðòèðîâàíû!");
                    }
                    else { 
    SendClientMessage(playeridCOLOR_GRAD1"Âû íå óïîëíîìî÷åíû èñïîëüçîâàòü ýòó êîìàíäó!"); }
                }
            }
            return 
    true;
        } 

    Частично Fresh ():
    PHP код:
    if(hour == 00 || hour == 03 || hour == 06 || hour == 09 || hour == 12 || hour == 15 || hour == 18 || hour == 21)
        {
            if(
    minute == 32 && second == 00)
            {
                new 
    houser 0;
                for(new 
    0sizeof(HouseInfo); h++)
                {
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=50kazna += 50;
                        if(
    HouseInfo[h][hTakings] > 16800HouseInfo[h][hTakings] = 16800;
                    }
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=100kazna += 100;
                        if(
    HouseInfo[h][hTakings] > 33600HouseInfo[h][hTakings] = 33600;
                    }
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=150kazna += 150;
                        if(
    HouseInfo[h][hTakings] > 50400HouseInfo[h][hTakings] = 50400;
                    }
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=200kazna += 200;
                        if(
    HouseInfo[h][hTakings] > 67200HouseInfo[h][hTakings] = 67200;
                    }
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=300kazna += 300;
                        if(
    HouseInfo[h][hTakings] > 84000HouseInfo[h][hTakings] = 84000;
                    }
                    if(
    HouseInfo[h][hKlass] == && HouseInfo[h][hOwned] == 1)//Êëàññû äîìîâ
                    
    {
                        
    HouseInfo[h][hTakings] -=400kazna += 400;
                        if(
    HouseInfo[h][hTakings] > 100000HouseInfo[h][hTakings] = 100000;
                    }
                    if(
    HouseInfo[h][hTakings] <= && HouseInfo[h][hOwned] == 1)
                    {
                        new 
    housecash HouseInfo[h][hValue];
                        new 
    playeridd GetPlayerID(HouseInfo[h][hOwner]);
                        if(
    IsPlayerConnected(playeridd)) { PlayerInfo[playeridd][pPhousekey] = 255SendClientMessage(playeriddCOLOR_LIGHTRED" Âàø äîì áûë ïðîäàí çà íåóïëàòó ãîñóäàðòñâó."); }
                        else if(!
    IsPlayerConnected(playeridd))
                        {
                            new 
    mysql_query[128];
                            
    format(mysql_querysizeof(mysql_query), "UPDATE `accounts` SET `pPhousekey` = '255', `pHousecash` = '%d' WHERE `Name` = '%s'",housecashHouseInfo[h][hOwner]);
                            
    mysql_function_query(connectsmysql_queryfalse"""");
                        }
                        
    HouseInfo[h][hHel] = 0;
                        
    HouseInfo[h][hLock] = 1// указывает на эту строку
                        
    HouseInfo[h][hArended] = 0;
                        if(
    caridhouse[playeridd] != 0)
                        {
                            
    DestroyVehicle(caridhouse[playeridd]);
                            
    caridhouse[playeridd] = 0;
                        }
                        if(
    caridhouse2[playeridd] != 0)
                        {
                            
    DestroyVehicle(caridhouse2[playeridd]);
                            
    caridhouse2[playeridd] = 0;
                        }
                        if(
    HouseInfo[h][hHolod] == 1)DestroyDynamicCP(HouseInfo[h][hHolodd]),HouseInfo[h][hHolod] = 0;
                        if(
    HouseInfo[h][hSafe] == 1)
                        {
                            
    DestroyDynamicCP(HouseInfo[h][hObjsafe][0]);
                            
    DestroyDynamicObject(HouseInfo[h][hObjsafe][1]);
                            
    DestroyDynamic3DTextLabel(HouseInfo[h][hSafee]);
                            
    HouseInfo[h][hSafe] = 0;
                        }
                        for(new 
    0i<9;i++){HouseInfo[h][hProducts][i] = 0;}
                        
    HouseInfo[h][hOwned] = 0// Óñòàíàâëèàåì äîìó: Âëàäåëüöà áåç ïðàâ ê äîìó (ïóñòîé äîì) .
                        
    HouseInfo[h][hHel] = 0// Óñòàíàâëèàåì äîìó: 0 àïòå÷åê .
                        
    HouseInfo[h][hTakings] = 0// Óñòàíàâëèàåì äîìó: 0 äîìàøíèé ñ÷¸ò .
                        
    HouseInfo[h][hLock] = 1;
                        
    strmid(HouseInfo[h][hOwner], "The State"0strlen("The State"), 255); // Óñòàíàâëèàåì äîìó: Âëàäåëüöà ñ èìåíåì THE STATE (ïóñòîé äîì) .
                        
    BuyHousee(); // Îòïðàâëÿåì ôóíêöèþ BuyHouse (ðàáîòà ñ èêîíêàìè) .
                        
    SaveHouse(h);
                    }
                    if(
    HouseInfo[h][hOwned] == 0)
                    {
                        
    DestroyDynamicMapIcon(HouseInfo[h][hMIcon]);
                        
    HouseInfo[h][hMIcon] = CreateDynamicMapIcon(HouseInfo[h][hEnterhou][0], HouseInfo[h][hEnterhou][1], HouseInfo[h][hEnterhou][2], 31COLOR_WHITE0, -1, -1200.0);
                    }
                    if(
    HouseInfo[h][hOwned] == 1)
                    {
                        
    DestroyDynamicMapIcon(HouseInfo[h][hMIcon]);
                        
    HouseInfo[h][hMIcon] = CreateDynamicMapIcon(HouseInfo[h][hEnterhou][0], HouseInfo[h][hEnterhou][1], HouseInfo[h][hEnterhou][2], 32COLOR_WHITE0, -1, -1200.0);
                    }
                }
                new 
    stringer[fk_str];
                
    format(stringer,sizeof(stringer),"{FFa500}[Info] Ïðîäàíî {fff700}%d {ffa500}äîìîâ",houser);
                
    ABroadCast(COLOR_LIGHTRED,stringer,1);
            }
        } 
    Надеюсь на вашу помощь.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    PHP код:
    40137: foreach(Player,playerid
    Это что за инициализация форича такая интересная?
    PHP код:
     if (!IsPlayerConnected(plo)) return SendClientMessage(playeridCOLOR_GREY"[Îøèáêà] Èãðîê íå íàéäåí!");
            {
                if(
    plo != INVALID_PLAYER_ID)
                { 
    А это еще что за чудо кодинга? Это что РЛС что ли?

    - - - Добавлено - - -

    PHP код:
    else if(strcmp(cmd"/goto"true) == || strcmp(cmd"/g"true) == 0)
    {
        
    tmp strcharsplit(cmdtextidx);
        if(!
    strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 2) return SendClientMessage(playeridCOLOR_WHITE" Ââåäèòå: /g(oto) [id èãðîêà]");
        new 
    Float:plocx,Float:plocy,Float:plocz;
        new 
    plo ReturnUser(tmp);
        
        
    //Первыми нужно делать проверки на условия при которых команда работать не должна, что бы не путатся потом в скобочках. Удобнее и понятнее.
        //if(plo == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "INVALID PLAYER ID!"); Эта проверка не нужна, так как если будет неверный id проверка IsPlayerConnected вернет false и не сработает условие.
        
    if (!IsPlayerConnected(plo)) return SendClientMessage(playeridCOLOR_GREY"[Îøèáêà] Èãðîê íå íàéäåí!");
        if(
    PlayerInfo[plo][pAdmin] >= 15) return SendClientMessage(playerid,COLOR_GREY,"Íåâîçìîæíîå äåéñòâèå");
        if(
    PlayerInfo[playerid][pAdmin] < 2) return SendClientMessage(playeridCOLOR_GRAD1"Âû íå óïîëíîìî÷åíû èñïîëüçîâàòü ýòó êîìàíäó!");
        
        
        if(
    specid != INVALID_PLAYER_IDspecid 256// Что это за гавно я так и не понял
        
    if(toggotome[plo] == 1  && PlayerInfo[playerid][pAdmin] < 13) return SendClientMessage(playerid,COLOR_RED," Àäìèíèñòðàòîð çàïðåòèë ê íåìó òåëåïîðòèðîâàòüñÿ!");
        if(
    GetPlayerState(plo) != && GetPlayerState(plo) != && GetPlayerState(plo) != 3) return SendClientMessage(playeridCOLOR_GRAD1"Èãðîê íå âñòóïèë â èãðó!");
        if(
    GetPlayerState(plo) == PLAYER_STATE_SPECTATING && gSpectateID[plo] != INVALID_PLAYER_ID) return SendClientMessage(playeridCOLOR_GRAD1"Àäìèí â ðåæèìå íàáëþäåíèÿ");
        
    GetPlayerPos(ploplocxplocyplocz);
        if (
    GetPlayerState(playerid) == 2)
        {
            new 
    tmpcar GetPlayerVehicleID(playerid);
            
    SetVehiclePos(tmpcarplocxplocy+4plocz);
            
    TelePos[playerid][0] = 0.0TelePos[playerid][1] = 0.0;
        }
        else
        {
            
    SetPPos(playerid,plocx,plocy+2plocz);
            
    SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(plo));
            
    SetPlayerInterior(playeridGetPlayerInterior(plo));
            
    PlayerInfo[playerid][pInt] = GetPlayerInterior(plo);
        }
        
    SendClientMessage(playeridCOLOR_WHITE"Âû áûëè òåëåïîðòèðîâàíû!");
        
        return 
    true;

    ПОфиксил

    - - - Добавлено - - -

    Да и вообще поставь себе командный процессор(dc_cmd,pawn.cmd,izcmd) - а то в 2016 юзать стандартный это зашквар.
    Последний раз редактировалось qwezert; 21.10.2016 в 11:13.

  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    PHP код:
        if(specid != INVALID_PLAYER_IDspecid 256// Что это за гавно я так и не понял 
    Скорее всего, это осталось ещё с тех времён, когда макс. длина ника составляла 16 символов, а сервер вмещал до 256 игроков (0-255, т.е. 256 был неправильным ID, хотя можно было использовать -1 с расчётом на увеличение макс. онлайна в будущем). Легаси-код, он такой.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    21.10.2016
    Сообщений
    2
    Репутация:
    0 ±
    Благодарю, вопрос решен.

 

 

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

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

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

Ваши права

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