Перейти к содержанию
Авторизация  
hodor

Выкидывает WARN Unknown Packet / Disconnected: Too many unknown packets

Рекомендуемые сообщения

Привет, ребзи. Вообщем есть проблема, меня выкидывает из игры если например ходить на WASD и тыкать эти кнопки без конца или если зажать кнопку подбора дропа в то время, когда тебя окружили мобы и ты тупо не можешь его подобрать - тоже выкинет и напишет в консоли Disconnected: Too many unknown packets.

 

Есть мысли почему это вылезает и как убрать? Куда копать? Могу скинуть любой .java файл из исходников.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет, ребзи. Вообщем есть проблема, меня выкидывает из игры если например ходить на WASD и тыкать эти кнопки без конца или если зажать кнопку подбора дропа в то время, когда тебя окружили мобы и ты тупо не можешь его подобрать - тоже выкинет и напишет в консоли Disconnected: Too many unknown packets.

 

Есть мысли почему это вылезает и как убрать? Куда копать? Могу скинуть любой .java файл из исходников.

 

За вас не кто не будет делать, зачем им ваш ява фаил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

защита от флуда пакетов включена, возможно

Изменено пользователем Rollfer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За вас не кто не будет делать, зачем им ваш ява фаил?

Этот баг даже на aCis 360...  :db:  Так что у тебя тоже фаил :)

Включи гео, включи пачноты и воспроизведи как на видео

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

защита от флуда пакетов включена, возможно

Единственное что в конфигах нашел по поводу флуда. Кстати на Lucera 2.0 такой лажи нету, а на aCis есть  <_<

 

#=============================================================
# Флуд протектор
#=============================================================
# The following settings can be applied to each feature:
# Interval - interval in gameserver ticks (1 tick = 100ms) in which only one request is allowed
# LogFlooding - whether flooding should be logged (only first ocurrance of flooding and total count of flood requests is logged)
# PunishmentLimit - if number of requests within single interval exceeds specified number then the specified punishment is applied (0 = disables punishment feature)
# PunishmentType - type of the punishment ('none', 'kick', 'ban', 'jail'), valid only if PunishmentLimit is greater than 0
# PunishmentTime - for how many minutes should the player(jail)/account(ban) be punished (0 = forever), valid only for PunishmentType 'jail' or 'ban'

# RollDice - rolling dice flooding
FloodProtectorRollDiceInterval = 42
FloodProtectorRollDiceLogFlooding = False
FloodProtectorRollDicePunishmentLimit = 0
FloodProtectorRollDicePunishmentType = none
FloodProtectorRollDicePunishmentTime = 0

# HeroVoice - hero voice flooding, 10s on retail
FloodProtectorHeroVoiceInterval = 100
FloodProtectorHeroVoiceLogFlooding = False
FloodProtectorHeroVoicePunishmentLimit = 0
FloodProtectorHeroVoicePunishmentType = none
FloodProtectorHeroVoicePunishmentTime = 0

# Subclass - subclass flooding
FloodProtectorSubclassInterval = 20
FloodProtectorSubclassLogFlooding = False
FloodProtectorSubclassPunishmentLimit = 0
FloodProtectorSubclassPunishmentType = none
FloodProtectorSubclassPunishmentTime = 0

# DropItem - drop item flooding
FloodProtectorDropItemInterval = 10
FloodProtectorDropItemLogFlooding = False
FloodProtectorDropItemPunishmentLimit = 0
FloodProtectorDropItemPunishmentType = none
FloodProtectorDropItemPunishmentTime = 0

# ServerBypass - server bypass flooding
FloodProtectorServerBypassInterval = 5
FloodProtectorServerBypassLogFlooding = False
FloodProtectorServerBypassPunishmentLimit = 0
FloodProtectorServerBypassPunishmentType = none
FloodProtectorServerBypassPunishmentTime = 0

# ServerBypass - multisell list request flooding
FloodProtectorMultiSellInterval = 1
FloodProtectorMultiSellLogFlooding = False
FloodProtectorMultiSellPunishmentLimit = 0
FloodProtectorMultiSellPunishmentType = none
FloodProtectorMultiSellPunishmentTime = 0

