Ufak bir eklenti - #define ENABLE_BOSS_SPAWN_NOTICE

  • Konuyu açan Konuyu açan Furion99
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 218

Furion99

MT Üye
MT Üye
Mesaj
178
Çözümler
5
Beğeni
71
Puan
724
Ticaret Puanı
0
char_manager.cpp:
Genişlet Daralt Kopyala
Arat:
LPCHARACTER CHARACTER_MANAGER::SpawnMob(DWORD dwVnum, long lMapIndex, long x, long y, long z, bool bSpawnMotion, int iRot, bool bShow)

Ekle:
#ifdef ENABLE_BOSS_SPAWN_NOTICE
    static const std::vector<int> bossList = {
        191, 192, 193, 194, 491, 492, 493, 494,
        531, 532, 533, 534, 591, 691, 791, 792,
        1091, 1092, 1093, 1095, 1191, 1192, 1304,
        1901, 2091, 2206, 2307, 2306, 2491, 2492,
        2494, 2495, 2597, 2598, 3190, 3191, 3290,
        3291, 3390, 3391, 3490, 3491, 3590, 3591,
        3690, 3691, 3790, 3791, 3890, 3891, 6390,
        6391, 3090, 3091, 2191, 6421, 4204, 4209,
        4210, 3596
    };

    if (std::find(bossList.begin(), bossList.end(), ch->GetRaceNum()) != bossList.end())
    {
        char szSpawnNotice[QUERY_MAX_LEN];
        snprintf(szSpawnNotice, sizeof(szSpawnNotice),
                 "[Kanal %d] : %s dogdu!",
                 g_bChannel,
                 ch->GetName());
        BroadcastNotice(szSpawnNotice);
    }
#endif

Service.h:
Genişlet Daralt Kopyala
Ekle:
#define ENABLE_BOSS_SPAWN_NOTICE
 
vnum girmek yerine mob_rank'tan çekse daha iyi olur bence
 
char_manager.cpp:
Genişlet Daralt Kopyala
Arat:
LPCHARACTER CHARACTER_MANAGER::SpawnMob(DWORD dwVnum, long lMapIndex, long x, long y, long z, bool bSpawnMotion, int iRot, bool bShow)

Ekle:
#ifdef ENABLE_BOSS_SPAWN_NOTICE
    static const std::vector<int> bossList = {
        191, 192, 193, 194, 491, 492, 493, 494,
        531, 532, 533, 534, 591, 691, 791, 792,
        1091, 1092, 1093, 1095, 1191, 1192, 1304,
        1901, 2091, 2206, 2307, 2306, 2491, 2492,
        2494, 2495, 2597, 2598, 3190, 3191, 3290,
        3291, 3390, 3391, 3490, 3491, 3590, 3591,
        3690, 3691, 3790, 3791, 3890, 3891, 6390,
        6391, 3090, 3091, 2191, 6421, 4204, 4209,
        4210, 3596
    };

    if (std::find(bossList.begin(), bossList.end(), ch->GetRaceNum()) != bossList.end())
    {
        char szSpawnNotice[QUERY_MAX_LEN];
        snprintf(szSpawnNotice, sizeof(szSpawnNotice),
                 "[Kanal %d] : %s dogdu!",
                 g_bChannel,
                 ch->GetName());
        BroadcastNotice(szSpawnNotice);
    }
#endif

Service.h:
Genişlet Daralt Kopyala
Ekle:
#define ENABLE_BOSS_SPAWN_NOTICE
..:
Genişlet Daralt Kopyala
#ifdef ENABLE_BOSS_SPAWN_NOTICE
    int rank = ch->GetMobRank();
    if (rank == MOB_RANK_KNIGHT)
    {
        char szSpawnNotice[QUERY_MAX_LEN];
        snprintf(szSpawnNotice, sizeof(szSpawnNotice),
        "[Kanal %d] : %s doğdu!",
        g_bChannel,
        ch->GetName());
        BroadcastNotice(szSpawnNotice);
    }
#endif

veya herhangi biri olmazmı:
Genişlet Daralt Kopyala
enum EMobRank
{
    MOB_RANK_PAWN,
    MOB_RANK_S_PAWN,
    MOB_RANK_KNIGHT,
    MOB_RANK_S_KNIGHT,
    MOB_RANK_BOSS,
    MOB_RANK_KING,
    MOB_RANK_MAX_NUM
};
 
..:
Genişlet Daralt Kopyala
#ifdef ENABLE_BOSS_SPAWN_NOTICE
    int rank = ch->GetMobRank();
    if (rank == MOB_RANK_KNIGHT)
    {
        char szSpawnNotice[QUERY_MAX_LEN];
        snprintf(szSpawnNotice, sizeof(szSpawnNotice),
        "[Kanal %d] : %s doğdu!",
        g_bChannel,
        ch->GetName());
        BroadcastNotice(szSpawnNotice);
    }
#endif

veya herhangi biri olmazmı:
Genişlet Daralt Kopyala
enum EMobRank
{
    MOB_RANK_PAWN,
    MOB_RANK_S_PAWN,
    MOB_RANK_KNIGHT,
    MOB_RANK_S_KNIGHT,
    MOB_RANK_BOSS,
    MOB_RANK_KING,
    MOB_RANK_MAX_NUM
};
Nasıl yaparsanız yapın ama SpawnMob’un içini kirletmeyin. 😂 SpawnNotice gibi bir fonksiyon içine yaz sonra bunu SpawnMob’da
kullan yanlış hatırlamıyorsam Create olduktan sonra Show false döndürürse destroy ediyordu. Bu nedenle her ihtimale karşı Show bitişine eklemek daha mantıklı. Yani SpawnMob oluşan karakteri döndürdükten bi önce.
 
Geri
Üst