//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));
            }
Example #10
0
    //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);
    }
Example #11
0
    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);
    }
Example #12
0
    public void ResetItem()
    {
        ResetItem(mCurrentPickTab, mPageIndex);
        if (npc == null)
        {
            return;
        }

        NpcPackageCmpt npcpc = npc.GetCmpt <NpcPackageCmpt>();

        if (npcpc == null)
        {
            return;
        }

        SetNpcMoney(npcpc.money.current);
    }
Example #13
0
            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);
        }
    }
Example #15
0
    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();
    }
Example #16
0
    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;
    }
Example #17
0
    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();
    }
Example #18
0
    static void SetNpcPackageItem(PeEntity npc, int itemID, int num)
    {
        NpcPackageCmpt pkg = npc.GetCmpt <NpcPackageCmpt>();

        pkg.Add(itemID, num);
    }
Example #19
0
    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();
    }