Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Friend_List
#1
При разборе пакета Frined List появилось много вопросов

Piercing Blow или PointBlank
не могли бы дать структуру
Ответ
#2
Вот бы сейчас угадать, что за игра.
Ответ
#3
PROGRAMMATOR Написал:Вот бы сейчас угадать, что за игра.

PointBlank
Ответ
#4
Насколько помню, то такая:

Код:
byte // count

[
    byte // nickname length
    string // nickname
    ulong // accountId
    int // state
    byte // rank
    byte // ?
]
Ответ
#5
PROGRAMMATOR Написал:Насколько помню, то такая:

Код:
byte // count

[
    byte // nickname length
    string // nickname
    ulong // accountId
    int // state
    byte // rank
    byte // ?
]

блин не могу понять но статус всегда стоит офлайн

Код:
-- enum FRIEND_STATE
FRIEND_STATE_REQUEST                               = 0
FRIEND_STATE_HOLD                                  = 1
FRIEND_STATE_OFFLINE                               = 2 -- АМЗПґЬАє ДЈ±ё
FRIEND_STATE_ONLINE                                = 3
FRIEND_STATE_ROOM                                  = 4
FRIEND_STATE_MAX                                   = 5
-- end enum --

хотя из pbCommonDefine прописана так
Ответ
#6
Empert;410845 Написал:хотя из pbCommonDefine прописана так
Да, но там же и указано как создаётся и как извлекается та или иная информация:

Код:
MAKE_FRIEND_STATE                                  =  (state,server,channel,room)    ((((state) & 0x0000000F) << 28) | (((server) & 0x000000FF) << 20) | (((channel) & 0x000000FF) << 12) | ((room) & 0x00000FFF))
MAKE_FRIEND_MATCH_STATE                            =  (match,state,server,channel,room)    (((UINT64)(match) & 0x00000000FF) << 32) | ((((state) & 0x000000000F) << 28) | (((server) & 0x00000000FF) << 20) | (((channel) & 0x00000000FF) << 12) | ((room) & 0x0000000FFF))
GET_FRIEND_MATCH                                   =  (state)                            (((state) >> 32) & 0x00000000000000FF)
GET_FRIEND_STATE                                   =  (state)                            (((state) >> 28) & 0x0000000F)
GET_FRIEND_SERVER                                  =  (state)                        (((state) >> 20) & 0x000000FF)
GET_FRIEND_CHANNEL                                 =  (state)                        (((state) >> 12) & 0x000000FF)
GET_FRIEND_ROOMIDX                                 =  (state)                        ((state) & 0x00000FFF)
SET_FRIEND_MATCH                                   =  (state, match)                    (state | (((UINT64)match & 0x00000000000000FF ) << 32))
CLEAR_FRIEND_MATCH                                 =  (state)                        (state & 0xFFFFFF00FFFFFFFF)
Ответ
#7
PROGRAMMATOR Написал:Да, но там же и указано как создаётся и как извлекается та или иная информация:

Код:
MAKE_FRIEND_STATE                                  =  (state,server,channel,room)    ((((state) & 0x0000000F) << 28) | (((server) & 0x000000FF) << 20) | (((channel) & 0x000000FF) << 12) | ((room) & 0x00000FFF))
MAKE_FRIEND_MATCH_STATE                            =  (match,state,server,channel,room)    (((UINT64)(match) & 0x00000000FF) << 32) | ((((state) & 0x000000000F) << 28) | (((server) & 0x00000000FF) << 20) | (((channel) & 0x00000000FF) << 12) | ((room) & 0x0000000FFF))
GET_FRIEND_MATCH                                   =  (state)                            (((state) >> 32) & 0x00000000000000FF)
GET_FRIEND_STATE                                   =  (state)                            (((state) >> 28) & 0x0000000F)
GET_FRIEND_SERVER                                  =  (state)                        (((state) >> 20) & 0x000000FF)
GET_FRIEND_CHANNEL                                 =  (state)                        (((state) >> 12) & 0x000000FF)
GET_FRIEND_ROOMIDX                                 =  (state)                        ((state) & 0x00000FFF)
SET_FRIEND_MATCH                                   =  (state, match)                    (state | (((UINT64)match & 0x00000000000000FF ) << 32))
CLEAR_FRIEND_MATCH                                 =  (state)                        (state & 0xFFFFFF00FFFFFFFF)

Можно пример на c# как это реализовать?
Ответ
#8
Helsend, как там написано, так же и на шарпе будет.

[SRC="csharp"]var friendState = (channel & 0x000000FF) << 12 | (roomId & 0x00000FFF);
[/SRC]
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)