/* Sog 游戏基础库 2016 by zouwei */ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.IO; using Sog; using ProtoCSStruct; using Sog.IO; namespace Rank { public class GmCmdSvc : BaseReloadableService { public override int GetServiceType() { return RankServiceType.GmCmdSvc; } //销毁的时候清空指令注册 public override void Dispose() { GmCommandMgr.Instance.ClearAll(); } //构造的时候注册所有指令 public GmCmdSvc() { RegisterAllGmCmd(); } private void RegisterAllGmCmd() { //添加禁止上榜名单 AddForbitRankUid -t 10001 GmCommandMgr.Instance.Register("AddForbitRankUid", "AddForbitRankUid -t uid", this.AddForbitRankUid); //立即更新排行榜 UpdateRank 0 0 GmCommandMgr.Instance.Register("UpdateRank", "UpdataRank realmId rankId", this.ForceUpdataRank); GmCommandMgr.Instance.Register("SendRankReward", "SendRankReward rankId", this.SendRankReward); GmCommandMgr.Instance.Register("ClearRank", "ClearRank rankId", this.ClearRank); GmCommandMgr.Instance.Register("TestRankAward", "TestRankAward realmId rankId", this.TestRankAward); GmCommandMgr.Instance.Register("TestMakeAllDirty", "TestMakeAllDirty", this.TestMakeAllDirty); GmCommandMgr.Instance.Register("GetRankInfo", "GetRankInfo", this.GetRankInfo); GmCommandMgr.Instance.Register("ClearActRank", "ClearActRank rem rank ", this.ClearActRank); } public int AddForbitRankUid(long userid, string[] cmdParams) { if (RankSvc.AddForbitRankUid(userid)) { return 0; } return -1; } public int SendRankReward(long userid, string[] cmdParams) { if (cmdParams.Length < 1) { TraceLog.Error("GmCmdSvc.SendRankReward invalid param, need rankId"); return -1; } if (!int.TryParse(cmdParams[0], out int rankId)) { return -1; } TraceLog.Debug("GmCmdSvc.SendRankReward rankId {0}", rankId); RankSvc.GMRewardRankId = rankId; RankSvc.GMRewardTime = (int)RankServerUtils.GetTimeSecond(); return 0; } public int TestRankAward(long userid, string[] cmdParams) { if (cmdParams.Length < 2) { TraceLog.Error("GmCmdSvc.TestRankAward invalid param, need rankId"); return -1; } if (!int.TryParse(cmdParams[0], out int realmId)) { return -1; } if (!int.TryParse(cmdParams[1], out int rankId)) { return -1; } TraceLog.Debug("GmCmdSvc.TestRankAward realm {0} rankId {1}", realmId, rankId); WorldRankData rankData = RankServerUtils.GetRankData(); foreach (var realmAllRank in rankData.AllRank.Values) { if (realmAllRank.m_loadDbDataSuccess == false) { continue; } if (realmAllRank.m_realmId != realmId) { continue; } if (!realmAllRank.m_rankMap.TryGetValue(rankId, out RankDataOne rankOne)) { TraceLog.Debug("GmCmdSvc.TestRankAward realm {0} rankId {1} no rank data", realmId, rankId); continue; } if (rankOne.CurRecord == null || rankOne.CurRecord.Data.Count == 0) { continue; } RankSvc.SendRankAwardMail(rankOne); //RankSvc.SendLastRankAwardMail(rankOne); } return 0; } public int ClearRank(long userid, string[] cmdParams) { if (cmdParams.Length < 1) { TraceLog.Error("GmCmdSvc.ClearRank invalid param, need rankId"); return -1; } if (!int.TryParse(cmdParams[0], out int rankId)) { return -1; } TraceLog.Debug("GmCmdSvc.ClearRank rankId {0}", rankId); WorldRankData rankData = RankServerUtils.GetRankData(); // realmId -> [rankId, rankDataOne] foreach (var realmAllRank in rankData.AllRank.Values) { if (!realmAllRank.m_rankMap.TryGetValue(rankId, out RankDataOne rankOne)) { continue; } } return 0; } public int ForceUpdataRank(long userid, string[] cmdParams) { if (cmdParams.Length < 2) { TraceLog.Error("GmCmdSvc.ForceUpdataRank no param"); return -1; } if (int.TryParse(cmdParams[0], out int realmId) && int.TryParse(cmdParams[1], out int rankId) ) { RankSvc.ForceUpdateAllRank(realmId, rankId, true); RankSvc.UpdateCanAwardRank(); return 0; } TraceLog.Error("GmCmdSvc.ForceUpdataRank error param"); return -1; } public int TestMakeAllDirty(long userid, string[] cmdParams) { WorldRankData rankData = RankServerUtils.GetRankData(); foreach (var realIdItem in rankData.AllRank.Values) { foreach (var rankItem in realIdItem.m_rankMap.Values) { if (rankItem.CurRecord != null) { rankItem.CurRecord.MakeDirty(); rankItem.CurRecord.NeedUpdate = true; } } } TraceLog.Trace("GmCmdSvc.TestMakeAllDirty"); return 0; } public int GetRankInfo(long userid, string[] cmdParams) { var rankData = RankServerUtils.GetActRankData(); foreach (var realmRank in rankData.Values) { foreach (var rankOne in realmRank.m_AcRank.Values) { TraceLog.Trace("GmCmdSvc.GetRankInfo rem:{0} rankid:{1} rankCount:{2}", rankOne.RealmId, rankOne.ActRankID, rankOne.m_rankRank.Count); } } TraceLog.Trace("GmCmdSvc.GetRankInfo"); return 0; } public int ClearActRank(long userid, string[] cmdParams) { if (cmdParams.Length < 2) { TraceLog.Error("GmCmdSvc.ClearActRank invalid param, need rankId"); return -1; } var rem = Convert.ToInt32(cmdParams[0]); var rankId = Convert.ToInt32(cmdParams[1]); RankServerData serverData = RankServerUtils.GetRankServerData(); ActRemRank actRem = null; serverData.m_ActRank.TryGetValue(rem, out actRem); if (actRem == null) { TraceLog.Error("GmCmdSvc.ClearActRank no rem rank error!"); return -1; } ActRankOne rankOne = null; actRem.m_AcRank.TryGetValue(rankId, out rankOne); if (rankOne == null) { TraceLog.Error("GmCmdSvc.ClearActRank no rank error!"); return -3; } RankSvc.EndClearRank(rankOne); TraceLog.Trace("GmCmdSvc.ClearActRank"); return 0; } } }