//克隆详细信息 public virtual void Clone(CObject_Item pItemSource) { //克隆GUID ushort idWorld = 0; ushort idServer = 0; uint idSerail = 0; pItemSource.GetGUID(ref idWorld, ref idServer, ref idSerail); SetGUID(idWorld, idServer, idSerail); //克隆制造者 string pManufacturer = pItemSource.GetManufacturer(); // [11/8/2010 Sun] if (pManufacturer != null) { m_Creator = System.Text.Encoding.ASCII.GetBytes(pManufacturer); } //克隆物品的额外信息 if (pItemSource.GetItemExtraInfoItem() != null) { if (m_ExtraInfoItem != null) { m_ExtraInfoItem = null; } m_ExtraInfoItem = pItemSource.m_ExtraInfoItem; } }
void UpdateEnchanseSelectedEquip() { ClearEnchanseSelected(); if (mSelectedItem != null) { mEnchanseSelectedAction.SetActionItem(mSelectedItem.GetID()); CObject_Item_Equip equip = mSelectedItem as CObject_Item_Equip; if (equip != null) { int gemCount = equip.GetGemCount(); for (int i = 0; i < gemCount; i++) { int nIdTable = equip.GetGemTableId(i); if (nIdTable != 0) { CObject_Item gemItem = ObjectSystem.Instance.NewItem((uint)nIdTable); CActionItem action = CActionSystem.Instance.GetAction_ItemID(gemItem.GetID(), false); mEnchanseGemInfo[i].enchanseGem.SetActionItemByActionId(action.GetID()); } } } } UpdateEnchanseGemStates(); }
public void Dome(int nPetNum) { SDATA_PET My_Pet = CDataPool.Instance.Pet_GetPet(nPetNum); if ((My_Pet == null) || (MacroDefine.INVALID_ID == My_Pet.IsPresent)) { throw new Exception("LUA:Pet Dome parameter error"); } int idxPackage = -1; CObject_Item pFind = (CObject_Item)CDataPool.Instance.Pet_GetLowestLevel_Dome_From_Package(My_Pet.GUID, ref idxPackage); if (My_Pet.Happiness == 100) { // STRING strMsg = "你的宠物无需驯养";//COLORMSGFUNC("GMGameInterface_Script_Pet_NoNeedDemo"); // ADDNEWDEBUGMSG(strMsg); // return; } if (pFind != null || idxPackage < 0) { // STRING strMsg = "你没有驯养道具";//COLORMSGFUNC("GMGameInterface_Script_Pet_NoDemoFood"); // ADDNEWDEBUGMSG(strMsg); // return; } CGUseItem pi = new CGUseItem(); pi.BagIndex = (byte)idxPackage; pi.TargetPetGUID = My_Pet.GUID; NetManager.GetNetManager().SendPacket(pi); }
//一次购买多个物品 public int BulkBuyItem(int nIndex, int nNumber) { CObject_Item pBoothItem = CDataPool.Instance.Booth_GetItem(nIndex); if (pBoothItem != null) { nNumber = (nNumber <1 || nNumber> pBoothItem.GetMaxOverLay())?1:nNumber; if (CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Money() >= (int)(CDataPool.Instance.Booth_GetItemPrice(nIndex) * nNumber)) { CGShopBuy msg = new CGShopBuy(); msg.UniqueID = CDataPool.Instance.Booth_GetShopUniqueId(); msg.Index = (byte)pBoothItem.GetPosIndex(); msg.SerialNum = (byte)CDataPool.Instance.Booth_GetSerialNum(); msg.BuyNum = (uint)nNumber; NetManager.GetNetManager().SendPacket(msg); return(0); } } CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_INTERCOURSE, "#{LowMoney}"); return(0); }
public void useCharm() { if(attr == -1 || level == -1) { return; } string talbeString = "90" + level.ToString() + "0" + attr.ToString() + "001"; int needIdTable = int.Parse(talbeString); for( int i = 0; i < GAMEDEFINE.MAX_BAG_SIZE; i++ ) { CObject_Item objectItem = CDataPool.Instance.UserBag_GetItem(i); if( objectItem != null && ( objectItem is CObject_Item_Symbol ) )//如果是符印 { CObject_Item_Symbol charmItem = (CObject_Item_Symbol)objectItem; int idTable = charmItem.GetIdTable(); if( needIdTable == idTable ) { CGUseSymbol useSymbolMsg = new CGUseSymbol(); useSymbolMsg.BagIndex = (byte)objectItem.PosIndex; NetManager.GetNetManager().SendPacket(useSymbolMsg); //吃一个就返回 return ; } } } }
public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer) { if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain) { GCBankAcquireList packet = pPacket as GCBankAcquireList; //清空原有商品列表 CDataPool.Instance.UserBank_Clear(); //银行里面的钱数 CDataPool.Instance.UserBank_SetBankMoney(packet.Money); //当前银行的大小 CDataPool.Instance.UserBank_SetBankEndIndex(packet.CurBankSize); GCBankAcquireList._BANK_ITEM[] ItemList = packet.ItemList; int nNum = packet.ItemNum; int bankpos = 0; CObject_Item pItem = null; //添加到数据池中 for (int i = 0; i < nNum; i++) { bankpos = ItemList[i].bankindex; if (ItemList[i].isBlueEquip != 0) { pItem = ObjectSystem.Instance.NewItem(ItemList[i].item_data.m_ItemIndex); if (pItem == null) { throw new NullReferenceException("Bank Item Create failed:" + ItemList[i].item_data.m_ItemIndex); } pItem.SetGUID( (ushort)ItemList[i].item_data.m_ItemGUID.m_World, ItemList[i].item_data.m_ItemGUID.m_Server, (uint)ItemList[i].item_data.m_ItemGUID.m_Serial); CDataPool.Instance.UserBank_SetItem(bankpos, pItem, true); CDataPool.Instance.UserBank_SetItemExtraInfo(bankpos, false, ItemList[i].item_data); } else { pItem = ObjectSystem.Instance.NewItem(ItemList[i].item_guid); if (pItem == null) { throw new NullReferenceException("Bank Item Create failed:" + ItemList[i].item_data.m_ItemIndex); } CDataPool.Instance.UserBank_SetItem(bankpos, pItem, true); } pItem.PosIndex = (short)bankpos; pItem.SetNumber(ItemList[i].byNumber); } CActionSystem.Instance.UserBank_Update(); int nBankNpcId = CDataPool.Instance.UserBank_GetNpcId(); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_TOGLE_BANK, nBankNpcId); UIWindowMng.Instance.GetWindow("StoreWindow"); } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
public void SetItem(int nEquiptIndex, CObject_Item pItem, bool bClearOld, bool bNew) { if (nEquiptIndex < 0 || nEquiptIndex >= MAX_TALISMAN_EQUIPT_NUMBER) { return; } //销毁原有数据 if (mItems[nEquiptIndex] != null && bClearOld) { ObjectSystem.Instance.DestroyItem(mItems[nEquiptIndex]); mItems[nEquiptIndex] = null; } if (pItem != null) { pItem.TypeOwner = ITEM_OWNER.IO_TALISMAN_EQUIPT; pItem.PosIndex = (short)nEquiptIndex; CObject_Item pItemLog = mItems[nEquiptIndex]; if (pItemLog != null) { pItemLog.ItemSaveStatus = SAVE_ITEM_STATUS.NO_MORE_INFO; } } mItems[nEquiptIndex] = pItem as CTalisman_Item; }
void UpdateBagByIndex(int index) { int nIndex = index - currTab * MAX_PERPACKET; CObject_Item packItem = CDataPool.Instance.UserBag_GetItemByIndex(index); if (nIndex < 0 || nIndex >= buttons.Count) { LogManager.LogError("packet index is invalid index=" + nIndex); return; } if (packItem != null) { buttons[nIndex].SetActionItem(packItem.GetID()); if (packItem.isLocked) { buttons[nIndex].Disable(); } else { buttons[nIndex].Enable(); } } else { buttons[nIndex].SetActionItem(-1); } }
// // 强化需求 [7/19/2011 ivan edit] //public Item_Enhance Get_Equip_EnhanceLevel( int nIndexPacket) public Item_Enhance Get_Equip_EnhanceLevel(CObject_Item My_Equip) { Item_Enhance itemEnhance = new Item_Enhance(); if (My_Equip == null || My_Equip.GetItemClass() != ITEM_CLASS.ICLASS_EQUIP) { return(itemEnhance); } CObject_Item_Equip equip = My_Equip as CObject_Item_Equip; if (equip == null) { return(itemEnhance); } int enhanceID = equip.GetStrengthIndex(); _DBC_ITEM_ENHANCE pItemEnhance = ObjectSystem.EquipEnchanceDBC.Search_Index_EQU((int)enhanceID); if (pItemEnhance == null) { return(itemEnhance); } _DBC_ITEM_ENCHANCE_RATE pItemEnchanceRate = ObjectSystem.EquipEnchanceRateDBC.Search_Index_EQU(equip.GetCurrentDangCi()); float fRatio = pItemEnchanceRate.nDangCiRatio / 100.0f; pItemEnchanceRate = ObjectSystem.EquipEnchanceRateDBC.Search_Index_EQU((int)equip.GetItemType()); fRatio *= pItemEnchanceRate.nEquipPointRatio / 100.0f; itemEnhance.needMoney = (int)(fRatio * pItemEnhance.needMoney + 0.5f); itemEnhance.addProperty = pItemEnhance.attribute[0];// 因为增加属性的百分比都一样,所以只获取一个就够了[7/19/2011 ivan edit] return(itemEnhance); }
// 把装备栏某位置的物品置灰 [7/15/2011 ivan edit] public void Lock_Equip_Item(int nIndex, bool isLock) { if (nIndex >= 0) { CObject_Item pObj = CDataPool.Instance.UserEquip_GetItem((HUMAN_EQUIP)nIndex); if (pObj != null) { // 设置装备栏物品状态,是否锁定 [7/15/2011 ivan edit] CActionItem_Item pItemAction = CActionSystem.Instance.GetAction_ItemID(pObj.GetID()); if (isLock) { pObj.SetLock(true); if (pItemAction != null) { pItemAction.Disable(); } } else { pObj.SetLock(false); if (pItemAction != null) { pItemAction.Enable(); } } } } }
//设置装备 public void SetItem(short ptEquip, CObject_Item item, bool bClearOld) { if (ptEquip < 0 || ptEquip >= (int)HUMAN_EQUIP.HEQUIP_NUMBER) { return; } if (mPlayerEquip[ptEquip] != null && bClearOld) { ObjectSystem.Instance.DestroyItem(mPlayerEquip[ptEquip]); } if (item != null) { HUMAN_EQUIP pointEquip = ((CObject_Item_Equip)item).GetItemType(); if (pointEquip != (HUMAN_EQUIP)ptEquip) { return; } // 设置所属 item.TypeOwner = ITEM_OWNER.IO_MYSELF_EQUIP; // 设置装备在action item 中的位置. item.PosIndex = ptEquip; mPlayerEquip[ptEquip] = item; } else { // 在装备点清空数据 mPlayerEquip[ptEquip] = null; } }
//镶嵌 public void OnEnchaseBtnClicked() { CObject_Item_Equip equipTarget = mSelectedItem as CObject_Item_Equip; if (equipTarget != null) { short[] gemIndexs = new short[GAMEDEFINE.MAX_ITEM_GEM]; for (int i = 0; i < mEnchanseGemInfo.Length; i++) { if (mEnchanseGemInfo[i].bFlag == 0) { gemIndexs[i] = -2; } else if (mEnchanseGemInfo[i].bFlag == 2) { gemIndexs[i] = -1; } else if (mEnchanseGemInfo[i].bFlag == 1) { CObject_Item gem = CDataPool.Instance.UserBag_GetItemById(mEnchanseGemInfo[i].nGemType); if (gem != null) { gemIndexs[i] = gem.PosIndex; } else { gemIndexs[i] = -2; } } } LifeAbility.Instance.setOperaterRole((int)mCurrentRoleType); LifeAbility.Instance.Do_Enchase(equipTarget, gemIndexs); } }
public void setOperatorTarget(CObject_Item item) { if (CurrentOperator != null) { CurrentOperator.setItem(item); } }
public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer) { if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain) { GCShopSoldList packet = pPacket as GCShopSoldList; int nNum = packet.MerchadiseNum; if (nNum == 0) {//空的没东西 if (CDataPool.Instance.Booth_GetSoldNumber() != 0) { CDataPool.Instance.Booth_Sold_Clear(); } } else { //清空原有商品列表 CDataPool.Instance.Booth_Sold_Clear(); //CSoundSystemFMod::_PlayUISoundFunc(25+59); //添加到数据池中 for (short i = 0; i < nNum; i++) { GCShopSoldList._MERCHANDISE_ITEM pNewItem = packet.MerchadiseList[i]; CObject_Item pItem = null; pItem = ObjectSystem.Instance.NewItem(pNewItem.item_data.m_ItemIndex); pItem.SetGUID( (ushort)pNewItem.item_data.m_ItemGUID.m_World, (ushort)pNewItem.item_data.m_ItemGUID.m_Server, (uint)pNewItem.item_data.m_ItemGUID.m_Serial); pItem.SetExtraInfo(ref pNewItem.item_data); //设置该物品在货架上的位置因为是回购物品它的位置应该是200 pItem.PosIndex = i; //AxTrace(0,0,"pItem->SetPosIndex = %d",i); //设置该物品的数量(每一组的数量) pItem.SetNumber(pNewItem.item_data.GetItemCount()); //回购物品当然只有一个 pItem.SetMax(1); //加入数据池 CDataPool.Instance.Booth_SetSoldItem(i, pItem); CDataPool.Instance.Booth_SetSoldPrice(i, pNewItem.iPrice); } //设置回购商品的数量 CDataPool.Instance.Booth_SetSoldNumber(nNum); } //更新到ActionSystem CActionSystem.Instance.Booth_Update(); //通知UI CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_BOOTH); } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
public override void DestroyImpl() { if (ItemImpl != null) { ObjectSystem.Instance.DestroyItem(ItemImpl); } ItemImpl = null; }
//测试强化功能 public void testStrengthen(CObject_Item item) { CompoundInstance.setOperator(EquipStrengthenOp.Name); // CObject_Item item = CDataPool.Instance.UserBag_GetItemByIndex(2); CompoundInstance.setOperatorTarget(item); CompoundInstance.beginOperation(); }
public bool IsCanBuy(CObject_Item pItem) { if (pItem == null) { return(false); } return(true); }
public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer) { if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain) { GCUnEquipResult packet = (GCUnEquipResult)pPacket; UnEquipResultCode ret = (UnEquipResultCode)packet.Result; switch (ret) { case UnEquipResultCode.UNEQUIP_SUCCESS: { //--------------------------------------------------- //数据池 CObject_Item pItem = CDataPool.Instance.UserEquip_GetItem((HUMAN_EQUIP)packet.EquipPoint); if (pItem == null) { return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); } // 改变物品的id, 以便更新新的action 按钮 ObjectSystem.Instance.ChangeItemClientID(pItem); CDataPool.Instance.UserBag_SetItem((short)packet.BagIndex, pItem, true, false); CDataPool.Instance.UserEquip_SetItem((HUMAN_EQUIP)packet.EquipPoint, null, false); //--------------------------------------------------- //逻辑层 CObjectManager.Instance.getPlayerMySelf().UnEquipItem((HUMAN_EQUIP)packet.EquipPoint); //--------------------------------------- //刷新角色属性 CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Set_Equip( (HUMAN_EQUIP)packet.EquipPoint, -1); // 更新主角身上的装备到ActionSystem CActionSystem.Instance.UserEquip_Update(); CActionSystem.Instance.UserBag_Update(); // 通知界面事件 CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_EQUIP); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_ITEM_CHANGED); } break; case UnEquipResultCode.UNEQUIP_BAG_FULL: CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "背包已满"); break; case UnEquipResultCode.UNEQUIP_HAS_ITEM: CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "该位置已经有物品"); break; default: break; } } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
public override void setItem(CObject_Item item) { mEquip = item as CObject_Item_Equip; if (mEquip == null) { throw new Exception("The item must be equip!"); } mPrescrId = getPrescrID(mEquip.GetIdTable()); }
public override string GetDesc() { CObject_Item pItem = (CObject_Item)GetImpl(); if (pItem == null) { return(""); } return(pItem.GetDesc()); }
public override int GetIDTable() { CObject_Item pItem = GetImpl() as CObject_Item; if (pItem != null) { return(pItem.GetIdTable()); } return(-1); }
public int GetStrengthLevel() { CObject_Item pItem = GetImpl() as CObject_Item; if (pItem != null) { return(pItem.GetStrengthLevel()); } return(-1); }
public CObject_Item FindItem(int id) { CObject_Item item = null; if (allItems.TryGetValue(id, out item)) { return(item); } return(null); }
void HideLevelUpEquiptButton(CObject_Item item, UIButton levelupButton) { bool hide = true; if (item != null) { hide = !CanLevelUpEquipt(item.GetIdTable()); } levelupButton.Hide(hide); }
public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer) { if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain) { GCBankAddItem packet = pPacket as GCBankAddItem; if (packet.FromType == (byte)GCBankAddItem.PosType.EQUIP_POS) { } else if (packet.FromType == (byte)GCBankAddItem.PosType.BAG_POS) { CObject_Item pItemFrom = CDataPool.Instance.UserBag_GetItemByIndex(packet.IndexFrom); CObject_Item pItemTo = CDataPool.Instance.UserBank_GetItem(packet.IndexTo); switch ((GCBankAddItem.OperateType)packet.Operatetype) { case GCBankAddItem.OperateType.OPERATE_MOVE: // 移动到空格 { CDataPool.Instance.UserBank_SetItem(packet.IndexTo, pItemFrom, true); CDataPool.Instance.UserBag_SetItem(packet.IndexFrom, null, false, false); } break; case GCBankAddItem.OperateType.OPERATE_SPLICE: // 合并 { //CDataPool::GetMe()->UserBank_SetItem(indexTo, pItemFrom); //CDataPool::GetMe()->UserBag_SetItem(indexFrom, NULL, FALSE); } break; case GCBankAddItem.OperateType.OPERATE_SWAP: // 交换 { CDataPool.Instance.UserBank_SetItem(packet.IndexTo, pItemFrom, false); CDataPool.Instance.UserBag_SetItem(packet.IndexFrom, pItemTo, false, false); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_GET_NEWEQUIP, pItemTo.GetID()); } break; default: break; } CActionSystem.Instance.UserBank_Update(); CActionSystem.Instance.UserBag_Update(); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "物品存入银行成功"); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_ITEM_CHANGED); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_BANK); } else if (packet.FromType == (byte)GCBankAddItem.PosType.ERROR_POS) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "物品存入银行失败"); } } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
void ClearAllSelectItem() { ClearAllGemMat(); ClearEnchanseSelected(); ClearEnchanseMat(); if (mSelectedItem != null) { mSelectedItem.isLocked = false; mSelectedItem = null; } }
//----------------------------------------------------------- // 从货架上头购买一个物品 internal void Booth_BuyItem(CObject_Item pItem) { CGShopBuy msg = new CGShopBuy(); // 先判断是否够钱买 msg.UniqueID = CDataPool.Instance.Booth_GetShopUniqueId(); msg.Index = (byte)pItem.PosIndex; NetManager.GetNetManager().SendPacket(msg); }
// // 获取装备点 [7/14/2011 ivan edit] // INT Get_Equip_Point(INT nIndexPacket); public int Get_Equip_Point(CObject_Item My_Equip) { if (My_Equip == null || My_Equip.GetItemClass() != ITEM_CLASS.ICLASS_EQUIP) { return(-1); } HUMAN_EQUIP equipType = ((CObject_Item_Equip)My_Equip).GetItemType(); return((int)equipType); }
void UpdatePetEquiptActionButton(CObject_Item item, ActionButton btn) { if (item != null) { btn.UpdateItem(item.GetID()); } else { btn.UpdateItem(-1); } }
// ////////////////////////////////////////////////////////////////////////// // // 装备品级 [9/19/2011 edit by ZL] // INT Get_Equip_Quality(INT nIndexPacket); // // 装备品级值 [9/19/2011 edit by ZL] // INT Get_Equip_Quality_Value(INT nIndexPacket); // // 装备升品需要的品级值 [9/21/2011 edit by ZL] // INT Get_Equip_NextQuality_Value(INT nIndexPacket); // // 材料提升的品级值 [9/19/2011 edit by ZL] // INT Get_Equip_Upate_Quality_Value(INT nIndexPacket); // // 增加的品级值提升的基础属性 [9/19/2011 edit by ZL] // INT Get_Equip_Upate_Property_Value(INT nIndexPacket, INT Quality); // // 装备升品需要的金钱 [9/19/2011 edit by ZL] // INT Get_Equip_Upate_Money(INT Quality); // // 装备升品 [9/19/2011 edit by ZL] // INT Equip_Quality_Upate(INT epos, INT mpos1, INT mpos2, INT mpos3, INT mpos4, INT mpos5, INT mpos6, INT mpos7, INT mpos8, INT mpos9, INT mpos10); // ////////////////////////////////////////////////////////////////////////// // // 装备的档次 [9/22/2011 edit by ZL] // INT Get_Equip_DangCi(INT nIndexPacket); // ////////////////////////////////////////////////////////////////////////// // 把物品栏某位置的物品置灰。 public void Lock_Packet_Item(int nIndex, bool isLock) { if (nIndex >= 0) { CObject_Item pObj = CDataPool.Instance.UserBag_GetItem(nIndex); if (pObj != null) { pObj.SetLock(isLock); } } }