//脱掉一件物品. public void UnEquipItem(InventoryItem item) { ItemDatas.ItemDatas unit = item.Info(); if (unit != null) { } }
public InventoryItem EquipItems(InventoryItem item) { InventoryItem itemUnEquip = null; ItemDatas.ItemDatas unit = item.Info(); if (unit != null) { HpMax += unit.HP; MpMax += unit.MP; hpCur += unit.HP; mpCur += unit.MP; Speed += unit.Speed; if (Speed > 2500) { Speed = 2500; } Crit += unit.Crit; if (item != null && item.extra != null && unit.Quality != 0) { //减去额外属性. HpMax += item.extra.Hp; hpCur += item.extra.Hp; MpMax += item.extra.Mp; mpCur += item.extra.Mp; Speed += item.extra.Speed; Crit += item.extra.Crit; } } return(itemUnEquip); }
public void Drop(MeteorUnit player) { //player.Attr; //List<GameObject> obj = new List<GameObject>(); //一定爆出角色主武器,有Flag爆出Flag,并且这个Flag,会持续一定时间,若无人拾取,则会重置Flag归位. int mainWeapon = player.Attr.Weapon; ItemDatas.ItemDatas ib = Main.Ins.DataMgr.GetData <ItemDatas.ItemDatas>(mainWeapon); WeaponDatas.WeaponDatas wb = U3D.GetWeaponProperty(ib.UnitId); GameObject trigget = CreateTriggerObj(wb.WeaponR, player.transform, -player.transform.forward); //obj.Add(trigget); //ExplosionObject01.iTweenExplosion01(1, ref obj, player.transform.position); ExplosionObject01.DropItem(trigget, player.transform.position, -player.transform.forward); //如果角色拥有第二武器,那么第一武器扔掉时,切换到第二武器 player.DropAndChangeWeapon(); //扔掉Flag道具 if (player.GetFlag) { trigget = CreateObj(player.GetFlagItem.model, player.transform, -player.transform.forward); ExplosionObject01.DropItem(trigget, player.transform.position, Quaternion.AngleAxis(30, Vector3.up) * -player.transform.forward); player.SetFlag(null, 0); } }
public void OnPickup(MeteorUnit unit) { if (unit != null && !unit.Dead) { //满武器,不能捡 if (unit.Attr.Weapon != 0 && unit.Attr.Weapon2 != 0) { return; } //相同武器,不能捡 ItemDatas.ItemDatas ib0 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); WeaponDatas.WeaponDatas wb0 = U3D.GetWeaponProperty(ib0.UnitId); if (wb0 != null && wb0.WeaponR == model) { return; } if (unit.Attr.Weapon2 != 0) { ItemDatas.ItemDatas ib1 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); WeaponDatas.WeaponDatas wb1 = U3D.GetWeaponProperty(ib1.UnitId); if (wb1 != null && wb1.WeaponR == model) { return; } } //同类武器不能捡 int weaponPickup = Main.Ins.GameStateMgr.GetWeaponCode(model); ItemDatas.ItemDatas wb = Main.Ins.GameStateMgr.FindItemByIdx(weaponPickup); if (wb == null) { return; } ItemDatas.ItemDatas wbl = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); if (wbl == null) { return; } ItemDatas.ItemDatas wbr = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); if (wb.SubType == wbl.SubType) { return; } if (wbr != null && wb.SubType == wbr.SubType) { return; } //可以捡取 unit.Attr.Weapon2 = weaponPickup; Main.Ins.SFXLoader.PlayEffect(672, unit.gameObject, true); Destroy(gameObject); } }
public ItemDatas.ItemDatas FindItemByIdx(int itemid) { ItemDatas.ItemDatas ItemProperty = Main.Ins.DataMgr.GetData <ItemDatas.ItemDatas>(itemid); //缺失读取外部加载的部分 //if (ItemProperty == null) // ItemProperty = Main.Instance..GetItem(itemid); if (ItemProperty != null) { return(ItemProperty); } return(null); }
public InventoryItem MakeEquip(int unitIdx) { ItemDatas.ItemDatas info = FindItemByIdx(unitIdx); if (info == null) { return(null); } InventoryItem item = new InventoryItem(); item.Count = 1; item.Idx = info.ID; return(item); }
public void DropWeapon(MeteorUnit player) { int mainWeapon = player.Attr.Weapon2; if (mainWeapon == 0) { return; } ItemDatas.ItemDatas ib = Main.Ins.DataMgr.GetData <ItemDatas.ItemDatas>(mainWeapon); WeaponDatas.WeaponDatas wb = U3D.GetWeaponProperty(ib.UnitId); GameObject trigget = CreateTriggerObj(wb.WeaponR, player.transform, -player.transform.forward); //obj.Add(trigget); //ExplosionObject01.iTweenExplosion01(1, ref obj, player.transform.position); player.Attr.Weapon2 = 0; ExplosionObject01.DropItem(trigget, player.transform.position, -player.transform.forward); }
void AddWeaponItem(ItemDatas.ItemDatas it, int idx) { if (GridWeapon.Count > idx) { GridWeapon[idx].SetActive(true); UIFunCtrl ctrl = GridWeapon[idx].GetComponent <UIFunCtrl>(); ctrl.SetEvent(ShowWeapon, it.ID); ctrl.SetText(it.Name); } else { GameObject weapon = GameObject.Instantiate(Resources.Load("GridItemBtn")) as GameObject; UIFunCtrl obj = weapon.AddComponent <UIFunCtrl>(); obj.SetEvent(ShowWeapon, it.ID); obj.SetText(it.Name); obj.transform.SetParent(WeaponRoot.transform); obj.gameObject.layer = WeaponRoot.layer; obj.transform.localScale = Vector3.one; obj.transform.localPosition = Vector3.zero; obj.transform.localRotation = Quaternion.identity; GridWeapon.Add(weapon); } }
public void Load(string file) { string s = file; if (!string.IsNullOrEmpty(file)) { //查看此物体属于什么,A:武器 B:道具 C:镖物 if (ItemInfo == null) { for (int i = 0; i < Main.Ins.MenuResLoader.Info.Count; i++) { if (Main.Ins.MenuResLoader.Info[i].model != "0" && 0 == string.Compare(Main.Ins.MenuResLoader.Info[i].model, s, true)) { ApplyPrev(Main.Ins.MenuResLoader.Info[i]); break; } string rh = s.ToUpper(); string rh2 = Main.Ins.MenuResLoader.Info[i].model.ToUpper(); if (rh2.StartsWith(rh)) { s = Main.Ins.MenuResLoader.Info[i].model; ApplyPrev(Main.Ins.MenuResLoader.Info[i]); break; } } //不是一个Meteor.res里的物件 if (ItemInfo == null) { List <ItemDatas.ItemDatas> its = Main.Ins.DataMgr.GetDatasArray <ItemDatas.ItemDatas>(); for (int i = 0; i < its.Count; i++) { if (its[i].MainType == 1) { WeaponDatas.WeaponDatas weapon = U3D.GetWeaponProperty(its[i].UnitId); if (weapon.WeaponR == s) { ItemInfoEx = its[i]; break; } } } } } //证明此物品不是可拾取物品 gameObject.layer = (ItemInfo != null || ItemInfoEx != null) ? LayerMask.NameToLayer("Trigger") : LayerMask.NameToLayer("Scene"); root.gameObject.layer = gameObject.layer; //箱子椅子桌子酒坛都不允许为场景物品. WsGlobal.ShowMeteorObject(s, root); DesFile fIns = Main.Ins.DesLoader.Load(s); //把子物件的属性刷到一起. for (int i = 0; i < fIns.SceneItems.Count; i++) { LoadCustom(fIns.SceneItems[i].name, fIns.SceneItems[i].custom); } //雪人不能合并材质,不然没法动画 if (Main.Ins.CombatData.GLevelItem.Scene != "Meteor_21") { if (name.StartsWith("D_Item") || name.StartsWith("D_RJug") || name.StartsWith("D_itRJug") || name.StartsWith("D_BBox") || name.StartsWith("D_BBBox") || name.StartsWith("D_Box")) { if (root != null) { CombineChildren combine = root.gameObject.AddComponent <CombineChildren>(); combine.generateTriangleStrips = false; } else { CombineChildren combine = gameObject.AddComponent <CombineChildren>(); combine.generateTriangleStrips = false; } } } FMCFile f = Main.Ins.FMCLoader.Load(s); if (f != null) { player = GetComponent <FMCPlayer>(); if (player == null) { player = gameObject.AddComponent <FMCPlayer>(); } player.Init(s, f); } else { player = GetComponent <FMCPlayer>(); if (player != null) { DestroyObject(player); player = null; } } } }
public void OnPickUped(MeteorUnit unit) { //场景上的模型物件捡取 if (unit.Dead) { return; } if (ItemInfo != null && ItemInfo.Type != 0 && root != null) { if (ItemInfo.IsWeapon()) { //满武器,不能捡 if (unit.Attr.Weapon != 0 && unit.Attr.Weapon2 != 0) { return; } //相同武器,不能捡 ItemDatas.ItemDatas ib0 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); WeaponDatas.WeaponDatas wb0 = U3D.GetWeaponProperty(ib0.UnitId); if (wb0 != null && wb0.WeaponR == ItemInfo.model) { return; } if (unit.Attr.Weapon2 != 0) { ItemDatas.ItemDatas ib1 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); WeaponDatas.WeaponDatas wb1 = U3D.GetWeaponProperty(ib1.UnitId); if (wb1 != null && wb1.WeaponR == ItemInfo.model) { return; } } //同类武器不能捡 int weaponPickup = Main.Ins.GameStateMgr.GetWeaponCode(ItemInfo.model); ItemDatas.ItemDatas wb = Main.Ins.GameStateMgr.FindItemByIdx(weaponPickup); if (wb == null) { return; } ItemDatas.ItemDatas wbl = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); if (wbl == null) { return; } ItemDatas.ItemDatas wbr = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); if (wb.SubType == wbl.SubType) { return; } if (wbr != null && wb.SubType == wbr.SubType) { return; } //可以捡取 unit.Attr.Weapon2 = weaponPickup; Main.Ins.SFXLoader.PlayEffect(672, unit.gameObject, true); refresh_tick = ItemInfo.first[1].flag[1]; if (asDrop) { GameObject.Destroy(gameObject); } else { if (refresh_tick > 0) { Refresh = true; } GameObject.Destroy(root.gameObject); root = null; } } else if (ItemInfo.IsItem()) { //表明此为Buff,会叠加某个属性,且挂上一个持续的特效。 unit.GetItem(ItemInfo); refresh_tick = ItemInfo.first[1].flag[1]; if (refresh_tick > 0) { Refresh = true; } GameObject.Destroy(root.gameObject); root = null; } else if (ItemInfo.IsFlag()) { GameObject.Destroy(root.gameObject); root = null; if (ItemInfo.first[1].flag[1] != 0) { Main.Ins.SFXLoader.PlayEffect(ItemInfo.first[1].flag[1], unit.gameObject, true); } U3D.InsertSystemMsg(unit.name + " 夺得镖物"); unit.SetFlag(ItemInfo, ItemInfo.first[2].flag[1]); } if (OnPickUp != null) { OnPickUp.Invoke(Main.Ins.CombatData.GScript, null); } } else if (ItemInfoEx != null) { if (ItemInfoEx.MainType == 1) { string weaponModel = ""; WeaponDatas.WeaponDatas wp = U3D.GetWeaponProperty(ItemInfoEx.UnitId); if (wp != null) { weaponModel = wp.WeaponR; } //满武器,不能捡 if (unit.Attr.Weapon != 0 && unit.Attr.Weapon2 != 0) { return; } //相同武器,不能捡 ItemDatas.ItemDatas ib0 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); WeaponDatas.WeaponDatas wb0 = U3D.GetWeaponProperty(ib0.UnitId); if (wb0 != null && wb0.WeaponR == weaponModel) { return; } if (unit.Attr.Weapon2 != 0) { ItemDatas.ItemDatas ib1 = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); WeaponDatas.WeaponDatas wb1 = U3D.GetWeaponProperty(ib1.UnitId); if (wb1 != null && wb1.WeaponR == weaponModel) { return; } } //同类武器不能捡 int weaponPickup = Main.Ins.GameStateMgr.GetWeaponCode(weaponModel); ItemDatas.ItemDatas wb = Main.Ins.GameStateMgr.FindItemByIdx(weaponPickup); if (wb == null) { return; } ItemDatas.ItemDatas wbl = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon); if (wbl == null) { return; } ItemDatas.ItemDatas wbr = Main.Ins.GameStateMgr.FindItemByIdx(unit.Attr.Weapon2); if (wb.SubType == wbl.SubType) { return; } if (wbr != null && wb.SubType == wbr.SubType) { return; } //可以捡取 unit.Attr.Weapon2 = weaponPickup; Main.Ins.SFXLoader.PlayEffect(672, unit.gameObject, true); if (asDrop) { GameObject.Destroy(gameObject); } } } else { if (OnTouch != null) { OnTouch.Invoke(Main.Ins.CombatData.GScript, new object[] { 0, unit.InstanceId }); } else if (OnPickUp != null) { OnPickUp.Invoke(Main.Ins.CombatData.GScript, null); } } }