enter intro cutscene

This commit is contained in:
Naruse
2026-04-20 12:40:38 +08:00
parent 2826239284
commit 279da58dc1
81 changed files with 7279 additions and 0 deletions

136
Proto/CmdIds.cs Normal file
View File

@@ -0,0 +1,136 @@
namespace MikuSB.Proto;
public class CmdIds
{
public const int None = 0;
public const int ReqLogin = 1;
public const int RspLogin = 2;
public const int ReqReconnect = 3;
public const int RspReconnect = 4;
public const int ReqRename = 5;
public const int RspRename = 6;
public const int ReqCallGs = 7;
public const int RspCallGs = 8;
public const int ReqUseItem = 9;
public const int RspUseItem = 10;
public const int ReqReadMail = 11;
public const int RspReadMail = 12;
public const int ReqMailAttachment = 13;
public const int RspMailAttachment = 14;
public const int ReqDelMail = 15;
public const int RspDelMail = 16;
public const int ReqSetNewGuide = 17;
public const int RspSetNewGuide = 18;
public const int ReqAccountInfo = 19;
public const int RspAccountInfo = 20;
public const int ReqResign = 23;
public const int RspResign = 24;
public const int ReqRecord = 25;
public const int RspRecord = 26;
public const int ReqAddFriendReq = 27;
public const int RspAddFriendReq = 28;
public const int ReqAgreeFriendReq = 29;
public const int RspAgreeFriendReq = 30;
public const int ReqRefuseFriendReq = 31;
public const int RspRefuseFriendReq = 32;
public const int ReqRemoveFriend = 33;
public const int RspRemoveFriend = 34;
public const int ReqGiveFriendVigor = 35;
public const int RspGiveFriendVigor = 36;
public const int ReqRecvFriendVigor = 37;
public const int RspRecvFriendVigor = 38;
public const int ReqPlayerRecommend = 39;
public const int RspPlayerRecommend = 40;
public const int ReqAddBlockList = 41;
public const int RspAddBlockList = 42;
public const int ReqDelBlockList = 43;
public const int RspDelBlockList = 44;
public const int ReqFindPlayer = 45;
public const int RspFindPlayer = 46;
public const int ReqPlayerProfile = 47;
public const int RspPlayerProfile = 48;
public const int ReqGetVersion = 49;
public const int RspGetVersion = 50;
public const int ReqRankList = 51;
public const int RspRankList = 52;
public const int ReqRank = 53;
public const int RspRank = 54;
public const int ReqBlockFriendReq = 55;
public const int RspBlockFriendReq = 56;
public const int ReqWordFilter = 57;
public const int RspWordFilter = 58;
public const int ReqSetCustomRoster = 59;
public const int RspSetCustomRoster = 60;
public const int ReqGlobalCounter = 61;
public const int RspGlobalCounter = 62;
public const int ReqMatch = 301;
public const int RspMatch = 302;
public const int ReqOnlineRoom = 303;
public const int RspOnlineRoom = 304;
public const int ReqOnlineRoomStart = 305;
public const int RspOnlineRoomStart = 306;
public const int ReqOnlineRoomExit = 307;
public const int RspOnlineRoomExit = 308;
public const int ReqOnlineRoomInvite = 309;
public const int RspOnlineRoomInvite = 310;
public const int ReqOnlineRoomAccept = 311;
public const int RspOnlineRoomAccept = 312;
public const int ReqOnlineRoomUpdate = 313;
public const int RspOnlineRoomUpdate = 314;
public const int ReqOnlineRoomReconnect = 315;
public const int RspOnlineRoomReconnect = 316;
public const int ReqOnlineRoomChatAccept = 317;
public const int RspOnlineRoomChatAccept = 318;
public const int ReqOnlineRoomUpdateMap = 319;
public const int RspOnlineRoomUpdateMap = 320;
public const int ReqChangeWorldChannel = 321;
public const int RspChangeWorldChannel = 322;
public const int ReqWorldChat = 323;
public const int RspWorldChat = 324;
public const int ReqFriendChat = 325;
public const int RspFriendChat = 326;
public const int ReqOnlineChat = 327;
public const int RspOnlineChat = 328;
public const int ReqOnlineRecruit = 329;
public const int RspOnlineRecruit = 330;
public const int NtfLog = 1001;
public const int NtfKickout = 1002;
public const int NtfBroadcast = 1003;
public const int NtfSyncAttr = 1004;
public const int NtfSyncLineup = 1005;
public const int NtfSyncNewMail = 1006;
public const int NtfSyncDelMail = 1007;
public const int NtfPlayerMsg = 1008;
public const int NtfLogout = 1009;
public const int NtfScript = 1010;
public const int NtfSetAttr = 1011;
public const int NtfSetStrAttr = 1012;
public const int NtfOnlineStart = 1013;
public const int NtfOnlineOver = 1014;
public const int NtfReadItem = 1015;
public const int NtfUpdateFriend = 1016;
public const int NtfDelFriend = 1017;
public const int NtfFriendReq = 1018;
public const int NtfFriendVigor = 1019;
public const int NtfBlacklist = 1020;
public const int NtfGlobalAttrs = 1021;
public const int NtfAntiData = 1022;
public const int NtfBlockFriendReq = 1023;
public const int NtfCustomRoster = 1024;
public const int NtfOnlineRoomInfo = 1031;
public const int NtfOnlineLoad = 1032;
public const int NtfOnlineKickout = 1033;
public const int NtfOnlineInvite = 1034;
public const int NtfOnlineState = 1035;
public const int NtfWorldChat = 1041;
public const int NtfFriendChat = 1042;
public const int NtfOnlineChat = 1043;
public const int NtfOnlineRecruit = 1044;
public const int NtfOnlinePlayerCheat = 1045;
public const int ReqRoomStart = 2001;
public const int RspRoomStart = 2002;
public const int NtfRoomReady = 2003;
public const int NtfRoomOver = 2004;
public const int NtfStopRoom = 2005;
public const int NtfRoomPlayerExit = 2006;
}

