Пример #1
0
        private void OnCS_UserData_InitUser_Req(SecurePacketRequest reqPacket)
        {
            SecurePacketResponse resPacket = new SecurePacketResponse(reqPacket);
            String nickname = reqPacket.GetStringFromUtf16();

            resPacket.ResultCodeNo = InitUser(nickname);
            SendPacket(resPacket);
        }
Пример #2
0
        private void OnCS_Auth_Guest_Req(SecurePacketRequest reqPacket)
        {
            Int32 worldId = reqPacket.GetInt32();
            String userToken = reqPacket.GetStringFromUtf16();
            Boolean hasData = false;
            Int32 userNo = 0, authKey = 0;

            using (DBCommand cmd = AuthDB.NewCommand())
            {
                cmd.CommandText.Append("select userno, authkey from t_accounts");
                cmd.CommandText.Append(" where usertoken=@0;");
                cmd.BindParameter("@0", userToken);
                cmd.PostQuery(
                    () =>
                    {
                        if ((hasData = cmd.Reader.Read()) == true)
                        {
                            userNo = cmd.Reader.GetInt32(0);
                            authKey = cmd.Reader.GetInt32(1);
                        }
                    },
                    (exception) =>
                    {
                        SecurePacketResponse resPacket = new SecurePacketResponse(reqPacket);
                        if (exception != null)
                        {
                            resPacket.ResultCodeNo = ResultCode.Database_Error;
                            Logger.Write(LogType.Err, 2, exception.ToString());
                        }
                        else if (hasData == true)
                        {
                            ServerInfo gameServerInfo = ServerCatalog.Items
                                                                     .Where(v => v.WorldId == worldId &&
                                                                                 v.Status == ServerStatus.Activate &&
                                                                                 v.ServerType == ServerType.GameServer)
                                                                     .OrderBy(v => v.Traffic)
                                                                     .FirstOrDefault();

                            if (gameServerInfo == null)
                                resPacket.ResultCodeNo = ResultCode.NoAvailableServer;
                            else
                            {
                                resPacket.ResultCodeNo = ResultCode.Ok;
                                resPacket.PutInt32(userNo);
                                resPacket.PutInt32(authKey);
                                resPacket.PutStringAsUtf16(gameServerInfo.SystemIpAddress);
                                resPacket.PutInt32(gameServerInfo.ListenPortNo);
                            }
                        }
                        else
                            resPacket.ResultCodeNo = ResultCode.InvalidUserToken;

                        SendPacket(resPacket);
                    });
            }
        }
Пример #3
0
        private void OnCS_Auth_RegisterGuest_Req(SecurePacketRequest reqPacket)
        {
            String userToken = reqPacket.GetStringFromUtf16();
            Int32 ret = 0, userNo = 0, authKey = 0;

            using (DBCommand cmd = AuthDB.NewCommand())
            {
                cmd.CommandText.Append("call sp_auth_register_guest(@0);");
                cmd.BindParameter("@0", userToken);
                cmd.PostQuery(
                    () =>
                    {
                        if (cmd.Reader.Read())
                        {
                            ret = cmd.Reader.GetInt32(0);
                            userNo = cmd.Reader.GetInt32(1);
                            authKey = cmd.Reader.GetInt32(2);
                        }
                    },
                    (exception) =>
                    {
                        SecurePacketResponse resPacket = new SecurePacketResponse(reqPacket);
                        if (exception != null)
                        {
                            resPacket.ResultCodeNo = ResultCode.Database_Error;
                            Logger.Write(LogType.Err, 2, exception.ToString());
                        }
                        else if (ret == 0)
                        {
                            resPacket.ResultCodeNo = ResultCode.Ok;
                            resPacket.PutInt32(userNo);
                            resPacket.PutInt32(authKey);
                        }
                        else if (ret == 1)
                            resPacket.ResultCodeNo = ResultCode.ExistsUserToken;

                        SendPacket(resPacket);
                    });
            }
        }