//only Melee or range public static bool HasCanAttackEquip(this PeEntity entity, EeqSelect sle) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } List <ItemObject> objs = pkg.GetEquipItemObjs(sle); if (objs == null) { return(false); } for (int i = 0; i < objs.Count; i++) { if (SelectItem.EquipCanAttack(entity, objs[i])) { return(true); } } return(false); }
public static bool HasEquip(this PeEntity entity, EeqSelect sle) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } return(pkg.HasEq(sle)); }
public static List <ItemAsset.ItemObject> GetAtkEquipObjs(this PeEntity entity, AttackType atkType) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(null); } return(pkg.GetAtkEquipItemObjs(atkType)); }
public static bool RemoveFromBag(this PeEntity entity, ItemAsset.ItemObject item) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } return(pkg.Remove(item)); }
public static bool AddToBag(this PeEntity entity, ItemAsset.ItemObject item, bool isnew = false) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } return(pkg.Add(item, isnew)); }
public static int GetItemCount(this PeEntity entity, int protoId) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(0); } return(pkg.GetItemCount(protoId)); }
public static bool HasAtkEquips(this PeEntity entity, AttackType type) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } return(pkg.HasAtkEquip(type)); }
public static bool IsInPackage(this PeEntity entity, ItemObject obj) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(false); } return(pkg.Contain(obj)); }
public static List <ItemAsset.ItemObject> GetEquipObjs(this PeEntity entity, EeqSelect selcet) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(null); } return(pkg.GetEquipItemObjs(selcet)); }
//static void SetModelData(PeEntity entity, string name) //{ // AvatarCmpt avatar = entity.GetCmpt<AvatarCmpt>(); // CustomCharactor.AvatarData nudeAvatarData = new CustomCharactor.AvatarData(); // nudeAvatarData.SetPart(CustomCharactor.AvatarData.ESlot.HairF, "Model/Npc/" + name); // avatar.SetData(new AppearBlendShape.AppearData(), nudeAvatarData); //} static void SetNpcMoney(PeEntity entity, string text) { NpcPackageCmpt pkg = entity.GetCmpt <NpcPackageCmpt>(); string[] groupStrArray = text.Split(';'); if (groupStrArray.Length != 3) { return; } string[] strArray = groupStrArray[0].Split(','); if (strArray.Length != 2) { return; } int initMin, initMax; if (!int.TryParse(strArray[0], out initMin)) { return; } if (!int.TryParse(strArray[1], out initMax)) { return; } strArray = groupStrArray[1].Split(','); if (strArray.Length != 2) { return; } int incMin, incMax; if (!int.TryParse(strArray[0], out incMin)) { return; } if (!int.TryParse(strArray[1], out incMax)) { return; } int max = 0; if (!int.TryParse(groupStrArray[2], out max)) { return; } pkg.InitAutoIncreaseMoney(max, UnityEngine.Random.Range(incMin, incMax)); pkg.money.current = UnityEngine.Random.Range(initMin, initMax); }
void GetServentCmpt() { if (leaderCmpt != null) { NpcCmpt cmpt = leaderCmpt.GetServant((int)mCurrentIndex); if (cmpt != null && cmpt != npcCmpt) { viewCmpt = cmpt.Entity.biologyViewCmpt; commonCmpt = cmpt.Entity.commonCmpt; packageCmpt = cmpt.GetComponent <NpcPackageCmpt>(); GetNpcPakgeSlotList(); entityInfoCmpt = cmpt.Entity.enityInfoCmpt; // register changeEvent if (equipmentCmpt != null) { equipmentCmpt.changeEventor.Unsubscribe(EquipmentChangeEvent); } equipmentCmpt = cmpt.Entity.equipmentCmpt; equipmentCmpt.changeEventor.Subscribe(EquipmentChangeEvent); } npcCmpt = cmpt; CheckWhtherCanGet(); servant = (npcCmpt != null) ? npcCmpt.Entity : null; } else { npcCmpt = null; CheckWhtherCanGet(); } if (npcCmpt == null) { viewCmpt = null; commonCmpt = null; equipmentCmpt = null; packageCmpt = null; entityInfoCmpt = null; mInteractionPackage = null; mPrivatePakge = null; mSprSex.spriteName = "null"; ClearEqList(); ClearNpcPackage(); } mEqTex.enabled = (npcCmpt != null); }
public void ResetItem() { ResetItem(mCurrentPickTab, mPageIndex); if (npc == null) { return; } NpcPackageCmpt npcpc = npc.GetCmpt <NpcPackageCmpt>(); if (npcpc == null) { return; } SetNpcMoney(npcpc.money.current); }
public static ItemAsset.ItemObject GetBagItemObj(this PeEntity entity, int prototypeId) { NpcPackageCmpt pkg = entity.packageCmpt as NpcPackageCmpt; if (null == pkg) { return(null); } SlotList useList = pkg.GetSlotList(); if (null != useList.FindItemByProtoId(prototypeId)) { return(useList.FindItemByProtoId(prototypeId)); } useList = pkg.GetHandinList(); return(useList.FindItemByProtoId(prototypeId)); }
void RPC_S2C_ChangeCurrency(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int currency = stream.Read <int> (); if (currency == (int)CustomData.EMoneyType.Digital) { if (Money.Digital == true) { return; } foreach (var item in EntityMgr.Instance.All) { if (item == null || item.GetGameObject() == null) { continue; } NpcPackageCmpt npcpc = item.GetCmpt <NpcPackageCmpt>(); if (npcpc == null) { continue; } npcpc.money.SetCur(npcpc.money.current * 4); } Money.Digital = true; GameUI.Instance.mShopWnd.mMeatSprite.gameObject.SetActive(false); GameUI.Instance.mShopWnd.mMoneySprite.gameObject.SetActive(true); GameUI.Instance.mItemPackageCtrl.nMoneyRoot.SetActive(true); } else if (currency == (int)CustomData.EMoneyType.Meat) { if (Money.Digital == false) { return; } Money.Digital = false; GameUI.Instance.mShopWnd.mMeatSprite.gameObject.SetActive(true); GameUI.Instance.mShopWnd.mMoneySprite.gameObject.SetActive(false); GameUI.Instance.mItemPackageCtrl.nMoneyRoot.SetActive(false); } }
void Buy(Grid_N grid, int num) { //lw:2017.4.6 crash bug :NullReferenceException if (null == m_TypeShopIDList || null == m_ShopIDList) { return; } bool repurchase; int shopID = 0; int cost = 0; if (mCurrentPickTab == 0) { repurchase = false; if (m_TypeShopIDList.Count <= grid.ItemIndex) { return; } shopID = m_TypeShopIDList[grid.ItemIndex]; ShopData data = ShopRespository.GetShopData(shopID); if (data != null) { cost = data.m_Price; } } else { repurchase = true; if (grid.ItemObj.protoData != null) { cost = grid.ItemObj.protoData.currency; mSellOpLayer.gameObject.SetActive(false); } } if (PeGameMgr.IsMulti) { mSellOpLayer.gameObject.SetActive(false); if (repurchase) { PlayerNetwork.mainPlayer.RequestRepurchase(npc.Id, grid.ItemObj.instanceId, num); } else { PlayerNetwork.mainPlayer.RequestBuy(npc.Id, grid.ItemObj.instanceId, num); } return; } else { //lz-2016.09.19 购买失败情况比较多,详细提示放在里面了 if (!StroyManager.Instance.BuyItem(grid.ItemObj, num, shopID, m_CurNpcID, !repurchase)) { //lz-2016.09.19 失败需要返回,避免后面删除Npc的东西和给npc加钱 return; } //if (!PlayerFactory.mMainPlayer.BuyItem(grid.ItemObj, num, shopID, m_CurNpcName, !repurchase)) //{ // MessageBox_N.ShowOkBox(PELocalization.GetString(8000076)); // return; //} } cost *= num; //GameGui_N.Instance.mChatGUI.AddChat(PromptData.PromptType.PromptType_13, grid.ItemObj.protoData.GetName(), num, cost); //if (grid.ItemObj.GetCount() > num) //{ // grid.ItemObj.IncreaseStackCount(num); //} //else //{ // m_CurrentPack[grid.ItemIndex] = null; // grid.SetItem(null); // mOpGrid = null; // if(mCurrentPickTab == 1) // mRepurchaseList.RemoveAt(grid.ItemIndex); //} if (npc != null) { NpcPackageCmpt npcpc = npc.GetCmpt <NpcPackageCmpt>(); if (npcpc == null) { return; } npcpc.money.current += cost; } //lz-2016.09.19 是回购就移除回购的,不是回购就移除正常的 if (repurchase) { RemoveRepurchase(grid.ItemIndex, num); } else { int index = -1; if (grid.ItemIndex < m_TypeShopIDList.Count) { for (int i = 0; i < m_ShopIDList.Count; i++) { if (m_ShopIDList[i] == m_TypeShopIDList[grid.ItemIndex]) { index = i; break; } } mSellOpLayer.gameObject.SetActive(false); if (index != -1) { RemoveBuyItem(index, num); } } } ResetItem(); }
public void Sell(Grid_N grid, int num) { //lz-2016.08.10 执行Sell的时候重置包裹当前的操作Item GameUI.Instance.mItemPackageCtrl.ResetCurOpItem(); if (null == grid || null == grid.ItemObj) { Debug.LogError("Sell item is null"); return; } int proid = grid.ItemObj.protoId; int instanceid = grid.ItemObj.instanceId; int maxStackCount = grid.ItemObj.GetStackMax(); int cost = grid.ItemObj.GetSellPrice();//(int)(grid.ItemObj.prototypeData.m_CurrencyValue * num * (0.8f * grid.ItemObj.Durability / grid.ItemObj.DurabilityMax + 0.2f)); // string itemname = grid.ItemObj.protoData.GetName(); if (npc == null) { return; } NpcPackageCmpt npcpc = npc.GetCmpt <NpcPackageCmpt>(); if (npcpc == null) { return; } cost *= num; if (cost > npcpc.money.current) { string errInfo = ""; EntityInfoCmpt cmpt = npc.GetCmpt <EntityInfoCmpt>(); if (cmpt != null) { string _name = ""; // if (npc.entityProto.proto == EEntityProto.RandomNpc) // { // _name = cmpt.characterName.fullName; // } // else if (npc.entityProto.proto == EEntityProto.Npc) // { // _name = cmpt.characterName.givenName; // } _name = cmpt.characterName.fullName; //lz-2016.10.31 have no money to pay for you! errInfo = _name + " " + PELocalization.GetString(8000853); } else { //lz-2016.10.31 have no money to pay for you! errInfo = npc.name + " " + PELocalization.GetString(8000853); } new PeTipMsg(errInfo, PeTipMsg.EMsgLevel.Error); return; } //Add money to player if (PeGameMgr.IsMulti) { PlayerNetwork.mainPlayer.RequestSell(npc.Id, instanceid, num); } else { npcpc.money.current -= cost; ItemObject SellItemObj; if (maxStackCount == 1) { SellItemObj = grid.ItemObj; } else { SellItemObj = ItemMgr.Instance.CreateItem(proid); } PlayerPackageCmpt pkg = PeCreature.Instance.mainPlayer.GetCmpt <PlayerPackageCmpt>(); if (null == pkg) { return; } if (maxStackCount == 1) { pkg.Remove(SellItemObj); } else { pkg.DestroyItem(instanceid, num); } //if (grid.ItemObj.GetCount() > num) //{ // SellItemObj = ItemMgr.Instance.CreateItem(grid.ItemObj.protoId); // single // SellItemObj.IncreaseStackCount(num); // grid.ItemObj.DecreaseStackCount(num); //} //else //{ // SellItemObj = grid.ItemObj; // PlayerFactory.mMainPlayer.GetItemPackage().RemoveItem(grid.ItemObj); // GameUI.Instance.mUIItemPackageCtrl.ResetItem(); //} //SellItemObj.SetProperty(ItemProperty.SellItemMark, 1f); AddRepurchase(SellItemObj, num); // if (cost != 0 && !PeCreature.Instance.mainPlayer.AddToPkg(StroyManager.PRICE_ID, cost)) // { // return; // } pkg.money.current += cost; ResetItem(); } //GameGui_N.Instance.mChatGUI.AddChat(PromptData.PromptType.PromptType_14, itemname, num, cost); mOpItem.SetItem(null); mOpGrid = null; mSellOpLayer.gameObject.SetActive(false); return; }
public override void Show() { mSellOpLayer.gameObject.SetActive(false); mOpItem.mShowNum = false; mBtnAll.isChecked = true; shopSelectItemType = ItemLabel.Root.all; mCurrentPickTab = 0; ResetItem(mCurrentPickTab, 0); npc = EntityMgr.Instance.Get(m_CurNpcID); EntityInfoCmpt info = npc.GetCmpt <EntityInfoCmpt>(); if (npc != null) { //npc.CmdIdle = true; if (info != null) { SetNpcName(info.characterName.fullName); } NpcPackageCmpt npcpc = npc.GetCmpt <NpcPackageCmpt>(); if (npcpc == null) { return; } SetNpcMoney(npcpc.money.current); Texture icon_tex = null; string icon_str = ""; if (EntityCreateMgr.Instance.IsRandomNpc(npc)) { icon_tex = npc.ExtGetFaceTex(); if (icon_tex == null) { icon_str = npc.ExtGetFaceIcon(); } } else { icon_str = npc.ExtGetFaceIcon(); } if (icon_tex != null) { SetNpcICO(icon_tex); } else { SetNpcICO(icon_str); } StroyManager.Instance.SetTalking(EntityMgr.Instance.Get(m_CurNpcID)); isShopping = true; //Invoke("ShopSetTalking", 0.25f); } if (!GameUI.Instance.mItemPackageCtrl.isShow) { GameUI.Instance.mItemPackageCtrl.Show(); } prePos = GameUI.Instance.mItemPackageCtrl.transform.localPosition; GameUI.Instance.mItemPackageCtrl.transform.localPosition = UIDefaultPostion.Instance.pos_ItemPackge; transform.localPosition = UIDefaultPostion.Instance.pos_Shop; base.Show(); }
static void SetNpcPackageItem(PeEntity npc, int itemID, int num) { NpcPackageCmpt pkg = npc.GetCmpt <NpcPackageCmpt>(); pkg.Add(itemID, num); }
void UpdateItemGrid() { if (m_InteractionGrids1.Count == 0 || m_InteractionGrids2.Count == 0 || m_PrivateGrids.Count == 0)//格子数量为0 { return; } //先清空格子 for (int i = 0; i < m_Interaction1Count; i++) { m_InteractionGrids1[i].SetItem(null); } for (int i = 0; i < m_Interaction2Count; i++) { m_InteractionGrids2[i].SetItem(null); } for (int i = 0; i < 10; i++) { m_PrivateGrids[i].SetItem(null); } if (m_RefNpc == null)//当传进来的npc为空,则直接返回 { return; } //lz-2016.11.22 错误 #6885 Crush bug if (m_RefNpc != null && null != m_RefNpc.m_Npc) { cmpt = m_RefNpc.m_Npc.GetCmpt <NpcCmpt>(); if (null != cmpt) { packageCmpt = cmpt.GetComponent <NpcPackageCmpt>(); if (null != packageCmpt) { if (mInteractionPackage1 != null) { mInteractionPackage1.eventor.Unsubscribe(InteractionpackageChange); } mInteractionPackage1 = packageCmpt.GetSlotList(); mInteractionPackage1.eventor.Subscribe(InteractionpackageChange); if (mInteractionPackage2 != null) { mInteractionPackage2.eventor.Unsubscribe(Interactionpackage2Change); } mInteractionPackage2 = packageCmpt.GetHandinList(); mInteractionPackage2.eventor.Subscribe(Interactionpackage2Change); if (mPrivatePakge != null) { mPrivatePakge.eventor.Unsubscribe(PrivatepackageChange); } mPrivatePakge = packageCmpt.GetPrivateSlotList(); mPrivatePakge.eventor.Subscribe(PrivatepackageChange); } } } Reflashpackage(); }