Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 6 из 8 ПерваяПервая ... 4 5 6 7 8 ПоследняяПоследняя
Показано с 51 по 60 из 75
  1. #51
    Аватар для Edward Morra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.10.2015
    Сообщений
    83
    Репутация:
    0 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Попробуй подсчёт в массиве выполнить до пропуска инициализации
    например?

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Edward Morra Посмотреть сообщение
    например?
    PHP код:
    new sizestr sizeof(frm_engine)+(-2+MAX_PLAYER_NAME);
    noinit:string[sizestr]; 
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  3. #53
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Попробуй подсчёт в массиве выполнить до пропуска инициализации
    Это не поможет проблеме. Вы ведь никакое значение массиву не устанавливаете во время инициализации.

    PHP код:
    main()
    {
        static const
            
    fmt_str[] = "%s - это была строка...";

        goto 
    noinit;
        new
            
    str[sizeof fmt_str + (-9)];
        
    noinit:
        
        
    format(strsizeof strfmt_str"кака-бяка");
        print(
    str);

    Как тут можно вообще ждать помощи, если формулировка проблемы не ясна совсем. Что значит "после подсчетов по этому методу, стала некорректно работать команда". Что значит "некорректно"? Чего вы ожидали и что получили в итоге укажите.

  4. 2 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (14.10.2016) VVWVV (14.10.2016)
  5. #54
    Аватар для Edward Morra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.10.2015
    Сообщений
    83
    Репутация:
    0 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Это не поможет проблеме. Вы ведь никакое значение массиву не устанавливаете во время инициализации.

    PHP код:
    main()
    {
        static const
            
    fmt_str[] = "%s - это была строка...";

        goto 
    noinit;
        new
            
    str[sizeof fmt_str + (-9)];
        
    noinit:
        
        
    format(strsizeof strfmt_str"кака-бяка");
        print(
    str);

    Как тут можно вообще ждать помощи, если формулировка проблемы не ясна совсем. Что значит "после подсчетов по этому методу, стала некорректно работать команда". Что значит "некорректно"? Чего вы ожидали и что получили в итоге укажите.
    В итоге, что я перейду на более удобный для меня, метод подсчета. Но при переходе на него - команда как бы производит заводку двигателя, но в тоже время выводит текст о том, что заглушил... Все ниже подсчета и вывода игнорируется
    Последний раз редактировалось Edward Morra; 14.10.2016 в 17:49.

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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Edward Morra Посмотреть сообщение
    В итоге, что я перейду на более удобный для меня, метод подсчета. Но при переходе на него - команда как бы производит заводку двигателя, но в тоже время выводит текст о том, что заглушил... Все ниже подсчета и вывода игнорируется
    Это баг.

    Для решения проблемы необходимо переименовать метку.

    Однако существует другой способ:
    Цитата Сообщение от ziggi Посмотреть сообщение
    PHP код:
    #define @new%0\32%1[%2]%3; goto _noinit_%1; new %1[%2]%3; _noinit_%1: 
    и используй так:
    PHP код:
    @new str[10], strr[20], strrr[30]; 
    Синтаксис лучше придумать не смог.
    Однако такой синтаксис работать не будет, ибо у вас названия идентичны, а это значит, что вам необходимо переименовать какой-то из массивов.
    Последний раз редактировалось VVWVV; 14.10.2016 в 18:03.

  7. #56
    Аватар для Edward Morra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.10.2015
    Сообщений
    83
    Репутация:
    0 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Это баг.
    Вот именно про этот баг я твердил.
    Почему не наткнулся я на эту тему...
    Дак, каким оптимальным вариантом решения проблемы будет являться?

  8. #57
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Edward Morra Посмотреть сообщение
    Вот именно про этот баг я твердил.
    Почему не наткнулся я на эту тему...
    Дак, каким оптимальным вариантом решения проблемы будет являться?
    Самым лучшим решением будет забить на пропуск инициализации и писать код нормально. Ибо ты совершенно ничего не понимаешь в оптимизации (куча вызовов GetPlayerVehicleID, оптимизируешь инициализацию массива ), а такие "оптимизации" только вредят. Ну или просто используй разные названия переменных.

    P.S. Нахватаются от всяких, а потом не понимают где проблемы... Любые микрооптимизации можно производить только при знании того, как оно работает и для чего это делается и только после общей оптимизации кода и алгоритмов (а это оптимизировать куда сложнее).
    Последний раз редактировалось ziggi; 14.10.2016 в 18:52.

  9. 3 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (14.10.2016) Edward Morra (14.10.2016) VVWVV (14.10.2016)
  10. #58
    Аватар для Edward Morra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.10.2015
    Сообщений
    83
    Репутация:
    0 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Самым лучшим решением будет забить на пропуск инициализации и писать код нормально. Ибо ты совершенно ничего не понимаешь в оптимизации (куча вызовов GetPlayerVehicleID, оптимизируешь инициализацию массива ), а такие "оптимизации" только вредят. Ну или просто используй разные названия переменных.

    P.S. Нахватаются от всяких, а потом не понимают где проблемы... Любые микрооптимизации можно производить только при знании того, как оно работает и для чего это делается и только после общей оптимизации кода и алгоритмов (а это оптимизировать куда сложнее).
    Мог бы конкретней указать на мою некомпитентность в данном коде?
    Все и рвуться, потому-что хотят что-то новое узнать, дабы не быть быдлокодером...
    Последний раз редактировалось Edward Morra; 14.10.2016 в 20:43.

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    оптимизируешь инициализацию массива
    А где можно почитать о правильном приёме пропуска инициализации массива или не массива, что да как вообще и для чего оно?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  12. #60
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    А где можно почитать о правильном приёме пропуска инициализации массива или не массива, что да как вообще и для чего оно?
    Не знаю, лично я этим не пользуюсь и никому не советую. Повторюсь: выигрыш будет минимальным, по сравнению с грамотной оптимизацией алгоритмов.

    Цитата Сообщение от Edward Morra Посмотреть сообщение
    Мог бы конкретней указать на мою некомпитентность в данном коде?
    Как минимум, все вызовы GetPlayerVehicleID, GetPlayerState, IsPlayerInAnyVehicle можно заменить одним GetPlayerVehicleID. Также вызов PVar::GetInt можно сделать единожды.
    Код не оформлял (только лапшу убрал), ибо лень:
    PHP код:
    CMD:engine(playerid,params[])
    {
        if(!
    IsPlayerLogged{playerid}) return SendMe(playerid,COLOR_GREY,!" * [A] - Сначала нужно авторизоваться!");

        new 
    vehicleid GetPlayerVehicleID(playerid);
        if(
    vehicleid == 0) {
            return 
    1;
        }

        if(
    IsVehicleBike(vehicleid)) return false;

        if(
    Engine[vehicleid]) {
            
    printf("незаводим");
            static const 
    frm_engine[]=" * %s заглушил двигатель.";
            new 
    string[sizeof(frm_engine)+(-2+MAX_PLAYER_NAME)];
            
    format(string,sizeof(string),frm_engine,PlayerName(playerid));
            
    ProxDetector(playerid,5,string,COLOR_PURPLE);
            
    SetEngineOnOff(vehicleid,false);
            
    EngineTime[playerid] = 0;
            return 
    1;
        }

        if(
    Fuel[vehicleid] <= 0.0) {
            return 
    SendMe(playerid,COLOR_GREY,!" * Бензобак пуст. Вызовите механиков!");
        }

        if(
    EngineTime[playerid]) {
            return 
    SendMe(playerid,COLOR_GREY,!" * Нельзя так часто заводить двигатель!");
        }
        new 
    Float:vHealth;
        
    GetVehicleHealth(vehicleid,vHealth);
        new 
    driving PVar::GetInt(playerid,"Driving");
        if(
    OrgCarInfo[vehicleid][orgcFrac] == 15 && (driving == || driving == 6))
        {
            if(!
    SeatBelt{playerid} && !IsVehicleA(vehicleid))
            {
                
    SendMe(playerid,COLOR_GREY,!" * Перед началом движения вы обязаны пристегнуть ремень безопасности. Вы провалили экзамен!");
                
    PVar::SetInt(playerid,"Driving",0);
                
    acc_RemovePlayerFromVehicle(playerid);
                
    DisablePlayerRaceCheckpoint(playerid);
                
    SetEngineOnOff(vehicleid,false);
                
    AccountInfo[playerid][LoadCharacters{playerid}][acTestAS] = 0;
                
    licCP{playerid} = 0;
                
    licerror{playerid} = 0;
                
    lictesttime{playerid} = 0;
                return 
    false;
            }
        }
        
    printf("заводим");
        
    EngineTime[playerid] = 6;
        
    FreezePlayer(playerid);
        
    GameTextForPlayer(playerid"~w~€AЊYCKAEM ѓ‹…‚A¦E‡’..."50004);
        static const 
    frm_str[]=" * %s пытается запустить двигатель.";
        new 
    string[sizeof(frm_str)+(-2+MAX_PLAYER_NAME)];
        
    format(string,sizeof(string),frm_str,PlayerName(playerid));
        return 
    ProxDetector(playerid,5,string,COLOR_PURPLE);

    И такой ужас лишь в одной команде, страшно представить что во всём остальном скрипте творится. Уверен, что IsVehicleBike, IsVehicleA реализованы массой проверок, в ProxDetector вычисляется расстояние для всех игроков.

    P.S. Уродствами, вида SendMe и PVar::SetInt ты только путаешь людей, которые будут разбираться в твоём коде.

 

 
Страница 6 из 8 ПерваяПервая ... 4 5 6 7 8 ПоследняяПоследняя

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

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

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

Ваши права

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