1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

feature: OfflineFileEvent.

This commit is contained in:
Mrs4s 2020-10-12 23:58:23 +08:00
parent 6fc1377e87
commit 6d79c6855f
9 changed files with 6869 additions and 66 deletions

View File

@ -157,6 +157,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient {
"SummaryCard.ReqSummaryCard": decodeSummaryCardResponse,
"PttCenterSvr.ShortVideoDownReq": decodePttShortVideoDownResponse,
"LightAppSvc.mini_app_info.GetAppInfoById": decodeAppInfoResponse,
"OfflineFilleHandleSvr.pb_ftn_CMD_REQ_APPLY_DOWNLOAD-1200": decodeOfflineFileDownloadResponse,
},
sigInfo: &loginSigInfo{},
requestPacketRequestId: 1921334513,

View File

@ -342,6 +342,24 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{},
case 187:
_, pkt := c.buildSystemMsgNewFriendPacket()
_ = c.send(pkt)
case 529:
sub4 := msg.SubMsgType0X4Body{}
if err := proto.Unmarshal(message.Body.MsgContent, &sub4); err != nil {
c.Error("unmarshal sub msg 0x4 error: %v", err)
continue
}
if sub4.NotOnlineFile != nil {
rsp, err := c.sendAndWait(c.buildOfflineFileDownloadRequestPacket(sub4.NotOnlineFile.FileUuid)) // offline_file.go
if err != nil {
continue
}
c.dispatchOfflineFileEvent(&OfflineFileEvent{
FileName: string(sub4.NotOnlineFile.FileName),
FileSize: sub4.NotOnlineFile.FileSize,
Sender: message.Head.FromUin,
DownloadUrl: rsp.(string),
})
}
}
}
}

View File

