public void Select(int roleId) { var selectRole = Proto.Get <SelectRole>(); selectRole.RoleId = roleId; Session.Send(selectRole); }
private void LoadNext(int handle) { var roleList = Proto.Get <RoleList>(); roleList.UserID = UserId; roleList.Handle = handle; Session.Send(roleList); }
protected virtual void KeyExchangeReceive(object sender, PacketEventArgs e) { if (KeyExchanging && !e.IsComplete && e.Chain.IsInput) { var exchange = Proto.Get <KeyExchange>(); exchange.Nonce.Data = new byte[16]; exchange.KickUser = Force; new Random().NextBytes(exchange.Nonce.Data); e.Chain.Redirect.SendPacket(exchange); } }
protected virtual void ChallengeReceive(object sender, PacketEventArgs e) { if (!e.IsComplete) { var challenge = e.Read <Challenge>(); var hash = MD5Hash.GetHash(Login, Password, challenge.Nonce); var response = Proto.Get <Response>(); response.Identity.SetAsciiString(Login); response.Key.Data = hash; response.UseToken = false; response.CliFingerprint.Data = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }; e.Chain.Redirect.SendPacket(response); } }
private void SelectRoleReReceive(object sender, PacketEventArgs e) { var selectRoleRe = e.Packet.ReadPacket <SelectRole_Re>(); if (selectRoleRe.Result == 0 && e.Chain.IsInput && !e.IsComplete && AutoEnter) { var enterWorld = Proto.Get <EnterWorld>(); enterWorld.RoleId = RoleId; if (EnterWorldTimeout > 0) { Task.Delay(EnterWorldTimeout).ContinueWith(x => e.Chain.Redirect.SendPacket(enterWorld)); } else { e.Chain.Redirect.SendPacket(enterWorld); } } }
private void Tick(object obj) { var keepAlive = Proto.Get<Keepalive>(); keepAlive.Code = 0x5A; Session.Send(keepAlive); }