Jump to content

Recommended Posts

Hello

I have a few problems with the item swap system.

1.  2017-12-28_00-02-28.gif.5481a895265231d68b5691356e03106c.gif He moves badly.

2. 2017-12-28_00-04-12.gif.511671ce2eb94b9c0175cf90b3a12068.gif It transfers 2 items.

3.2017-12-28_01-39-42.gif.10ed019dcc5f8729f88c60e4763316c7.gif  Red Color when moving.

4.2017-12-28_01-43-11.gif.9eece11105aab581a8752b7c1a3453a5.gif Fake animation.

5.2017-12-28_01-44-41.gif.ebdd5f61cbda37b204e0be1cb0480a04.gif The fish enter the fishing rod.

#ifndef __SWAPITEM_SYSTEM__
			return false;
#else
		{
			if (Cell.IsEquipPosition() || DestCell.IsEquipPosition())
				return false;
			
			if (item->GetType() == ITEM_ARMOR or item->GetType() == ITEM_WEAPON or item->GetType() == ITEM_COSTUME)
			{
				LPITEM itemSrc = GetInventoryItem(Cell.cell);
				LPITEM itemDest = GetInventoryItem(DestCell.cell);
				if (itemSrc == NULL || itemDest == NULL)
					return false;
				
				int itemSrcSize = itemSrc->GetSize();
				int itemDestSize = itemDest->GetSize();
				if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen() || IsAcceOpen())
					return false;
				
#ifdef __OFFLINE_SHOP_SYSTEM__
				if (GetOfflineShop())
					return false;
#endif
				
#ifdef __ATTR_TRANSFER_SYSTEM__
				if (IsAttrTransferOpen())
					return false;
#endif
				
				if (itemSrc->isLocked() || itemDest->isLocked())
					return false;
				else if (itemDestSize > itemSrcSize)
					return false;
				else if (itemSrcSize == itemDestSize)
				{
					itemSrc->RemoveFromCharacter();
					itemDest->RemoveFromCharacter();
					SetItem(Cell, itemDest);
					SetItem(DestCell, itemSrc);
				}
				else if (itemSrcSize > itemDestSize)
				{
#ifdef __4_INVENTORY_PAGES__
					if (itemDestSize == 1 && itemDest->GetCell() >= 40 && itemDest->GetCell() < 45 || itemDestSize == 1 && itemDest->GetCell() >= 85 && itemDest->GetCell() < 90 || itemDestSize == 1 && itemDest->GetCell() >= 130 && itemDest->GetCell() < 135 || itemDestSize == 1 && itemDest->GetCell() >= 175 && itemDest->GetCell() < 180)
#else
					if (itemDestSize == 1 && itemDest->GetCell() >= 40 && itemDest->GetCell() < 45 || itemDestSize == 1 && itemDest->GetCell() >= 85 && itemDest->GetCell() < 90)
#endif
						return false;
					
#ifdef __4_INVENTORY_PAGES__
					if (itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 35 && itemDest->GetCell() < 40 || itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 80 && itemDest->GetCell() < 85 || itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 125 && itemDest->GetCell() < 130 || itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 170 && itemDest->GetCell() < 175)
#else
					if (itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 35 && itemDest->GetCell() < 40 || itemDestSize == 1 && itemSrcSize == 3 && itemDest->GetCell() >= 80 && itemDest->GetCell() < 85)
#endif
						return false;
					
#ifdef __4_INVENTORY_PAGES__
					if (itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 35 && itemDest->GetCell() < 40 || itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 80 && itemDest->GetCell() < 85 || itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 125 && itemDest->GetCell() < 130 || itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 170 && itemDest->GetCell() < 175)
#else
					if (itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 35 && itemDest->GetCell() < 40 || itemDestSize == 2 && itemSrcSize == 3 && itemDest->GetCell() >= 80 && itemDest->GetCell() < 85)
#endif
						return false;
					
					bool move_ = SwapItem(item->GetCell(), item2->GetCell());
					if (!move_)
						return false;
					
					BYTE bCell = Cell.cell;
					BYTE bDestCell = DestCell.cell;
					if (itemSrcSize == 2 && itemDestSize == 1)
					{
						bCell = bCell + 5;
						bDestCell = bDestCell + 5;
						LPITEM itemCheck = GetInventoryItem(bDestCell);
						if (itemCheck != NULL)
						{
							if (itemCheck->GetSize() != 1 || itemCheck->isLocked())
							{
								SwapItem(item2->GetCell(), item->GetCell());
								return false;
							}
							
							itemCheck->RemoveFromCharacter();
							SetItem(TItemPos(INVENTORY, bCell), itemCheck);
						}
					}
					else if (itemSrcSize == 3)
					{
						if (itemDestSize == 2)
						{
							bCell = bCell + 10;
							bDestCell = bDestCell + 10;
							LPITEM itemCheck = GetInventoryItem(bDestCell);
							if (itemCheck != NULL)
							{
								if (itemCheck->GetSize() != 1 || itemCheck->isLocked())
								{
									SwapItem(item2->GetCell(), item->GetCell());
									return false;
								}
								
								itemCheck->RemoveFromCharacter();
								SetItem(TItemPos(INVENTORY, bCell), itemCheck);
							}
						}
						else
						{
							bCell = bCell + 5;
							bDestCell = bDestCell + 5;
							LPITEM itemCheck = GetInventoryItem(bDestCell);
							if (itemCheck == NULL)
							{
								bCell = bCell + 5;
								bDestCell = bDestCell + 5;
								LPITEM itemCheckTwo = GetInventoryItem(bDestCell);
								if (itemCheckTwo != NULL)
								{
									if (itemCheckTwo->GetSize() != 1 || itemCheckTwo->isLocked())
									{
										SwapItem(item2->GetCell(), item->GetCell());
										return false;
									}
									
									itemCheckTwo->RemoveFromCharacter();
									SetItem(TItemPos(INVENTORY, bCell), itemCheckTwo);
								}
							}
							else
							{
								if (itemCheck->GetSize() == 3 || itemCheck->isLocked())
								{
									SwapItem(item2->GetCell(), item->GetCell());
									return false;
								}
								
								if (itemCheck->GetSize() == 1)
								{
									bCell = bCell + 5;
									bDestCell = bDestCell + 5;
									BYTE bCellOld = bCell - 5;
									LPITEM itemCheckThree = GetInventoryItem(bDestCell);
									if (itemCheckThree != NULL)
									{
										if (itemCheckThree->GetSize() != 1 || itemCheckThree->isLocked())
										{
											SwapItem(item2->GetCell(), item->GetCell());
											return false;
										}
										
										itemCheck->RemoveFromCharacter();
										SetItem(TItemPos(INVENTORY, bCellOld), itemCheck);
										itemCheckThree->RemoveFromCharacter();
										SetItem(TItemPos(INVENTORY, bCell), itemCheckThree);
									}
									else
									{
										itemCheck->RemoveFromCharacter();
										SetItem(TItemPos(INVENTORY, bCellOld), itemCheck);
									}
								}
								else
								{
									itemCheck->RemoveFromCharacter();
									SetItem(TItemPos(INVENTORY, bCell), itemCheck);
								}
							}
						}
					}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			}
			else
			{
				return false;
			}
		}
#endif

I'm sorry for my poor English.

Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Similar Content

  • Activity

    1. 5

      Effect weapons

    2. 3

      Crystal Metinstone

    3. 3

      Feeding game source to LLM

    4. 113

      Ulthar SF V2 (TMP4 Base)

    5. 3

      Feeding game source to LLM

    6. 0

      Target Information System

    7. 3

      Feeding game source to LLM

    8. 2

      anti exp explanation pls

  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.