summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Msg.cs
blob: 58b3576f23d78ec869bd284b3bc5512a882c3bc0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*
所有网络消息

////////////////////////////////////////////// C\S结构消息 //////////////////////////////////////////////
HostGame          // 作为Host建房间
{
    HostGame      // 0 
    gameSettings  // 单局配置
}

JoinGame          // 某个玩家加入游戏
{
    JoinGame      // 1
    gameId        // 如果加入失败,gameId存失败原因
    clientId
}

StartGame         // host玩家开始游戏
{
    StartGame     // 2
    gameId 
}

RemoveGame        // 玩家退出游戏
{
    gameId
}

RemovePlayer      // 如果在连接过程中出现错误(DisconnectReasons),移除某个玩家
{
    RemovePlayer  // 4
    gameId 
    clientId 
    reason        // DisconnectReasons
}

JoinedGame        // 加入游戏, S2C,在InnerNetServer,用来分发局内玩家数据,是JoinGame的ACK
{
    JointedGame   // 7
    gameId 
    clientId 
    hostId 
    clientCount
    playerIdList  // playerId,分配给每个玩家的clientId
}

EndGame           // 本局结束
{
    EndGame       // 8
    gameId
    endReason     // 游戏结束原因
    showAd        // 是否显示广告
}

GetGameList       // 游戏房间数据
{
    GetGameList        // 9
    includePrivate     // 是否包含私密房
    gameSearchOptions  // 搜索条件
}

AlterGame          // 切换房间的public和private (只有主机可以)
{
    AlterGame      // 10
    1              // 未知
    gameId 
    isPublic
}

KickPlayer_C2S     // 踢玩家
{
    KickPlayer     // 11
    gameId        
    clientId 
    ban            // 是否ban掉这个ip
}

KickPlayer_S2C     // 发给被踢玩家的消息
{
    KickPlayer     // 11
    gameId 
    clientId 
    ban
}

WaitForHost       // 等待主机玩家进一步操作(比如开始游戏)
{
    gameID 
    clientId 
}

Redirect           // 游戏服务器推给所有玩家,切换连接的服务器IP和端口
{
    Redirect       // 13
    address
    port 
}

////////////////////////////////////////////// 高频率的同步消息 //////////////////////////////////////////////
// 对应 GameData(5)和GameDataTo(6)

GameData           // 所有在游戏内的广播消息的通用结构,可以包含Rpc、SpawnMsg等等
{
    flag           // GameData 或 GameDataTo
	gameId
	msgData        // 具体的网络消息
}

// SyncNetObject和Rpc有很多,在NetObject中实现

SyncNetObject      // 定时同步innnerNetObject的数据
{
	DataFlag       // 1
	netId          // 这个innerNetObject的id
	data           // netObject的序列化数据
}

Rpc                 // 远程调用(Remote Procedure Call)的通用结构
{
	RpcFlag         // 2
	netId           // 调用的网络对象
	callId          // 函数id
	data            // 函数参数(可选)
} 

SpawnMsg 			// 生成\创建innerNetObject的消息,包括角色、场景中的物件比如门等
{
	SpawnFlag        // 4
	spawnId          // 父InnerNetObject的SpawnId
	clientId         // ownerId
	SpawnFlag
	numOfNetObjs     // innerNetObject的个数
	  lenOfMsg
	  netId          // 这个innerNetObject分配的netId
	  DataFlag
	  data           // 单个innerNetObject的序列化数据
	  ...
	  lenOfMsg
	  netId
	  DataFlag
	  data           // 单个innerNetObject的序列化数据
	  ...
} 

DespawnMsg           // 销毁单个netObject
{  
	DespawnFlag      // 5
	netId
} 

SceneChange           // 场景加载完毕的消息,用来同步
{
	SceneChangeFlag    // 6
	clientId
	sceneName
} 

PlayerReady           // 某个玩家已经准备好
{
	ReadyFlag          // 7
	clientId           
}

*/