| | |
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using System.Linq;
|
| | | using System.Text;
|
| | | using Cysharp.Threading.Tasks;
|
| | | using LitJson;
|
| | | using UnityEngine;
|
| | |
|
| | |
| | | public Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>> familyActions = new Dictionary<int, Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>>();
|
| | | public event Action<int, int> FamilyActionInfoEvent; //公会自定义记录, 其他功能从这获取
|
| | |
|
| | | //要操作哪个成员的索引
|
| | | int m_MemberOPIndex = -1;
|
| | | public event Action MemberOPIndexEvent;
|
| | | public int memberOPIndex
|
| | | {
|
| | | get { return m_MemberOPIndex; }
|
| | | set
|
| | | {
|
| | | m_MemberOPIndex = value;
|
| | | MemberOPIndexEvent?.Invoke();
|
| | | }
|
| | | }
|
| | |
|
| | | public byte[] donateCntList;
|
| | | public event Action DonateCntListEvent;
|
| | | public event Action<bool> EnterOrQuitGuildEvent; //进入或退出公会事件
|
| | |
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | | ParseConfig();
|
| | | // PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;
|
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
|
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
|
| | | }
|
| | | public override void Release()
|
| | | {
|
| | | // PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
|
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
|
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
|
| | | }
|
| | |
|
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | | void OnBeforePlayerDataInitialize()
|
| | | {
|
| | | ClearGuildData();
|
| | | }
|
| | |
|
| | | void OnPlayerLoginOk()
|
| | | {
|
| | | UpdateDonateRedPoint();
|
| | | QueryZBGFamilyInfo();
|
| | | }
|
| | | |
| | | void PlayerDataRefreshEvent(PlayerDataType type)
|
| | | {
|
| | | if(type == PlayerDataType.default33)
|
| | | {
|
| | | UpdateDonateRedPoint();
|
| | | }
|
| | | }
|
| | |
|
| | | void ClearGuildData()
|
| | | {
|
| | | m_FairyRequesteds.Clear();
|
| | | familyActions.Clear();
|
| | |
| | | applyList.Clear();
|
| | | PlayerDatas.Instance.fairyData.ClearData();
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | private void OnRefreshFairyMine()
|
| | | |
| | | //退出公会
|
| | | public void AfterQuitGuild()
|
| | | {
|
| | | if (!PlayerDatas.Instance.fairyData.HasFairy)
|
| | | {
|
| | | //退出公会
|
| | | familyActions.Clear();
|
| | | }
|
| | | //退出公会
|
| | | ClearGuildData();
|
| | | //需要转到HomeWin界面 且关闭公会相关界面(父子继承关闭)
|
| | | UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
|
| | |
|
| | |
|
| | | isQueryZBGYet = false;
|
| | | zhenbaogeCutState = 0;
|
| | | familyZBGActions.Clear();
|
| | | sortPlayerCut.Clear();
|
| | | |
| | | UpdateZBGRedpoint();
|
| | | UpdateDonateRedPoint();
|
| | | EnterOrQuitGuildEvent?.Invoke(false);
|
| | | }
|
| | |
|
| | | //注意上线通知公会数据时也会触发
|
| | | public async UniTask AfterEnterGuild()
|
| | | {
|
| | | //这里还没有公会数据, 后续的包会更新公会数据
|
| | | await UniTask.Delay(100);
|
| | | UpdateDonateRedPoint();
|
| | | UpdateZBGRedpoint();
|
| | | EnterOrQuitGuildEvent?.Invoke(true);
|
| | | }
|
| | |
|
| | |
|
| | | #region 配置
|
| | |
| | | public int renameFairyNameCost;
|
| | | public int renameFairyNameMoneyType;
|
| | |
|
| | |
|
| | | |
| | |
|
| | | //珍宝阁(行商)
|
| | | public int zhenbaogeCutState = 0;
|
| | | public int zhenbaogeBuyState = 0;
|
| | | public bool needCheckCutCD = false;
|
| | | public event Action UpdateZhenbaogeEvent;
|
| | | public bool isQueryZBGYet = false;
|
| | | public float lastZBGStartTime = 0; //过天刷新用
|
| | | public const int ZBGFamilyActionType = 16;
|
| | | //{id:数据} 砍价行为,value1为玩家ID,特殊约定为1时为家族的数据
|
| | | public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> familyZBGActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
|
| | | public List<int> sortPlayerCut = new List<int>();
|
| | | public event Action<bool> UpdateFamilyActionEvent;
|
| | | public int zbgPriceType;
|
| | | public int zbgOrgPriceValue;
|
| | | public int zbgChangFamilyCD;
|
| | | public List<int> cutCntListForTalk = new List<int>();
|
| | |
|
| | |
|
| | | void ParseConfig()
|
| | | {
|
| | | DirtyWordConfig.DirtyWordInit();
|
| | | DirtyNameConfig.DirtyNameInit();
|
| | |
|
| | | var config = FuncConfigConfig.Get("CreateFamily");
|
| | | createFairyCost = int.Parse(config.Numerical1);
|
| | | createMoneyType = int.Parse(config.Numerical2);
|
| | |
| | | config = FuncConfigConfig.Get("FamilyRename");
|
| | | renameFairyNameCD = int.Parse(config.Numerical2);
|
| | | var arr = ConfigParse.GetMultipleStr<int>(config.Numerical1);
|
| | | renameFairyNameCost = arr[0];
|
| | | renameFairyNameMoneyType = arr[1];
|
| | | renameFairyNameMoneyType = arr[0];
|
| | | renameFairyNameCost = arr[1];
|
| | |
|
| | | config = FuncConfigConfig.Get("Zhenbaoge");
|
| | | zbgPriceType = int.Parse(config.Numerical1);
|
| | | zbgOrgPriceValue = int.Parse(config.Numerical2);
|
| | | zbgChangFamilyCD = int.Parse(config.Numerical3);
|
| | | cutCntListForTalk = JsonMapper.ToObject<List<int>>(config.Numerical4);
|
| | | }
|
| | |
|
| | |
|
| | |
| | | if (quitType == 0)
|
| | | {
|
| | | //被踢
|
| | | quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 10 % 10;
|
| | | quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 10 % 10 - 1;
|
| | | if (quitCount < 0) return 0;
|
| | | if (beQuitGuildPunishTime.Length != 0)
|
| | | punishTime = beQuitGuildPunishTime[Math.Min(quitCount, beQuitGuildPunishTime.Length - 1)];
|
| | | }
|
| | | else if (quitType == 1)
|
| | | {
|
| | | //主动退出
|
| | | quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 100;
|
| | | quitCount = PlayerDatas.Instance.baseData.leaveGuildInfo / 100 - 1;
|
| | | if (quitCount < 0) return 0;
|
| | | if (quitGuildPunishTime.Length != 0)
|
| | | punishTime = quitGuildPunishTime[Math.Min(quitCount, quitGuildPunishTime.Length - 1)];
|
| | | }
|
| | |
|
| | | return TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime - punishTime * 60;
|
| | | return punishTime * 60 - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime);
|
| | | }
|
| | |
|
| | |
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | int error;
|
| | |
|
| | | //获取name的字节长度,name可能是中文 或者其他占用3个字符的符号
|
| | | if (!UIHelper.SatisfyNameLength(name, out error))
|
| | | if (!CheckName(name))
|
| | | {
|
| | | // TODO 暂时按中文长度提示, 不同语言可根据情况修改
|
| | | if (error == 1)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("NameError2", 7);
|
| | | return;
|
| | | }
|
| | | else if (error == 2)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("NameError1", 2);
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | if (!CheckFairyNameLimit(name, out error))
|
| | | {
|
| | | ShowFairyNameErrorTip(error);
|
| | | return;
|
| | | }
|
| | |
|
| | |
| | | pack.EmblemWord = emblemWord;
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | |
|
| | | }
|
| | |
|
| | | public bool CheckName(string name)
|
| | | {
|
| | | int error;
|
| | |
|
| | | //获取name的字节长度,name可能是中文 或者其他占用3个字符的符号
|
| | | if (!UIHelper.SatisfyNameLength(name, out error))
|
| | | {
|
| | | // TODO 暂时按中文长度提示, 不同语言可根据情况修改
|
| | | if (error == 1)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("NameError2", 7);
|
| | | return false;
|
| | | }
|
| | | else if (error == 2)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("NameError1", 2);
|
| | | return false;
|
| | | }
|
| | | }
|
| | |
|
| | | if (!CheckFairyNameLimit(name, out error))
|
| | | {
|
| | | ShowFairyNameErrorTip(error);
|
| | | return false;
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | |
|
| | |
|
| | |
|
| | | // 公会自定义记录
|
| | | #region 公会自定义记录
|
| | | public void UpdateFamilyAction(HA513_tagMCFamilyActionInfo _package)
|
| | | {
|
| | | if (PlayerDatas.Instance.fairyData == null ||
|
| | | PlayerDatas.Instance.fairyData.fairy == null ||
|
| | | PlayerDatas.Instance.fairyData.fairy.FamilyID != _package.FamilyID)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!familyActions.ContainsKey((int)_package.FamilyID))
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList;
|
| | |
|
| | | UpdateHawkerAction(_package);
|
| | |
|
| | | FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType);
|
| | | }
|
| | |
|
| | |
| | | return false;
|
| | | return true;
|
| | | }
|
| | |
|
| | | public void QueryFamilyAction(int familyID, int actionType)
|
| | | {
|
| | | var pack = new CA617_tagCMQueryFamilyAction();
|
| | | pack.FamilyID = (uint)familyID;
|
| | | pack.ActionType = (byte)actionType;
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | |
|
| | |
|
| | |
| | | //id 0 代表一键加入
|
| | | public void SendApplyGuild(int id, int type)
|
| | | {
|
| | | if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy, true))
|
| | | if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Guild, true))
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | |
|
| | | if (type == 0)
|
| | | {
|
| | | if (m_FairyRequesteds.Count >= requestGuildCount)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("GuildSys9");
|
| | | return;
|
| | | }
|
| | |
|
| | | var cdSeconds = GetJoinCD();
|
| | | if (cdSeconds > 0)
|
| | | {
|
| | |
| | |
|
| | | #endregion
|
| | |
|
| | |
|
| | | float lastChangeMarkTime = 0; //打开界面情况下避免短时间多次立即请求,C/S通信也是有时间间隔
|
| | | public bool guildChanged = false;
|
| | | //Type:0-无;1-成员加入;2-成员退出;3-收人设置修改;4-公告修改;5-徽章修改;6-盟主变更;7-成员职位变更;8-成员上线;9-成员离线;
|
| | | //公会数据变化,请求新的公会信息,如在打开公会列表时请求,其他功能根据自身情况请求
|
| | | public void UpdateGuildDataChangeMark(HA521_tagMCFamilyChange netPack)
|
| | | {
|
| | | if (netPack.Type > 0)
|
| | | guildChanged = true;
|
| | | if (Time.time - lastChangeMarkTime < 0.2f)
|
| | | {
|
| | | guildChanged = true;
|
| | | //小优化 如果有问题也可以去除
|
| | | return;
|
| | | }
|
| | | lastChangeMarkTime = Time.time;
|
| | | if (UIManager.Instance.IsOpened<GuildHallWin>())
|
| | | {
|
| | | RequestGuildData();
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | GameNetSystem.Instance.SendInfo(pak);
|
| | | }
|
| | |
|
| | |
|
| | | //获取需要公会职位等级
|
| | | public int GetNeedGuildJobLV(int guildFuncID)
|
| | | {
|
| | | if (guildWorkToLevel.ContainsKey(guildFuncID))
|
| | | {
|
| | | return guildWorkToLevel[guildFuncID];
|
| | | }
|
| | | return 0;
|
| | | }
|
| | |
|
| | |
|
| | | public void SendChangeMemberLV(int playerID, int lv)
|
| | | {
|
| | | var pack = new CA625_tagCMChangeFamilyMemLV();
|
| | | pack.PlayerID = (uint)playerID;
|
| | | pack.FmLV = (byte)lv;
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | |
|
| | | public void KickMember(int playerID)
|
| | | {
|
| | | var pack = new CA605_tagCMDeleteFamilyMember();
|
| | | pack.MemberID = (uint)playerID;
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | |
|
| | | public void QuitGuild()
|
| | | {
|
| | |
|
| | | ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
| | | Language.Get("Guild_46"), (bool isOK) =>
|
| | | {
|
| | | if (isOK)
|
| | | {
|
| | | if (PlayerDatas.Instance.fairyData.fairy.MemberCount > 1 &&
|
| | | PlayerDatas.Instance.fairyData.mine.FmLV == 3)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("GuildSys15");
|
| | | return;
|
| | | }
|
| | | var pack = new CA603_tagCMLeaveFamily();
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | | });
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | | #region 捐赠
|
| | |
|
| | | public void UpdateDonateInfo(HA502_tagSCDonateCntInfo netPack)
|
| | | {
|
| | | donateCntList = netPack.DonateCntList;
|
| | | DonateCntListEvent?.Invoke();
|
| | | UpdateDonateRedPoint();
|
| | | }
|
| | | #endregion
|
| | |
|
| | | #region 珍宝阁
|
| | | |
| | |
|
| | | public void UpdateZhenbaogeInfo(HA512_tagMCFamilyZhenbaogeInfo netPack)
|
| | | {
|
| | | //砍价状态:仙盟里记录已砍价才是真的已砍价状态,封包中的砍价状态用于判断cd间隔使用
|
| | | needCheckCutCD = netPack.CutState == 1;
|
| | | zhenbaogeBuyState = netPack.BuyState;
|
| | | UpdateZhenbaogeEvent?.Invoke();
|
| | | UpdateZBGRedpoint();
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | //登录后首次打开查询,换新仙盟查询
|
| | | public void QueryZBGFamilyInfo()
|
| | | {
|
| | | if (isQueryZBGYet)
|
| | | return;
|
| | |
|
| | | QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, 16);
|
| | |
|
| | | isQueryZBGYet = true;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | //更新砍价信息
|
| | | public void UpdateHawkerAction(HA513_tagMCFamilyActionInfo vNetData)
|
| | | {
|
| | | if (vNetData.ActionType != ZBGFamilyActionType)
|
| | | {
|
| | | return;
|
| | | }
|
| | | bool restart = false;
|
| | | if (vNetData.FamilyActionList.Length == 1 && vNetData.FamilyActionList[0].Value1 == 1)
|
| | | {
|
| | | if (familyZBGActions.ContainsKey(1) && familyZBGActions[1].Time != vNetData.FamilyActionList[0].Time)
|
| | | {
|
| | | familyZBGActions.Clear();
|
| | | sortPlayerCut.Clear();
|
| | | restart = true;
|
| | | }
|
| | | }
|
| | |
|
| | | for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
|
| | | {
|
| | | int playerID = (int)vNetData.FamilyActionList[i].Value1;
|
| | | familyZBGActions[playerID] = vNetData.FamilyActionList[i];
|
| | |
|
| | | }
|
| | |
|
| | | if (familyZBGActions.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID))
|
| | | {
|
| | | //自己是否已砍价 从列表中查找
|
| | | zhenbaogeCutState = 1;
|
| | | }
|
| | | else
|
| | | {
|
| | | zhenbaogeCutState = 0;
|
| | | }
|
| | |
|
| | |
|
| | | sortPlayerCut = familyZBGActions.Keys.ToList();
|
| | | if (sortPlayerCut.Contains(1))
|
| | | sortPlayerCut.Remove(1);
|
| | | sortPlayerCut.Sort((a, b) => { return familyZBGActions[a].Time.CompareTo(familyZBGActions[b].Time); });
|
| | |
|
| | | UpdateFamilyActionEvent?.Invoke(restart);
|
| | | UpdateZBGRedpoint();
|
| | | }
|
| | |
|
| | | //砍价人数
|
| | | public int GetZBGFamilyActionCount()
|
| | | {
|
| | | return Math.Max(0, familyZBGActions.Count - 1);
|
| | | }
|
| | |
|
| | | public int GetTalkState()
|
| | | {
|
| | | int cnt = GetZBGFamilyActionCount();
|
| | | for (int i = 0; i < cutCntListForTalk.Count; i++)
|
| | | {
|
| | | if (cnt < cutCntListForTalk[i])
|
| | | {
|
| | | return i;
|
| | | }
|
| | | }
|
| | | return 0;
|
| | | }
|
| | |
|
| | | public int[][] GetZBGItems()
|
| | | {
|
| | | if (!familyZBGActions.ContainsKey(1))
|
| | | return null;
|
| | |
|
| | | return JsonMapper.ToObject<int[][]>(familyZBGActions[1].UseData);
|
| | | }
|
| | |
|
| | | public void OnZhenbaogeOP(byte type)
|
| | | {
|
| | | var pack = new CA616_tagCMZhenbaogeOP();
|
| | | pack.OpType = type;
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | |
|
| | |
|
| | | public Dictionary <int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
|
| | |
|
| | | //未议价成员
|
| | | public void CalcNoCutMembers()
|
| | | {
|
| | | tmpNoCutMembers.Clear();
|
| | | var fairy = PlayerDatas.Instance.fairyData;
|
| | | if (fairy == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | foreach(var playerID in fairy.memberIDList)
|
| | | {
|
| | | if (!familyZBGActions.ContainsKey(playerID))
|
| | | {
|
| | | tmpNoCutMembers[playerID] = fairy.GetMember(playerID);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | |
|
| | | #region 红点
|
| | | Redpoint hallRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.guildHallRedpointID);
|
| | | Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.guildHallRedpointID * 10);
|
| | | //珍宝阁(行商)
|
| | | Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.MainGuildRedpoint * 100 + 1);
|
| | |
|
| | | void UpdateDonateRedPoint()
|
| | | {
|
| | | if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Guild))
|
| | | {
|
| | | return;
|
| | | }
|
| | | donateRedpoint.state = RedPointState.None;
|
| | | if (PlayerDatas.Instance.fairyData.fairy == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | //只有第一档的才需要红点
|
| | | var config = FamilyDonateConfig.Get(1);
|
| | | if (donateCntList == null)
|
| | | {
|
| | | if (UIHelper.CheckMoneyCount(config.MoneyType, config.MoneyValue))
|
| | | donateRedpoint.state = RedPointState.Simple;
|
| | | return;
|
| | | }
|
| | | if (donateCntList != null && donateCntList.Length > 0)
|
| | | {
|
| | | if (donateCntList[0] < config.DailyCnt)
|
| | | {
|
| | | if (UIHelper.CheckMoneyCount(config.MoneyType, config.MoneyValue))
|
| | | donateRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | public void UpdateZBGRedpoint()
|
| | | {
|
| | | zbgRedpoint.state = RedPointState.None;
|
| | |
|
| | | if (!PlayerDatas.Instance.fairyData.HasFairy)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (zhenbaogeCutState == 0)
|
| | | {
|
| | | zbgRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | else if (zhenbaogeBuyState == 0)
|
| | | {
|
| | | if (familyZBGActions[1].Value3 > 0)
|
| | | {
|
| | | zbgRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region 加密数字
|
| | |
|
| | |
| | | SysNotifyMgr.Instance.ShowTip("GuildSys6");
|
| | | return "";
|
| | | }
|
| | | |
| | |
|
| | | encryptedStr = encryptedStr.Substring(1);
|
| | |
|
| | | if (reverseMap.IsNullOrEmpty())
|
| | |
| | | }
|
| | | return originalStr.ToString().TrimStart('0'); // 去除前导零
|
| | | }
|
| | | |
| | | |
| | |
|
| | |
|
| | | int[] GenerateReverseMap(int[] map)
|
| | | {
|
| | | for (int i = 0; i < map.Length; i++)
|
| | |
| | |
|
| | | #endregion
|
| | |
|
| | | }
|
| | |
|
| | | // 权限ID: 1-收人,2-变更职位,3-发布公告,4-踢人
|
| | | public enum GuildFuncType
|
| | | {
|
| | | Accept = 1,
|
| | | ChangeJob = 2,
|
| | | PublishNotice = 3,
|
| | | Kick = 4,
|
| | |
|
| | | } |