Exemplo n.º 1
0
 /// <summary> 获取奖励字符串 </summary>
 public string GetRewardString(BaseTaskVocation baseinfo, TGGSession session)
 {
     if (CheckRewardCondition(baseinfo.rewardMaxCondition, session.Player.Role.CloneEntity()))
     {
         return(baseinfo.rewardMax);
     }
     return(CheckRewardCondition(baseinfo.rewardMediumCondition, session.Player.Role)
         ? baseinfo.rewardMedium : baseinfo.reward);
 }
Exemplo n.º 2
0
        /// <summary>刺杀结果</summary>
        public bool KillTask(int npc, BaseTaskVocation basetask, int camp, int rolelevel, ref tg_task task)
        {
            int result = 0; var t = task.CloneEntity();
            var mysteplist = task.task_step_data.Split('_').ToList();

            if (mysteplist[1] != npc.ToString())
            {
                return(false);
            }
            int npcid = 0;

            npcid = camp == (int)CampType.East ? GetNpcId((int)CampType.West, rolelevel) : GetNpcId((int)CampType.East, rolelevel);//npcid = 15010001;//测试

            var kill = Common.GetInstance().GetWorkInfo(task.user_id);

            kill.KillNpcid = npcid;
            var watchlist = Variable.WorkInfo.Where(m => m.WatchNpcid == npcid && m.P_State == 0).ToList();

            if (watchlist.Any())                             //判断有没有守护玩家
            {
                if (kill.KillState == (int)TaskKillType.WIN) //判断是否已挑战了守护玩家
                {
                    result = NpcChallenge(task.user_id, npcid, FightType.NPC_MONSTER);
                }
                else
                {
                    if (!KillWatch(watchlist, task.user_id))
                    {
                        return(false);
                    }
                    return(true);
                }
            }
            else
            {
                result = NpcChallenge(task.user_id, npcid, FightType.NPC_MONSTER);
            }

            if (result == (int)FightResultType.WIN)
            {
                task.task_step_data = basetask.stepCondition;
                task.task_state     = (int)TaskStateType.TYPE_REWARD;
                task.Update();
            }
            kill.KillNpcid = 0;
            kill.KillState = 0;
            return(true);
        }
Exemplo n.º 3
0
        /// <summary>守护任务</summary>
        public bool WatchTask(int npc, BaseTaskVocation basetask, int camp, int rolelevel, ref tg_task task)
        {
            var mysteplist = task.task_step_data.Split('_').ToList();
            var t          = task.CloneEntity();

            if (mysteplist[1] != npc.ToString())
            {
                return(false);
            }

            //随机生成npcid
            var npcid = GetNpcId(camp, rolelevel);
            //npcid = 15010622;//测试
            var watch = GetWorkInfo(task.user_id);

            if (watch.WatchNpcid == 0)
            {
                watch.WatchNpcid = npcid;
            }
            WatchThreading(basetask.time * 1000, task);//开始任务
            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 技能验证
        /// </summary>
        /// <param name="basetask"></param>
        /// <param name="role"></param>
        /// <returns></returns>
        private bool CheckSkill(BaseTaskVocation basetask, RoleItem role)
        {
            try
            {
                if (basetask.stepCondition == "")
                {
                    return(true);
                }
                var sc    = basetask.skillCondition.Split('_');
                var type  = Convert.ToInt32(sc[0]); //0:技能 1属性
                var type1 = Convert.ToInt32(sc[1]); //技能或者属性类型
                var value = Convert.ToInt32(sc[2]); //技能或者属性值
                if (type == 0)
                {
                    #region 技能
                    switch (type1)
                    {
                    case (int)LifeSkillType.ARTILLERY:
                        return(role.LifeSkill.sub_artillery_level >= value);

                    case (int)LifeSkillType.ARCHER:
                        return(role.LifeSkill.sub_archer_level >= value);

                    case (int)LifeSkillType.ASHIGARU:
                        return(role.LifeSkill.sub_ashigaru_level >= value);

                    case (int)LifeSkillType.BUILD:
                        return(role.LifeSkill.sub_build_level >= value);

                    case (int)LifeSkillType.CALCULATE:
                        return(role.LifeSkill.sub_calculate_level >= value);

                    case (int)LifeSkillType.CRAFT:
                        return(role.LifeSkill.sub_craft_level >= value);

                    case (int)LifeSkillType.ELOQUENCE:
                        return(role.LifeSkill.sub_eloquence_level >= value);

                    case (int)LifeSkillType.EQUESTRIAN:
                        return(role.LifeSkill.sub_equestrian_level >= value);

                    case (int)LifeSkillType.ETIQUETTE:
                        return(role.LifeSkill.sub_etiquette_level >= value);

                    case (int)LifeSkillType.MARTIAL:
                        return(role.LifeSkill.sub_martial_level >= value);

                    case (int)LifeSkillType.MEDICAL:
                        return(role.LifeSkill.sub_medical_level >= value);

                    case (int)LifeSkillType.MINE:
                        return(role.LifeSkill.sub_mine_level >= value);

                    case (int)LifeSkillType.NINJITSU:
                        return(role.LifeSkill.sub_ninjitsu_level >= value);

                    case (int)LifeSkillType.RECLAIMED:
                        return(role.LifeSkill.sub_reclaimed_level >= value);

                    case (int)LifeSkillType.TACTICAL:
                        return(role.LifeSkill.sub_tactical_level >= value);

                    case (int)LifeSkillType.TEA:
                        return(role.LifeSkill.sub_tea_level >= value);
                    }
                    #endregion
                }
                if (type != 1)
                {
                    return(true);
                }

                #region 属性
                switch (type1)
                {
                case (int)RoleAttributeType.ROLE_CAPTAIN: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_CAPTAIN, role.Kind) >= value);

                case (int)RoleAttributeType.ROLE_FORCE: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_FORCE, role.Kind) >= value);

                case (int)RoleAttributeType.ROLE_BRAINS: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_BRAINS, role.Kind) >= value);

                case (int)RoleAttributeType.ROLE_CHARM: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_CHARM, role.Kind) >= value);

                case (int)RoleAttributeType.ROLE_GOVERN: return((int)tg_role.GetSingleTotal(RoleAttributeType.ROLE_GOVERN, role.Kind) >= value);
                }
                #endregion

                return(true);
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(false);
            }
        }