Bvural41 1
Bvural41
Fethi Polat 1
Fethi Polat
Mt2Hizmet 1
Mt2Hizmet
Sevdamsın 1
Sevdamsın
Nedved35 1
Nedved35
Hikaye Ekle

Mob Drop Simulation

  • Konuyu başlatan Konuyu başlatan Larry Watterson
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 16
  • Görüntüleme Görüntüleme 3K
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hata alanlar için :

[CODE lang="cpp" title="cmd_general.cpp"]#include <unordered_map>
##include<vector>

struct DropItem
{
char szName[ITEM_NAME_MAX_LEN + 1];
DWORD count;
};

ACMD(do_drop)
{
if (!ch || !ch->GetDesc()) { return; }

char arg1[256], arg2[256];
two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

if (!*arg1 || !*arg2)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Syntax: drop_simul <mob vnum> <count>");
return;
}

DWORD vnum = 0;
str_to_number(vnum, arg1);
DWORD loopCount = 0;
str_to_number(loopCount, arg2);
std::unordered_map<DWORD, long long> wGivenItems;

// Spawn mob to simulate drops
LPCHARACTER pkAttacker = CHARACTER_MANAGER::instance().SpawnMobRandomPosition(vnum, ch->GetMapIndex());
if (!pkAttacker)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Failed to spawn mob.");
return;
}

static std::vector<LPITEM> s_vec_item;
s_vec_item.clear();

for (DWORD oCount = 0; oCount < loopCount; oCount++)
{
s_vec_item.clear();
if (ITEM_MANAGER::instance().CreateDropItem(pkAttacker, ch, s_vec_item))
{
for (LPITEM item : s_vec_item)
{
if (!item)
{
sys_err("item null in vector");
continue;
}

long long llCount = wGivenItems[item->GetVnum()] + item->GetCount();
wGivenItems[item->GetVnum()] = llCount;

sys_log(0, "DROP_ITEM_SIMULATE: %s by %s", item->GetName(), ch->GetName());
}
}
}

ch->ChatPacket(CHAT_TYPE_PARTY, "############### |cFF6d8cf2|H|h%dx %s|h|r DROP SIMULATION ###############", loopCount, pkAttacker->GetName());

for (const auto& info : wGivenItems)
{
DWORD dwItemVnum = info.first;
int llItemCount = info.second;

LPITEM pItem = ITEM_MANAGER::instance().CreateItem(dwItemVnum, llItemCount, 0, true);
if (pItem)
{
ch->ChatPacket(CHAT_TYPE_PARTY, "Simulated item |cFFf5ef78|H|h%s|h|r, %d pieces", pItem->GetName(), llItemCount);
M2_DESTROY_ITEM(pItem);
}
}

M2_DESTROY_CHARACTER(pkAttacker); // Cleanup the spawned character
}[/CODE]
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

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

Geri
Üst