# Manufacture
FloodProtectorManufactureInterval = 3
FloodProtectorManufactureLogFlooding = False
FloodProtectorManufacturePunishmentLimit = 0
FloodProtectorManufacturePunishmentType = none
FloodProtectorManufacturePunishmentTime = 0

# Manor
FloodProtectorManorInterval = 30
FloodProtectorManorLogFlooding = False
FloodProtectorManorPunishmentLimit = 0
FloodProtectorManorPunishmentType = none
FloodProtectorManorPunishmentTime = 0

# SendMail - sending mail interval, 10s on retail
FloodProtectorSendMailInterval = 100
FloodProtectorSendMailLogFlooding = False
FloodProtectorSendMailPunishmentLimit = 0
FloodProtectorSendMailPunishmentType = none
FloodProtectorSendMailPunishmentTime = 0

# CharacterSelect - attempts to load character
FloodProtectorCharacterSelectInterval = 30
FloodProtectorCharacterSelectLogFlooding = False
FloodProtectorCharacterSelectPunishmentLimit = 0
FloodProtectorCharacterSelectPunishmentType = none
FloodProtectorCharacterSelectPunishmentTime = 0
 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ищи в исходах подобное, поиграй со значениями

skillCast = ThreadPoolManager.getInstance().scheduleEffect

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ищи в исходах подобное, поиграй со значениями

skillCast = ThreadPoolManager.getInstance().scheduleEffect

А причем тут skillCast если я зажимаю кнопку подбора дропа? Без препятствий нормально собирает дроп с зажатой кнопкой, а если сделать так, чтобы перс застрял и при этом жать кнопку сбора дропа - получаешь дисконект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуй рб побить под фулл баффом, при этом пить ману, получишь дисконнект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

l2phx в руки и смотри какие пакеты неизвестные идут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

l2phx в руки и смотри какие пакеты неизвестные идут

Узнал какие пакеты отправляются:

Тип: 0x36 (CannotMoveAnymore) 36 73 3F 01 00 06 42 02 00 78 F2 FF FF F7 57 00 00

Tип: 0x48 (ValidatePosition) 48 73 3F 01 00 06 42 02 00 6E F2 FF FF F7 57 00 00 00 00 00 00

Tип: 0x04 (Action) 04 38 A8 00 10 73 3F 01 00 06 42 02 00 6D F2 FF FF 00 этого пакета очень много

 

Какие следующие действия?  :friends:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Узнал какие пакеты отправляются:

Тип: 0x36 (CannotMoveAnymore) 36 73 3F 01 00 06 42 02 00 78 F2 FF FF F7 57 00 00

Tип: 0x48 (ValidatePosition) 48 73 3F 01 00 06 42 02 00 6E F2 FF FF F7 57 00 00 00 00 00 00

Tип: 0x04 (Action) 04 38 A8 00 10 73 3F 01 00 06 42 02 00 6D F2 FF FF 00 этого пакета очень много

 

Какие следующие действия?  :friends:

у тебя ошибка заключается в том что клиент отправляет НЕИЗВЕСТНЫЕ пакеты, эти все должны распознаваться сервером вроде как

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у тебя ошибка заключается в том что клиент отправляет НЕИЗВЕСТНЫЕ пакеты, эти все должны распознаваться сервером вроде как

unknown packets были с включенным CatsGuard, когда его отключил начало писать: ERROR Client [Character: Hodor - Account: hodor - IP: 127.0.0.1] - Disconnected, too many floods:2 long and 1 short.