302
Proto/Core.proto Normal file
View File

@@ -0,0 +1,302 @@
syntax = "proto3";
package core;
option csharp_namespace = "MikuSB.Proto";
enum Sex {
MALE = 0;
FEMALE = 1;
}
enum PlayerCoreAttribute {
LEVEL = 0;
EXP = 1;
VIGOR = 2;
CHARGED = 3;
VIGOR_TIME = 4;
}
enum MailStat {
New = 0;
Readed = 1;
Geted = 2;
Removed = 3;
}
enum GlobalMailStat {
Default = 0;
Banned = 1;
Deleted = 2;
}
enum ChatType {
SYSTEM = 0;
WORLD = 1;
FRIEND = 2;
ONLINE = 3;
}
message Empty {
}
message SimpleBoolean {
bool data = 1;
}
message SimpleUint {
uint64 data = 1;
}
message SimpleString {
string data = 1;
}
message IDArray {
repeated uint64 ids = 1;
}
message StringArray {
repeated string list = 1;
}
message PlayerProfileArray {
repeated PlayerProfile list = 1;
}
message ChannelOpt {
string channel = 1;
repeated string subchannels = 2;
}
message SimpleItem {
uint32 G = 1;
uint32 D = 2;
uint32 P = 3;
uint32 L = 4;
uint32 Count = 5;
}
message Enhance {
uint32 level = 1;
uint32 exp = 2;
uint32 break = 3;
uint32 evolue = 4;
uint32 trust = 5;
uint32 pro_level = 6;
repeated uint64 spines = 11;
repeated uint32 affixs = 12;
}
message Item {
uint64 id = 1;
uint64 template = 2;
uint32 count = 3;
uint32 flag = 4;
uint32 userdata = 5;
uint32 expiration = 6;
Enhance enhance = 7;
map<uint32, uint64> slots = 8;
}
message Lineup {
uint32 index = 1;
string name = 2;
uint64 member1 = 3;
uint64 member2 = 4;
uint64 member3 = 5;
}
message Player {
uint64 pid = 1;
string account = 2;
string provider = 3;
string channel = 4;
string subchannel = 5;
string name = 11;
string sign = 12;
Sex sex = 13;
uint32 level = 14;
uint32 exp = 15;
uint32 vigor = 16;
map<string, int32> money = 17;
uint32 charged = 18;
uint32 create_time = 31;
uint32 last_login_time = 32;
uint32 last_vigor_time = 33;
uint64 item_id_alloc = 41;
repeated Item items = 42;
repeated Lineup solutions = 43;
map<uint32, uint32> attrs = 44;
map<uint32, string> str_attrs = 45;
repeated uint64 show_items = 46;
repeated uint32 show_attrs = 47;
map<uint64, FriendPieces> friend_pieces = 48;
uint64 last_pieces = 49;
map<uint64, PlayerMail> mail_box = 50;
uint32 last_global_mail_time = 51;
uint64 last_person_mid = 52;
repeated uint64 badges = 53;
map<string, PlayerOrder> order_box = 60;
repeated uint64 tags = 96;
uint64 serial = 97;
uint32 ban_type = 98;
uint32 ban_expr = 99;
}
message FriendPieces {
uint64 index = 1;
uint64 pid = 2;
uint32 shape = 3;
uint32 expr = 4;
bool deleted = 5;
}
message PlayerMail {
uint64 mid = 1;
MailStat stat = 2;
uint32 time = 3;
uint32 expiration = 4;
}
message Mail {
uint64 mid = 1;
string title = 2;
string message = 3;
repeated SimpleItem attachments = 4;
string sender = 5;
uint64 pid = 6;
uint32 time = 7;
uint32 expiration = 8;
uint32 life = 9;
MailStat stat = 10;
bool is_deleted = 99;
}
message GlobalMail {
uint64 mid = 1;
string sender = 2;
string title = 3;
string message = 4;
repeated SimpleItem attachments = 5;
uint32 start_time = 6;
uint32 end_time = 7;
uint32 life = 8;
uint32 expiration = 9;
uint32 min_level = 10;
uint32 max_level = 12;
uint32 create_begin = 13;
uint32 create_end = 14;
repeated ChannelOpt channels = 15;
GlobalMailStat stat = 99;
}
message Order {
string trade_no = 1;
string third_trade_no = 2;
uint64 pid = 3;
string product_id = 4;
uint32 product_quantity = 5;
uint32 total_price = 6;
uint32 paid_price = 7;
string finish_time = 8;
bool status = 9;
bool refund_status = 10;
string refund_time = 11;
string subchannel = 12;
string priceunit = 13;
bool supplement_status = 14;
string extendinfo = 15;
}
message PlayerOrder {
string trade_no = 1;
string subchannel = 2;
uint32 done_time = 3;
uint32 refund_time = 4;
bool is_unreal = 5;
uint32 supplement = 6;
}
message PlayerProfile {
uint64 pid = 1;
string account = 2;
uint32 create_time = 3;
string name = 4;
string sign = 5;
Sex sex = 6;
uint32 level = 7;
uint32 logout_time = 8;
uint32 friend_count = 9;
repeated Item show_items = 10;
repeated uint32 show_attrs = 11;
repeated Item badges = 12;
repeated uint64 tags = 13;
}
message ClientProfile {
uint32 plat_id = 1;
string version = 2;
string os_version = 3;
string os_hardware = 4;
string telecom_oper = 5;
string network = 6;
uint32 screen_width = 7;
uint32 screen_height = 8;
float density = 9;
string cpu_profile = 10;
uint32 ram = 11;
string gl_render = 12;
string gl_version = 13;
string device_id = 14;
string resource_version = 15;
string language = 16;
}
message OnlinePlayer {
uint64 pid = 1;
string name = 2;
uint64 face = 3;
uint64 faceframe = 4;
uint32 level = 5;
Lineup lineup = 6;
repeated Item items = 7;
bool captain = 8;
uint32 stateflag = 9;
repeated uint32 girllovelevel = 10;
map<uint32, uint32> attrs = 11;
}
message OnlineEndData {
uint64 pid = 1;
string infodata = 2;
uint32 status = 3;
}
message AccountInfo {
string account = 1;
uint64 pid = 2;
uint32 new_guide = 3;
repeated uint32 error_info = 4;
}
message ChatMsg {
ChatType type = 1;
uint32 channel_id = 2;
uint64 sender = 3;
uint64 recver = 4;
uint32 time_stamp = 5;
uint64 emoji = 11;
string text = 12;
PlayerProfile profile = 21;
}
message CustomRoster {
uint64 pid = 1;
map<string, string> roster = 2;
}
message GlobalAttrs {
map<string, uint32> attrs = 1;
map<string, string> str_attrs = 2;
}

