Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Исправлено Зажевывание автотатаки

Упомянутые в теме пользователи:

Показано с 1 по 12 из 17

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7
    Инопланетянин Аватар для Gooldark
    Регистрация
    05.01.2012
    Сообщений
    3,916
    Поблагодарил(а)
    264
    Получено благодарностей: 768 (сообщений: 432).
    Репутация: 4439
    Вот тема л3, там есть интересное сообщение

    PHP код:
    if (isAttackReady(BASE_ATTACK))
                {
                    if (!
    IsWithinMeleeRange(victim))
                    {
                        
    setAttackTimer(BASE_ATTACK100);
                        if (
    m_swingErrorMsg != 1)               // send single time (client auto repeat)
                        
    {
                            
    SendAttackSwingNotInRange();
                            
    m_swingErrorMsg 1;
                        }
                    }
                    
    //120 degrees of radiant range, if player is not in boundary radius
                    
    else if (!IsWithinBoundaryRadius(victim) && !HasInArc(float(M_PI) / 3victim))
                    {
                        
    setAttackTimer(BASE_ATTACK100);
                        if (
    m_swingErrorMsg != 2)               // send single time (client auto repeat)
                        
    {
                            
    SendAttackSwingBadFacingAttack();
                            
    m_swingErrorMsg 2;
                        }
                    }
                    else
                    {
                        
    m_swingErrorMsg 0;                    // reset swing error state

                        // prevent base and off attack in same time, delay attack at 0.2 sec
                        
    if (haveOffhandWeapon())
                            if (
    getAttackTimer(OFF_ATTACK) < ATTACK_DISPLAY_DELAY)
                                
    setAttackTimer(OFF_ATTACKATTACK_DISPLAY_DELAY);

                        
    // do attack
                        
    AttackerStateUpdate(victimBASE_ATTACK);
                        
    resetAttackTimer(BASE_ATTACK);
                    }
                } 
    Тоесть после готовности таймера автоатаки, сервер делает проверку на возможность атаки ренжа, проверку на лос и наличие цели перед лицом (выделил красным проверки и событие сброса таймера автоатаки), а это все обращения к координатам через базу данных. И только после этого наностися урон и сбрасывается таймер автоатаки. Возможно, данные обращения к координатам и вызывают задержку. Но я все равно не могу понять, почему эта задержка всегда статична и не изменяется от кол-ва онлайна. В общем, надеюсь вы найдете причину задержки и найдете возможность от неё избавиться или по крайней мере снизить до приемлемых значений.
    Честно говоря не понимаю почему сервер обращается к бд при проверке на рейндж и фронт, это как-то нелогично, мб он ошибся, а вот при обращении на возможность лоса вполне может быть.

    В общем сделал такой тест: запустил 4 ака с одного компа, 2 на х5, и 2 на птр, и практически одновременно отправил бить манекен



    Это х5
    28*60=1680 секунд боя
    1680/3=560 должно быть атак со скоростью 3 сек
    получилось 544 и 1551 ударов соостветсвнно
    560-544=16 зажеванных атак
    1680-1551=129 зажеванных атак
    16*3/544=0,08823 сек или 88,23 мс потеря времени при каждой атаке
    129/1551=0,08317 сек или 83,17 мс потеря времени при каждой атаке




    Это птр
    28*60=1680 секунд боя
    1680/3=560должно быть атак со скоростью 3 сек
    получилось 549 и 1642 ударов соостветсвнно
    560-549=11 зажеванных атак
    1680-1642=38 зажеванных атак
    11*3/549=0,06066 сек или 60,66 мс потеря времени при каждой атаке
    38/1642=0,02314 сек или 23,14 мс потеря времени при каждой атаке


    Сложно сказать почему зажеванных атак получилось меньше всего у кота на птр, потом я еще провел пару тестов, и задержка у кота на птр была так же 60 мс.
    Я вначале думал что это из-за приоритетов виндоуса, когда одно окно свернуто, а другое нет, но оказалось это здесь не причем.

    Может действительно дело в обращении ядра к бд при проверке на лос

  2. 2 пользователей сказали cпасибо Gooldark за это полезное сообщение:

    6Grimmjow6 (23.09.2021),Animagus (27.08.2021)

Похожие темы

  1. [Исправлено после ближайшего обновления] Аптекарь Зама <Королевское фармацевтическое общество>
    от Artur91425 в разделе Исправлено Wotlk
    Ответов: 1
    Последнее сообщение: 12.07.2021, 08:16
  2. [Исправлено после ближайшего обновления] Аптекарь Чанн <Королевское фармацевтическое общество>
    от Darti в разделе Исправлено Cataclysm
    Ответов: 1
    Последнее сообщение: 03.07.2015, 20:29
  3. Ответов: 0
    Последнее сообщение: 06.07.2013, 10:33
  4. Ответов: 0
    Последнее сообщение: 09.06.2013, 00:56
  5. Есть ли на этом сервере ролевые гильдии или ролевые миры?
    от Van Helsing в разделе Вопросы Logon, TBC, Legion, BFa, SL
    Ответов: 4
    Последнее сообщение: 22.02.2013, 23:33

Ваши права

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