//在地图中增加怪物并初始化怪物的基础数据 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); } } }
/**构建到达怪物 * @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); } }
// 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(); }
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); }
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; }