/// <summary> /// 广播执行 /// </summary> private void Dispatch() { if (dispacherQueue.Count > 0) { lock (locker) { int count = dispacherQueue.Count; for (int i = 0; i < count; i++) { MsgDispatcher dispacher = dispacherQueue.Dequeue(); Msg msg = dispacher.msg; object[] param = dispacher.param; if (msg_dic.ContainsKey(msg)) { Dictionary <object, MsgRegister> dic = msg_dic[msg]; IEnumerator iter = dic.GetEnumerator(); while (iter.MoveNext()) //迭代器模式 { KeyValuePair <object, MsgRegister> pair = (KeyValuePair <object, MsgRegister>)iter.Current; MsgRegister register = pair.Value; register.Invoke(param); } } } } } }
//当按下注册按钮 public void OnRegClick() { //用户名密码为空 if (idInput.text == "" || pwInput.text == "") { PanelManager.Open <TipPanel>("用户名和密码不能为空"); return; } //两次密码不同 if (repInput.text != pwInput.text) { PanelManager.Open <TipPanel>("两次输入的密码不同"); return; } if (genderToggle[0].isOn == false && genderToggle[1].isOn == false) { PanelManager.Open <TipPanel>("请选择性别"); return; } //发送 MsgRegister msgReg = new MsgRegister(); msgReg.id = idInput.text; msgReg.pw = pwInput.text; if (genderToggle[0].isOn) { msgReg.gender = (int)Gender.Male; } else if (genderToggle[1].isOn) { msgReg.gender = (int)Gender.Female; } NetManager.Send(msgReg); }
/// <summary> /// 处理注册信息 /// </summary> /// <param name = "c" ></ param > /// < param name="msgBase"></param> public static void MsgRegister(ClientSocket c, MsgBase msgBase) { MsgRegister msg = (MsgRegister)msgBase; RegisterResult rst = UserManager.Instance.Register(msg.RegisterType, msg.Account, msg.Password, out string token); msg.Result = rst; ServerSocket.SendMessage(c, msg); }
//发送注册协议 public void OnRegisterClick() { MsgRegister msg = new MsgRegister(); msg.id = idInput.text; msg.pw = pwInput.text; NetManager.Send(msg); }
void OnReceive(byte[] bytes) { //Debug.Log("receive bytes: " + BitConverter.ToInt32(bytes, 0)); var byteArray = new ByteArray(); byteArray.Write(bytes); MsgRegister.Dispatch("10001", byteArray); }
/// <summary> /// 注册消息 /// </summary> /// <param name="msg"></param> /// <param name="obj"></param> /// <param name="method"></param> public void Register(Msg msg, object obj, string methodName) { if (!msg_dic.ContainsKey(msg)) { msg_dic.Add(msg, new Dictionary <object, MsgRegister>()); } MsgRegister register = new MsgRegister(obj, methodName); msg_dic[msg][obj] = register; }
void Main() { MsgRegister.Regist("PlayDie", OnPlayerDie); //when get bytes from socket(OnReceive) { string name = "PlayerDie"; IByteArray byteArray = new ByteArray(); byteArray.Write(new byte[10]); MsgRegister.Dispatch(name, byteArray); } }
//收到注册协议 public void OnMsgRegister(MsgBase msgBase) { MsgRegister msg = (MsgRegister)msgBase; if (msg.result == 0) { Debug.Log("注册成功"); } else { Debug.Log("注册失败"); } }
public static void MsgRegister(ClientState c, MsgBase msgBase) { MsgRegister msg = (MsgRegister)msgBase; if (DbManager.Register(msg.id, msg.pw)) { DbManager.CreatePlayer(msg.id); msg.result = 0; } else { msg.result = 1; } NetManager.Send(c, msg); }
/// <summary> /// 注册协议提交 /// </summary> /// <param name="registerType"></param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="code"></param> /// <param name="callback"></param> public static void Register(RegisterType registerType, string userName, string password, string code, Action <RegisterResult> callback) { MsgRegister msg = new MsgRegister(); msg.RegisterType = registerType; msg.Account = userName; msg.Password = password; msg.Code = code; NetManager.Instance.SendMessage(msg); NetManager.Instance.AddProtoListener(ProtocolEnum.MsgRegister, (resmsg) => { MsgRegister msgRegister = (MsgRegister)resmsg; callback(msgRegister.Result); }); }
// 玩家点击注册按钮 public void OnRegisterClick() { MsgRegister msg = new MsgRegister(); msg.id = idInput.text; msg.pw = pwInput.text; if (msg.id != "" && msg.pw != "") { NetManager.Send(msg); } else { Debug.Log("id or pw can't be empty string"); } }
//收到注册协议 public void OnMsgRegister(Request request) { MsgRegister msg = Login.MsgRegister.Parser.ParseFrom(request.Msg); if (msg.Result == 0) { Debug.Log("注册成功"); //提示 PanelManager.Open <TipPanel>("注册成功"); //关闭界面 Hide(); } else { PanelManager.Open <TipPanel>("注册失败"); } }
//收到注册协议 public void OnMsgRegister(MsgBase msgBase) { MsgRegister msg = (MsgRegister)msgBase; if (msg.result == 0) { Debug.Log("注册成功"); //提示 PanelManager.Open <TipPanel>("注册成功"); //关闭界面 Close(); } else { PanelManager.Open <TipPanel>("注册失败"); } }
//当按下注册按钮 public void OnRegClick() { //用户名密码为空 if (idInput.text == "" || pwInput.text == "") { PanelManager.Open <TipPanel>("用户名和密码不能为空"); return; } //两次密码不同 if (repInput.text != pwInput.text) { PanelManager.Open <TipPanel>("两次输入的密码不同"); return; } //发送 MsgRegister msgReg = new MsgRegister(); msgReg.id = idInput.text; msgReg.pw = pwInput.text; NetManager.Send(msgReg); }
void RegistMsg() { MsgRegister.Regist("10001", OnMsg_Bytes); MsgRegister.Regist("10002", OnMsg_Protobuf); }
public override void Regist() { MsgRegister.Regist("key2", (x) => { });//This will auto regist }
void Regist() { MsgRegister.Regist("id", OnMsg); }
public override void Regist() { MsgRegister.Regist("key", (x) => { }); }
public static void HandleRegister(Client pClient, MsgRegister pMsg) { Client trash; if (pMsg.CancelRequest) { try { pClient.Disconnect(); } catch { ServerKernel.Players.TryRemove(pClient.Identity, out trash); ServerKernel.CharacterCreation.TryRemove(pClient.Identity, out trash); ServerKernel.CharacterCreation.TryRemove(pClient.AccountIdentity, out trash); } return; } if (ServerKernel.CharacterCreation.TryGetValue(pClient.AccountIdentity, out trash)) { trash = null; if (CheckName(pMsg.Name)) { var pRepository = new CharacterRepository(); if (pRepository.AccountHasCharacter(pClient.AccountIdentity)) { //DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.AccountHasCharacter); pClient.Send(ServerMessages.CharacterCreation.AccountHasCharacter); return; } if (pRepository.CharacterExists(pMsg.Name)) { //DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.NameTaken); pClient.Send(ServerMessages.CharacterCreation.NameTaken); return; } ProfessionType profession = ((ProfessionType)pMsg.Profession > ProfessionType.INTERN_TAOIST ? ProfessionType.INTERN_TAOIST : (ProfessionType)(pMsg.Profession / 10 * 10)); if (!Enum.IsDefined(typeof(BodyType), pMsg.Body) || !Enum.IsDefined(typeof(ProfessionType), profession)) { // The client is a proxy exploiting the server. Disconnect the client. DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.AccessDenied); return; } switch (profession) { case ProfessionType.INTERN_ARCHER: case ProfessionType.INTERN_NINJA: case ProfessionType.INTERN_TAOIST: case ProfessionType.INTERN_TROJAN: case ProfessionType.INTERN_WARRIOR: case ProfessionType.INTERN_MONK: break; default: { DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.AccessDenied); return; } } ushort hair = 410; uint lookface = 0; if (pMsg.Body == (ushort)BodyType.THIN_MALE || pMsg.Body == (ushort)BodyType.HEAVY_MALE) { if ((pMsg.Profession / 10) == 5) { lookface = (uint)(new Random().Next(103, 107)); } else if ((pMsg.Profession / 10) == 6) { lookface = (uint)(new Random().Next(109, 113)); } else { lookface = (uint)(new Random().Next(1, 102)); } } else { hair = 410; if ((pMsg.Profession / 10) == 5) { lookface = (uint)(new Random().Next(291, 295)); } else if ((pMsg.Profession / 10) == 6) { lookface = (uint)(new Random().Next(300, 304)); } else { lookface = (uint)(new Random().Next(201, 290)); } } #region Initial HairStyle and Lookface for monks switch (profession) { case ProfessionType.INTERN_MONK: if (pMsg.Body == (ushort)BodyType.THIN_MALE) { lookface = (uint)(new Random().Next(109, 113)); hair = 400; } else if (pMsg.Body == (ushort)BodyType.HEAVY_MALE) { lookface = (uint)(new Random().Next(129, 133)); hair = 400; } else if (pMsg.Body == (ushort)BodyType.THIN_FEMALE) { lookface = (uint)(new Random().Next(300, 304)); } else if (pMsg.Body == (ushort)BodyType.HEAVY_FEMALE) { lookface = (uint)(new Random().Next(325, 329)); } break; } #endregion DbPointAllot points = ServerKernel.PointAllot.Values.FirstOrDefault( x => x.Profession == ((pMsg.Profession - (pMsg.Profession % 10)) / 10) && x.Level == 1); if (points == null) { pClient.Send(new MsgTalk("Could not fetch class attribute points.", ChatTone.CHARACTER_CREATION)); return; } int idx = new Random().Next(m_startX.Length - 1); ushort startX = m_startX[idx]; ushort startY = m_startY[idx]; switch (profession) { case ProfessionType.INTERN_TROJAN: case ProfessionType.INTERN_WARRIOR: case ProfessionType.INTERN_ARCHER: case ProfessionType.INTERN_NINJA: case ProfessionType.INTERN_TAOIST: case ProfessionType.INTERN_MONK: { break; } default: DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.AccessDenied); return; } uint money = 100000, emoney = 25; ushort startLife = (ushort)(((points.Agility + points.Strength + points.Spirit) * 3) + points.Vitality * 24); var newUser = new DbUser { AccountId = pClient.AccountIdentity, Name = pMsg.Name, Lookface = pMsg.Body + (lookface * 10000), Profession = (byte)profession, Mate = "None", AdditionalPoints = 0, Agility = points.Agility, Strength = points.Strength, Vitality = points.Vitality, Spirit = points.Spirit, AutoAllot = 1, AutoExercise = 0, BoundEmoney = 4300, Business = 255, CoinMoney = 0, CurrentLayout = 0, Donation = 0, Emoney = emoney, Experience = 0, Level = 1, FirstProfession = 0, Metempsychosis = 0, Flower = 0, HomeId = 0, LastLogin = 0, LastLogout = 0, LastProfession = 0, Life = startLife, LockKey = 0, Hair = hair, Mana = 0, MapId = _START_MAP, MapX = startX, MapY = startY, MeteLevel = 0, Money = money, MoneySaved = 0, Orchids = 0, PkPoints = 0, RedRoses = 0, StudentPoints = 0, Tulips = 0, Virtue = 0, WhiteRoses = 0, EnlightPoints = 0, HeavenBlessing = (uint)(UnixTimestamp.Timestamp() + 60 * 60 * 24 * 30), ExperienceExpires = (uint)(UnixTimestamp.Timestamp() + 60 * 60 * 24), ExperienceMultipler = 10 }; if (pRepository.CreateNewCharacter(newUser)) { uint idUser = newUser.Identity; try { GenerateInitialStatus(idUser, profession); } catch { ServerKernel.Log.SaveLog("Could not create initial status for character " + idUser, true, LogType.ERROR); } ServerKernel.Log.SaveLog(string.Format("User [({0}){1}] has created character {2}.", pClient.AccountIdentity, idUser, newUser.Name), true); pClient.Send(ServerMessages.CharacterCreation.AnswerOk); return; } } else { //DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.InvalidName); pClient.Send(ServerMessages.CharacterCreation.InvalidName); return; } } else { DisconnectWithMsg(pClient, ServerMessages.CharacterCreation.AccessDenied); return; } }