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

Реклама


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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±

    Проблема со спидометром

    PHP код:
    [20:22:01] [debugRun time error 4"Array index out of bounds"
    [20:22:01] [debug]  Accessing element at negative index -400
    [20:22:01] [debugAMX backtrace:
    [
    20:22:01] [debug#0 000022f4 in public LuX_SpeedoMeterUp () from Speed.amx 
    Не отследил откуда и почему эта проблема берётся, но видно что проблема в этом паблике:
      Открыть/закрыть
    PHP код:
    public LuX_SpeedoMeterUp()
    {
        new 
    Float:LPosX;
        new 
    Float:LPosY;
        new 
    Float:LPosZ;
        new 
    Float:PlayerSpeedDistance;
        new 
    value;
        new 
    Float:L_VehHealth;
        new 
    LVehicleStatus[15];
        
        for(new 
    i=0i<PLAYERSi++)
        {
            if(
    VehicleStatus[GetPlayerVehicleID(i)] == 1)
            {
                
    LVehicleStatus "~r~Locked";
            }
            else
            {
                
    LVehicleStatus "~g~Unlocked";
            }
            if(
    IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
            {
                
    GetPlayerPos(iLPosXLPosYLPosZ);
                
    GetPlayerVehicleID(i);
                
    GetVehicleHealth(GetPlayerVehicleID(i), L_VehHealth);
                
    PlayerSpeedDistance floatsqroot(floatpower(floatabs(floatsub(LPosX,LuX_ReadPlayerPosition[i][ReadX])),2)+floatpower(floatabs(floatsub(LPosY,LuX_ReadPlayerPosition[i][ReadY])),2)+floatpower(floatabs(floatsub(LPosZ,LuX_ReadPlayerPosition[i][ReadZ])),2));
                
    value floatround(PlayerSpeedDistance 5000);
                new 
    LuxZone[MAX_ZONE_NAME];
                
    GetPlayer2DZone(iLuxZoneMAX_ZONE_NAME);
                if(
    LuX_SpeedoMeter[i] == 0)
                {
                    
    TextDrawShowForPlayer(iLBox[i]);
                    
    TextDrawShowForPlayer(iLLine1[i]);
                    
    TextDrawShowForPlayer(iLLine2[i]);
                    
    TextDrawShowForPlayer(iLLine3[i]);
                    
    TextDrawShowForPlayer(iLLine4[i]);
                    
    TextDrawShowForPlayer(iLCredits[i]);
                    
    TextDrawShowForPlayer(iLmph[i]);
                    
    TextDrawShowForPlayer(iLFunc[i]);
                    
    LuX_SpeedoMeter[i] = 1;
                }
                new 
    LMPH floatround(value/1600);
                new 
    LKPH floatround(value/1000);
                
    format(lstring,sizeof(lstring),"~b~Vehicle: ~w~%s~n~~b~Health: ~w~%.2f~n~~b~Altitude: ~w~%.1f~n~~b~Gps: ~w~%s~n~~b~Status: %s",LVehiclesName[GetVehicleModel(GetPlayerVehicleID(i))-400],L_VehHealth,LPosZ,LuxZone,LVehicleStatus);
                
    TextDrawSetString(LFunc[i], lstring);
                
    format(lstr,sizeof(lstr),"%sMPH: ~w~%d  %sKM/H: ~w~%d",MPH_KPH_Color,LMPH,MPH_KPH_Color,LKPH);
                
    TextDrawSetString(Lmph[i], lstr);
                if(
    L_VehHealth <= 500)
                {
                    
    format(lstring,sizeof(lstring),"%sVehicle: ~w~%s~n~%sHealth: ~w~~r~%.2f~n~%sAltitude: ~w~%.1f~n~%sGps: ~w~%s",CategoriesColor,LVehiclesName[GetVehicleModel(GetPlayerVehicleID(i))-400],CategoriesColor,L_VehHealth,CategoriesColor,LPosZ,CategoriesColor,LuxZone);
                    
    TextDrawSetString(LFunc[i], lstring);
                }
            }
            
    LuX_ReadPlayerPosition[i][ReadX] = LPosXLuX_ReadPlayerPosition[i][ReadY] = LPosYLuX_ReadPlayerPosition[i][ReadZ] = LPosZ;
        }
        for(new 
    i=0i<PLAYERSi++)
        {
            if(!
    IsPlayerInAnyVehicle(i))
            {
                
    TextDrawHideForPlayer(iLBox[i]);
                
    TextDrawHideForPlayer(iLLine1[i]);
                
    TextDrawHideForPlayer(iLLine2[i]);
                
    TextDrawHideForPlayer(iLLine3[i]);
                
    TextDrawHideForPlayer(iLLine4[i]);
                
    TextDrawHideForPlayer(iLCredits[i]);
                
    TextDrawHideForPlayer(iLmph[i]);
                
    TextDrawHideForPlayer(iLFunc[i]);
                
    LuX_SpeedoMeter[i] = 0;
            }
        }
        return 
    1;


    Как этот индекс сделать по умному чтобы не было ошибок в логе?


    ____________________
    PHP код:
    new LVehiclesName[][] =
    {
    названия тачек...

    Последний раз редактировалось vovandolg; 21.12.2015 в 05:31. Причина: Добавил ещё переменную

  2. #2
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Прочитал, чучуть уловил суть
    Но всё равно я нубасик ещё в этом, подтолкните меня получше если не сложно.

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

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    Pro-Pawn.Ru
    Сообщений
    3,428
    Репутация:
    1079 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Прочитал, чучуть уловил суть
    Но всё равно я нубасик ещё в этом, подтолкните меня получше если не сложно.
    К чему вас подтолкнуть-то? Вам скинули ссылку, если внимательно всё прочитать, проблему можно решить самому. В той теме, всё ясно и четко написано.

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Почитал тему с индивидуальными таймерами и о том что это хорошо, а этот спидометр на глобальном был...
    В общем поразмыслил чутка и понял что надо попробовать оптимизировать...
    В итоге стало по сути лучше для сервера + ошибка "вроде" перестала беспокоить
    Тема решена в общем.

    P.S. не знаю повлияло ли это, но тут ещё добавил число 212:
    PHP код:
    new LVehiclesName[212][] =
    {
    названия тачек...


 

 

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

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

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

Ваши права

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