Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
cacaa

Party Drop Sıkıntısı

Önerilen Mesajlar

Merhabalar arkadaşlar ufak bir sorunum var.
Party içerisinde bulunan adama townda dahi olsa kutudan item aldığında gidiyor.
Bu mesafe olayını nasıl ayarlayabiliriz?

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

Merhabalar arkadaşlar ufak bir sorunum var.
Party içerisinde bulunan adama townda dahi olsa kutudan item aldığında gidiyor.
Bu mesafe olayını nasıl ayarlayabiliriz?

 


CUser::GetLootUser fonksiyonuna mesafe kontrolünü ekleyebilirsin. Düşen kutunun koordinatları _LOOT_BUNDLE içerisine aktarılıyor.

 

 


struct _LOOT_BUNDLE
{
	uint32 nBundleID;
	std::vector<_LOOT_ITEM> Items;
	float x, z, y;// kutunun düştüğü konum
	time_t tDropTime;
};



Fonksiyonun imzası şu şekilde;

 

 

 

CUser * CUser::GetLootUser(_LOOT_BUNDLE * pBundle, _LOOT_ITEM * pItem)

 



İlerleyen kısımlarda isInParty ile başlayan kısıma şöyle bir düzeltme yapabilirsin;

 

 

 

 

// If we're dealing with items:
	//	- if we're in a party: 
	//		distribute the item to the next player in the party in round-robin fashion, 
	//		whilst ensuring that user can actually hold the item.
	//  - if not in a party: 
	//		simply ensure that we can hold the item.
	if (isInParty())
	{

         for(int i = 0; i < 8; i++){
         auto pMember = GetItemRoutingUser(pItem->nItemID, pItem->sCount);
         if(pMember == nullptr || !pMember->isInRange(pBundle->x, pBundle->z, RANGE_50M))
               continue;
		// This ensures the user can hold the item.
		return pMember;
         }
         return nullptr; // herkes uzakta, veya yakında olanların envanterleri dolu.
	}




 



Yukarıdaki kodu kafadan taslak olarak yazdım, daha optimize bir şekilde yazılabilir.
Buradaki GetItemRoutingUser, partideki sıradan çekilen, eşyanın gideceği kullanıcı.

Kolay gelsin.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...