public static bool TalentAddCount(GameClient client, int count) { TalentData talentData = client.ClientData.MyTalentData; bool result; if (!talentData.IsOpen) { result = false; } else if (!TalentManager.DBTalentModify(client.ClientData.RoleID, count, 0L, 0L, false, client.ClientData.ZoneID, client.ServerId)) { result = false; } else { talentData.TotalCount = count; GlobalEventSource.getInstance().fireEvent(new OrnamentGoalEventObject(client, OrnamentGoalType.OGT_Talent, new int[0])); result = true; } return(result); }
private static int TalentAddExp(GameClient client) { int result; if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.Talent, false)) { result = TalentResultType.EnoOpen; } else if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot6)) { result = TalentResultType.EnoOpen; } else if (client.ClientData.Experience <= 0L) { result = TalentResultType.EnoExp; } else { TalentData talentData = client.ClientData.MyTalentData; int talentCount = (talentData.TotalCount <= 0) ? 1 : (talentData.TotalCount + 1); if (!TalentManager._TalentExpList.ContainsKey(talentCount)) { result = TalentResultType.EnoOpenPoint; } else { TalentExpInfo expInfo = TalentManager._TalentExpList[talentCount]; int level = client.ClientData.ChangeLifeCount * 100 + client.ClientData.Level; if (level < expInfo.RoleLevel) { result = TalentResultType.EnoOpenPoint; } else { long needExp = expInfo.Exp - talentData.Exp; long exp = 0L; long expRole = client.ClientData.Experience; bool isUp = false; long expAdd; if (needExp <= expRole) { isUp = true; expAdd = needExp; } else { exp = talentData.Exp + expRole; talentCount--; expAdd = expRole; } if (!TalentManager.DBTalentModify(client.ClientData.RoleID, talentCount, exp, expAdd, isUp, client.ClientData.ZoneID, client.ServerId)) { result = TalentResultType.EFail; } else { if (isUp) { talentData.Exp = exp; talentData.TotalCount++; client.ClientData.Experience -= needExp; } else { talentData.Exp = exp; client.ClientData.Experience -= expRole; } GameManager.ClientMgr.NotifySelfExperience(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, -exp); GlobalEventSource.getInstance().fireEvent(new OrnamentGoalEventObject(client, OrnamentGoalType.OGT_Talent, new int[0])); if (isUp) { result = TalentResultType.Success; } else { result = TalentResultType.SuccessHalf; } } } } } return(result); }