Системные сообщения

Zubastic

Бессмертный
Проверенный
Медаль за активность на Форуме
Сообщения
1 020
Розыгрыши
0
Репутация
1 243
Реакции
564
Баллы
1 655
Собственно ковыряю я сорсы лоста и мобиуса (или хз какой у меня там хелиос, скриптов вроде), смысл вот в чем:
изначально отправляется id системки и размер аргументов, а затем идет список этих самых аргументов.
Теперь вопрос: как клиент определяет, что ему должно придти в списке, например, ddh, а не hhc или же что-то подобное? По айпи сообщения?
Спасибо.
 
Есть пакет который отправляет. В engine.dll он находится и ваш пакет должен иметь одинаковую структуру и отправлять такой же пакет клиенту
 
Я говорю о пакете 0х62 (SystemMessagePacket), туда передается id сообщения и size (количество аргументов), а затем сами аргументы. Нигде их тип не указан. Поэтому у меня такой вопрос.
 
Я говорю о пакете 0х62 (SystemMessagePacket), туда передается id сообщения и size (количество аргументов), а затем сами аргументы. Нигде их тип не указан. Поэтому у меня такой вопрос.
Как это не указано?
Код:
{
        writeParamsSize(packet, _params.length);
        SMParam param;
        for (int i = 0; i < _paramIndex; i++)
        {
            param = _params[i];
           
            writeParamType(packet, param.getType());
            switch (param.getType())
            {
                case TYPE_ELEMENT_NAME:
                case TYPE_BYTE:
                {
                    packet.writeC(param.getIntValue());
                    break;
                }
               
                case TYPE_CASTLE_NAME:
                case TYPE_SYSTEM_STRING:
                case TYPE_INSTANCE_NAME:
                case TYPE_CLASS_ID:
                {
                    packet.writeH(param.getIntValue());
                    break;
                }
               
                case TYPE_ITEM_NAME:
                case TYPE_INT_NUMBER:
                case TYPE_NPC_NAME:
                case TYPE_DOOR_NAME:
                {
                    packet.writeD(param.getIntValue());
                    break;
                }
               
                case TYPE_LONG_NUMBER:
                {
                    packet.writeQ(param.getLongValue());
                    break;
                }
               
                case TYPE_TEXT:
                case TYPE_PLAYER_NAME:
                {
                    packet.writeS(param.getStringValue());
                    break;
                }
               
                case TYPE_SKILL_NAME:
                {
                    final int[] array = param.getIntArrayValue();
                    packet.writeD(array[0]); // skill id
                    packet.writeH(array[1]); // skill level
                    packet.writeH(0x00); // skill sub level
                    break;
                }
               
                case TYPE_POPUP_ID:
                case TYPE_ZONE_NAME:
                {
                    final int[] array = param.getIntArrayValue();
                    packet.writeD(array[0]); // x
                    packet.writeD(array[1]); // y
                    packet.writeD(array[2]); // z
                    break;
                }
            }
        }
    }
writeParamType(packet, param.getType()); - тип параметра, в зависимости от типа .dll считывает опр. последовательности.
 
Ну у меня код другой, но разобрался, спасибо :)
 
Назад
Сверху Снизу