internal Effect CreateEffect(string id) { EntityParam param = new EntityParam(); param.rid = id + "@" + GuidHash.GetString(); return(this._entityManager.CreateEffect(param)); }
private static void HandleLoginSuccess(Protos.LS2GC_AskLoginRet gcLoginRet, uint sid, LoginContext context) { ulong gcNID = GuidHash.GetUInt64(); //通知cs,客户端登陆成功 Protos.LS2CS_GCLogin csLogin = ProtoCreator.Q_LS2CS_GCLogin(); csLogin.GcNID = gcNID; csLogin.Id = context.id; csLogin.Ukey = context.ukey; csLogin.Channel = context.channel; csLogin.Browser = context.browser; csLogin.Platform = context.platform; csLogin.SessionKey = context.sessionKey; csLogin.UnionID = context.unionID; csLogin.Nickname = context.nickname; csLogin.Avatar = context.avatar; csLogin.Gender = context.gender; csLogin.Money = context.money; csLogin.Diamoned = context.diamoned; csLogin.Rank = context.rank; csLogin.Exp = context.exp; csLogin.Champions = context.champions; csLogin.ActorID = context.actorID; LS.instance.netSessionMgr.Send(SessionType.ServerL2CS, csLogin, RPCEntry.Pop(OnGCLoginCSRet, gcLoginRet, sid, gcNID)); }
/// <summary> /// LS回应BS的检查登陆合法性 /// </summary> private ErrorCode MsgUserLogin(byte[] data, int offset, int size, int msgID) { GCToBS.OneClinetLogin userLoginInfo = new GCToBS.OneClinetLogin(); userLoginInfo.MergeFrom(data, offset, size); //发送第3消息:验证登陆是否成功,如果成功,请求分配GS给客户端 BSToGC.ClinetLoginCheckRet msg = new BSToGC.ClinetLoginCheckRet(); msg.LoginSuccess = userLoginInfo.LoginSuccess; this.owner.SendMsgToSession(userLoginInfo.Nsid, msg, ( int )BSToGC.MsgID.EMsgToGcfromBsOneClinetLoginCheckRet); Logger.Log($"user({userLoginInfo.Uin})({userLoginInfo.Sessionid})({userLoginInfo.Nsid}) ask login ret"); if (userLoginInfo.LoginSuccess == 0) { this.owner.DisconnectOne(userLoginInfo.Nsid); } else { //找到最空闲的网关服务器 OneGsInfo littleOne = null; foreach (KeyValuePair <int, OneGsInfo> kv in BS.instance.bsConfig.allGsInfo) { OneGsInfo theGsInfo = kv.Value; if (theGsInfo.gs_isLost) { continue; } if (littleOne == null || theGsInfo.gs_gc_count < littleOne.gs_gc_count) { littleOne = theGsInfo; } } if (littleOne == null) { return(ErrorCode.GSNotFound); } ++littleOne.gs_gc_count; //仅仅作为缓存,GS会定时汇报服务器的状态 //这条消息的路由:BS-GS-BS-GC BSToGS.OneUserLoginToken oneUserLoginToken = new BSToGS.OneUserLoginToken { Gateclient = ( int )userLoginInfo.Nsid, Token = GuidHash.GetString(), UserName = userLoginInfo.Uin, //这里ip和port最终会到达GC Ip = littleOne.gs_IpExport, Port = littleOne.gs_Port }; //通知网关服务器有客户端登陆 this.owner.SendMsgToSession(littleOne.gs_nets, oneUserLoginToken, ( int )BSToGS.MsgID.EMsgToGsfromBsOneUserLoginToken); } return(ErrorCode.Success); }
public T Create <T>() where T : Entity, new() { T entity = new T(); entity.rid = GuidHash.GetUInt64(); entity.battle = this._battle; this._idToEntity[entity.rid] = entity; this._entities.Add(entity); entity.Awake(); entity.Synchronize(); return(entity); }
private static void HandleInput(string cmd) { string[] pairs = cmd.Split(' '); switch (pairs[0]) { case "a": { MatchRoomUser user = new MatchRoomUser(GuidHash.GetUInt64(), int.Parse(pairs[1])); _matchingSystems[0].Join(user); } break; case "d": break; case "b": { int count = int.Parse(pairs[1]); for (int i = 0; i < count; i++) { ulong id = GuidHash.GetUInt64(); int rank = _rnd.Next(0, 1000); //Console.WriteLine( $"add id:{id}, rank:{rank}" ); MatchRoomUser user = new MatchRoomUser(id, rank); _matchingSystems[0].Join(user); } } break; case "x": foreach (MatchSystem matchingSystem in _matchingSystems) { Console.WriteLine(matchingSystem.Dump()); } break; case "cls": Console.Clear(); break; } }
public StepLocker(RemoteBattle owner) { this.id = GuidHash.GetString(); this.owner = owner; }
public static string MakeRidFromID(string id) { return(id + "@" + GuidHash.GetString()); }
public Account() { //todo 数据持久化前先把id递增 this.id = GuidHash.Get(); }
public UILogin() { this._account = GuidHash.GetString(); this._password = "******"; this._username = this._account; }