//初始化怪物卡牌 public void InitMonsterCard(MonsterTemplate _monster) { Parent = selfTransform.FindChild("Parent"); Image Boss_Image = Parent.FindChild("Boss_Image").GetComponent <Image>(); CardNameText = Parent.FindChild("Name_txt").GetComponent <Text>(); _CardLevelText = Parent.FindChild("Level_txt"); CardImage = Parent.FindChild("Icon_Img").GetComponent <Image>(); CardStar = _monster.getMonsterstar(); maxStar = _monster.getMonstermaxstar(); CardLevel = _monster.getMonsterlevel(); CardName = GameUtils.getString(_monster.getMonstername()); CardNameText.text = CardName;//名称 InterfaceControler.GetInst().AddLevelNum(CardLevel.ToString(), _CardLevelText, url); _Artresourcedata = (ArtresourceTemplate)DataTemplate.GetInstance().m_ArtresourceTable.getTableData(_monster.getArtresources()); Sprite _img = UIResourceMgr.LoadSprite(common.defaultPath + _Artresourcedata.getHeadiconresource()); CardImage.sprite = _img;//图片 for (int i = 0; i < 5; i++) { Image temp = Parent.FindChild("Star_Image").GetChild(i).GetComponent <Image>(); temp.enabled = i < maxStar; temp = Parent.FindChild("Star_Image").GetChild(i + 5).GetComponent <Image>(); temp.enabled = i < CardStar; } Boss_Image.enabled = _monster.getMonstertype() == 2 ? true : false; }
private string GetBossName(StageTemplate stageData) { MonstergroupTemplate _monsterGroup = null; MonsterTemplate _bossTemp = null; for (int i = stageData.m_monstergroup.Length - 1; i >= 0; i--) { _monsterGroup = null; _bossTemp = null; if (stageData.m_monstergroup[i] <= 0) { continue; } _monsterGroup = DataTemplate.GetInstance().m_MonsterGroupTable.getTableData(stageData.m_monstergroup[i]) as MonstergroupTemplate; if (_monsterGroup == null || _monsterGroup.getGrouptype() != 2 || GameUtils.GetObjectClassById(_monsterGroup.getMonsterid()[0]) != EM_OBJECT_CLASS.EM_OBJECT_CLASS_MONSTER) { continue; } _bossTemp = DataTemplate.GetInstance().m_MonsterTable.getTableData(_monsterGroup.getMonsterid()[0]) as MonsterTemplate; if (_bossTemp != null) { break; } } if (_bossTemp == null) { return(null); } else { return(GameUtils.getString(_bossTemp.getMonstername())); } }
/// <summary> /// Spawn monster do hry dle jmena jeho typu /// </summary> public Monster SpawnMonster(string monsterTypeName, Vector3 position, bool isMinion, int level, int team = 0) { MonsterTemplate template = MonsterTemplateTable.Instance.GetType(monsterTypeName); if (template == null) { throw new NullReferenceException("cant find monstertemplate for " + monsterTypeName); } string name = template.GetFolderName(); GameObject go = Resources.Load("Prefabs/entity/" + name + "/" + name) as GameObject; if (go == null) { throw new NullReferenceException("Prefabs/entity/" + name + "/" + name); } GameObject result = Object.Instantiate(go, position, Quaternion.identity) as GameObject; EnemyData data = result.GetComponent <EnemyData>(); Monster m = RegisterNewCustomMonster(data, template, isMinion, level); if (team > 0) { m.Team = team; } return(m); }
/// <summary> /// In Game Usage : /cm test 1 3029 46 33 99 20 Dark Light "Common Monster" /// It represents the following structure: Name | Image | Map Id | X | Y | Spawn Count | Offense | Defense | Script Name /// </summary> private static void OnMonsterCreate(Argument[] args, object arg) { var client = (GameClient)arg; if (client == null) { return; } var template = new MonsterTemplate(); { var name = args.FromName("name").Replace("\"", ""); var image = args.FromName("image"); var offsense = args.FromName("offense"); var defense = args.FromName("defense"); var level = args.FromName("level"); var map = args.FromName("map"); var x = args.FromName("x"); var y = args.FromName("y"); var script = args.FromName("Script").Replace("\"", ""); var count = args.FromName("count"); if (Position.TryParse(x, y, out var position)) { template.Image = ushort.Parse(image) < 0x4000 ? (ushort)(ushort.Parse(image) + 0x4000) : ushort.Parse(image); template.DefinedX = position.X; template.DefinedY = position.Y; template.ScriptName = script; //template.DefenseElement = Enum.Parse<ElementManager.Element>(defense); //template.OffenseElement = Enum.Parse<ElementManager.Element>(offsense); template.UpdateMapWide = true; template.EngagedWalkingSpeed = 1000; template.PathQualifer = PathQualifer.Wander; template.AreaID = int.Parse(map); template.MovementSpeed = 1000; template.AttackSpeed = 1000; template.CastSpeed = 8000; template.SpawnType = SpawnQualifer.Defined; template.SpawnRate = 1; template.BaseName = name; template.Name = name; template.MoodType = MoodQualifer.Unpredicable; template.FamilyKey = "Minion"; template.Level = int.Parse(level); template.LootType = LootQualifer.Gold | LootQualifer.Table; template.Drops = new List <string> { "random" }; template.SpawnMax = int.Parse(count); if (ServerContext.GlobalMapCache.ContainsKey(template.AreaID)) { StorageManager.MonsterBucket.Save(template, true); ServerContext.GlobalMonsterTemplateCache.Add(template); } } } }
//索引怪物模型资源 private void IndexMonsterModel() { if (!SceneManager.Inst.NextloadScene.ToString().Contains("Battle")) { return; } CampaignMonsterGroupData pData = ObjectSelf.GetInstance().GetMonsterGroupData(); if (pData != null) { for (int i = 0; i < GlobalMembers.MAX_CAMPAIGN_MONSTER_GROUP; i++) { for (int j = 0; j < GlobalMembers.MAX_MONSTER_GROUP_COUNT; ++j) { if (DataTemplate.GetInstance().m_MonsterTable.tableContainsKey(pData.IDs[i, j])) { int nTableID = pData.IDs[i, j]; MonsterTemplate _rowData = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(nTableID); IndexModel(_rowData); IndexSkillmodel(_rowData); } } } } }
public virtual void DoDie(Character killer = null, SkillId skillId = 0) { if (killer != null) { killer.OnKill(this, skillId); } int count = Skills.Skills.Count; for (int i = 0; i < count; i++) { Skills.Skills[i].NotifyCharacterDied(); } if (ActiveEffects.Count > 0) { foreach (SkillEffect ef in ActiveEffects.ToArray()) { ef.OnCharDie(); } } OnDead(killer, skillId); if (this is Monster) { MonsterTemplate mt = ((Monster)this).Template; mt.OnDie((Monster)this); } GetData().SetIsDead(true); WorldHolder.instance.activeMap.NotifyCharacterDied(this); DeleteMe(); }
public override void Execute(TriggerBase trigger) { MonsterTemplate monsterTemplate = trigger.Get <MonsterTemplate>("monster"); Character target = base.GetTarget(trigger); foreach (MonsterSpell current in monsterTemplate.Grades.FirstOrDefault <MonsterGrade>().SpellsTemplates) { CharacterSpell characterSpell = target.Spells.LearnSpell(current.SpellId); if (characterSpell != null) { trigger.Reply("'{0}' learned the spell '{1}'", new object[] { trigger.Bold(target), trigger.Bold(characterSpell.Template.Name) }); } else { trigger.ReplyError("Spell {0} not learned. Unknow reason", new object[] { trigger.Bold(current.SpellId) }); } } }
void OnGUI() { if (ownerData == null || ownerData.showObjectName == false) { return; } if (center != null) { if (labelStyle == null) { labelStyle = new GUIStyle(GUI.skin.label); labelStyle.alignment = TextAnchor.UpperCenter; labelStyle.normal.textColor = Color.black; labelStyle.fontSize = 15; } Vector3 position = Camera.main.WorldToScreenPoint(transform.position + new Vector3(0, 1, 0)); float x = position.x - 45; float y = Screen.height - position.y; string name = ownerData.GetOwner().Name; if (ownerData.GetOwner() is Monster) { MonsterTemplate template = ((Monster)ownerData.GetOwner()).Template; name = template.Name; } GUI.Label(new Rect(x, y, 90, 20), name, labelStyle); } }
public bool CreateFromTemplate(MonsterTemplate template, Area map, int count) { var objectsAdded = 0; try { for (int i = 0; i < count; i++) { var newObj = Monster.Create(template, map); if (newObj != null) { AddObject(newObj); objectsAdded++; } } } catch (Exception) { //ignore return(false); } return(objectsAdded > 0); }
public async Task <MonsterTemplate> CreateMonsterTemplateAsync(NaheulbookExecutionContext executionContext, MonsterTemplateRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var subCategory = await uow.MonsterSubCategories.GetAsync(request.SubCategoryId); if (subCategory == null) { throw new MonsterSubCategoryNotFoundException(request.SubCategoryId); } var itemTemplates = await uow.ItemTemplates.GetByIdsAsync(request.Inventory.Select(x => x.ItemTemplateId)); var monsterTemplate = new MonsterTemplate { Data = JsonConvert.SerializeObject(request.Data), Name = request.Name, SubCategory = subCategory, Items = request.Inventory.Where(i => !i.Id.HasValue || i.Id == 0).Select(i => new MonsterTemplateInventoryElement { Chance = i.Chance, ItemTemplate = itemTemplates.First(x => x.Id == i.ItemTemplateId), MaxCount = i.MaxCount, MinCount = i.MinCount }).ToList() }; uow.MonsterTemplates.Add(monsterTemplate); await uow.SaveChangesAsync(); return(monsterTemplate); } }
/// <summary> /// 创建怪物 /// </summary> private void CreateMonterObject() { MonsterTemplate _monsterData = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(GlobalMembers.SPELL_SHOW_MONTER_ID); ArtresourceTemplate _atrRes = (ArtresourceTemplate)DataTemplate.GetInstance().m_ArtresourceTable.getTableData(_monsterData.getArtresources()); GameObject _assetRes = AssetLoader.Inst.GetAssetRes(_atrRes.getArtresources()); if (_assetRes != null) { GameObject _go = Instantiate(_assetRes, m_BossPos.position, m_BossPos.rotation) as GameObject; SceneObjectManager.GetInstance().SceneObjectAddMonster(_go, 1, 0); //_go.transform.rotation = Quaternion.Euler(_go.transform.rotation.x, 180, _go.transform.rotation.z); _go.transform.localScale = new Vector3(3, 3, 3); Animation _anim = _go.GetComponent <Animation>(); if (_anim == null) { return; } if (_go.GetComponent <Animation>()["Idle1"] != null) { _go.GetComponent <Animation>().CrossFade("Idle1"); } else if (_go.GetComponent <Animation>()["Nidle1"] != null) { _go.GetComponent <Animation>().CrossFade("Nidle1"); } _go.GetComponent <Animation>().wrapMode = WrapMode.Loop; } }
public bool CreateFromTemplate(MonsterTemplate template, Area map, int count) { var newObj = Monster.Create(template as MonsterTemplate, map); AddObject(newObj); return(false); }
public void CreateFromTemplate(MonsterTemplate template, Area map) { var newObj = Monster.Create(template, map); if (newObj != null) { AddObject(newObj); } }
//动态加载极限试炼怪物资源 [6/17/2015 Zmy] public void DynamicLoadLimitMonsterRes(int nTableID) { MonsterTemplate _rowData = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(nTableID); IndexModel(_rowData); IndexSkillmodel(_rowData); if (!IsInvoking("DownLoadHeroAnimationBundle")) { Invoke("DownLoadHeroAnimationBundle", 0.5f); } }
void LoadMonsterTemplates_Process_Handler(Task t) { foreach (object[] row in t.Query.Rows) { MonsterTemplate mt = MonsterTemplate.ReadFromDB(row); _server.AddMonsterTemplate(mt); } t.Type = Task.TaskType.LoadMonsterSpawners_Process; AddDBQuery("SELECT * FROM monster_spawners;", t); }
public MonsterGrade GetMonsterGrade(int monsterId, int grade) { MonsterTemplate template = this.GetTemplate(monsterId); if (template == null) { return(null); } return((template.Grades.Count <= grade - 1) ? null : template.Grades[grade - 1]); }
public void AddType(MonsterTemplate t) { try { types.Add(t.GetMonsterId(), t); } catch (Exception) { Debug.LogError("type " + t.GetMonsterId() + " already exists! ( " + t.GetType().Name + ")"); } }
public void InitializeBomb(int summonerid, short cellid) { this.Direction = 3; this.CellId = cellid; this.ContextualId = Fight.PopNextNonPlayerId(); this.FighterLook = MonsterTemplate.RealLook.CloneContextActorLook(); this.RealFighterLook = FighterLook.CloneContextActorLook(); this.FighterStats = MonsterTemplate.GetFighterStats(Grade, true, summonerid); this.FighterInformations = new GameFightMonsterInformations(ContextualId, FighterLook, new EntityDispositionInformations(CellId, Direction), (sbyte)Team.TeamColor, 0, true, FighterStats.GetMinimalStats(), new ushort[0], MonsterTemplate.Id, Grade); }
private void IndexModel(MonsterTemplate monster) { ArtresourceTemplate _Artresourcedata = new ArtresourceTemplate(); _Artresourcedata = (ArtresourceTemplate)DataTemplate.GetInstance().m_ArtresourceTable.getTableData(monster.getArtresources()); PushNeedDownBundle(_Artresourcedata.getArtresources() + _strRes); string[] ActArtresourceData = _Artresourcedata.getActionresource(); for (int i = 0; i < ActArtresourceData.Length; ++i) { PushNeedDownBundle(ActArtresourceData[i] + _strRes); } }
/// <summary> /// 使用物品ID初始化,参数2为物品数量。当ID为英雄、符文,或者数量不大于0时会隐藏数量面板 /// </summary> /// <param name="itemID"></param> /// <param name="count"></param> public void InitByID(int itemID, int count = 0) { m_ItemID = itemID; m_Type = GameUtils.GetObjectClassById(itemID); switch (m_Type) { case EM_OBJECT_CLASS.EM_OBJECT_CLASS_RUNE: ItemTemplate _itemTable = DataTemplate.GetInstance().m_ItemTable.getTableData(itemID) as ItemTemplate; if (_itemTable != null) { ItemTypeProcess(_itemTable); m_ItemImage.gameObject.SetActive(false); m_HeroImage.gameObject.SetActive(false); LoadStar(_itemTable.getRune_quality(), _itemTable.getRune_quality(), false); } m_ItemCountImage.gameObject.SetActive(false); break; case EM_OBJECT_CLASS.EM_OBJECT_CLASS_HERO: HeroTemplate _heroTable = DataTemplate.GetInstance().m_HeroTable.getTableData(itemID) as HeroTemplate; if (_heroTable != null) { m_HeroImage.sprite = DynamicItem.GetSprite(itemID); m_HeroImage.gameObject.SetActive(true); //m_HeroImage.SetNativeSize(); m_ItemImage.gameObject.SetActive(false); LoadStar(_heroTable.getQuality(), _heroTable.getMaxQuality()); } m_ItemCountImage.gameObject.SetActive(false); break; case EM_OBJECT_CLASS.EM_OBJECT_CLASS_MONSTER: MonsterTemplate _monsterTable = DataTemplate.GetInstance().m_MonsterTable.getTableData(itemID) as MonsterTemplate; if (_monsterTable != null) { m_HeroImage.sprite = DynamicItem.GetSprite(itemID); m_HeroImage.gameObject.SetActive(true); //m_HeroImage.SetNativeSize(); m_ItemImage.gameObject.SetActive(false); m_StarPanel.SetActive(false); } break; default: m_ItemImage.sprite = DynamicItem.GetSprite(itemID); m_ItemImage.gameObject.SetActive(true); m_HeroImage.gameObject.SetActive(false); m_ItemCountImage.gameObject.SetActive(count > 0); m_ItemCountText.text = string.Format("X{0}", count); break; } }
/// <summary>Create new monster instance of given <c>MonsterTemplate</c>.</summary> /// <param name="p">Position</param> /// <param name="template">Template</param> /// <returns>Created monster referenceo or null if template is invalid or <c>null</c>.</returns> public Monster spawnMonster(Position p, MonsterTemplate template) { var m = spawn <Monster>(p); try { if (m != null) { m.Build(template); } } catch { Debug.LogError("Failed to instantiate monster"); } return(m); }
private int IncreaseCreatureKilledCount(MonsterTemplate monster) { if (!m_monsterKilledEffects.TryGetValue(monster.Id, out var effect)) { effect = new EffectDice(EffectsEnum.Effect_MonsterKilledCount, 1, (short)monster.Id, 0); m_monsterKilledEffects.Add(monster.Id, effect); Effects.Add(effect); } else { effect.Value++; } return(effect.Value); }
public void SpawnOn(MonsterTemplate template, Area map) { var count = GetObjects <Monster>(i => i.Template.Name == template.Name).Length; if (count < template.SpawnMax) { if ((template.SpawnType & SpawnQualifer.Random) == SpawnQualifer.Random) { CreateFromTemplate(template, map, count); } else if ((template.SpawnType & SpawnQualifer.Defined) == SpawnQualifer.Defined) { CreateFromTemplate(template, map, count); } } }
public Task <bool> SpawnOn(MonsterTemplate template, Area map) { var tcs = new TaskCompletionSource <bool>(); var count = GetObjects <Monster>(i => i.Template.Name == template.Name && i.CurrentMapId == map.ID).Count(); if (count < Math.Abs(template.SpawnMax)) { tcs.SetResult(CreateFromTemplate(template, map, template.SpawnSize)); } else { tcs.SetResult(false); } return(tcs.Task); }
private void OnEnemyOnDie(GameEvent ge) { CurrentMonsterDieCount++; for (int i = 0; i < CurrentAllMonsterdataList.Count; ++i) { if (CurrentAllMonsterdataList[i].MonsterPointdataList.Count <= 0) { continue; } if (CurrentAllMonsterdataList[i].MonsterPointdataList[0].Entertype == MonsterEnterType.Bench && CurrentAllMonsterdataList[i].MonsterPointdataList[0].BenchCount == CurrentMonsterDieCount) { int fightCount = ObjectSelf.GetInstance().IsLimitFight ? ObjectSelf.GetInstance().LimitFightMgr.m_RoundNum : CurrentFightCount; int id = SceneObjectManager.GetInstance().GetMosnterBundleRes(fightCount, i); MonsterTemplate pRow = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(id); ArtresourceTemplate art = (ArtresourceTemplate)DataTemplate.GetInstance().m_ArtresourceTable.getTableData(pRow.getArtresources()); string _res = art.getArtresources(); GameObject _Monster = AssetLoader.Inst.GetAssetRes(_res); GameObject obj = Instantiate(_Monster, CurrentAllMonsterdataList[i].MyPos, CurrentAllMonsterdataList[i].MyAngle) as GameObject; float _zoom = art.getArtresources_zoom() * pRow.getMonsterEnlarge(); obj.transform.localScale = new UnityEngine.Vector3(_zoom, _zoom, _zoom); MonsterObjList.Add(obj); SetMonsterBirthState(obj, CurrentAllMonsterdataList[i], false, i); } } //X_GUID monsterGuid = ge.data as X_GUID; //if (monsterGuid != null) //{ // //判断前排英雄是否消失; // //TODO::这里应该考虑到是否有支援怪物(和策划确认了不要支援怪物了2015/10/30/11.20); // //List<ObjectMonster> monsters = SceneObjectManager.GetInstance().GetSceneMonsterList(); // //if (monsters != null && monsters.Count > 0) // //{ // // //写死的阵型,前2后3; // // for (int i = 0; i < 2; i++) // // { // // } // //} // if (IsFrontRowDie()) // { // SceneObjectManager.GetInstance().ObjectHeroMoveTarget(); // } //} }
/// <summary>Set template, initialize proerties and model from template data.</summary> public void Build(MonsterTemplate temp) { if (temp == null) { Debug.LogError("Given null MonsterTemplate"); } else { template = temp; currentHealth = template.health; var mf = GetComponent <MeshFilter>(); mf.sharedMesh = temp.mesh; var mr = GetComponent <MeshRenderer>(); mr.sharedMaterial = temp.material; } }
private void IndexSkillmodel(MonsterTemplate monster) { SkillTemplate normalskill = (SkillTemplate)DataTemplate.GetInstance().m_SkillTable.getTableData(monster.getNormalattack()); PushNeedDownBundle(normalskill.getBallIsticEffID() + _strRes); PushNeedDownBundle(normalskill.getUnderAttackEffID() + _strRes); SkillTemplate[] m_skill = new SkillTemplate[monster.getMonsterskill().Length]; for (int i = 0; i < monster.getMonsterskill().Length; ++i) { if (monster.getMonsterskill()[i] == -1) { return; } m_skill[i] = (SkillTemplate)DataTemplate.GetInstance().m_SkillTable.getTableData(monster.getMonsterskill()[i]); PushNeedDownBundle(m_skill[i].getBallIsticEffID() + _strRes); PushNeedDownBundle(m_skill[i].getUnderAttackEffID() + _strRes); } }
/// <summary> /// Spawne bosse do hry dle jmena jeho typu /// </summary> public Boss SpawnBoss(string monsterTypeName, Vector3 position, int level) { MonsterTemplate template = MonsterTemplateTable.Instance.GetType(monsterTypeName); if (template == null) { throw new NullReferenceException("cant find monstertemplate for " + monsterTypeName); } string name; if (template.GetMonsterId() == MonsterId.CustomMonster) { name = ((CustomMonsterTemplate)template).GetOldTemplateFolderId(); } else { name = template.GetMonsterId().ToString(); } GameObject go = Resources.Load("Prefabs/entity/" + name + "/" + name) as GameObject; if (go == null) { throw new NullReferenceException("Prefabs/entity/" + name + "/" + name); } GameObject result = Object.Instantiate(go, position, Quaternion.identity) as GameObject; EnemyData data = result.GetComponent <EnemyData>(); //Monster m = RegisterNewMonster(data, id, false, level); Monster m = RegisterNewCustomMonster(data, template, false, level); if (m is Boss) { return((Boss)m); } else { Debug.LogError("tried to spawn boss - but it was a monster ! fix it in data"); throw new NullReferenceException(); } }
public void test() { MonsterTemplate m = new MonsterTemplate(); m.baseHP = 5; m.name = "Jane"; m.maxAtk = 9; m.minAtk = 2; m.id = 33; m.level = 2; Newtonsoft.Json.Linq.JsonLoadSettings setting = new Newtonsoft.Json.Linq.JsonLoadSettings(); Debug.Log("---"); string jsonStr = JsonConvert.SerializeObject(m); Debug.Log(jsonStr); //Newtonsoft.Json.Linq.JObject obj = JsonConvert. }
public UI_Blood CreateBloodBar(ObjectMonster monster) { Transform tans = monster.GetAnimation().EventControl.Pre_Head_T_EffectPoint; GameObject barObj = null; MonsterTemplate template = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(monster.GetTableID()); if (template.getMonstertype() == 1) { barObj = Instantiate(UI_FightControler.Inst.monsterBloodPre) as GameObject; } else { barObj = Instantiate(UI_FightControler.Inst.bossBloodBar) as GameObject; } barObj.transform.SetParent(transform, false); UI_Blood mBlood = barObj.AddComponent <UI_Blood>(); mBlood.SetPosition(tans.position); barObj.transform.localScale = new Vector3(1, 1, 1); bloodInfo.Add(mBlood); mBlood.isHero = false; if (ObjectSelf.GetInstance().LimitFightMgr.m_bStartEnter) { int CurRound = ObjectSelf.GetInstance().LimitFightMgr.m_RoundNum; UltimatetrialmonsterTemplate row = (UltimatetrialmonsterTemplate)DataTemplate.GetInstance().m_UltimatetrialmonsterTable.getTableData(CurRound); int nLevel = template.getMonsterlevel() + row.getAdditionalLevel(); mBlood.setHeroLevel(nLevel); } else { mBlood.setHeroLevel(template.getMonsterlevel()); } mBlood.setHeadPosition(tans); mBlood.uid.Copy(monster.GetGuid()); return(mBlood); }