Example #1
0
        /// <summary> 获取战斗实体 </summary>
        /// <param name="userid">当前玩家id</param>
        /// <param name="rivalid">对手id</param>
        /// <param name="type">战斗类型</param>
        /// <param name="hp">要调控血量 (爬塔、活动、连续战斗调用)</param>
        /// <param name="of">是否获取己方战斗Vo</param>
        /// <param name="po">是否推送己方战斗</param>
        /// <param name="or">是否获取对方战斗Vo</param>
        /// <param name="pr">是否推送对方战斗</param>
        /// <param name="rolehomeid">(武将宅类型时可用)要挑战武将宅id</param>
        /// <returns></returns>
        private Core.Entity.Fight GeFight1(Int64 userid, Int64 rivalid, FightType type, Int64 hp = 0, bool of = false, bool po = false, bool or = false, bool pr = false, int rolehomeid = 0)
        {
            var fight = new Core.Entity.Fight();

            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                fight.Result = ResultType.BASE_PLAYER_OFFLINE_ERROR; return(fight);
            }
            var session = Variable.OnlinePlayer[userid] as TGGSession;
            var roleid  = session.Player.Role.Kind.id;

            RoleHomeId = rolehomeid;

            fight.Result = GetResult(session, rivalid, Convert.ToInt32(type), hp);
            if (fight.Result != ResultType.SUCCESS)
            {
                return(fight);
            }

            fight.PlayHp    = GetPlayHp(roleid);
            fight.Hurt      = GetBossHurt(userid);
            fight.BoosHp    = GetBossHp(userid);
            fight.ShotCount = vo.moves.Sum(m => m.Count());
            UpdateWin(fight.PlayHp, roleid);
            fight.Iswin = vo.isWin;

            if (of)
            {
                fight.Ofight = vo;
            }
            if (po)
            {
                SendProtocol(session, new ASObject(BuildData(Convert.ToInt32(fight.Result), vo)));
            }
            if (or)
            {
                fight.Rfight             = GetRivalFightVo();
                fight.Rfight.wuJiangName = session.Player.User.player_name;
            }
            if (!pr)
            {
                return(fight);
            }
            if (type != FightType.BOTH_SIDES || type != FightType.ONE_SIDE)
            {
                return(fight);
            }
            var s = Variable.OnlinePlayer[rivalid] as TGGSession;

            SendProtocol(s, new ASObject(BuildData(Convert.ToInt32(fight.Result), GetRivalFightVo())));
            return(fight);
        }
Example #2
0
        /// <summary> 获取战斗实体 </summary>
        /// <param name="session">当前玩家session</param>
        /// <param name="rivalid">对手id</param>
        /// <param name="type">战斗类型</param>
        /// <param name="hp">要调控血量 (爬塔有效活动,连续战斗任务有效)</param>
        /// <param name="of">是否获取己方战斗Vo</param>
        /// <param name="po">是否推送己方战斗</param>
        /// <param name="or">是否获取对方战斗Vo</param>
        /// <param name="pr">是否推送对方战斗</param>
        /// <param name="rolehomeid">(武将宅类型时可用)要挑战武将宅id</param>
        /// <returns></returns>
        public Core.Entity.Fight GeFight(TGGSession session, Int64 rivalid, FightType type, Int64 hp = 0, bool of = false, bool po = false, bool or = false, bool pr = false, int rolehomeid = 0)
        {
            var roleid = session.Player.Role.Kind.id;
            var userid = session.Player.User.id;

            RoleHomeId = rolehomeid;
            var fight = new Core.Entity.Fight();

            fight.Result = GetResult(session, rivalid, Convert.ToInt32(type), hp);
            if (fight.Result != ResultType.SUCCESS)
            {
                return(fight);
            }

            fight.Iswin  = vo.isWin;
            fight.PlayHp = GetPlayHp(roleid);
            fight.Hurt   = GetBossHurt(userid);
            fight.BoosHp = GetBossHp(userid);
            if (of)
            {
                fight.Ofight = vo;
            }
            if (po)
            {
                SendProtocol(session, new ASObject(BuildData(Convert.ToInt32(fight.Result), vo)));
            }
            if (or)
            {
                fight.Rfight = GetRivalFightVo();
            }
            if (!pr)
            {
                return(fight);
            }
            if (type != FightType.BOTH_SIDES || type != FightType.ONE_SIDE)
            {
                return(fight);
            }
            var s = Variable.OnlinePlayer[rivalid] as TGGSession;

            SendProtocol(s, new ASObject(BuildData(Convert.ToInt32(fight.Result), GetRivalFightVo())));
            return(fight);
        }