private void CreateRole(string accountId, string nickname, int heroId)
{
AccountInfo accountInfo = m_AccountSystem.FindAccountById(accountId);
var ds_thread = UserServer.Instance.DataCacheThread;
if (accountInfo != null) {
//检查昵称是否可用
NicknameSystem.CheckNicknameResult ret = m_NicknameSystem.CheckNickname(accountId, nickname);
if (ret == NicknameSystem.CheckNicknameResult.Success) {
UserInfo ui = NewUserInfo();
ui.Guid = accountInfo.UserGuid;
ui.AccountId = accountInfo.AccountId;
ui.Nickname = nickname;
ui.HeroId = heroId;
InitUserinfo(ui);
m_NicknameSystem.UpdateUsedNickname(nickname, ui.Guid);
LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Green, "LoginStep_7a: Create new role SUCCESS. AccountId:{0}, UserGuid:{1}, Nickname:{2}, HeroId:{3}",
accountId, accountInfo.AccountId, ui.Guid, ui.Nickname, ui.HeroId);
if (ds_thread.DataStoreAvailable) {
ds_thread.DSPSaveCreateUser(accountInfo, nickname, ui.Guid);
ds_thread.DSPSaveUser(ui, ui.NextUserSaveCount);
}
//游戏角色创建成功,直接进入游戏
ui.NodeName = accountInfo.NodeName;
this.DoUserLogin(ui);
LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Green, "LoginStep_8c: New role enter SUCCESS. AccountId:{0}, UserGuid:{1}, Nickname:{2}",
accountId, ui.Guid, ui.Nickname);
NodeMessage enterMsg = new NodeMessage(LobbyMessageDefine.RoleEnterResult, ui.AccountId, ui.Guid);
GameFrameworkMessage.RoleEnterResult protoData = CreateRoleEnterResultMsg(ui);
protoData.Result = RoleEnterResult.RoleEnterResultEnum.Success;
enterMsg.m_ProtoData = protoData;
NodeMessageDispatcher.SendNodeMessage(accountInfo.NodeName, enterMsg);
} else {
LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Yellow, "LoginStep_7b: Create new role FAILED. AccountId:{0}, Nickname:{1}",
accountId, nickname);
NodeMessage replyMsg = new NodeMessage(LobbyMessageDefine.ChangeNameResult, accountId);
GameFrameworkMessage.ChangeNameResult protoMsg = new GameFrameworkMessage.ChangeNameResult();
if (ret == NicknameSystem.CheckNicknameResult.AlreadyUsed) {
//昵称已经被使用
protoMsg.m_Result = ChangeNameResult.ChangeNameResultEnum.NicknameError;
} else {
//昵称不合法
protoMsg.m_Result = ChangeNameResult.ChangeNameResultEnum.UnknownError;
}
replyMsg.m_ProtoData = protoMsg;
NodeMessageDispatcher.SendNodeMessage(accountInfo.NodeName, replyMsg);
}
}
}