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

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

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan theay
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 1K

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

📌 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ı]




201467b0513edda0f3b211fe1bc4d51b.gif


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

#define ENABLE_CMD_DROP_ITEM #define // Komut ile 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 = NULL);
#else
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
//Değiştir :
#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
ACMD(do_mob_drop);
#endif

/#ifdef:
{ "\n", NULL, 0, #endif POS_DEAD, GM_IMPLEMENTOR }

// Üstüne Ekle :
#ifdef ENABLE_CMD_DROP_ITEM
{ "mob_drop", d#ifdefdrop, 0, POS_DEAD, GM_IMPLEMENTOR },
#endif


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

*** cmd_general.cpp *#endif/ Müsait Bir yere ekle :
#ifdef ENABLE_CMD_DROP_ITEM
ACMD(do_mob_drop)
{
if (!ch#ifdef 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
 

Ekli dosyalar

En Çok Reaksiyon Alan Mesajlar

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

Geri
Üst