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

    Статус
    Оффлайн
    Регистрация
    01.02.2014
    Адрес
    Татарстан
    Сообщений
    171
    Репутация:
    0 ±

    Ошибки в crashdetect'e

    Логи выдают такое
    [18:03:58] [debug] #0 001250b8 in public OtherTimer () at C:\Users\Aidar\Desktop\gamemodes\split.pwn:20966
    [18:04:01] Игрок Kot_Pushok спавнился в очереди 100
    [18:04:01] [debug] Run time error 4: "Array index out of bounds"
    [18:04:01] [debug] Accessing element at index 65535 past array upper bound 299
    [18:04:01] [debug] AMX backtrace:
    [18:04:01] [debug] #0 001250b8 in public OtherTimer () at C:\Users\Aidar\Desktop\gamemodes\split.pwn:20966
    [18:04:05] [debug] Run time error 4: "Array index out of bounds"
    [18:04:05] [debug] Accessing element at index 65535 past array upper bound 299
    [18:04:05] [debug] AMX backtrace:
    [18:04:05] [debug] #0 001250b8 in public OtherTimer () at C:\Users\Aidar\Desktop\gamemodes\split.pwn:20966
    [18:04:08] [debug] Run time error 4: "Array index out of bounds"
    [18:04:08] [debug] Accessing element at index 65535 past array upper bound 299
    [18:04:08] [debug] AMX backtrace:
    [18:04:08] [debug] #0 001250b8 in public OtherTimer () at C:\Users\Aidar\Desktop\gamemodes\split.pwn:20966
    [18:04:11] [debug] Run time error 4: "Array index out of bounds"
    [18:04:11] [debug] Accessing element at index 65535 past array upper bound 299
    [18:04:11] [debug] AMX backtrace:
    [18:04:11] [debug] #0 001250b8 in public OtherTimer () at C:\Users\Aidar\Desktop\gamemodes\split.pwn:20966
    Вот строчка паблик
    PHP код:
    publicsOtherTimer()
    {
        
    GetMoney();
        foreach(new 
    iPlayer)
        {
            if(
    IsPlayerConnected(i))
            {
                if(
    CellTime[i] > 0)
                {
                    if (
    CellTime[i] == 60)
                    {
                        
    CellTime[i] = 1;
                        if(
    Mobile[Mobile[i]] == iCallCost[i] = CallCost[i]+callcost;
                    }
                    
    CellTime[i] = CellTime[i]+1;
                    if(
    Mobile[Mobile[i]] == && CellTime[i] == 5)// <---- строчка 20966
                    
    {
                        if(
    IsPlayerConnected(Mobile[i]))
                        {
                            
    format(stringersizeof(stringer), "У %s звонит мобильник"PlayerInfo[Mobile[i]][pNames]);
                            
    ProxDetector(30.0Mobile[i], stringerCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        }
                    }
                }
                if(
    CellTime[i] == && CallCost[i] > 0)
                {
                    
    format(stringersizeof(stringer), "~w~Phone~n~~r~%d",CallCost[i]);
                    
    PlayerInfo[i][pCash] -=-CallCost[i];
                    
    GameTextForPlayer(istringer50001);
                    
    CallCost[i] = 0;
                }
            }
        }
        return 
    true;

    new 
    CellTime[MAX_PLAYERS];
    new 
    Mobile[MAX_PLAYERS];

    А второй раз вот
    [18:09:21] [debug] AMX backtrace:
    [18:09:21] [debug] #0 002a4c34 in strcharsplit (string[]=@0x004c5bb4 "", &index=@0x004c8928, seperator=32) at C:\Users\Aidar\Desktop\gamemodes\split.pwn:39065
    [18:09:21] [debug] #1 00268448 in public OnPlayerCommandTextEx (playerid=24, cmdtext[]=@0x004c5bb4 "") at C:\Users\Aidar\Desktop\gamemodes\split.pwn:35863
    [18:09:21] [debug] #2 0038a4b0 in public OnPlayerCommandPerformed (playerid=24, cmdtext[]=@0x004c5bb4 "", success=0) at C:\Users\Aidar\Desktop\gamemodes\split.pwn:46914
    [18:09:21] [debug] #3 0000d8ac in public OnPlayerCommandText (playerid=24, cmdtext[]=@0x004c5b14 "") at C:\Users\Aidar\Desktop\ппавн др\pawno\include\zcmd.inc:108
    [18:09:23] [debug] Run time error 4: "Array index out of bounds"
    [18:09:23] [debug] Accessing element at index 20 past array upper bound 19
    [18:09:23] [debug] AMX backtrace:
    [18:09:23] [debug] #0 002a4c34 in strcharsplit (string[]=@0x004c5ba8 "", &index=@0x004c8928, seperator=32) at C:\Users\Aidar\Desktop\gamemodes\split.pwn:39065
    [18:09:23] [debug] #1 00268448 in public OnPlayerCommandTextEx (playerid=24, cmdtext[]=@0x004c5ba8 "") at C:\Users\Aidar\Desktop\gamemodes\split.pwn:35863
    [18:09:23] [debug] #2 0038a4b0 in public OnPlayerCommandPerformed (playerid=24, cmdtext[]=@0x004c5ba8 "", success=0) at C:\Users\Aidar\Desktop\gamemodes\split.pwn:46914
    [18:09:23] [debug] #3 0000d8ac in public OnPlayerCommandText (playerid=24, cmdtext[]=@0x004c5b14 "") at C:\Users\Aidar\Desktop\ппавн др\pawno\include\zcmd.inc:108
    [18:09:24] Аккаунт Nikita_Dragynov был успешно сохранён.(2211)
    [18:09:24] [part] Nikita_Dragynov has left the server (23:1)

    строчка 39065
    PHP код:
    stock strcharsplit(const string[], &indexseperator=' '){
        new 
    result[20], 0;
        if (
    index != && string[index] != '\0'index++;
        while (
    string[index] && string[index] != seperator && string[index] != '\r' && string[index] != '\n'){
            
    result[i++] = string[index++];// <---- эта строчка
        
    }
        return 
    result;

    строчка 35863
    PHP код:
    //===============================================================================
        
    else if(strcmp(cmd"/sethp"true) == 0)
        {
            if(
    PlayerDeathmatch[playerid] > && DeathmatchRound == 0) return SendClientMessage(playerid,COLOR_WHITE,"Запрещено использовать в бою!");
            
    tmp strcharsplit(cmdtextidx);
            if(!
    strlen(tmp)) return    SendClientMessage(playeridCOLOR_WHITE" Введите: /sethp [id] [уровень hp]");
            if(
    anti[playerid] == 1) return SendClientMessage(playeridCOLOR_LIGHTRED"[Анти-Наказание] Вы словили блок на наказание сроком 5 минут.");
            new 
    playa ReturnUser(tmp);
            
    tmp strcharsplit(cmdtextidx);//<--- эта строчка
            
    new health strval(tmp);
            if (
    PlayerInfo[playerid][pAdmInections] >= 7)
            {
                if(
    IsPlayerConnected(playa))
                {
                    if(
    playa != INVALID_PLAYER_ID)
                    {
                        
    PlayerHealth[playa] = health;
                        
    antiwarn[playerid] += 8;
                        if(
    antiwarn[playerid] >= 30 && anti[playerid] == 0anti[playerid] = 1antiwarn[playerid] = 300;
                        
    SetPlayerHealthAC(playahealth);
                        
    SendClientMessage(playeridCOLOR_WHITE"Уровень hp игроку установлен");
                        
    format(stringer,sizeof(stringer),"[SETHP] Администратор: %s установил уровень HP игроку %s на %i ",PlayerInfo[playerid][pNames],PlayerInfo[playa][pNames],health);
                        
    ABroadCast(0x6495EDFF,stringer,1);
                    }
                }
            }
            else { 
    SendClientMessage(playeridCOLOR_GRAD1"Вы не уполномочены использовать эту команду!"); }
            return 
    true;
        } 

    Из-за этого сервер делает рестарты!

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Рекомендую почитать статью об этой ошибке.

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

    Статус
    Оффлайн
    Регистрация
    01.02.2014
    Адрес
    Татарстан
    Сообщений
    171
    Репутация:
    0 ±
    А что мне делать в моём случае?

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от #NickName Посмотреть сообщение
    А что мне делать в моём случае?
    Я бы в твоем случае поставил один из командных процессоров(DC_CMD,PawnCmd,IZCMD) и не парился с разбором строки. А так у тебя там ошибка выхода за пределы массива. Но лучшим решением будет - командный процессор - и удобнее и быстрее.

  6. Пользователь сказал cпасибо:
    #NickName (08.10.2016)
  7. #5
    Аватар для #NickName
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.02.2014
    Адрес
    Татарстан
    Сообщений
    171
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Я бы в твоем случае поставил один из командных процессоров(DC_CMD,PawnCmd,IZCMD) и не парился с разбором строки. А так у тебя там ошибка выхода за пределы массива. Но лучшим решением будет - командный процессор - и удобнее и быстрее.
    У меня стоит уже zcmd, думаешь на dc_cmd перевести все и не париться?

    А вот с этим что делать тогда?
    PHP код:
    publicsOtherTimer() 

        
    GetMoney(); 
        foreach(new 
    iPlayer
        { 
            if(
    IsPlayerConnected(i)) 
            { 
                if(
    CellTime[i] > 0
                { 
                    if (
    CellTime[i] == 60
                    { 
                        
    CellTime[i] = 1
                        if(
    Mobile[Mobile[i]] == iCallCost[i] = CallCost[i]+callcost
                    } 
                    
    CellTime[i] = CellTime[i]+1
                    if(
    Mobile[Mobile[i]] == && CellTime[i] == 5)// <---- строчка 20966 
                    

                        if(
    IsPlayerConnected(Mobile[i])) 
                        { 
                            
    format(stringersizeof(stringer), "У %s звонит мобильник"PlayerInfo[Mobile[i]][pNames]); 
                            
    ProxDetector(30.0Mobile[i], stringerCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                        } 
                    } 
                } 
                if(
    CellTime[i] == && CallCost[i] > 0
                { 
                    
    format(stringersizeof(stringer), "~w~Phone~n~~r~%d",CallCost[i]); 
                    
    PlayerInfo[i][pCash] -=-CallCost[i]; 
                    
    GameTextForPlayer(istringer50001); 
                    
    CallCost[i] = 0
                } 
            } 
        } 
        return 
    true

    new 
    CellTime[MAX_PLAYERS]; 
    new 
    Mobile[MAX_PLAYERS]; 

    Здесь ошибка if(Mobile[Mobile[i]] == 0 && CellTime[i] == 5)// <---- строчка 20966

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от #NickName Посмотреть сообщение
    У меня стоит уже zcmd, думаешь на dc_cmd перевести все и не париться?

    А вот с этим что делать тогда?
    PHP код:
    publicsOtherTimer() 

        
    GetMoney(); 
        foreach(new 
    iPlayer
        { 
            if(
    IsPlayerConnected(i)) 
            { 
                if(
    CellTime[i] > 0
                { 
                    if (
    CellTime[i] == 60
                    { 
                        
    CellTime[i] = 1
                        if(
    Mobile[Mobile[i]] == iCallCost[i] = CallCost[i]+callcost
                    } 
                    
    CellTime[i] = CellTime[i]+1
                    if(
    Mobile[Mobile[i]] == && CellTime[i] == 5)// <---- строчка 20966 
                    

                        if(
    IsPlayerConnected(Mobile[i])) 
                        { 
                            
    format(stringersizeof(stringer), "У %s звонит мобильник"PlayerInfo[Mobile[i]][pNames]); 
                            
    ProxDetector(30.0Mobile[i], stringerCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                        } 
                    } 
                } 
                if(
    CellTime[i] == && CallCost[i] > 0
                { 
                    
    format(stringersizeof(stringer), "~w~Phone~n~~r~%d",CallCost[i]); 
                    
    PlayerInfo[i][pCash] -=-CallCost[i]; 
                    
    GameTextForPlayer(istringer50001); 
                    
    CallCost[i] = 0
                } 
            } 
        } 
        return 
    true

    new 
    CellTime[MAX_PLAYERS]; 
    new 
    Mobile[MAX_PLAYERS]; 

    Здесь ошибка if(Mobile[Mobile[i]] == 0 && CellTime[i] == 5)// <---- строчка 20966
    У тебя стоит ZCMD но ты юзаешь стандартный OnPlayerCommandText?? А зачем?

  9. Пользователь сказал cпасибо:
    #NickName (08.10.2016)
  10. #7
    Аватар для Son of the Moon
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.08.2016
    Сообщений
    52
    Репутация:
    2 ±
    Так попробуй.
    PHP код:
         if(Mobile[i] == && CellTime[i] == 5
    Ну и это замени:
    PHP код:
         CellTime[i]++; 

  11. Пользователь сказал cпасибо:
    #NickName (08.10.2016)
  12. #8
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    1.
    PHP код:
    foreach(new iPlayer
        { 
            if(
    IsPlayerConnected(i)) 
            { 
    Ччччоооо?

    2. Код создание переменных CellTime и Mobile
    Респект:
    @DeimoS
    @ziggi
    @Daniel_Cortez

  13. Пользователь сказал cпасибо:
    #NickName (08.10.2016)
  14. #9
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Мне кажется или
    PHP код:
    if(IsPlayerConnected(Mobile[i])) 
    не там вставлен)) так как до него ещё используется переменная Mobile вот и ругается на неё когда игрока нету в сети...

    И код скорее всего вот так должен выглядеть:
    PHP код:

    new CellTime[MAX_PLAYERS]; 
    new 
    Mobile[MAX_PLAYERS]; 

    publicsOtherTimer() 

        
    GetMoney(); 
        foreach(new 
    iPlayer
        { 
            if(
    IsPlayerConnected(Mobile[i])) 
            { 
                if(
    CellTime[i] > 0
                { 
                    if(
    CellTime[i] == 60
                    { 
                        
    CellTime[i] = 1
                        if(
    Mobile[Mobile[i]] == iCallCost[i] += callcost
                    } 
                    
    CellTime[i]++; 
                    if(
    Mobile[Mobile[i]] == && CellTime[i] == 5)
                    { 
                        
    format(stringersizeof(stringer), "У %s звонит мобильник"PlayerInfo[Mobile[i]][pNames]); 
                        
    ProxDetector(30.0Mobile[i], stringerCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                    } 
                } 
                if(
    CellTime[i] == && CallCost[i] > 0
                { 
                    
    format(stringersizeof(stringer), "~w~Phone~n~~r~%d",CallCost[i]); 
                    
    PlayerInfo[i][pCash] -= CallCost[i]; 
                    
    GameTextForPlayer(istringer50001); 
                    
    CallCost[i] = 0
                } 
            } 
        } 
        return 
    true

    Последний раз редактировалось vovandolg; 08.10.2016 в 02:14.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  15. Пользователь сказал cпасибо:
    #NickName (08.10.2016)
  16. #10
    Аватар для #NickName
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.02.2014
    Адрес
    Татарстан
    Сообщений
    171
    Репутация:
    0 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Мне кажется или
    PHP код:
    if(IsPlayerConnected(Mobile[i])) 
    не там вставлен)) так как до него ещё используется переменная Mobile вот и ругается на неё когда игрока нету в сети...

    И код скорее всего вот так должен выглядеть:
    PHP код:

    new CellTime[MAX_PLAYERS]; 
    new 
    Mobile[MAX_PLAYERS]; 

    publicsOtherTimer() 

        
    GetMoney(); 
        foreach(new 
    iPlayer
        { 
            if(
    IsPlayerConnected(Mobile[i])) 
            { 
                if(
    CellTime[i] > 0
                { 
                    if (
    CellTime[i] == 60
                    { 
                        
    CellTime[i] = 1
                        if(
    Mobile[Mobile[i]] == iCallCost[i] = CallCost[i]+callcost
                    } 
                    
    CellTime[i] = CellTime[i]++; 
                    if(
    Mobile[Mobile[i]] == && CellTime[i] == 5)// <---- строчка 20966 
                    

                        
    format(stringersizeof(stringer), "У %s звонит мобильник"PlayerInfo[Mobile[i]][pNames]); 
                        
    ProxDetector(30.0Mobile[i], stringerCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
                    } 
                } 
                if(
    CellTime[i] == && CallCost[i] > 0
                { 
                    
    format(stringersizeof(stringer), "~w~Phone~n~~r~%d",CallCost[i]); 
                    
    PlayerInfo[i][pCash] -= CallCost[i]; 
                    
    GameTextForPlayer(istringer50001); 
                    
    CallCost[i] = 0
                } 
            } 
        } 
        return 
    true

    оо всё спаасибо)
    А остальные как решить?

 

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

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

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

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

Ваши права

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