/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~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); } }
/// <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); } ); }
/// <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); } } ); }