/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~game~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
        /// <summary>
        /// 创号
        /// </summary>
        /// <param name="info"></param>
        /// <param name="callback"></param>
        public static void CreateCharacter(long account_idx, CreateCharacterInfo info, Action <long> callback)
        {
            string sql = "call SP_CHARACTER_CREATE("
                         + 1 + ","
                         + info.char_idx + ","
                         + account_idx + ","
                         + info.spid + ",'"
                         + info.char_name + "',"
                         + info.char_type + ","
                         + info.ws_id + ","
                         + info.ss_id + ","
                         + info.fs_id
                         + ")";

            try
            {
                DatabaseManager.Instance.GetDB().Query(sql, (reader) =>
                {
                    long result = 0;
                    if (reader.HasRows && reader.Read())
                    {
                        result = reader.GetInt64(0);
                    }
                    callback(result);
                });
            }
            catch (Exception e)
            {
                Log.Exception(e);
            }
        }
Example #2
0
        /// <summary>
        /// 创建角色
        /// </summary>
        private void OnCreateCharacter(PacketBase packet)
        {
            gs2ss.CreateCharacter msg = packet as gs2ss.CreateCharacter;

            CreateCharacterInfo create_info = new CreateCharacterInfo();

            create_info.spid      = msg.spid;
            create_info.ws_id     = ServerNetManager.Instance.srv_realm_idx;
            create_info.ss_id     = 0;
            create_info.fs_id     = 0;
            create_info.char_idx  = IdSharedManager.Instance.GetNextCharIdx();
            create_info.char_name = msg.name;
            create_info.char_type = (byte)msg.flags;

            long   account_idx = msg.account_idx;
            ushort gs_uid      = msg.server_uid.gs_uid;

            SQLCharHandle.CreateCharacter(account_idx, new DBID(msg.game_db_id), create_info, (res) =>
            {
                eCreateCharResult result = eCreateCharResult.E_FAILED_COMMONERROR;
                if (create_info.char_idx == res)
                {
                    result = eCreateCharResult.E_SUCCESS;
                }
                else
                {
                    switch (res)
                    {
                    case 0: result = eCreateCharResult.E_FAILED_INTERNALERROR; break;

                    case 1: result = eCreateCharResult.E_FAILED_CHARCOUNTLIMIT; break;

                    case 2: result = eCreateCharResult.E_FAILED_INVALIDPARAM_REPEATEDNAME; break;

                    case 3: result = eCreateCharResult.E_FAILED_COMMONERROR; break;
                    }
                }

                ss2gs.CreateCharacter rep_msg = PacketPools.Get(ss2gs.msg.CREATE_CHARACTER) as ss2gs.CreateCharacter;
                rep_msg.result      = result;
                rep_msg.account_idx = account_idx;
                rep_msg.char_idx    = create_info.char_idx;
                ServerNetManager.Instance.Send(gs_uid, rep_msg);
            }
                                          );
        }
Example #3
0
        /// <summary>
        /// 创建角色
        /// </summary>
        private void OnCreateCharacter(PacketBase packet)
        {
            ss2db.CreateCharacter msg = packet as ss2db.CreateCharacter;

            InterServerID       server_uid  = msg.server_uid;
            ClientUID           client_uid  = msg.client_uid;
            CreateCharacterInfo create_info = msg.data;

            create_info.char_idx = ServerNetManager.Instance.GetNextCharIdx();

            SQLCharHandle.CreateCharacter(msg.account_idx, create_info, (res) =>
            {
                eCreateCharResult result = eCreateCharResult.E_FAILED_COMMONERROR;
                if (create_info.char_idx == res)
                {
                    result = eCreateCharResult.E_SUCCESS;
                }
                else
                {
                    switch (res)
                    {
                    case 0: result = eCreateCharResult.E_FAILED_INTERNALERROR; break;

                    case 1: result = eCreateCharResult.E_FAILED_CHARCOUNTLIMIT; break;

                    case 2: result = eCreateCharResult.E_FAILED_INVALIDPARAM_REPEATEDNAME; break;

                    case 3: result = eCreateCharResult.E_FAILED_COMMONERROR; break;
                    }
                }

                db2ss.CreateCharacter rep_msg = PacketPools.Get(db2ss.msg.CREATE_CHARACTER) as db2ss.CreateCharacter;
                rep_msg.server_uid            = server_uid;
                rep_msg.client_uid            = client_uid;
                rep_msg.char_idx  = create_info.char_idx;
                rep_msg.char_name = create_info.char_name;
                rep_msg.result    = result;
                this.Send(rep_msg);
            }
                                          );
        }
        /// <summary>
        /// 创号
        /// </summary>
        /// <param name="info"></param>
        /// <param name="callback"></param>
        public static void CreateCharacter(long account_idx, CreateCharacterInfo info, Action <long> callback)
        {
            string sql = "call SP_CHARACTER_CREATE("
                         + 1 + ","
                         + info.char_idx + ","
                         + account_idx + ","
                         + info.spid + ",'"
                         + info.char_name + "',"
                         + info.char_type + ","
                         + info.wid + ","
                         + info.sid + ","
                         + info.dbid
                         + ")";

            DBManager.Instance.GetDB(eDBType.Game).Query(sql, (reader) =>
            {
                long result = 0;
                if (reader.HasRows && reader.Read())
                {
                    result = reader.GetInt64(0);
                }
                callback(result);
            });
        }
        private void CreateOneUser(long account_idx, long char_idx)
        {
            if (!m_active || account_idx > m_pressure_info.end_account)
            {
                return;
            }

            CreateCharacterInfo create_info = new CreateCharacterInfo();

            create_info.spid      = 0;
            create_info.ws_id     = 0;
            create_info.ss_id     = 0;
            create_info.fs_id     = 0;
            create_info.char_idx  = char_idx;
            create_info.char_name = "test" + account_idx;
            create_info.char_type = (byte)(MathUtils.Rand_Sign() == 1 ? eSexType.BOY : eSexType.GIRL);

            SQLCharHandle.CreateCharacter(account_idx, create_info, (res) =>
            {
                if (create_info.char_idx != res)
                {
                    Log.Error("创建角色失败,账号:" + account_idx + ", error:" + res.ToString());
                }
                EventController.TriggerEvent(ClientEventID.CREATE_PROGRESS, (int)(account_idx - m_pressure_info.start_account), (int)(m_pressure_info.end_account - m_pressure_info.start_account));
                if (account_idx + 1 > m_pressure_info.end_account)
                {
                    EventController.TriggerEvent(ClientEventID.CREATE_COMPLETE);
                    this.Stop();
                }
                else
                {
                    this.CreateOneUser(account_idx + 1, char_idx + 1);
                }
            }
                                          );
        }