mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Mt2Hizmet 1
Mt2Hizmet
berkmenoo 1
berkmenoo
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
cemalggevenc 1
cemalggevenc
Bvural41 1
Bvural41
yarka0000 1
yarka0000
Hikaye Ekle

AutoGiveItem Boş Envanter Kontrolü

  • Konuyu başlatan Konuyu başlatan nyami
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 20
  • Görüntüleme Görüntüleme 3K
5.00 yıldız(lar) 2 Değerlendirme Değerlendirenler

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

AutoGiveItem Boş Envanter Kontrolü


[CODE lang="cpp" title="common/service.h"]#define ENABLE_AUTOGIVEITEM_CELL_CHECK // AutoGiveItim Bos Envanter Kontrol[/CODE]


[CODE lang="cpp" title="char_item.cpp"]//Arat
LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool bMsg)
{
TItemTable* p = ITEM_MANAGER::instance().GetTable(dwItemVnum);

if (!p)
return NULL;

//Altına Ekle
#ifdef ENABLE_AUTOGIVEITEM_CELL_CHECK
LPITEM itemCheck = ITEM_MANAGER::instance().CreateItem(dwItemVnum, bCount, 0, true, -1, true);
if (itemCheck)
{
int iEmptyCell = -1;
if (p->bType == ITEM_DS)
iEmptyCell = GetEmptyDragonSoulInventory(itemCheck);
#ifdef ENABLE_SPECIAL_STORAGE
else if (IsUpgradeItem(dwItemVnum))
iEmptyCell = GetEmptyUpgradeInventory(itemCheck);
else if (IsStoneSpecial(dwItemVnum, p->bType))
iEmptyCell = GetEmptyStoneInventory(itemCheck);
else if (ITEM_SKILLBOOK == p->bType)
iEmptyCell = GetEmptyBookInventory(itemCheck);
else if (IsFlowerItem(dwItemVnum))
iEmptyCell = GetEmptyFlowerInventory(itemCheck);
else if (IsAttrSpecial(dwItemVnum))
iEmptyCell = GetEmptyAttrInventory(itemCheck);
else if (IsChestItem(dwItemVnum))
iEmptyCell = GetEmptyChestInventory(itemCheck);
#endif
else
iEmptyCell = GetEmptyInventory(p->bSize);

if (iEmptyCell == -1)
{
if (bMsg)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Envanterinde yer yok autogiveitem!"));
return NULL;
}
}
#endif[/CODE]
 

En Çok Reaksiyon Alan Mesajlar

Memoryleak var. Envanter dolu hatasından sonra oluşturduğunuz itemi silmenizi gerek. return NULL; bunun üstüne
delete itemCheck;
veya
M2_DESTROY_ITEM(itemCheck);
Eklediğinizde çözülecektir.
Paylaşım için teşekkürler.

Bu düzenleme envanteriniz doluyken yere item düşmesini engelleyecek fakat bu şekilde kullanıldığında daha büyük sıkıntılara yol açacaktır.

Örneğin envanter doluyken cube yaptığınızda dönüşüm eşyaları gidecek ama dönüştürdüğünüz eşya envanterinize gelmeyecek.

Biyolog yaptığınızda envanteriniz doluysa biyolog sandığı envanterinize gelmeyecek.

bu ve bunlara benzer hatalarla karşılaşabilirsiniz.
Paylaşım için teşekkürler.

Bu düzenleme envanteriniz doluyken yere item düşmesini engelleyecek fakat bu şekilde kullanıldığında daha büyük sıkıntılara yol açacaktır.

Örneğin envanter doluyken cube yaptığınızda dönüşüm eşyaları gidecek ama dönüştürdüğünüz eşya envanterinize gelmeyecek.

Biyolog yaptığınızda envanteriniz doluysa biyolog sandığı envanterinize gelmeyecek.

bu ve bunlara benzer hatalarla karşılaşabilirsiniz.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst