Вот тема л3, там есть интересное сообщение
	PHP код:
	
if (isAttackReady(BASE_ATTACK))
            {
                if (!IsWithinMeleeRange(victim))
                {
                    setAttackTimer(BASE_ATTACK, 100);
                    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(2 * float(M_PI) / 3, victim))
                {
                    setAttackTimer(BASE_ATTACK, 100);
                    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_ATTACK, ATTACK_DISPLAY_DELAY);
                    // do attack
                    AttackerStateUpdate(victim, BASE_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 мс.
Я вначале думал что это из-за приоритетов виндоуса, когда одно окно свернуто, а другое нет, но оказалось это здесь не причем.
Может действительно дело в обращении ядра к бд при проверке на лос