/// <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); }
/// <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); }