И вот что еще нарыл:

	/** Threads & Packets size */
	public static int THREAD_P_EFFECTS = 6; // default 6
	public static int THREAD_P_GENERAL = 15; // default 15
	public static int GENERAL_PACKET_THREAD_CORE_SIZE = 4; // default 4
	public static int IO_PACKET_THREAD_CORE_SIZE = 2; // default 2
	public static int GENERAL_THREAD_CORE_SIZE = 4; // default 4
	public static int AI_MAX_THREAD = 10; // default 10
	
	/** Packet information */
	public static boolean COUNT_PACKETS = false; // default false
	public static boolean DUMP_PACKET_COUNTS = false; // default false
	public static int DUMP_INTERVAL_SECONDS = 60; // default 60
	
	/** IA settings */
	public static int MINIMUM_UPDATE_DISTANCE = 50; // default 50
	public static int MINIMUN_UPDATE_TIME = 500; // default 500
	public static int KNOWNLIST_FORGET_DELAY = 10000; // default 10000
	
	/** Time after which a packet is considered as lost */
	public static int PACKET_LIFETIME = 0; // default 0 (unlimited)
	
	/** Reserve Host on LoginServerThread */
	public static boolean RESERVE_HOST_ON_LOGIN = false; // default false
	
	/** MMO settings */
	public static int MMO_SELECTOR_SLEEP_TIME = 20; // default 20
	public static int MMO_MAX_SEND_PER_PASS = 12; // default 12
	public static int MMO_MAX_READ_PER_PASS = 12; // default 12
	public static int MMO_HELPER_BUFFER_COUNT = 20; // default 20
	
	/** Client Packets Queue settings */
	public static int CLIENT_PACKET_QUEUE_SIZE = 14; // default MMO_MAX_READ_PER_PASS + 2
	public static int CLIENT_PACKET_QUEUE_MAX_BURST_SIZE = 13; // default MMO_MAX_READ_PER_PASS + 1
	public static int CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND = 80; // default 80
	public static int CLIENT_PACKET_QUEUE_MEASURE_INTERVAL = 5; // default 5
	public static int CLIENT_PACKET_QUEUE_MAX_AVERAGE_PACKETS_PER_SECOND = 40; // default 40
	public static int CLIENT_PACKET_QUEUE_MAX_FLOODS_PER_MIN = 2; // default 2
	public static int CLIENT_PACKET_QUEUE_MAX_OVERFLOWS_PER_MIN = 1; // default 1
	public static int CLIENT_PACKET_QUEUE_MAX_UNDERFLOWS_PER_MIN = 1; // default 1
	public static int CLIENT_PACKET_QUEUE_MAX_UNKNOWN_PER_MIN = 5; // default 5 

 

 

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.network;

import net.sf.l2j.commons.config.Config;

public class ClientStats
{
	public int processedPackets = 0;
	public int droppedPackets = 0;
	public int unknownPackets = 0;
	public int totalQueueSize = 0;
	public int maxQueueSize = 0;
	public int totalBursts = 0;
	public int maxBurstSize = 0;
	public int shortFloods = 0;
	public int longFloods = 0;
	public int totalQueueOverflows = 0;
	public int totalUnderflowExceptions = 0;
	
	private final int[] _packetsInSecond;
	private long _packetCountStartTick = 0;
	private int _head;
	private int _totalCount = 0;
	
	private int _floodsInMin = 0;
	private long _floodStartTick = 0;
	private int _unknownPacketsInMin = 0;
	private long _unknownPacketStartTick = 0;
	private int _overflowsInMin = 0;
	private long _overflowStartTick = 0;
	private int _underflowReadsInMin = 0;
	private long _underflowReadStartTick = 0;
	
	private volatile boolean _floodDetected = false;
	private volatile boolean _queueOverflowDetected = false;
	
	private final int BUFFER_SIZE;
	
	public ClientStats()
	{
		BUFFER_SIZE = Config.CLIENT_PACKET_QUEUE_MEASURE_INTERVAL;
		_packetsInSecond = new int[BUFFER_SIZE];
		_head = BUFFER_SIZE - 1;
	}
	
	/**
	 * @return true if incoming packet need to be dropped.
	 */
	protected final boolean dropPacket()
	{
		final boolean result = _floodDetected || _queueOverflowDetected;
		if (result)
		{
			droppedPackets++;
		}
		return result;
	}
	
	/**
	 * @param queueSize
	 * @return true if flood detected first and ActionFailed packet need to be sent. Later during flood returns true (and send ActionFailed) once per second.
	 */
	protected final boolean countPacket(int queueSize)
	{
		processedPackets++;
		totalQueueSize += queueSize;
		if (maxQueueSize < queueSize)
		{
			maxQueueSize = queueSize;
		}
		if (_queueOverflowDetected && queueSize < 2)
		{
			_queueOverflowDetected = false;
		}
		
		return countPacket();
	}
	
