diff --git a/Luban/Proto/Gen/ProtoCs.cs b/Luban/Proto/Gen/ProtoCs.cs
new file mode 100644
index 00000000..0666fec1
--- /dev/null
+++ b/Luban/Proto/Gen/ProtoCs.cs
@@ -0,0 +1,1042 @@
+//
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: proto_cs.proto
+//
+#pragma warning disable 1591, 0612, 3021, 8981
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace GameProto {
+
+ /// Holder for reflection information generated from proto_cs.proto
+ public static partial class ProtoCsReflection {
+
+ #region Descriptor
+ /// File descriptor for proto_cs.proto
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static ProtoCsReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Cg5wcm90b19jcy5wcm90bxIJR2FtZVByb3RvGhVwcm90b19jc19jb21tb24u",
+ "cHJvdG8aFXByb3RvX2NzX3BsYXllci5wcm90byJPCgVDU1BrZxIiCgRIZWFk",
+ "GAEgASgLMhQuR2FtZVByb3RvLkNTUGtnSGVhZBIiCgRCb2R5GAIgASgLMhQu",
+ "R2FtZVByb3RvLkNTUGtnQm9keSJgCglDU1BrZ0hlYWQSDQoFTXNnSWQYASAB",
+ "KA0SEQoJTXNnTGVuZ3RoGAIgASgNEhIKCk1zZ1ZlcnNpb24YAyABKA0SDAoE",
+ "RWNobxgEIAEoDRIPCgdTdnJUaW1lGAUgASgNIscBCglDU1BrZ0JvZHkSLQoL",
+ "SGVhdEJlYXRSZXEYASABKAsyGC5HYW1lUHJvdG8uQ1NIZWF0QmVhdFJlcRIt",
+ "CgtIZWF0QmVhdFJlcxgCIAEoCzIYLkdhbWVQcm90by5DU0hlYXRCZWF0UmVz",
+ "Ei0KC0FjdExvZ2luUmVxGAMgASgLMhguR2FtZVByb3RvLkNTQWN0TG9naW5S",
+ "ZXESLQoLQWN0TG9naW5SZXMYBCABKAsyGC5HYW1lUHJvdG8uQ1NBY3RMb2dp",
+ "blJlcyqBAQoHQ1NNc2dJRBIMCghDU19TVEFSVBAAEhgKE0NTX0NNRF9IRUFU",
+ "QkVBVF9SRVEQ6QcSGAoTQ1NfQ01EX0hFQVRCRUFUX1JFUxDqBxIZChRDU19D",
+ "TURfQUNUX0xPR0lOX1JFURDRDxIZChRDU19DTURfQUNUX0xPR0lOX1JFUxDS",
+ "D1AAUAFiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::GameProto.ProtoCsCommonReflection.Descriptor, global::GameProto.ProtoCsPlayerReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(new[] {typeof(global::GameProto.CSMsgID), }, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSPkg), global::GameProto.CSPkg.Parser, new[]{ "Head", "Body" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSPkgHead), global::GameProto.CSPkgHead.Parser, new[]{ "MsgId", "MsgLength", "MsgVersion", "Echo", "SvrTime" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSPkgBody), global::GameProto.CSPkgBody.Parser, new[]{ "HeatBeatReq", "HeatBeatRes", "ActLoginReq", "ActLoginRes" }, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Enums
+ ///
+ /// 协议ID
+ ///
+ public enum CSMsgID {
+ [pbr::OriginalName("CS_START")] CsStart = 0,
+ ///
+ ///心跳请求
+ ///
+ [pbr::OriginalName("CS_CMD_HEATBEAT_REQ")] CsCmdHeatbeatReq = 1001,
+ ///
+ ///心跳回包
+ ///
+ [pbr::OriginalName("CS_CMD_HEATBEAT_RES")] CsCmdHeatbeatRes = 1002,
+ ///
+ ///帐号登录请求
+ ///
+ [pbr::OriginalName("CS_CMD_ACT_LOGIN_REQ")] CsCmdActLoginReq = 2001,
+ ///
+ ///帐号登录回包
+ ///
+ [pbr::OriginalName("CS_CMD_ACT_LOGIN_RES")] CsCmdActLoginRes = 2002,
+ }
+
+ #endregion
+
+ #region Messages
+ ///
+ /// 消息协议
+ ///
+ public sealed partial class CSPkg : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSPkg());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkg() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkg(CSPkg other) : this() {
+ head_ = other.head_ != null ? other.head_.Clone() : null;
+ body_ = other.body_ != null ? other.body_.Clone() : null;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkg Clone() {
+ return new CSPkg(this);
+ }
+
+ /// Field number for the "Head" field.
+ public const int HeadFieldNumber = 1;
+ private global::GameProto.CSPkgHead head_;
+ ///
+ ///消息协议头
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSPkgHead Head {
+ get { return head_; }
+ set {
+ head_ = value;
+ }
+ }
+
+ /// Field number for the "Body" field.
+ public const int BodyFieldNumber = 2;
+ private global::GameProto.CSPkgBody body_;
+ ///
+ ///消息协议体
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSPkgBody Body {
+ get { return body_; }
+ set {
+ body_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSPkg);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSPkg other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!object.Equals(Head, other.Head)) return false;
+ if (!object.Equals(Body, other.Body)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (head_ != null) hash ^= Head.GetHashCode();
+ if (body_ != null) hash ^= Body.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (head_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Head);
+ }
+ if (body_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Body);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (head_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Head);
+ }
+ if (body_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Body);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (head_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Head);
+ }
+ if (body_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Body);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSPkg other) {
+ if (other == null) {
+ return;
+ }
+ if (other.head_ != null) {
+ if (head_ == null) {
+ Head = new global::GameProto.CSPkgHead();
+ }
+ Head.MergeFrom(other.Head);
+ }
+ if (other.body_ != null) {
+ if (body_ == null) {
+ Body = new global::GameProto.CSPkgBody();
+ }
+ Body.MergeFrom(other.Body);
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ if (head_ == null) {
+ Head = new global::GameProto.CSPkgHead();
+ }
+ input.ReadMessage(Head);
+ break;
+ }
+ case 18: {
+ if (body_ == null) {
+ Body = new global::GameProto.CSPkgBody();
+ }
+ input.ReadMessage(Body);
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ if (head_ == null) {
+ Head = new global::GameProto.CSPkgHead();
+ }
+ input.ReadMessage(Head);
+ break;
+ }
+ case 18: {
+ if (body_ == null) {
+ Body = new global::GameProto.CSPkgBody();
+ }
+ input.ReadMessage(Body);
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// 消息协议头
+ ///
+ public sealed partial class CSPkgHead : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSPkgHead());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsReflection.Descriptor.MessageTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgHead() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgHead(CSPkgHead other) : this() {
+ msgId_ = other.msgId_;
+ msgLength_ = other.msgLength_;
+ msgVersion_ = other.msgVersion_;
+ echo_ = other.echo_;
+ svrTime_ = other.svrTime_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgHead Clone() {
+ return new CSPkgHead(this);
+ }
+
+ /// Field number for the "MsgId" field.
+ public const int MsgIdFieldNumber = 1;
+ private uint msgId_;
+ ///
+ ///协议号
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint MsgId {
+ get { return msgId_; }
+ set {
+ msgId_ = value;
+ }
+ }
+
+ /// Field number for the "MsgLength" field.
+ public const int MsgLengthFieldNumber = 2;
+ private uint msgLength_;
+ ///
+ ///协议长度
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint MsgLength {
+ get { return msgLength_; }
+ set {
+ msgLength_ = value;
+ }
+ }
+
+ /// Field number for the "MsgVersion" field.
+ public const int MsgVersionFieldNumber = 3;
+ private uint msgVersion_;
+ ///
+ ///协议版本
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint MsgVersion {
+ get { return msgVersion_; }
+ set {
+ msgVersion_ = value;
+ }
+ }
+
+ /// Field number for the "Echo" field.
+ public const int EchoFieldNumber = 4;
+ private uint echo_;
+ ///
+ ///回带字段
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint Echo {
+ get { return echo_; }
+ set {
+ echo_ = value;
+ }
+ }
+
+ /// Field number for the "SvrTime" field.
+ public const int SvrTimeFieldNumber = 5;
+ private uint svrTime_;
+ ///
+ ///服务器时间
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint SvrTime {
+ get { return svrTime_; }
+ set {
+ svrTime_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSPkgHead);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSPkgHead other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (MsgId != other.MsgId) return false;
+ if (MsgLength != other.MsgLength) return false;
+ if (MsgVersion != other.MsgVersion) return false;
+ if (Echo != other.Echo) return false;
+ if (SvrTime != other.SvrTime) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (MsgId != 0) hash ^= MsgId.GetHashCode();
+ if (MsgLength != 0) hash ^= MsgLength.GetHashCode();
+ if (MsgVersion != 0) hash ^= MsgVersion.GetHashCode();
+ if (Echo != 0) hash ^= Echo.GetHashCode();
+ if (SvrTime != 0) hash ^= SvrTime.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (MsgId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(MsgId);
+ }
+ if (MsgLength != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(MsgLength);
+ }
+ if (MsgVersion != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(MsgVersion);
+ }
+ if (Echo != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(Echo);
+ }
+ if (SvrTime != 0) {
+ output.WriteRawTag(40);
+ output.WriteUInt32(SvrTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (MsgId != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(MsgId);
+ }
+ if (MsgLength != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(MsgLength);
+ }
+ if (MsgVersion != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(MsgVersion);
+ }
+ if (Echo != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(Echo);
+ }
+ if (SvrTime != 0) {
+ output.WriteRawTag(40);
+ output.WriteUInt32(SvrTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (MsgId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MsgId);
+ }
+ if (MsgLength != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MsgLength);
+ }
+ if (MsgVersion != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MsgVersion);
+ }
+ if (Echo != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Echo);
+ }
+ if (SvrTime != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SvrTime);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSPkgHead other) {
+ if (other == null) {
+ return;
+ }
+ if (other.MsgId != 0) {
+ MsgId = other.MsgId;
+ }
+ if (other.MsgLength != 0) {
+ MsgLength = other.MsgLength;
+ }
+ if (other.MsgVersion != 0) {
+ MsgVersion = other.MsgVersion;
+ }
+ if (other.Echo != 0) {
+ Echo = other.Echo;
+ }
+ if (other.SvrTime != 0) {
+ SvrTime = other.SvrTime;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 8: {
+ MsgId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ MsgLength = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ MsgVersion = input.ReadUInt32();
+ break;
+ }
+ case 32: {
+ Echo = input.ReadUInt32();
+ break;
+ }
+ case 40: {
+ SvrTime = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 8: {
+ MsgId = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ MsgLength = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ MsgVersion = input.ReadUInt32();
+ break;
+ }
+ case 32: {
+ Echo = input.ReadUInt32();
+ break;
+ }
+ case 40: {
+ SvrTime = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// 消息协议体
+ ///
+ public sealed partial class CSPkgBody : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSPkgBody());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsReflection.Descriptor.MessageTypes[2]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgBody() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgBody(CSPkgBody other) : this() {
+ heatBeatReq_ = other.heatBeatReq_ != null ? other.heatBeatReq_.Clone() : null;
+ heatBeatRes_ = other.heatBeatRes_ != null ? other.heatBeatRes_.Clone() : null;
+ actLoginReq_ = other.actLoginReq_ != null ? other.actLoginReq_.Clone() : null;
+ actLoginRes_ = other.actLoginRes_ != null ? other.actLoginRes_.Clone() : null;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSPkgBody Clone() {
+ return new CSPkgBody(this);
+ }
+
+ /// Field number for the "HeatBeatReq" field.
+ public const int HeatBeatReqFieldNumber = 1;
+ private global::GameProto.CSHeatBeatReq heatBeatReq_;
+ ///
+ ///心跳请求
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSHeatBeatReq HeatBeatReq {
+ get { return heatBeatReq_; }
+ set {
+ heatBeatReq_ = value;
+ }
+ }
+
+ /// Field number for the "HeatBeatRes" field.
+ public const int HeatBeatResFieldNumber = 2;
+ private global::GameProto.CSHeatBeatRes heatBeatRes_;
+ ///
+ ///心跳回包
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSHeatBeatRes HeatBeatRes {
+ get { return heatBeatRes_; }
+ set {
+ heatBeatRes_ = value;
+ }
+ }
+
+ /// Field number for the "ActLoginReq" field.
+ public const int ActLoginReqFieldNumber = 3;
+ private global::GameProto.CSActLoginReq actLoginReq_;
+ ///
+ ///帐号登录请求
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSActLoginReq ActLoginReq {
+ get { return actLoginReq_; }
+ set {
+ actLoginReq_ = value;
+ }
+ }
+
+ /// Field number for the "ActLoginRes" field.
+ public const int ActLoginResFieldNumber = 4;
+ private global::GameProto.CSActLoginRes actLoginRes_;
+ ///
+ ///帐号登录回包
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.CSActLoginRes ActLoginRes {
+ get { return actLoginRes_; }
+ set {
+ actLoginRes_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSPkgBody);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSPkgBody other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!object.Equals(HeatBeatReq, other.HeatBeatReq)) return false;
+ if (!object.Equals(HeatBeatRes, other.HeatBeatRes)) return false;
+ if (!object.Equals(ActLoginReq, other.ActLoginReq)) return false;
+ if (!object.Equals(ActLoginRes, other.ActLoginRes)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (heatBeatReq_ != null) hash ^= HeatBeatReq.GetHashCode();
+ if (heatBeatRes_ != null) hash ^= HeatBeatRes.GetHashCode();
+ if (actLoginReq_ != null) hash ^= ActLoginReq.GetHashCode();
+ if (actLoginRes_ != null) hash ^= ActLoginRes.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (heatBeatReq_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(HeatBeatReq);
+ }
+ if (heatBeatRes_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(HeatBeatRes);
+ }
+ if (actLoginReq_ != null) {
+ output.WriteRawTag(26);
+ output.WriteMessage(ActLoginReq);
+ }
+ if (actLoginRes_ != null) {
+ output.WriteRawTag(34);
+ output.WriteMessage(ActLoginRes);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (heatBeatReq_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(HeatBeatReq);
+ }
+ if (heatBeatRes_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(HeatBeatRes);
+ }
+ if (actLoginReq_ != null) {
+ output.WriteRawTag(26);
+ output.WriteMessage(ActLoginReq);
+ }
+ if (actLoginRes_ != null) {
+ output.WriteRawTag(34);
+ output.WriteMessage(ActLoginRes);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (heatBeatReq_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(HeatBeatReq);
+ }
+ if (heatBeatRes_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(HeatBeatRes);
+ }
+ if (actLoginReq_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActLoginReq);
+ }
+ if (actLoginRes_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActLoginRes);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSPkgBody other) {
+ if (other == null) {
+ return;
+ }
+ if (other.heatBeatReq_ != null) {
+ if (heatBeatReq_ == null) {
+ HeatBeatReq = new global::GameProto.CSHeatBeatReq();
+ }
+ HeatBeatReq.MergeFrom(other.HeatBeatReq);
+ }
+ if (other.heatBeatRes_ != null) {
+ if (heatBeatRes_ == null) {
+ HeatBeatRes = new global::GameProto.CSHeatBeatRes();
+ }
+ HeatBeatRes.MergeFrom(other.HeatBeatRes);
+ }
+ if (other.actLoginReq_ != null) {
+ if (actLoginReq_ == null) {
+ ActLoginReq = new global::GameProto.CSActLoginReq();
+ }
+ ActLoginReq.MergeFrom(other.ActLoginReq);
+ }
+ if (other.actLoginRes_ != null) {
+ if (actLoginRes_ == null) {
+ ActLoginRes = new global::GameProto.CSActLoginRes();
+ }
+ ActLoginRes.MergeFrom(other.ActLoginRes);
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ if (heatBeatReq_ == null) {
+ HeatBeatReq = new global::GameProto.CSHeatBeatReq();
+ }
+ input.ReadMessage(HeatBeatReq);
+ break;
+ }
+ case 18: {
+ if (heatBeatRes_ == null) {
+ HeatBeatRes = new global::GameProto.CSHeatBeatRes();
+ }
+ input.ReadMessage(HeatBeatRes);
+ break;
+ }
+ case 26: {
+ if (actLoginReq_ == null) {
+ ActLoginReq = new global::GameProto.CSActLoginReq();
+ }
+ input.ReadMessage(ActLoginReq);
+ break;
+ }
+ case 34: {
+ if (actLoginRes_ == null) {
+ ActLoginRes = new global::GameProto.CSActLoginRes();
+ }
+ input.ReadMessage(ActLoginRes);
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ if (heatBeatReq_ == null) {
+ HeatBeatReq = new global::GameProto.CSHeatBeatReq();
+ }
+ input.ReadMessage(HeatBeatReq);
+ break;
+ }
+ case 18: {
+ if (heatBeatRes_ == null) {
+ HeatBeatRes = new global::GameProto.CSHeatBeatRes();
+ }
+ input.ReadMessage(HeatBeatRes);
+ break;
+ }
+ case 26: {
+ if (actLoginReq_ == null) {
+ ActLoginReq = new global::GameProto.CSActLoginReq();
+ }
+ input.ReadMessage(ActLoginReq);
+ break;
+ }
+ case 34: {
+ if (actLoginRes_ == null) {
+ ActLoginRes = new global::GameProto.CSActLoginRes();
+ }
+ input.ReadMessage(ActLoginRes);
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Luban/Proto/Gen/ProtoCsCommon.cs b/Luban/Proto/Gen/ProtoCsCommon.cs
new file mode 100644
index 00000000..296d68ba
--- /dev/null
+++ b/Luban/Proto/Gen/ProtoCsCommon.cs
@@ -0,0 +1,702 @@
+//
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: proto_cs_common.proto
+//
+#pragma warning disable 1591, 0612, 3021, 8981
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace GameProto {
+
+ /// Holder for reflection information generated from proto_cs_common.proto
+ public static partial class ProtoCsCommonReflection {
+
+ #region Descriptor
+ /// File descriptor for proto_cs_common.proto
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static ProtoCsCommonReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChVwcm90b19jc19jb21tb24ucHJvdG8SCUdhbWVQcm90byI8CgtQcm90b1Jl",
+ "c3VsdBILCgNSZXQYASABKAUSEAoIUGFyYW1DbnQYAiABKAUSDgoGUGFyYW1z",
+ "GAMgAygJIiUKDUNTSGVhdEJlYXRSZXESFAoMSGVhdEVjaG9UaW1lGAEgASgC",
+ "IiUKDUNTSGVhdEJlYXRSZXMSFAoMSGVhdEVjaG9UaW1lGAEgASgCYgZwcm90",
+ "bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.ProtoResult), global::GameProto.ProtoResult.Parser, new[]{ "Ret", "ParamCnt", "Params" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSHeatBeatReq), global::GameProto.CSHeatBeatReq.Parser, new[]{ "HeatEchoTime" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSHeatBeatRes), global::GameProto.CSHeatBeatRes.Parser, new[]{ "HeatEchoTime" }, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ ///
+ /// 消息结果
+ ///
+ public sealed partial class ProtoResult : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ProtoResult());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsCommonReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ProtoResult() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ProtoResult(ProtoResult other) : this() {
+ ret_ = other.ret_;
+ paramCnt_ = other.paramCnt_;
+ params_ = other.params_.Clone();
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ProtoResult Clone() {
+ return new ProtoResult(this);
+ }
+
+ /// Field number for the "Ret" field.
+ public const int RetFieldNumber = 1;
+ private int ret_;
+ ///
+ ///操作结果,0 为成功, 其他为错误码
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int Ret {
+ get { return ret_; }
+ set {
+ ret_ = value;
+ }
+ }
+
+ /// Field number for the "ParamCnt" field.
+ public const int ParamCntFieldNumber = 2;
+ private int paramCnt_;
+ ///
+ ///文本参数数目
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int ParamCnt {
+ get { return paramCnt_; }
+ set {
+ paramCnt_ = value;
+ }
+ }
+
+ /// Field number for the "Params" field.
+ public const int ParamsFieldNumber = 3;
+ private static readonly pb::FieldCodec _repeated_params_codec
+ = pb::FieldCodec.ForString(26);
+ private readonly pbc::RepeatedField params_ = new pbc::RepeatedField();
+ ///
+ ///Ret描述的文本参数
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pbc::RepeatedField Params {
+ get { return params_; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as ProtoResult);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(ProtoResult other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Ret != other.Ret) return false;
+ if (ParamCnt != other.ParamCnt) return false;
+ if(!params_.Equals(other.params_)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Ret != 0) hash ^= Ret.GetHashCode();
+ if (ParamCnt != 0) hash ^= ParamCnt.GetHashCode();
+ hash ^= params_.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (Ret != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Ret);
+ }
+ if (ParamCnt != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(ParamCnt);
+ }
+ params_.WriteTo(output, _repeated_params_codec);
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (Ret != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Ret);
+ }
+ if (ParamCnt != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(ParamCnt);
+ }
+ params_.WriteTo(ref output, _repeated_params_codec);
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (Ret != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Ret);
+ }
+ if (ParamCnt != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParamCnt);
+ }
+ size += params_.CalculateSize(_repeated_params_codec);
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(ProtoResult other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Ret != 0) {
+ Ret = other.Ret;
+ }
+ if (other.ParamCnt != 0) {
+ ParamCnt = other.ParamCnt;
+ }
+ params_.Add(other.params_);
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 8: {
+ Ret = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ ParamCnt = input.ReadInt32();
+ break;
+ }
+ case 26: {
+ params_.AddEntriesFrom(input, _repeated_params_codec);
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 8: {
+ Ret = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ ParamCnt = input.ReadInt32();
+ break;
+ }
+ case 26: {
+ params_.AddEntriesFrom(ref input, _repeated_params_codec);
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// 心跳请求
+ ///
+ public sealed partial class CSHeatBeatReq : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSHeatBeatReq());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsCommonReflection.Descriptor.MessageTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatReq() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatReq(CSHeatBeatReq other) : this() {
+ heatEchoTime_ = other.heatEchoTime_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatReq Clone() {
+ return new CSHeatBeatReq(this);
+ }
+
+ /// Field number for the "HeatEchoTime" field.
+ public const int HeatEchoTimeFieldNumber = 1;
+ private float heatEchoTime_;
+ ///
+ ///客户端的请求时间,服务器原包带回
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float HeatEchoTime {
+ get { return heatEchoTime_; }
+ set {
+ heatEchoTime_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSHeatBeatReq);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSHeatBeatReq other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(HeatEchoTime, other.HeatEchoTime)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (HeatEchoTime != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(HeatEchoTime);
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (HeatEchoTime != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(HeatEchoTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (HeatEchoTime != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(HeatEchoTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (HeatEchoTime != 0F) {
+ size += 1 + 4;
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSHeatBeatReq other) {
+ if (other == null) {
+ return;
+ }
+ if (other.HeatEchoTime != 0F) {
+ HeatEchoTime = other.HeatEchoTime;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 13: {
+ HeatEchoTime = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 13: {
+ HeatEchoTime = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// 心跳返回
+ ///
+ public sealed partial class CSHeatBeatRes : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSHeatBeatRes());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsCommonReflection.Descriptor.MessageTypes[2]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatRes() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatRes(CSHeatBeatRes other) : this() {
+ heatEchoTime_ = other.heatEchoTime_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSHeatBeatRes Clone() {
+ return new CSHeatBeatRes(this);
+ }
+
+ /// Field number for the "HeatEchoTime" field.
+ public const int HeatEchoTimeFieldNumber = 1;
+ private float heatEchoTime_;
+ ///
+ ///客户端的请求时间,服务器原包带回
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public float HeatEchoTime {
+ get { return heatEchoTime_; }
+ set {
+ heatEchoTime_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSHeatBeatRes);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSHeatBeatRes other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(HeatEchoTime, other.HeatEchoTime)) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (HeatEchoTime != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(HeatEchoTime);
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (HeatEchoTime != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(HeatEchoTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (HeatEchoTime != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(HeatEchoTime);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (HeatEchoTime != 0F) {
+ size += 1 + 4;
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSHeatBeatRes other) {
+ if (other == null) {
+ return;
+ }
+ if (other.HeatEchoTime != 0F) {
+ HeatEchoTime = other.HeatEchoTime;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 13: {
+ HeatEchoTime = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 13: {
+ HeatEchoTime = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Luban/Proto/Gen/ProtoCsPlayer.cs b/Luban/Proto/Gen/ProtoCsPlayer.cs
new file mode 100644
index 00000000..79938ec5
--- /dev/null
+++ b/Luban/Proto/Gen/ProtoCsPlayer.cs
@@ -0,0 +1,647 @@
+//
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: proto_cs_player.proto
+//
+#pragma warning disable 1591, 0612, 3021, 8981
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace GameProto {
+
+ /// Holder for reflection information generated from proto_cs_player.proto
+ public static partial class ProtoCsPlayerReflection {
+
+ #region Descriptor
+ /// File descriptor for proto_cs_player.proto
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static ProtoCsPlayerReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChVwcm90b19jc19wbGF5ZXIucHJvdG8SCUdhbWVQcm90bxoVcHJvdG9fY3Nf",
+ "Y29tbW9uLnByb3RvIlIKDUNTQWN0TG9naW5SZXESCwoDVWluGAEgASgNEg0K",
+ "BVN2cklEGAIgASgNEhAKCEF1dGhUaW1lGAMgASgNEhMKC05ldHdvcmtUeXBl",
+ "GAQgASgNIlQKDUNTQWN0TG9naW5SZXMSJgoGUmVzdWx0GAEgASgLMhYuR2Ft",
+ "ZVByb3RvLlByb3RvUmVzdWx0EgsKA1VpbhgCIAEoDRIOCgZSb2xlSUQYAyAB",
+ "KA1QAGIGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::GameProto.ProtoCsCommonReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSActLoginReq), global::GameProto.CSActLoginReq.Parser, new[]{ "Uin", "SvrID", "AuthTime", "NetworkType" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::GameProto.CSActLoginRes), global::GameProto.CSActLoginRes.Parser, new[]{ "Result", "Uin", "RoleID" }, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ ///
+ /// 角色登录结果请求
+ ///
+ public sealed partial class CSActLoginReq : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSActLoginReq());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsPlayerReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginReq() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginReq(CSActLoginReq other) : this() {
+ uin_ = other.uin_;
+ svrID_ = other.svrID_;
+ authTime_ = other.authTime_;
+ networkType_ = other.networkType_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginReq Clone() {
+ return new CSActLoginReq(this);
+ }
+
+ /// Field number for the "Uin" field.
+ public const int UinFieldNumber = 1;
+ private uint uin_;
+ ///
+ ///帐号Uin
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint Uin {
+ get { return uin_; }
+ set {
+ uin_ = value;
+ }
+ }
+
+ /// Field number for the "SvrID" field.
+ public const int SvrIDFieldNumber = 2;
+ private uint svrID_;
+ ///
+ ///服务器ID
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint SvrID {
+ get { return svrID_; }
+ set {
+ svrID_ = value;
+ }
+ }
+
+ /// Field number for the "AuthTime" field.
+ public const int AuthTimeFieldNumber = 3;
+ private uint authTime_;
+ ///
+ ///账户认证的时间
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint AuthTime {
+ get { return authTime_; }
+ set {
+ authTime_ = value;
+ }
+ }
+
+ /// Field number for the "NetworkType" field.
+ public const int NetworkTypeFieldNumber = 4;
+ private uint networkType_;
+ ///
+ ///网络类型
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint NetworkType {
+ get { return networkType_; }
+ set {
+ networkType_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSActLoginReq);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSActLoginReq other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Uin != other.Uin) return false;
+ if (SvrID != other.SvrID) return false;
+ if (AuthTime != other.AuthTime) return false;
+ if (NetworkType != other.NetworkType) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Uin != 0) hash ^= Uin.GetHashCode();
+ if (SvrID != 0) hash ^= SvrID.GetHashCode();
+ if (AuthTime != 0) hash ^= AuthTime.GetHashCode();
+ if (NetworkType != 0) hash ^= NetworkType.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (Uin != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(Uin);
+ }
+ if (SvrID != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SvrID);
+ }
+ if (AuthTime != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(AuthTime);
+ }
+ if (NetworkType != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(NetworkType);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (Uin != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(Uin);
+ }
+ if (SvrID != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(SvrID);
+ }
+ if (AuthTime != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(AuthTime);
+ }
+ if (NetworkType != 0) {
+ output.WriteRawTag(32);
+ output.WriteUInt32(NetworkType);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (Uin != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Uin);
+ }
+ if (SvrID != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SvrID);
+ }
+ if (AuthTime != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(AuthTime);
+ }
+ if (NetworkType != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NetworkType);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSActLoginReq other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Uin != 0) {
+ Uin = other.Uin;
+ }
+ if (other.SvrID != 0) {
+ SvrID = other.SvrID;
+ }
+ if (other.AuthTime != 0) {
+ AuthTime = other.AuthTime;
+ }
+ if (other.NetworkType != 0) {
+ NetworkType = other.NetworkType;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 8: {
+ Uin = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SvrID = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ AuthTime = input.ReadUInt32();
+ break;
+ }
+ case 32: {
+ NetworkType = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 8: {
+ Uin = input.ReadUInt32();
+ break;
+ }
+ case 16: {
+ SvrID = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ AuthTime = input.ReadUInt32();
+ break;
+ }
+ case 32: {
+ NetworkType = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// 角色登录结果返回
+ ///
+ public sealed partial class CSActLoginRes : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CSActLoginRes());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::GameProto.ProtoCsPlayerReflection.Descriptor.MessageTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginRes() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginRes(CSActLoginRes other) : this() {
+ result_ = other.result_ != null ? other.result_.Clone() : null;
+ uin_ = other.uin_;
+ roleID_ = other.roleID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CSActLoginRes Clone() {
+ return new CSActLoginRes(this);
+ }
+
+ /// Field number for the "Result" field.
+ public const int ResultFieldNumber = 1;
+ private global::GameProto.ProtoResult result_;
+ ///
+ ///返回操作结果
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::GameProto.ProtoResult Result {
+ get { return result_; }
+ set {
+ result_ = value;
+ }
+ }
+
+ /// Field number for the "Uin" field.
+ public const int UinFieldNumber = 2;
+ private uint uin_;
+ ///
+ ///帐号Uin
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint Uin {
+ get { return uin_; }
+ set {
+ uin_ = value;
+ }
+ }
+
+ /// Field number for the "RoleID" field.
+ public const int RoleIDFieldNumber = 3;
+ private uint roleID_;
+ ///
+ ///角色ID
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public uint RoleID {
+ get { return roleID_; }
+ set {
+ roleID_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CSActLoginRes);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CSActLoginRes other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!object.Equals(Result, other.Result)) return false;
+ if (Uin != other.Uin) return false;
+ if (RoleID != other.RoleID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (result_ != null) hash ^= Result.GetHashCode();
+ if (Uin != 0) hash ^= Uin.GetHashCode();
+ if (RoleID != 0) hash ^= RoleID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (result_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Result);
+ }
+ if (Uin != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(Uin);
+ }
+ if (RoleID != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(RoleID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (result_ != null) {
+ output.WriteRawTag(10);
+ output.WriteMessage(Result);
+ }
+ if (Uin != 0) {
+ output.WriteRawTag(16);
+ output.WriteUInt32(Uin);
+ }
+ if (RoleID != 0) {
+ output.WriteRawTag(24);
+ output.WriteUInt32(RoleID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (result_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Result);
+ }
+ if (Uin != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Uin);
+ }
+ if (RoleID != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(RoleID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CSActLoginRes other) {
+ if (other == null) {
+ return;
+ }
+ if (other.result_ != null) {
+ if (result_ == null) {
+ Result = new global::GameProto.ProtoResult();
+ }
+ Result.MergeFrom(other.Result);
+ }
+ if (other.Uin != 0) {
+ Uin = other.Uin;
+ }
+ if (other.RoleID != 0) {
+ RoleID = other.RoleID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ if (result_ == null) {
+ Result = new global::GameProto.ProtoResult();
+ }
+ input.ReadMessage(Result);
+ break;
+ }
+ case 16: {
+ Uin = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ RoleID = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ if (result_ == null) {
+ Result = new global::GameProto.ProtoResult();
+ }
+ input.ReadMessage(Result);
+ break;
+ }
+ case 16: {
+ Uin = input.ReadUInt32();
+ break;
+ }
+ case 24: {
+ RoleID = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Luban/Proto/gen_pb_code.bat b/Luban/Proto/gen_pb_code.bat
index faa0cd9b..62c71f53 100644
--- a/Luban/Proto/gen_pb_code.bat
+++ b/Luban/Proto/gen_pb_code.bat
@@ -16,6 +16,6 @@
@REM echo =================end gen proto event=================
@REM pause
-protoc -I=pb_schemas --csharp_out=Gen pb_schemas\ProtoBase.proto
+protoc -I=pb_schemas --csharp_out=Gen pb_schemas\proto_cs.proto proto_cs_common.proto pb_schemas\proto_cs_player.proto
pause
\ No newline at end of file
diff --git a/Luban/Proto/pb_schemas/proto_cs.proto b/Luban/Proto/pb_schemas/proto_cs.proto
index 7f959eba..45a46502 100644
--- a/Luban/Proto/pb_schemas/proto_cs.proto
+++ b/Luban/Proto/pb_schemas/proto_cs.proto
@@ -1,5 +1,8 @@
syntax = "proto3";
+import public "proto_cs_common.proto";
+import public "proto_cs_player.proto";
+
package GameProto;
// 这个文件只放协议,和协议头
@@ -33,6 +36,8 @@ message CSPkgBody
enum CSMsgID
{
CS_START = 0;
- CS_HeartBeat = 10001;
- CS_END = 10000;
+ CS_CMD_HEATBEAT_REQ = 1001; //心跳请求
+ CS_CMD_HEATBEAT_RES = 1002; //心跳回包
+ CS_CMD_ACT_LOGIN_REQ = 2001; //帐号登录请求
+ CS_CMD_ACT_LOGIN_RES = 2002; //帐号登录回包
}
diff --git a/Luban/Proto/pb_schemas/proto_cs_common.proto b/Luban/Proto/pb_schemas/proto_cs_common.proto
index d67d9cbc..aafe6413 100644
--- a/Luban/Proto/pb_schemas/proto_cs_common.proto
+++ b/Luban/Proto/pb_schemas/proto_cs_common.proto
@@ -11,15 +11,13 @@ message ProtoResult
repeated string Params = 3;//Ret描述的文本参数
}
-MsgId CS_CMD_HEATBEAT_REQ = 1001; //心跳请求
// 心跳请求
message CSHeatBeatReq
{
float HeatEchoTime = 1; //客户端的请求时间,服务器原包带回
}
-MsgId CS_CMD_HEATBEAT_RES = 1002; //心跳回包
-// 角色登录结果返回
+// 心跳返回
message CSHeatBeatRes
{
float HeatEchoTime = 1; //客户端的请求时间,服务器原包带回
diff --git a/Luban/Proto/pb_schemas/proto_cs_player.proto b/Luban/Proto/pb_schemas/proto_cs_player.proto
index 48498e1e..6c0db025 100644
--- a/Luban/Proto/pb_schemas/proto_cs_player.proto
+++ b/Luban/Proto/pb_schemas/proto_cs_player.proto
@@ -1,19 +1,18 @@
syntax = "proto3";
+import public "proto_cs_common.proto";
package GameProto;
// 玩家协议
-MsgId CS_CMD_ACT_LOGIN_REQ = 2001; //帐号登录请求
// 角色登录结果请求
message CSActLoginReq
{
uint32 Uin = 1; //帐号Uin
uint32 SvrID = 2; //服务器ID
uint32 AuthTime = 3; //账户认证的时间
- uint32 NetworkType = 4, //网络类型
+ uint32 NetworkType = 4; //网络类型
}
-MsgId CS_CMD_ACT_LOGIN_RES = 2002; //帐号登录回包
// 角色登录结果返回
message CSActLoginRes
{
diff --git a/Luban/Proto/protoc.exe b/Luban/Proto/protoc.exe
new file mode 100644
index 00000000..a4bb987e
Binary files /dev/null and b/Luban/Proto/protoc.exe differ