Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Point Blank (Piercing Blow) (https://forum.zone-game.info/forumdisplay.php?f=204)
-   -   [Piercing Blow] PROTOCOL_BASE_MAP_MATCHINGLIST (https://forum.zone-game.info/showthread.php?t=42856)

Boris2105 07.01.2018 01:46

PROTOCOL_BASE_MAP_MATCHINGLIST
 
Как сделать так чтобы пакет отсылал всю информацию но частями например по 800 байт
В данный момент сделано так PROTOCOL_BASE_MAP_MATCHINGLIST_PART_1, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_2, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_3
С магазином тоже самое , а нужно чтобы из всего списка отсылал определенное количество и не всегда одинаковое количество.
Подскажите где искать подобное.

PROGRAMMATOR 07.01.2018 10:19

Re: PROTOCOL_BASE_MAP_MATCHINGLIST
 
На оффе по 100 элементов отправляет в PROTOCOL_BASE_MAP_MATCHINGLIST_ACK.

public static class ListExtensions
{
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int limit)
    {
        return list.Select((item, inx) => new { item, inx })
            .GroupBy(x => x.inx / limit)
            .Select(g => g.Select(x => x.item));
    }
}
 
Code: C#


var parts = maps.Split(100);
 
foreach (var part in parts)
{
    var list = part.ToList();
 
    Response(new PROTOCOL_BASE_MAP_MATCHINGLIST_ACK(list));
}
 
Code: C#

Boris2105 07.01.2018 19:58

Re: PROTOCOL_BASE_MAP_MATCHINGLIST
 
а в ack что слать тогда?

PROGRAMMATOR 07.01.2018 21:31

Re: PROTOCOL_BASE_MAP_MATCHINGLIST
 
Связки режимов и карт. Данные у тебя есть, разбери их для начала.

Boris2105 07.01.2018 22:17

Re: PROTOCOL_BASE_MAP_MATCHINGLIST
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 429594)
Связки режимов и карт. Данные у тебя есть, разбери их для начала.

структура пакета разобрал, просто один раз её послать или как?

PROGRAMMATOR 07.01.2018 22:49

Re: PROTOCOL_BASE_MAP_MATCHINGLIST
 
у тебя есть список режимов, его разбиваешь на списки по 100 элементов.

Отправляй части. В самом пакете, как видно из сниффа:

// short
// byte - количество режимов для текущей части
 
foreach (var mode in modes)
{
	// ...
}
 
// int - если это последняя часть, то 1, иначе 0.
// short - сколько режимов было отправлено
// short - общее количество режимов
 
Code: C#


Текущее время: 19:49. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot