예제 #1
0
        //在地图中增加怪物并初始化怪物的基础数据
        public void AddMonInMap(List <PMapMon> monList)
        {
            uint mapId = MeVo.instance.mapId;

            foreach (PMapMon monIn in monList)
            {
                bool         isNew     = false;
                SysMonsterVo monsterVo = null;
                MonsterVo    enemyVo   = null;

                enemyVo = MonsterMgr.Instance.GetMonster(mapId.ToString(), monIn.id.ToString());
                if (enemyVo == null)
                {
                    isNew   = true;
                    enemyVo = new MonsterVo();
                }
                enemyVo.mapId     = mapId;
                enemyVo.Id        = monIn.id;
                enemyVo.monsterId = monIn.monid;
                //enemyVo.monsterId = 100001;
                enemyVo.bornType = monIn.born;
                //enemyVo.bornType = 2;
                enemyVo.CurHp = monIn.hp;
                enemyVo.Hp    = monIn.hpFull;

                //分割线,下面这些数据不是服务器传的,通过读表赋值
                monsterVo = enemyVo.MonsterVO;
                if (monsterVo == null)
                {
                    Log.info(this, "数据库没这个怪物的信息");
                    continue;
                }
                enemyVo.Name           = monsterVo.name;
                enemyVo.AttMMax        = (uint)monsterVo.att_m_max;
                enemyVo.AttMMin        = (uint)monsterVo.att_m_min;
                enemyVo.AttPMin        = (uint)monsterVo.att_p_min;
                enemyVo.AttPMax        = (uint)monsterVo.att_p_max;
                enemyVo.DefM           = (uint)monsterVo.def_m;
                enemyVo.DefP           = (uint)monsterVo.def_p;
                enemyVo.Hit            = (uint)monsterVo.hit;
                enemyVo.Dodge          = monsterVo.dodge;
                enemyVo.Crit           = (uint)monsterVo.crit;
                enemyVo.CritRatio      = (uint)monsterVo.crit_ratio;
                enemyVo.Flex           = (uint)monsterVo.flex;
                enemyVo.HurtRe         = (uint)monsterVo.hurt_re;
                enemyVo.HurtResist     = (uint)monsterVo.hurt_resist;
                enemyVo.HurtDownResist = (uint)monsterVo.hurt_down_resist;
                enemyVo.MoveRatio      = monsterVo.move_ratio * 0.001f;
                enemyVo.job            = GameConst.JOB_MON; //给job赋值,战斗公式会用到
                enemyVo.Level          = monsterVo.lvl;
                enemyVo = MonsterAdapt(enemyVo);            //根据场景修改怪物属性

                if (isNew)
                {
                    UnityEngine.Debug.Log("****AddMonInMap(), 在地图中增加怪物并初始化怪物的基础数据!id, monId = " + enemyVo.Id + ", " + enemyVo.monsterId);
                    Log.info(this, "这是个新怪物,加到怪物管理中去!");
                    MonsterMgr.Instance.addMonster(mapId.ToString(), enemyVo);
                }
            }
        }
예제 #2
0
        /**构建到达怪物
         * @param MapId     怪物所在场景
         * @param monsterId 怪物ID
         * **/
        private bool createMonsterPath(string mapId, uint monsterId)
        {
            string       curMapId  = AppMap.Instance.mapParser.MapId.ToString();                  //当前场景
            SysMonsterVo monsterVo = BaseDataMgr.instance.getSysMonsterVo(monsterId);

            if (curMapId == null || mapId == null || monsterVo == null)
            {
                return(false);                                                         //一种情况mapId=null,即是刚登陆成功时
            }
            Log.info(this, "-createMonsterPath() 追踪到场景ID:" + mapId + ",怪物ID:" + monsterId + ",怪物名称:" + monsterVo.name);

            if (curMapId.Equals(mapId))
            {//本场景怪物
                //add2PathList(1, TO_STEP_MONSTER, monsterId);
                return(true);
            }
            else
            {//新场景怪物
                //return findPath(curMapId, mapId, null, monsterVo);
                return(true);
            }
        }
예제 #3
0
 // Use this for initialization
 private void Start()
 {
     _selfTransform   = transform;
     _hitSoundList    = new List <string>();
     _attackSoundList = new List <string>();
     LeftCdTimes      = new float[11];
     TotalCdTimes     = new float[11];
     SkillMpCost      = new int[11];
     SkillList        = new List <int>();
     if (MeController.Me.Type == DisplayType.ROLE)
     {
         LearnedSkillList = new List <uint>();
         var      playerVo = MeController.Me.GetMeVoByType <PlayerVo>();
         string[] skillIds = StringUtils.GetValueListFromString(playerVo.SysRoleBaseInfo.SkillList);
         foreach (string skill in skillIds)
         {
             LearnedSkillList.Add(uint.Parse(skill)); //角色基础配置表读取角色的技能id
         }
     }
     else if (MeController.Me.Type == DisplayType.MONSTER)
     {
         LearnedSkillList = new List <uint>();
         var vo = MeController.Me.GetMeVoByType <MonsterVo>();
         if (vo != null)
         {
             SysMonsterVo monsterVo = vo.MonsterVO;
             string[]     skillIds  = StringUtils.GetValueListFromString(monsterVo.skill_ids);
             foreach (string skill in skillIds)
             {
                 LearnedSkillList.Add(uint.Parse(skill)); //从怪物表读取怪物的技能id
             }
         }
     }
     else if (MeController.Me.Type == DisplayType.Trap)
     {
         LearnedSkillList = new List <uint>();
         var vo = MeController.Me.GetVo() as TrapVo;
         if (vo != null)
         {
             SysTrap  trapVo   = vo.SysTrapVo;
             string[] skillIds = StringUtils.GetValueListFromString(trapVo.SkillIds);
             foreach (string skill in skillIds)
             {
                 LearnedSkillList.Add(uint.Parse(skill)); //从陷阱表读取怪物的技能id
             }
         }
     }
     else if (MeController.Me.Type == DisplayType.PET)
     {
         LearnedSkillList = new List <uint>();
         var vo = MeController.Me.GetVo() as PetVo;
         if (vo != null)
         {
             /* SysPet sysPetVo = vo.SysPet;
              * string[] skillIds = StringUtils.GetValueListFromString(sysPetVo.unique_skill.ToString());
              * foreach (string skill in skillIds)
              * {
              *   LearnedSkillList.Add(uint.Parse(skill)); //从宠物表读取怪物的技能id
              * }*/
             LearnedSkillList.Add(vo.SkillId);
         }
     }
     InitTotalCdTime();
     InitSkillDelayDic();
 }
예제 #4
0
        private string GetRumorText(ChatRumorMsg_10_7 rumorMsg)
        {
            string result     = string.Empty;
            string roleTag    = "$role$";
            string goodsTag   = "$goods$";
            string monsterTag = "$mon$";
            string intTag     = "$int$";
            string stringTag  = "$string$";

            SysRumor rumorVo = BaseDataMgr.instance.GetSysRumor(rumorMsg.typeId);

            if (null == rumorVo)
            {
                return(result);
            }

            PRumor rumerContent = new PRumor();

            if (rumorMsg.content.Count > 0)
            {
                rumerContent = rumorMsg.content[0];
            }

            string formatStr       = rumorVo.format;
            int    i               = 0;
            int    roleTagIndex    = 0;
            int    goodsTagIndex   = 0;
            int    monsterTagIndex = 0;
            int    intTagIndex     = 0;
            int    stringTagIndex  = 0;

            while (i < formatStr.Length)
            {
                if ('$' != formatStr[i])
                {
                    result += formatStr[i];
                    i++;
                }
                else
                {
                    //角色
                    if (roleTag == formatStr.Substring(i, roleTag.Length))
                    {
                        result += "[00ff00]" + rumerContent.role[roleTagIndex].name + "[-]";
                        roleTagIndex++;
                        i += roleTag.Length;
                    }
                    //物品
                    else if (goodsTag == formatStr.Substring(i, goodsTag.Length))
                    {
                        uint      goodsId = rumerContent.goods[goodsTagIndex].goodsId;
                        SysItemVo vo      = BaseDataMgr.instance.GetDataById <SysItemVo>(goodsId);
                        result += "[0000ff]" + vo.name + "[-]";
                        goodsTagIndex++;
                        i += goodsTag.Length;
                    }
                    //怪物
                    else if (monsterTag == formatStr.Substring(i, monsterTag.Length))
                    {
                        uint         monsterId = rumerContent.mon[monsterTagIndex].monId;
                        SysMonsterVo vo        = BaseDataMgr.instance.GetDataById <SysMonsterVo>(monsterId);
                        result += "[ff0000]" + vo.name + "[-]";
                        monsterTagIndex++;
                        i += monsterTag.Length;
                    }
                    //数值
                    else if (intTag == formatStr.Substring(i, intTag.Length))
                    {
                        result += "[ffff00]" + rumerContent.iData[intTagIndex] + "[-]";
                        intTagIndex++;
                        i += intTag.Length;
                    }
                    //字符串
                    else if (stringTag == formatStr.Substring(i, stringTag.Length))
                    {
                        result += "[00ffff]" + rumerContent.sData[stringTagIndex] + "[-]";
                        stringTagIndex++;
                        i += stringTag.Length;
                    }
                    //普通字符
                    else
                    {
                        result += formatStr[i];
                        i++;
                    }
                }
            }

            return(result);
        }
예제 #5
0
        public override void Run()
        {
            UILabel labName;
            UILabel labWords;

            //主角显示在左侧
            if (StoryConst.SELF_ID == this.npcId)
            {
                Singleton <StoryView> .Instance.LeftNPC.SetActive(true);

                Singleton <StoryView> .Instance.RightNPC.SetActive(false);

                sprNPC   = Singleton <StoryView> .Instance.LeftNPCSprite;
                labName  = Singleton <StoryView> .Instance.LeftNPCName;
                labWords = Singleton <StoryView> .Instance.LeftNPCWords;
                NPCBustMgr.Instance.GetBust(MeVo.instance.BustUrl, RoleBustLoaded);
            }
            //NPC显示在右侧
            else
            {
                Singleton <StoryView> .Instance.LeftNPC.SetActive(false);

                Singleton <StoryView> .Instance.RightNPC.SetActive(true);

                sprNPC   = Singleton <StoryView> .Instance.RightNPCSprite;
                labName  = Singleton <StoryView> .Instance.RightNPCName;
                labWords = Singleton <StoryView> .Instance.RightNPCWords;
            }

            talkWindow = Singleton <StoryView> .Instance.TalkWindow;

            //显示对话框
            if (!talkWindow.activeSelf)
            {
                talkWindow.SetActive(true);
            }

            //打字机不能重复利用,需要先删除再创建
            TypewriterEffect typewriter = labWords.GetComponent <TypewriterEffect>();

            if (null != typewriter)
            {
                GameObject.Destroy(typewriter);
            }

            //获得头像、主角名字
            string spriteName = "";
            string roleName   = "";

            if (StoryConst.SELF_ID == this.npcId)
            {
                //主角头像
                spriteName = Singleton <RoleMode> .Instance.GetPlayerHeadSpriteName(MeVo.instance.job);

                roleName = MeVo.instance.Name;
            }
            else
            {
                CreateAction action = Singleton <StoryMode> .Instance.GetCreateAction(this.npcId);

                if (null != action)
                {
                    string resourceId = action.ResourceId;

                    //为怪物
                    if (action.IsMonster)
                    {
                        SysMonsterVo vo = BaseDataMgr.instance.getSysMonsterVo(Convert.ToUInt32(resourceId));
                        if (null != vo)
                        {
                            spriteName = vo.icon.ToString();
                            roleName   = vo.name;
                        }
                    }
                    //为NPC
                    else
                    {
                        SysNpcVo vo = BaseDataMgr.instance.GetNpcVoById(Convert.ToUInt32(resourceId));
                        if (null != vo)
                        {
                            spriteName = vo.halfImgSprite;
                            roleName   = vo.name;
                        }
                    }

                    bust = action.Bust;
                }
            }

            sprNPC.atlas = Singleton <AtlasManager> .Instance.GetAtlas(AtlasManager.Header);

            sprNPC.spriteName = spriteName;
            sprNPC.SetActive(false);
            labName.text  = roleName;
            labWords.text = this.words;

            if (null != bust)
            {
                bust.SetActive(true);
                bustVisible = true;
            }

            if (delay > 0f)
            {
                vp_Timer.In(delay, Finish, 1, 0);
            }

            //增加打字效果(测试先屏蔽)
            //typewriter = labWords.gameObject.AddComponent<TypewriterEffect>();
            //typewriter.charsPerSecond = 20;
            //typewriter.DoTypeEnd = Finish;
        }