@ -194,6 +194,13 @@ type (
Friend *FriendInfo
}
OfflineFileEvent struct {
FileName string
FileSize int64
Sender int64
DownloadUrl string
}
OcrResponse struct {
Texts []*TextDetection `json:"texts"`
Language string `json:"language"`

View File

@ -27,6 +27,7 @@ type eventHandlers struct {
logHandlers []func(*QQClient, *LogEvent)
serverUpdatedHandlers []func(*QQClient, *ServerUpdatedEvent)
notifyHandlers []func(*QQClient, IGroupNotifyEvent)
offlineFileHandlers []func(*QQClient, *OfflineFileEvent)
groupMessageReceiptHandlers sync.Map
}
@ -110,6 +111,10 @@ func (c *QQClient) OnServerUpdated(f func(*QQClient, *ServerUpdatedEvent)) {
c.eventHandlers.serverUpdatedHandlers = append(c.eventHandlers.serverUpdatedHandlers, f)
}
func (c *QQClient) OnReceivedOfflineFile(f func(*QQClient, *OfflineFileEvent)) {
c.eventHandlers.offlineFileHandlers = append(c.eventHandlers.offlineFileHandlers, f)
}
func (c *QQClient) OnLog(f func(*QQClient, *LogEvent)) {
c.eventHandlers.logHandlers = append(c.eventHandlers.logHandlers, f)
}
@ -337,6 +342,17 @@ func (c *QQClient) dispatchDisconnectEvent(e *ClientDisconnectedEvent) {
}
}
func (c *QQClient) dispatchOfflineFileEvent(e *OfflineFileEvent) {
if e == nil {
return
}
for _, f := range c.eventHandlers.offlineFileHandlers {
cover(func() {
f(c, e)
})
}
}
func (c *QQClient) dispatchLogEvent(e *LogEvent) {
if e == nil {
return

47
client/offline_file.go Normal file
View File

@ -0,0 +1,47 @@
package client
import (
"errors"
"fmt"
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x346"
"github.com/Mrs4s/MiraiGo/protocol/packets"
"google.golang.org/protobuf/proto"
)
func (c *QQClient) buildOfflineFileDownloadRequestPacket(uuid []byte) (uint16, []byte) {
seq := c.nextSeq()
req := &cmd0x346.ReqBody{
Cmd: 1200,
Seq: int32(seq),
BusinessId: 3,
ClientType: 104,
ApplyDownloadReq: &cmd0x346.ApplyDownloadReq{
Uin: c.Uin,
Uuid: uuid,
OwnerType: 2,
},
ExtensionReq: &cmd0x346.ExtensionReq{
DownloadUrlType: 1,
},
}
payload, _ := proto.Marshal(req)
packet := packets.BuildUniPacket(c.Uin, seq, "OfflineFilleHandleSvr.pb_ftn_CMD_REQ_APPLY_DOWNLOAD-1200", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload)
return seq, packet
}
func decodeOfflineFileDownloadResponse(c *QQClient, _ uint16, payload []byte) (interface{}, error) {
rsp := cmd0x346.RspBody{}
if err := proto.Unmarshal(payload, &rsp); err != nil {
c.Error("unmarshal cmd0x346 rsp body error: %v", err)
return nil, err
}
if rsp.ApplyDownloadRsp == nil {
c.Error("decode apply download 1200 error: apply rsp is nil.")
return nil, errors.New("apply rsp is nil")
}
if rsp.ApplyDownloadRsp.RetCode != 0 {
c.Error("decode apply download 1200 error: %v", rsp.ApplyDownloadRsp.RetCode)
return nil, errors.New(fmt.Sprint(rsp.ApplyDownloadRsp.RetCode))
}
return "http://" + rsp.ApplyDownloadRsp.DownloadInfo.DownloadDomain + rsp.ApplyDownloadRsp.DownloadInfo.DownloadUrl, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,441 @@
syntax = "proto3";
option go_package = ".;cmd0x346";
message ApplyCleanTrafficRsp {
int32 retCode = 10;
string retMsg = 20;
}
message ApplyCopyFromReq {
int64 srcUin = 10;
int64 srcGroup = 20;
int32 srcSvcid = 30;
bytes srcParentfolder = 40;
bytes srcUuid = 50;
bytes fileMd5 = 60;
int64 dstUin = 70;
int64 fileSize = 80;
string fileName = 90;
int32 dangerLevel = 100;
int64 totalSpace = 110;
}
message ApplyCopyFromRsp {
int32 retCode = 10;
string retMsg = 20;
bytes uuid = 30;
int64 totalSpace = 40;
}
message ApplyCopyToReq {
int64 dstId = 10;
int64 dstUin = 20;
int32 dstSvcid = 30;
int64 srcUin = 40;
int64 fileSize = 50;
string fileName = 60;
string localFilepath = 70;
bytes uuid = 80;
}
message ApplyCopyToRsp {
int32 retCode = 10;
string retMsg = 20;
string fileKey = 30;
}
message ApplyDownloadAbsReq {
int64 uin = 10;
bytes uuid = 20;
}
message ApplyDownloadAbsRsp {
int32 retCode = 10;
string retMsg = 20;
DownloadInfo downloadInfo = 30;
}
message ApplyDownloadReq {
int64 uin = 10;
bytes uuid = 20;
int32 ownerType = 30;
int32 extIntype = 500;
}
message ApplyDownloadRsp {
int32 retCode = 10;
string retMsg = 20;
DownloadInfo downloadInfo = 30;
FileInfo fileInfo = 40;
}
message ApplyForwardFileReq {
int64 senderUin = 10;
int64 recverUin = 20;
bytes uuid = 30;
int32 dangerLevel = 40;
int64 totalSpace = 50;
}
message ApplyForwardFileRsp {
int32 retCode = 10;
string retMsg = 20;
int64 totalSpace = 30;
int64 usedSpace = 40;
bytes uuid = 50;
}
message ApplyGetTrafficReq {
}
message ApplyGetTrafficRsp {
int32 retCode = 10;
string retMsg = 20;
int64 useFileSize = 30;
int32 useFileNum = 40;
int64 allFileSize = 50;
int32 allFileNum = 60;
}
message ApplyListDownloadReq {
int64 uin = 10;
int32 beginIndex = 20;
int32 reqCount = 30;
}
message ApplyListDownloadRsp {
int32 retCode = 10;
string retMsg = 20;
int32 totalCount = 30;
int32 beginIndex = 40;
int32 rspCount = 50;
int32 isEnd = 60;
repeated FileInfo fileList = 70;
}
message ApplyUploadHitReq {
int64 senderUin = 10;
int64 recverUin = 20;
int64 fileSize = 30;
string fileName = 40;
bytes bytes_10mMd5 = 50;
string localFilepath = 60;
int32 dangerLevel = 70;
int64 totalSpace = 80;
}
message ApplyUploadHitReqV2 {
int64 senderUin = 10;
int64 recverUin = 20;
int64 fileSize = 30;
string fileName = 40;
bytes bytes_10mMd5 = 50;
bytes bytes_3sha = 60;
bytes sha = 70;
string localFilepath = 80;
int32 dangerLevel = 90;
int64 totalSpace = 100;
}
message ApplyUploadHitReqV3 {
int64 senderUin = 10;
int64 recverUin = 20;
int64 fileSize = 30;
string fileName = 40;
bytes bytes_10mMd5 = 50;
bytes sha = 60;
string localFilepath = 70;
int32 dangerLevel = 80;
int64 totalSpace = 90;
}
message ApplyUploadHitRsp {
int32 retCode = 10;
string retMsg = 20;
string uploadIp = 30;
int32 uploadPort = 40;
string uploadDomain = 50;
bytes uuid = 60;
bytes uploadKey = 70;
int64 totalSpace = 80;
int64 usedSpace = 90;
}
message ApplyUploadHitRspV2 {
int32 retCode = 10;
string retMsg = 20;
string uploadIp = 30;
int32 uploadPort = 40;
string uploadDomain = 50;
bytes uuid = 60;
bytes uploadKey = 70;
int64 totalSpace = 80;
int64 usedSpace = 90;
}
message ApplyUploadHitRspV3 {
int32 retCode = 10;
string retMsg = 20;
string uploadIp = 30;
int32 uploadPort = 40;
string uploadDomain = 50;
bytes uuid = 60;
bytes uploadKey = 70;
int64 totalSpace = 80;
int64 usedSpace = 90;
}
message ApplyUploadReq {
int64 senderUin = 10;
int64 recverUin = 20;
int32 fileType = 30;
int64 fileSize = 40;
string fileName = 50;
bytes bytes_10mMd5 = 60;
string localFilepath = 70;
int32 dangerLevel = 80;
int64 totalSpace = 90;
}
message ApplyUploadReqV2 {
int64 senderUin = 10;
int64 recverUin = 20;
int64 fileSize = 30;
string fileName = 40;
bytes bytes_10mMd5 = 50;
bytes bytes_3sha = 60;
string localFilepath = 70;
int32 dangerLevel = 80;
int64 totalSpace = 90;
}
message ApplyUploadReqV3 {
int64 senderUin = 10;
int64 recverUin = 20;
int64 fileSize = 30;
string fileName = 40;
bytes bytes_10mMd5 = 50;
bytes sha = 60;
string localFilepath = 70;
int32 dangerLevel = 80;
int64 totalSpace = 90;
}
message ApplyUploadRsp {
int32 retCode = 10;
string retMsg = 20;
int64 totalSpace = 30;
int64 usedSpace = 40;
int64 uploadedSize = 50;
string uploadIp = 60;
string uploadDomain = 70;
int32 uploadPort = 80;
bytes uuid = 90;
bytes uploadKey = 100;
bool boolFileExist = 110;
int32 packSize = 120;
repeated string uploadipList = 130;
}
message ApplyUploadRspV2 {
int32 retCode = 10;
string retMsg = 20;
int64 totalSpace = 30;
int64 usedSpace = 40;
int64 uploadedSize = 50;
string uploadIp = 60;
string uploadDomain = 70;
int32 uploadPort = 80;
bytes uuid = 90;
bytes uploadKey = 100;
bool boolFileExist = 110;
int32 packSize = 120;
repeated string uploadipList = 130;
int32 httpsvrApiVer = 140;
bytes sha = 141;
}
message ApplyUploadRspV3 {
int32 retCode = 10;
string retMsg = 20;
int64 totalSpace = 30;
int64 usedSpace = 40;
int64 uploadedSize = 50;
string uploadIp = 60;
string uploadDomain = 70;
int32 uploadPort = 80;
bytes uuid = 90;
bytes uploadKey = 100;
bool boolFileExist = 110;
int32 packSize = 120;
repeated string uploadipList = 130;
}
message DelMessageReq {
int64 uinSender = 1;
int64 uinReceiver = 2;
int32 time = 10;
int32 random = 20;
int32 seqNo = 30;
}
message DeleteFileReq {
int64 uin = 10;
int64 peerUin = 20;
int32 deleteType = 30;
bytes uuid = 40;
}
message DeleteFileRsp {
int32 retCode = 10;
string retMsg = 20;
}
message DownloadInfo {
bytes downloadKey = 10;
string downloadIp = 20;
string downloadDomain = 30;
int32 port = 40;
string downloadUrl = 50;
repeated string downloadipList = 60;
string cookie = 70;
}
message DownloadSuccReq {
int64 uin = 10;
bytes uuid = 20;
}
message DownloadSuccRsp {
int32 retCode = 10;
string retMsg = 20;
int32 downStat = 30;
}
message ExtensionReq {
int64 id = 1;
int64 type = 2;
string dstPhonenum = 3;
int32 phoneConvertType = 4;
bytes sig = 20;
int64 routeId = 100;
DelMessageReq delMessageReq = 90100;
int32 downloadUrlType = 90200;
int32 pttFormat = 90300;
int32 isNeedInnerIp = 90400;
int32 netType = 90500;
int32 voiceType = 90600;
int32 fileType = 90700;
int32 pttTime = 90800;
}
message ExtensionRsp {
}
message FileInfo {
int64 uin = 1;
int32 dangerEvel = 2;
int64 fileSize = 3;
int32 lifeTime = 4;
int32 uploadTime = 5;
bytes uuid = 6;
string fileName = 7;
int32 absFileType = 90;
bytes bytes_10mMd5 = 100;
bytes sha = 101;
int32 clientType = 110;
int64 ownerUin = 120;
int64 peerUin = 121;
int32 expireTime = 130;
}
message FileQueryReq {
int64 uin = 10;
bytes uuid = 20;
}
message FileQueryRsp {
int32 retCode = 10;
string retMsg = 20;
FileInfo fileInfo = 30;
}
message RecallFileReq {
int64 uin = 1;
bytes uuid = 2;
}
message RecallFileRsp {
int32 retCode = 1;
string retMsg = 2;
}
message RecvListQueryReq {
int64 uin = 1;
int32 beginIndex = 2;
int32 reqCount = 3;
}
message RecvListQueryRsp {
int32 retCode = 1;
string retMsg = 2;
int32 fileTotCount = 3;
int32 beginIndex = 4;
int32 rspFileCount = 5;
int32 isEnd = 6;
repeated FileInfo fileList = 7;
}
message RenewFileReq {
int64 uin = 1;
bytes uuid = 2;
int32 addTtl = 3;
}
message RenewFileRsp {
int32 retCode = 1;
string retMsg = 2;
}
message ReqBody {
int32 cmd = 1;
int32 seq = 2;
RecvListQueryReq recvListQueryReq = 3;
SendListQueryReq sendListQueryReq = 4;
RenewFileReq renewFileReq = 5;
RecallFileReq recallFileReq = 6;
ApplyUploadReq applyUploadReq = 7;
ApplyUploadHitReq applyUploadHitReq = 8;
ApplyForwardFileReq applyForwardFileReq = 9;
UploadSuccReq uploadSuccReq = 10;
DeleteFileReq deleteFileReq = 11;
DownloadSuccReq downloadSuccReq = 12;
ApplyDownloadAbsReq applyDownloadAbsReq = 13;
ApplyDownloadReq applyDownloadReq = 14;
ApplyListDownloadReq applyListDownloadReq = 15;
FileQueryReq fileQueryReq = 16;
ApplyCopyFromReq applyCopyFromReq = 17;
ApplyUploadReqV2 applyUploadReqV2 = 18;
ApplyUploadReqV3 applyUploadReqV3 = 19;
ApplyUploadHitReqV2 applyUploadHitReqV2 = 20;
ApplyUploadHitReqV3 applyUploadHitReqV3 = 21;
int32 businessId = 101;
int32 clientType = 102;
ApplyCopyToReq applyCopyToReq = 90000;
//ApplyCleanTrafficReq applyCleanTrafficReq = 90001; empty message
ApplyGetTrafficReq applyGetTrafficReq = 90002;
ExtensionReq extensionReq = 99999;
}
message RspBody {
int32 cmd = 1;
int32 seq = 2;
RecvListQueryRsp recvListQueryRsp = 3;
SendListQueryRsp sendListQueryRsp = 4;
RenewFileRsp renewFileRsp = 5;
RecallFileRsp recallFileRsp = 6;
ApplyUploadRsp applyUploadRsp = 7;
ApplyUploadHitRsp applyUploadHitRsp = 8;
ApplyForwardFileRsp applyForwardFileRsp = 9;
UploadSuccRsp uploadSuccRsp = 10;
DeleteFileRsp deleteFileRsp = 11;
DownloadSuccRsp downloadSuccRsp = 12;
ApplyDownloadAbsRsp applyDownloadAbsRsp = 13;
ApplyDownloadRsp applyDownloadRsp = 14;
ApplyListDownloadRsp applyListDownloadRsp = 15;
FileQueryRsp fileQueryRsp = 16;
ApplyCopyFromRsp applyCopyFromRsp = 17;
ApplyUploadRspV2 applyUploadRspV2 = 18;
ApplyUploadRspV3 applyUploadRspV3 = 19;
ApplyUploadHitRspV2 applyUploadHitRspV2 = 20;
ApplyUploadHitRspV3 applyUploadHitRspV3 = 21;
int32 businessId = 101;
int32 clientType = 102;
ApplyCopyToRsp applyCopyToRsp = 90000;
ApplyCleanTrafficRsp applyCleanTrafficRsp = 90001;
ApplyGetTrafficRsp applyGetTrafficRsp = 90002;
ExtensionRsp extensionRsp = 99999;
}
message SendListQueryReq {
int64 uin = 1;
int32 beginIndex = 2;
int32 reqCount = 3;
}
message SendListQueryRsp {
int32 retCode = 1;
string retMsg = 2;
int32 fileTotCount = 3;
int32 beginIndex = 4;
int32 rspFileCount = 5;
int32 isEnd = 6;
int64 totLimit = 7;
int64 usedLimit = 8;
repeated FileInfo fileList = 9;
}
message UploadSuccReq {
int64 senderUin = 10;
int64 recverUin = 20;
bytes uuid = 30;
}
message UploadSuccRsp {
int32 retCode = 10;
string retMsg = 20;
FileInfo fileInfo = 30;
}

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.13.0
// protoc v3.11.4
// source: msg.proto
package msg
@ -6073,6 +6073,69 @@ func (x *MsgElemInfoServtype3) GetFlashC2CPic() *NotOnlineImage {
return nil
}
type SubMsgType0X4Body struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NotOnlineFile *NotOnlineFile `protobuf:"bytes,1,opt,name=notOnlineFile,proto3" json:"notOnlineFile,omitempty"`
MsgTime uint32 `protobuf:"varint,2,opt,name=msgTime,proto3" json:"msgTime,omitempty"`
OnlineFileForPolyToOffline uint32 `protobuf:"varint,3,opt,name=onlineFileForPolyToOffline,proto3" json:"onlineFileForPolyToOffline,omitempty"` // fileImageInfo
}
func (x *SubMsgType0X4Body) Reset() {
*x = SubMsgType0X4Body{}
if protoimpl.UnsafeEnabled {
mi := &file_msg_proto_msgTypes[57]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SubMsgType0X4Body) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SubMsgType0X4Body) ProtoMessage() {}
func (x *SubMsgType0X4Body) ProtoReflect() protoreflect.Message {
mi := &file_msg_proto_msgTypes[57]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SubMsgType0X4Body.ProtoReflect.Descriptor instead.
func (*SubMsgType0X4Body) Descriptor() ([]byte, []int) {
return file_msg_proto_rawDescGZIP(), []int{57}
}
func (x *SubMsgType0X4Body) GetNotOnlineFile() *NotOnlineFile {
if x != nil {
return x.NotOnlineFile
}
return nil
}
func (x *SubMsgType0X4Body) GetMsgTime() uint32 {
if x != nil {
return x.MsgTime
}
return 0
}
func (x *SubMsgType0X4Body) GetOnlineFileForPolyToOffline() uint32 {
if x != nil {
return x.OnlineFileForPolyToOffline
}
return 0
}
type ResvAttr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -6084,7 +6147,7 @@ type ResvAttr struct {
func (x *ResvAttr) Reset() {
*x = ResvAttr{}
if protoimpl.UnsafeEnabled {
mi := &file_msg_proto_msgTypes[57]
mi := &file_msg_proto_msgTypes[58]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -6097,7 +6160,7 @@ func (x *ResvAttr) String() string {
func (*ResvAttr) ProtoMessage() {}
func (x *ResvAttr) ProtoReflect() protoreflect.Message {
mi := &file_msg_proto_msgTypes[57]
mi := &file_msg_proto_msgTypes[58]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -6110,7 +6173,7 @@ func (x *ResvAttr) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResvAttr.ProtoReflect.Descriptor instead.
func (*ResvAttr) Descriptor() ([]byte, []int) {
return file_msg_proto_rawDescGZIP(), []int{57}
return file_msg_proto_rawDescGZIP(), []int{58}
}
func (x *ResvAttr) GetImageShow() *AnimationImageShow {
@ -6132,7 +6195,7 @@ type AnimationImageShow struct {
func (x *AnimationImageShow) Reset() {
*x = AnimationImageShow{}
if protoimpl.UnsafeEnabled {
mi := &file_msg_proto_msgTypes[58]
mi := &file_msg_proto_msgTypes[59]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -6145,7 +6208,7 @@ func (x *AnimationImageShow) String() string {
func (*AnimationImageShow) ProtoMessage() {}
func (x *AnimationImageShow) ProtoReflect() protoreflect.Message {
mi := &file_msg_proto_msgTypes[58]
mi := &file_msg_proto_msgTypes[59]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -6158,7 +6221,7 @@ func (x *AnimationImageShow) ProtoReflect() protoreflect.Message {
// Deprecated: Use AnimationImageShow.ProtoReflect.Descriptor instead.
func (*AnimationImageShow) Descriptor() ([]byte, []int) {
return file_msg_proto_rawDescGZIP(), []int{58}
return file_msg_proto_rawDescGZIP(), []int{59}
}
func (x *AnimationImageShow) GetEffectId() int32 {
@ -7135,20 +7198,31 @@ var file_msg_proto_rawDesc = []byte{
0x61, 0x73, 0x68, 0x5f, 0x63, 0x32, 0x63, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x0f, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61,
0x67, 0x65, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x43, 0x32, 0x63, 0x50, 0x69, 0x63, 0x22,
0x3e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x76, 0x41, 0x74, 0x74, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x69,
0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x53, 0x68, 0x6f, 0x77, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x22,
0x5a, 0x0a, 0x12, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67,
0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74,
0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6e, 0x69,
0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x2a, 0x2e, 0x0a, 0x08, 0x53,
0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54,
0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10,
0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e,
0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0xa3, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x30, 0x78,
0x34, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69,
0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4e,
0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x6e, 0x6f,
0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x73,
0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46,
0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66, 0x66, 0x6c,
0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e,
0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66,
0x66, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x3e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x76, 0x41, 0x74, 0x74,
0x72, 0x12, 0x32, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67,
0x65, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x5a, 0x0a, 0x12, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x65,
0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6e, 0x69, 0x6d,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x0e, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x2a, 0x2e, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a,
0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54,
0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10,
0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
@ -7164,7 +7238,7 @@ func file_msg_proto_rawDescGZIP() []byte {
}
var file_msg_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 59)
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_msg_proto_goTypes = []interface{}{
(SyncFlag)(0), // 0: SyncFlag
(*GetMessageRequest)(nil), // 1: GetMessageRequest
@ -7224,8 +7298,9 @@ var file_msg_proto_goTypes = []interface{}{
(*PbMultiMsgNew)(nil), // 55: PbMultiMsgNew
(*PbMultiMsgTransmit)(nil), // 56: PbMultiMsgTransmit
(*MsgElemInfoServtype3)(nil), // 57: MsgElemInfo_servtype3
(*ResvAttr)(nil), // 58: ResvAttr
(*AnimationImageShow)(nil), // 59: AnimationImageShow
(*SubMsgType0X4Body)(nil), // 58: SubMsgType0x4Body
(*ResvAttr)(nil), // 59: ResvAttr
(*AnimationImageShow)(nil), // 60: AnimationImageShow
}
var file_msg_proto_depIdxs = []int32{
0, // 0: GetMessageRequest.syncFlag:type_name -> SyncFlag
@ -7289,12 +7364,13 @@ var file_msg_proto_depIdxs = []int32{
54, // 58: PbMultiMsgTransmit.pbItemList:type_name -> PbMultiMsgItem
41, // 59: MsgElemInfo_servtype3.flash_troop_pic:type_name -> CustomFace
31, // 60: MsgElemInfo_servtype3.flash_c2c_pic:type_name -> NotOnlineImage
59, // 61: ResvAttr.image_show:type_name -> AnimationImageShow
62, // [62:62] is the sub-list for method output_type
62, // [62:62] is the sub-list for method input_type
62, // [62:62] is the sub-list for extension type_name
62, // [62:62] is the sub-list for extension extendee
0, // [0:62] is the sub-list for field type_name
32, // 61: SubMsgType0x4Body.notOnlineFile:type_name -> NotOnlineFile
60, // 62: ResvAttr.image_show:type_name -> AnimationImageShow
63, // [63:63] is the sub-list for method output_type
63, // [63:63] is the sub-list for method input_type
63, // [63:63] is the sub-list for extension type_name
63, // [63:63] is the sub-list for extension extendee
0, // [0:63] is the sub-list for field type_name
}
func init() { file_msg_proto_init() }
@ -7988,7 +8064,7 @@ func file_msg_proto_init() {
}
}
file_msg_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResvAttr); i {
switch v := v.(*SubMsgType0X4Body); i {
case 0:
return &v.state
case 1:
@ -8000,6 +8076,18 @@ func file_msg_proto_init() {
}
}
file_msg_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResvAttr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_msg_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AnimationImageShow); i {
case 0:
return &v.state
@ -8018,7 +8106,7 @@ func file_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_msg_proto_rawDesc,
NumEnums: 1,
NumMessages: 59,
NumMessages: 60,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -703,6 +703,13 @@ message MsgElemInfo_servtype3{
NotOnlineImage flash_c2c_pic = 2;
}
message SubMsgType0x4Body {
NotOnlineFile notOnlineFile = 1;
uint32 msgTime = 2;
uint32 onlineFileForPolyToOffline = 3;
// fileImageInfo
}
enum SyncFlag {
START = 0;
CONTINUME = 1;