	/**
	 * Counts unknown packets.
	 * @return true if threshold is reached.
	 */
	protected final boolean countUnknownPacket()
	{
		unknownPackets++;
		
		final long tick = System.currentTimeMillis();
		if (tick - _unknownPacketStartTick > 60000)
		{
			_unknownPacketStartTick = tick;
			_unknownPacketsInMin = 1;
			return false;
		}
		
		_unknownPacketsInMin++;
		return _unknownPacketsInMin > Config.CLIENT_PACKET_QUEUE_MAX_UNKNOWN_PER_MIN;
	}
	
	/**
	 * Counts burst length.
	 * @param count - current number of processed packets in burst
	 * @return true if execution of the queue need to be aborted.
	 */
	protected final boolean countBurst(int count)
	{
		if (count > maxBurstSize)
		{
			maxBurstSize = count;
		}
		
		if (count < Config.CLIENT_PACKET_QUEUE_MAX_BURST_SIZE)
		{
			return false;
		}
		
		totalBursts++;
		return true;
	}
	
	/**
	 * Counts queue overflows.
	 * @return true if threshold is reached.
	 */
	protected final boolean countQueueOverflow()
	{
		_queueOverflowDetected = true;
		totalQueueOverflows++;
		
		final long tick = System.currentTimeMillis();
		if (tick - _overflowStartTick > 60000)
		{
			_overflowStartTick = tick;
			_overflowsInMin = 1;
			return false;
		}
		
		_overflowsInMin++;
		return _overflowsInMin > Config.CLIENT_PACKET_QUEUE_MAX_OVERFLOWS_PER_MIN;
	}
	
	/**
	 * Counts underflow exceptions.
	 * @return true if threshold is reached.
	 */
	protected final boolean countUnderflowException()
	{
		totalUnderflowExceptions++;
		
		final long tick = System.currentTimeMillis();
		if (tick - _underflowReadStartTick > 60000)
		{
			_underflowReadStartTick = tick;
			_underflowReadsInMin = 1;
			return false;
		}
		
		_underflowReadsInMin++;
		return _underflowReadsInMin > Config.CLIENT_PACKET_QUEUE_MAX_UNDERFLOWS_PER_MIN;
	}
	
	/**
	 * @return true if maximum number of floods per minute is reached.
	 */
	protected final boolean countFloods()
	{
		return _floodsInMin > Config.CLIENT_PACKET_QUEUE_MAX_FLOODS_PER_MIN;
	}
	
	private final boolean longFloodDetected()
	{
		return (_totalCount / BUFFER_SIZE) > Config.CLIENT_PACKET_QUEUE_MAX_AVERAGE_PACKETS_PER_SECOND;
	}
	
	/**
	 * @return true if flood detected first and ActionFailed packet need to be sent. Later during flood returns true (and send ActionFailed) once per second.
	 */
	private final synchronized boolean countPacket()
	{
		_totalCount++;
		final long tick = System.currentTimeMillis();
		if (tick - _packetCountStartTick > 1000)
		{
			_packetCountStartTick = tick;
			
			// clear flag if no more flooding during last seconds
			if (_floodDetected && !longFloodDetected() && _packetsInSecond[_head] < Config.CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND / 2)
			{
				_floodDetected = false;
			}
			
			// wrap head of the buffer around the tail
			if (_head <= 0)
			{
				_head = BUFFER_SIZE;
			}
			_head--;
			
			_totalCount -= _packetsInSecond[_head];
			_packetsInSecond[_head] = 1;
			return _floodDetected;
		}
		
		final int count = ++_packetsInSecond[_head];
		if (!_floodDetected)
		{
			if (count > Config.CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND)
			{
				shortFloods++;
			}
			else if (longFloodDetected())
			{
				longFloods++;
			}
			else
			{
				return false;
			}
			
			_floodDetected = true;
			if (tick - _floodStartTick > 60000)
			{
				_floodStartTick = tick;
				_floodsInMin = 1;
			}
			else
			{
				_floodsInMin++;
			}
			
			return true; // Return true only in the beginning of the flood
		}
		
		return false;
	}
} 

 

 

 

Кто поможет разобраться + в репутацию  :friends:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня не 360 рева, и такого не замечал, у себя.

Не замечал, потому что не представилась возможность заметить это. Видео есть - иди попробуй сделать так же, зажми F4 (сбор дропа). 101%, что у тебя такая же лажа будет или поймаешь зависон на персе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...