コード例 #1
0
ファイル: GuildFightCombat.cs プロジェクト: rongxiong/Scut
        /// <summary>
        /// 随机分组
        /// </summary>
        public static void Grouping(int FastID, int Lenght, int round, int cityID, ServerFight[] fightList)
        {
            if (IsFightLenth(fightList))
            {
                return;
            }
            List<int> intList = new List<int>();
            for (int i = 0; i < fightList.Length; i++)
            {
                intList.Add(i);
            }
            int guildLenght = fightList.Length;
            int No = 1;
            int subNum = 0;
            while (guildLenght > 0)
            {
                if (fightList.Length == 2 && No == 2)
                {
                    No++;
                    continue;
                }
                var cacheSet = new ShareCacheStruct<ServerFightGroup>();
                ServerFightGroup group = new ServerFightGroup(Guid.NewGuid().ToString());
                group.NO = No;
                group.Stage = FightStage.quarter_final;
                group.Round = round;
                group.FastID = FastID;
                group.IsRemove = false;
                int indexA = GetIndex(intList);
                int indexB = -1;
                if ((guildLenght > 4 && No == 1) || (guildLenght > 3 && No == 2) || (guildLenght > 2 && No == 3) || (guildLenght > 1 && No == 4))
                {
                    indexB = GetIndex(intList);
                    subNum = 2;
                }
                else
                {
                    subNum = 1;
                }

                if (indexA < 0 && indexB < 0)
                {
                    break;
                }
                string guildIdA = string.Empty;
                if (indexA >= 0)
                {
                    ServerFight fightA = fightList[indexA];
                    guildIdA = fightA.GuildID;
                }
                group.GuildIDA = guildIdA;

                string guildIdB = string.Empty;
                if (indexB >= 0)
                {
                    ServerFight fightB = fightList[indexB];
                    guildIdB = fightB.GuildID;
                }
                group.GuildIDB = guildIdB;
                group.CityID = cityID;
                UserGuild guildA = new ShareCacheStruct<UserGuild>().FindKey(group.GuildIDA);
                UserGuild guildB = new ShareCacheStruct<UserGuild>().FindKey(group.GuildIDB);
                string guildAName = guildA == null ? string.Empty : guildA.GuildName;
                string guildBName = guildB == null ? string.Empty : guildB.GuildName;
                TraceLog.ReleaseWriteFatal("Round={0},IndexA={1},IndexB={2},NameA={3},NameB={4},No={5},cityID={6}",
                    round, indexA, indexB, guildAName, guildBName, No, cityID);
                cacheSet.Add(group, GameEnvironment.CacheGlobalPeriod);
                guildLenght = guildLenght - subNum;
                No++;
            }
        }
コード例 #2
0
ファイル: GuildFightCombat.cs プロジェクト: rongxiong/Scut
 public static bool IsFightLenth(ServerFight[] fightArray)
 {
     if (fightArray.Length == 1)
     {
         fightArray[0].RankID = 1;
         fightArray[0].Stage = FightStage.final;
         GetServerFightGroup(fightArray[0].CityID, fightArray[0].GuildID, string.Empty);
         return true;
     }
     return false;
 }
コード例 #3
0
ファイル: Action6404.cs プロジェクト: rongxiong/Scut
        public override bool TakeAction()
        {
            if (string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough;
                return false;
            }
            GuildMember member = new ShareCacheStruct<GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);
            if (member == null || member.PostType == PostType.Member)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_OrdinaryMemberNotCompetence;
                return false;
            }
            UserGuild guild = new ShareCacheStruct<UserGuild>().FindKey(ContextUser.MercenariesID);
            if (guild == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return false;
            }

            FightCombat fightCombat = new FightCombat();
            var cacheSet = new ShareCacheStruct<ServerFight>();
            ServerFight fight = cacheSet.FindKey(fightCombat.FastID, ContextUser.MercenariesID);
            if (fight != null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_HaveSignedUp;
                return false;
            }

            DateTime nextDate;
            FightStage stage = GuildFightCombat.GetStage(out nextDate);
            if (GuildFightCombat.IsFightDate())
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CityABattleTime;
                return false;
            }

            if (stage != FightStage.Apply)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CityABattleTime;
                return false;
            }

            //if (DateTime.Now > fightCombat.GuildEndTime && DateTime.Now < fightCombat.GuildStartTime)
            //{
            //    ErrorCode = LanguageManager.GetLang().ErrorCode;
            //    ErrorInfo = LanguageManager.GetLang().St6404_OutRegistrationTime;
            //    return false;
            //}

            GuildFightInfo fightInfo = new ConfigCacheSet<GuildFightInfo>().FindKey(cityID);
            if (fightInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return false;
            }
            if (guild.GuildLv < fightInfo.GuildLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_GuildLvNotEnough;
                return false;
            }
            if (guild.CurrDonateNum < fightInfo.SkillNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CurrDonateNumNotEnough;
                return false;
            }
            guild.CurrDonateNum = MathUtils.Subtraction(guild.CurrDonateNum, fightInfo.SkillNum);

            fight = new ServerFight(fightCombat.FastID, ContextUser.MercenariesID);
            fight.GuildBanner = string.Empty;
            fight.CityID = cityID;
            fight.RankID = 0;
            fight.ApplyDate = DateTime.Now;
            fight.IsRemove = false;
            fight.IsBanner = false;
            cacheSet.Add(fight, GameEnvironment.CacheGlobalPeriod);
            ErrorCode = 0;
            ErrorInfo = LanguageManager.GetLang().St6401_SuccessfulRegistration;
            return true;
        }