26
Proto/Proto.csproj Normal file
View File

@@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<CETCompat>false</CETCompat>
<AssemblyName>MikuProto</AssemblyName>
<RootNamespace>MikuSB.Proto</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.29.2" />
<PackageReference Include="Google.Protobuf.Tools" Version="3.29.2" />
<PackageReference Include="Grpc.Tools" Version="2.68.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Protobuf Include="*.proto" ProtoRoot="." GrpcServices="None" />
<Protobuf Include="./Protos/*.proto" ProtoRoot="./Protos" GrpcServices="None" />
</ItemGroup>
</Project>

381
Proto/Snowbreak.proto Normal file
View File

@@ -0,0 +1,381 @@
syntax = "proto3";
package snowbreak;
import "core.proto";
option csharp_namespace = "MikuSB.Proto";
enum PF {
NONE = 0;
REQ_LOGIN = 1;
RSP_LOGIN = 2;
REQ_RECONNECT = 3;
RSP_RECONNECT = 4;
REQ_RENAME = 5;
RSP_RENAME = 6;
REQ_CALLGS = 7;
RSP_CALLGS = 8;
REQ_USEITEM = 9;
RSP_USEITEM = 10;
REQ_READMAIL = 11;
RSP_READMAIL = 12;
REQ_MAIL_ATTACHMENT = 13;
RSP_MAIL_ATTACHMENT = 14;
REQ_DELMAIL = 15;
RSP_DELMAIL = 16;
REQ_SET_NEWGUIDE = 17;
RSP_SET_NEWGUIDE = 18;
REQ_ACCOUNTINFO = 19;
RSP_ACCOUNTINFO = 20;
REQ_RESIGN = 23;
RSP_RESIGN = 24;
REQ_RECORD = 25;
RSP_RECORD = 26;
REQ_ADD_FRIENDREQ = 27;
RSP_ADD_FRIENDREQ = 28;
REQ_AGREE_FRIENDREQ = 29;
RSP_AGREE_FRIENDREQ = 30;
REQ_REFUSE_FRIENDREQ = 31;
RSP_REFUSE_FRIENDREQ = 32;
REQ_REMOVE_FRIEND = 33;
RSP_REMOVE_FRIEND = 34;
REQ_GIVE_FRIENDVIGOR = 35;
RSP_GIVE_FRIENDVIGOR = 36;
REQ_RECV_FRIENDVIGOR = 37;
RSP_RECV_FRIENDVIGOR = 38;
REQ_PLAYER_RECOMMEND = 39;
RSP_PLAYER_RECOMMEND = 40;
REQ_ADD_BLOCKLIST = 41;
RSP_ADD_BLOCKLIST = 42;
REQ_DEL_BLOCKLIST = 43;
RSP_DEL_BLOCKLIST = 44;
REQ_FIND_PLAYER = 45;
RSP_FIND_PLAYER = 46;
REQ_PLAYER_PROFILE = 47;
RSP_PLAYER_PROFILE = 48;
REQ_GET_VERSION = 49;
RSP_GET_VERSION = 50;
REQ_RANKLIST = 51;
RSP_RANKLIST = 52;
REQ_RANK = 53;
RSP_RANK = 54;
REQ_BLOCK_FRIENDREQ = 55;
RSP_BLOCK_FRIENDREQ = 56;
REQ_WORD_FILTER = 57;
RSP_WORD_FILTER = 58;
REQ_SET_CUSTOMROSTER = 59;
RSP_SET_CUSTOMROSTER = 60;
REQ_GLOBALCOUNTER = 61;
RSP_GLOBALCOUNTER = 62;
REQ_MATCH = 301;
RSP_MATCH = 302;
REQ_ONLINE_ROOM = 303;
RSP_ONLINE_ROOM = 304;
REQ_ONLINE_ROOM_START = 305;
RSP_ONLINE_ROOM_START = 306;
REQ_ONLINE_ROOM_EXIT = 307;
RSP_ONLINE_ROOM_EXIT = 308;
REQ_ONLINE_ROOM_INVITE = 309;
RSP_ONLINE_ROOM_INVITE = 310;
REQ_ONLINE_ROOM_ACCEPT = 311;
RSP_ONLINE_ROOM_ACCEPT = 312;
REQ_ONLINE_ROOM_UPDATE = 313;
RSP_ONLINE_ROOM_UPDATE = 314;
REQ_ONLINE_ROOM_RECONNECT = 315;
RSP_ONLINE_ROOM_RECONNECT = 316;
REQ_ONLINE_ROOM_CHATACCEPT = 317;
RSP_ONLINE_ROOM_CHATACCEPT = 318;
REQ_ONLINE_ROOM_UPDATEMAP = 319;
RSP_ONLINE_ROOM_UPDATEMAP = 320;
REQ_CHANGE_WORLD_CHANNEL = 321;
RSP_CHANGE_WORLD_CHANNEL = 322;
REQ_WORLD_CHAT = 323;
RSP_WORLD_CHAT = 324;
REQ_FRIEND_CHAT = 325;
RSP_FRIEND_CHAT = 326;
REQ_ONLINE_CHAT = 327;
RSP_ONLINE_CHAT = 328;
REQ_ONLINE_RECRUIT = 329;
RSP_ONLINE_RECRUIT = 330;
NTF_LOG = 1001;
NTF_KICKOUT = 1002;
NTF_BROADCAST = 1003;
NTF_SYNCATTR = 1004;
NTF_SYNCLINEUP = 1005;
NTF_SYNC_NEW_MAIL = 1006;
NTF_SYNC_DEL_MAIL = 1007;
NTF_PLAYERMSG = 1008;
NTF_LOGOUT = 1009;
NTF_SCRIPT = 1010;
NTF_SETATTR = 1011;
NTF_SETSTRATTR = 1012;
NTF_ONLINE_START = 1013;
NTF_ONLINE_OVER = 1014;
NTF_READITEM = 1015;
NTF_UPDATE_FRIEND = 1016;
NTF_DEL_FRIEND = 1017;
NTF_FRIEND_REQ = 1018;
NTF_FRIEND_VIGOR = 1019;
NTF_BLACKLIST = 1020;
NTF_GLOBALATTRS = 1021;
NTF_ANTI_DATA = 1022;
NTF_BLOCK_FRIENDREQ = 1023;
NTF_CUSTOMROSTER = 1024;
NTF_ONLINE_ROOMINFO = 1031;
NTF_ONLINE_LOAD = 1032;
NTF_ONLINE_KICKOUT = 1033;
NTF_ONLINE_INVITE = 1034;
NTF_ONLINE_STATE = 1035;
NTF_WORLD_CHAT = 1041;
NTF_FRIEND_CHAT = 1042;
NTF_ONLINE_CHAT = 1043;
NTF_ONLINE_RECRUIT = 1044;
NTF_ONLINE_PLAYERCHEAT = 1045;
REQ_ROOM_START = 2001;
RSP_ROOM_START = 2002;
NTF_ROOM_READY = 2003;
NTF_ROOM_OVER = 2004;
NTF_STOP_ROOM = 2005;
NTF_ROOM_PLAYEREXIT = 2006;
NTF_ROOM_PLAYERCHEAT = 2007;
NTF_ROOM_PLAYERFINAL = 2008;
}
message ReqLogin {
string provider = 1;
string token = 2;
core.ClientProfile client_profile = 3;
}
message RspLogin {
string session_id = 1;
core.Player data = 2;
bool need_rename = 3;
uint32 area_id = 4;
int32 time_zone = 5;
uint32 timestamp = 6;
int32 certification = 7;
map<string, uint32> global_attrs = 8;
uint32 world_channel = 9;
map<string, string> global_str_attrs = 10;
uint32 error_code = 98;
repeated uint32 error_info = 99;
}
message ReqReconnect {
uint64 pid = 1;
string session_id = 2;
uint32 world_channel = 3;
string language = 4;
}
message RspReconnect {
string session_id = 1;
core.Player data = 2;
bool need_rename = 3;
int32 time_zone = 4;
uint32 timestamp = 5;
uint32 world_channel = 6;
}
message ReqAccountInfo {
string provider = 1;
string token = 2;
}
message ReqCallGS {
string api = 1;
string param = 2;
uint32 clicknum = 3;
repeated string dependent_params = 4;
}
message ReqUseItem {
uint64 id = 1;
uint32 count = 2;
}
message ReqOnlineCreateRoom {
uint32 onlineid = 1;
uint32 lineup_index = 2;
}
message RspOnlineCreateRoom {
uint32 onlineid = 1;
uint32 lineup_index = 2;
uint64 roomid = 3;
repeated uint32 buffinfo = 4;
}
message ReqOnlineAccept {
uint64 otherid = 1;
uint32 onlineid = 2;
}
message ReqOnlineChatAccept {
uint64 otherid = 1;
uint32 onlineid = 2;
uint64 roomid = 3;
}
message ReqOnlineRecruit {
uint64 room_id = 1;
uint32 online_id = 2;
}
message FriendVigor {
uint64 pid = 1;
bool have_vigor = 2;
bool vigor_got = 3;
bool return_vigor = 4;
}
message FriendVigorList {
repeated FriendVigor list = 1;
}
message RankList {
message ListItem {
string member_name = 1;
uint32 score = 2;
string info = 3;
}
string rank_name = 1;
repeated RankList.ListItem list = 2;
}
message RankInfo {
uint32 score = 1;
uint32 rank = 2;
uint32 sum = 3;
string info = 4;
}
message GlobalCounterInfo {
string counter_name = 1;
uint32 value = 2;
}
message NtfLog {
string action = 1;
string detail = 2;
}
message NtfBroadcast {
string msg = 1;
uint32 duration = 2;
uint32 start_time = 3;
uint32 end_time = 4;
bool clean = 5;
repeated core.ChannelOpt channels = 6;
}
message NtfSyncPlayer {
string sign = 1;
map<uint32, uint32> core = 2;
map<uint32, uint32> custom = 3;
map<uint32, string> custom_str = 4;
repeated core.Item items = 5;
repeated uint64 show_items = 6;
repeated uint32 show_attrs = 7;
map<string, int32> money = 8;
repeated core.FriendPieces pieces = 9;
repeated uint64 badges = 10;
repeated uint64 tags = 11;
}
message NtfSyncLineup {
core.Lineup lineup = 1;
bool remove = 2;
}
message NtfCallScript {
string api = 1;
string arg = 2;
NtfSyncPlayer extra_sync = 3;
}
message NtfSetAttr {
uint32 gid = 1;
uint32 sid = 2;
uint32 val = 3;
}
message NtfSetStrAttr {
uint32 gid = 1;
uint32 sid = 2;
string val = 3;
}
message NtfOnlineStart {
uint64 room_id = 1;
string room_addr = 2;
}
message NtfOnlineRoom {
uint64 room_id = 1;
uint32 onlineid = 2;
repeated core.OnlinePlayer players = 3;
bool bmatch = 4;
repeated uint32 buffinfo = 5;
}
message NtfOnlineInvite {
uint64 room_id = 1;
uint32 onlineid = 2;
uint64 playerid = 3;
string name = 4;
uint64 face = 5;
uint64 faceframe = 6;
uint32 level = 7;
}
message NtfOnlineRecruit {
uint64 room_id = 1;
uint32 online_id = 2;
core.PlayerProfile sender_profile = 3;
}
message NtfOnlineState {
uint64 room_id = 1;
uint32 onlineid = 2;
uint32 matchflag = 3;
repeated uint64 players = 4;
repeated uint32 stateflag = 5;
uint64 nowtime = 6;
uint64 levelid = 7;
}
message ReqRoomStart {
uint64 room_id = 1;
bool is_reday = 2;
string error = 3;
}
message RspRoomStart {
repeated core.OnlinePlayer players = 1;
repeated uint32 buffinfo = 2;
uint32 pollingweek = 3;
}
message NtfStopRoom {
uint64 room_id = 1;
string reason = 2;
}
message NtfRoomOver {
uint64 room_id = 1;
repeated core.OnlineEndData playerinfo = 2;
}
message ReqAntiData {
uint32 data_type = 1;
bytes mtpData = 2;
int32 plat_id = 4;
}
message NtfRoomPlayerCheat {
uint64 room_id = 1;
uint64 playerid = 2;
}