Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
romegames 1
romegames
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Best Studio 1
Best Studio
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
InfernoShade 1
InfernoShade
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

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

nyami

!𝓩𝓮𝓡𝓸
TM Üye
Katılım
22 Tem 2016
Konular
75
Mesajlar
1,406
Çözüm
65
Online süresi
2mo 18d
Reaksiyon Skoru
1,223
Altın Konu
0
TM Yaşı
9 Yıl 10 Ay 26 Gün
Başarım Puanı
234
MmoLira
5,714
DevLira
51
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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