Протокол

Текущая версия: 8

Типы пакетов:
  • Client - отсылается клиентом серверу;
  • Server - отсылается сервером клиенту;
  • Broadcast - широковещательный пакет (отсылается сервером всем клиентам);

Формат пакетов:

     BYTE PacketID1
     IF NOT_CONST PacketSize
         DWORD PacketSize
     ENDIF
     IF DEFINE PacketID2
         BYTE PacketID2
     ENDIF
     STREAM PacketData

Список пакетов

ID Размер Тип Название Данные пакета Описание
02 Connection Handling
02.01 Server ProtocolVersion DWORD ProtocolVersion + 0x1000
02.03 Client LoginRequest TEXT Username
TEXT Password
02.03 Server LoginResponse BYTE LoginState
IF LoginState = lsOK
     BYTE AccessLevel
     DWORD UptimeInSeconds
     WORD MapWidth
     WORD MapHeight
     DWORD FormatFlags
     WORD AreaCount
     BEGIN LOOP
         WORD AreaLeft
         WORD AreaTop
         WORD AreaRight
         WORD AreaBottom
     END LOOP
END IF
02.04 Server ServerState BYTE ServerState
IF ServerState = ssOther
     TEXT Message
END IF
02.05 Client Quit
0C Client Handling
OC.01 Server ClientConnected TEXT Username
BYTE AccessLevel
OC.02 Server ClientDisconnected TEXT Username
OC.03 Server ClientList BEGIN LOOP
     TEXT Username
     BYTE AccessLevel
     DWORD LogonDelayInSec
END IF
OC.04 Client UpdateClientPos WORD PosX
WORD PosY
OC.04 Server SetClientPos WORD PosX
WORD PosY
OC.05 Client ChatMessage TEXT Message
OC.05 Server ChatMessage TEXT Username
TEXT Message
OC.06 Client GotoClientPos TEXT Username
OC.07 Server AccessChanged BYTE AccessLevel
WORD AreaCount
BEGIN LOOP
     WORD AreaLeft
     WORD AreaTop
     WORD AreaRight
     WORD AreaBottom
END LOOP
FF 1 Client NoOp
XX.XX ------ --------- ------------------------- ----------------------------------------

Типы данных

Обычные:
  • TEXT - Текстовая строка завершаемая нулевым символом
  • BYTE - 1 unsigned byte
  • WORD - 2 unsigned bytes
  • DWORD - 4 unsigned bytes
  • QWORD - 8 unsigned bytes
  • CHAR - 1 signed byte
  • SHORT - 2 signed bytes
  • LONG - 4 signed bytes
AccessLevel:
  • 0x00 - alNone;
  • 0x01 - alView;
  • 0x02 - alNormal;
  • 0x03 - alDeveloper;
  • 0xFF - alAdministrator;
LoginState:
  • 0x00 - lsOK;
  • 0x01 - lsInvalidUser;
  • 0x02 - lsInvalidPassword;
  • 0x03 - lsAlreadyLoggedIn;
  • 0x04 - lsNoAccess;
ServerState:
  • 0x00 - ssRunning;
  • 0x01 - ssFrozen;
  • 0x02 - ssOther;
ModifyUserStatus:
  • 0x00 - muInvalidUsername;
  • 0x01 - muAdded;
  • 0x02 - muModified;
DeleteUserStatus:
  • 0x00 - duNotFound;
  • 0x01 - duDeleted;
ModifyRegionStatus:
  • 0x00 - mrAdded;
  • 0x01 - mrModified;
DeleteRegionStatus:
  • 0x00 - drNotFound;
  • 0x01 - drDeleted;