bikral 1
bikral
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Bvural41 1
Bvural41
ShadowFon 1
ShadowFon
mavzermete 1
mavzermete
YazilimMühendisi 1
YazilimMühendisi
Fethi Polat 1
Fethi Polat
InfernoShade 1
InfernoShade
Hikaye Ekle

Cevaplandı Toplu Sandık

  • Konuyu başlatan Konuyu başlatan Value3
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 17
  • Görüntüleme Görüntüleme 1K

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Toplu sandık açma 50'li açıyor onun Sayısını Nasıl çoğaltabilirim ? aradım da tam bulamadım
Screenshot_1.png
 
Çözüm
PCT_COUNT_MULTIPLIER şu ismi input_main.cpp de aratır mısın karşısında 4 mü yazıyor

#define PCT_COUNT_MULTIPLIER 4 bu şekilde. eğer input mainde yoksa commondefines'e ba orada yok ise lenght.h'ye bak orada yoksa sourcenizin bi yerinde bakın mutlak bir yerde olması gerek. Bu bi yerde tanımlanmış olması gerek illa #define PCT_COUNT_MULTIPLIER olarak da tanımlanmasına gerek yok. bi dosyada tanımlanmış onu bulun karşısında 4 mü yazıyor. eğer 4 yazıyor ise 200/ 4 = 50
eğer sandığınızın toplu olarak kaç adet açılmasını istiyorsanız mesela 100 sandık açılsın istiyorsanız:

4 sayısını 2 yapın 200 olsun istiyorsanız 1 yapın.
Eğer fonksiyonunuzu benimle paylaşabilirseniz size daha iyi yardımcı olabilirim. İsterseniz buradan isterseniz özelden fonksyionunuzu gönderin.

Fonksyion İsmi: void CInputMain::InstantChestOpen

Bu fonksyionu başlangıcından bitişine kadar gönderin.
 
[CODE title="İSTEK"]void CInputMain::InstantChestOpen(LPCHARACTER ch, const char* c_pData) {
if (!ch || !ch->GetDesc()) { return; }
TInstantChestOpen * nPacket = (TInstantChestOpen*)c_pData;

LPITEM chestItem = NULL;
if (chestItem = ch->GetItem(nPacket->iPos))
{
const CSpecialItemGroup * pGroup = ITEM_MANAGER::Instance().GetSpecialItemGroup(chestItem->GetVnum());
if (chestItem->GetType() == ITEM_GIFTBOX || (chestItem->GetVnum() == 27987) || pGroup)
{
#ifdef BLOCK_IN_CITIES
if (ch->GetMapIndex() == 41 || ch->GetMapIndex() == 21 || ch->GetMapIndex() == 1)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("KOYLERDE_SANDIK"));
return;
}
#endif
for (BYTE i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
{
long limitValue = chestItem->GetProto()->aLimits.lValue;
switch (chestItem->GetProto()->aLimits.bType)
{
case LIMIT_LEVEL:
if (ch->GetLevel() < limitValue)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¾ÆAIAUAC ·¹º§ A|CNº¸´U ·¹º§AI ³·½A´I´U."));
return;
}
break;
}
}
std::map<DWORD, TChestItem> map_Items;
map_Items.clear();
WORD openCount = chestItem->GetCount() < MAX_OPEN_COUNT ? chestItem->GetCount() : MAX_OPEN_COUNT;
const WORD pctOpenCount = MAX_OPEN_COUNT / PCT_COUNT_MULTIPLIER;
if(pGroup){
if (pGroup->GetOpenType() == CSpecialItemGroup::PCT){ openCount = chestItem->GetCount() < pctOpenCount ? chestItem->GetCount() : pctOpenCount; }
}
bool isAddedToMap = chestItem->GetType() == ITEM_GIFTBOX;

for (WORD i = 0; i < openCount; i++) {
if (isAddedToMap) {
DWORD dwBoxVnum = chestItem->GetVnum();
std::vector<DWORD> dwVnums;
std::vector<DWORD> dwCounts;
std::vector<LPITEM> item_gets;
item_gets.clear();
int count = 0;
if (ch->GiveItemFromSpecialItemGroup(dwBoxVnum, dwVnums, dwCounts, item_gets, count)) {
chestItem->SetCount(chestItem->GetCount() - 1);
for (int i = 0; i < count; i++) {
switch (dwVnums)
{
case CSpecialItemGroup::GOLD:
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d_1"), dwCounts);
break;
case CSpecialItemGroup::EXP:
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_1"));
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d_2"), dwCounts);
break;
case CSpecialItemGroup::MOB:
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_2"));
break;
case CSpecialItemGroup::SLOW:
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_3"));
break;
case CSpecialItemGroup::DRAIN_HP:
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_4"));
break;
case CSpecialItemGroup::POISON:
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_5"));
break;
case CSpecialItemGroup::MOB_GROUP:
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_6"));
break;
default:
break;

}

TChestItem cItem;
cItem.itemCount = dwCounts;
strlcpy(cItem.szName, item_gets->GetName(), sizeof(cItem.szName));
//snprintf(cItem.szName, sizeof(cItem.szName), item_gets->GetName());

std::map<DWORD, TChestItem>::iterator it = map_Items.find(item_gets->GetVnum());
if (it == map_Items.end()) {
map_Items.insert(std::map<DWORD, TChestItem>::value_type(item_gets->GetVnum(), cItem));
}
else {
it->second.itemCount = it->second.itemCount + cItem.itemCount;
}
#ifdef STOP_IF_ITEM_DROPPED_TO_GROUND
if (item_gets->GetWindow() == GROUND) { return; }
#endif
}
}
else
{
ch->ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("a_a_a_a"));
return;
}
}
else {
if (!ch->UseItemEx(chestItem, NPOS)) { break; }
}
}

if (isAddedToMap)
{
if (map_Items.size() > 0)
{
for (std::map<DWORD, TChestItem>::iterator it = map_Items.begin(); it != map_Items.end(); ++it)
{
if (it->second.itemCount > 1)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s_%d_"), it->second.szName, it->second.itemCount);
}
// else
// {
// ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("_%s_"), it->second.szName);
// }
}
}
}
}
}
}
[/CODE]
 
PCT_COUNT_MULTIPLIER şu ismi input_main.cpp de aratır mısın karşısında 4 mü yazıyor

#define PCT_COUNT_MULTIPLIER 4 bu şekilde. eğer input mainde yoksa commondefines'e ba orada yok ise lenght.h'ye bak orada yoksa sourcenizin bi yerinde bakın mutlak bir yerde olması gerek. Bu bi yerde tanımlanmış olması gerek illa #define PCT_COUNT_MULTIPLIER olarak da tanımlanmasına gerek yok. bi dosyada tanımlanmış onu bulun karşısında 4 mü yazıyor. eğer 4 yazıyor ise 200/ 4 = 50
eğer sandığınızın toplu olarak kaç adet açılmasını istiyorsanız mesela 100 sandık açılsın istiyorsanız:

4 sayısını 2 yapın 200 olsun istiyorsanız 1 yapın.
 
Çözüm

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

Geri
Üst