Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
B 1
berione65
sen272 1
sen272
Mt2Hizmet 1
Mt2Hizmet
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

[C++] Mob Drop Komut ile eşya düşürme / Simüle Etme 2025-06-05

indirmek için izniniz yok
📌 Sistemin Çalışma Mantığı

Tek tek yaratıkları veya metin taşlarını öldürmeden doğrudan onların düşürmesi gereken eşyaları almanı sağlar.
Gerçek oyun mekanikleriyle çalışır, yani görevler, EXP, yang ve item dropları birebir gerçekçi olur.
İster yaratık, ister metin taşı test et /mob_drop [vnum] [sayı]


GIF Link

201467b0513edda0f3b211fe1bc4d51b.gif


Ekten indirebilirisiniz.
Yada :
[CODE lang="cpp" title="Anlatim.cpp"]
*** Commondefines.h veya service.h *** Ekle:

#define ENABLE_CMD_DROP_ITEM #define //#defineile eşya düşürme

*** char.h *** :
//Ara :
void Reward(bool bItemDrop);

//Değiştir :

#ifdef ENABLE_CMD_DROP_ITEM
void #ifdefeward(bool bItemDrop, LPCHARACTER dropsystem #ifdefeward(bool void Reward(bool bItem#else;
#endif

**************************

*** char_battle#endif** :
// Ara :
void CHARACTER::Reward(bool bItemDrop)


// Değiştir :
#ifdef ENABLE_CMD_DROP_ITEM
void CHARACTER::Reward(bo#ifdefemDrop, LPCHARACTER dropsystem)
#else
void CHARACTER::Reward(bool bItemDrop)
#endif

#elsea :
LPCHARACTER pkAttacker = DistributeE#endif
/#elseatir :
#ifdef ENABLE_CMD_DROP_ITEM
LPCHARACTER pkAttacker;#ifdeff (dropsystem != NULL)
pkAttacker = dropsystem;
else
pkAttacker = DistributeExp();
#else
LPCHARACTER pkAttacker = DistributeExp();
#en#else
**************************

*** cmd.cpp *** :
#endifait Bir yere ekle :
#ifdef ENABLE_CMD_DROP_ITEM
A#endifaitb_drop);
#endif

#ifdeff:
{ "\n", NULL, 0, #endiff POS_DEAD, GM_IMPLEMENTOR }

// Üstüne Ekle#endifdef ENABLE_CMD_DROP_ITEM
{ "mob_drop", #ifdeffdrop, 0, POS_DEAD, GM_IMPLEMENTOR },
#endif


**************************

*** cmd_general.cpp #endiff/ Müsait Bir yere ekle :
#ifdef ENABLE_CMD_DROP_ITEM
ACMD(do_mob_drop)
{
if (!c#ifdeff return;

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

DWORD mobVnum = 0;
BYTE mobCount = 1, mobLimit = 100;

if (!*arg1)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Usage: /mob_drop <mob_vnum> <count>");
return;
}

str_to_number(mobVnum, arg1);

if (*arg2)
str_to_number(mobCount, arg2);

if (mobVnum <= 0 || mobCount <= 0)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hata: Geçersiz VNUM veya öldürme sayısı!");
return;
}

if (mobCount > mobLimit)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hata: Maksimum öldürme sayısı %d'dir.", mobLimit);
return;
}

long mapIndex = ch->GetMapIndex();

sys_log(0, "mob_drop: Spawning MobVNUM: %d at MapIndex: %ld (X: %d, Y: %d)",
mobVnum, mapIndex, ch->GetX(), ch->GetY());

int iKilled = 0;

for (int i = 0; i < mobCount; ++i)
{
LPCHARACTER mob = CHARACTER_MANAGER::instance().SpawnMob(mobVnum, mapIndex,
ch->GetX(), ch->GetY(), ch->GetZ());

if (!mob)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hata: Mob/metin spawn edilemedi! (Mob VNUM: %d, MapIndex: %ld)", mobVnum, mapIndex);
sys_log(0, "mob_drop ERROR: Could not spawn mobVNUM: %d at MapIndex: %ld", mobVnum, mapIndex);
continue;
}

if (mob->IsStone())
{
sys_log(0, "mob_drop: Destroying Metin Taşı VNUM: %d", mobVnum);
mob->Reward(true, ch);
iKilled++;
}
else if (mob->IsMonster())
{
sys_log(0, "mob_drop: Killing Monster VNUM: %d", mobVnum);
mob->Reward(true, ch);
iKilled++;
}

M2_DESTROY_CHARACTER(mob);
}

ch->ChatPacket(CHAT_TYPE_INFO, "Başarıyla %d adet %d VNUM'lu yaratık/metin taşı öldürüldü!", iKilled, mobVnum);
}


#endif[/CODE]#endif#endif
Yazar
DonuminikToretto
Kaynak İndirilme
4
Görüntüleme
63
İlk yayınlama
Son Güncelleme

Ratings

0.00 yıldız(lar) 0 rating
Geri
Üst