[C++/Python] Official Zodiac Temple

  • Konuyu açan Konuyu açan okan4141
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 4
  • Gösterim Gösterim 244

okan4141

D E L I
Geliştirici
MT Üye
Mesaj
848
Çözümler
26
Beğeni
2.026
Puan
1.529
Ticaret Puanı
0
zodiac_temple.cpp ve zodiac_temple.h dosyaları oluşturuldu.


CZodiacTemple ve CZodiacTempleManager sınıfları oluşturuldu.
CZodiacTemple ve CZodiacTempleManager sınıflarına gerekli fonksiyonlar eklendi.
CZodiacTemple sınıfı oluşturulurken CDungeon sınıfının alt sınıfı olacak şekilde yapıldı.
dungeon.cpp'de JumpAll ve JumpParty fonksiyonların parametresi genişletildi.

Bazıları:


C++:
Genişlet Daralt Kopyala
    LPZODIAC_TEMPLE Find(DWORD dwDungeonID) const;
    LPZODIAC_TEMPLE FindByMapIndex(long lMapIndex) const;
    LPZODIAC_TEMPLE GetDungeon(LPDUNGEON pDungeon) const;

Video (Party olarak giriş denemesi):

 
Yeni paket yapıldı -> HEADER_GC_STAGE_TIME

dungeon.cpp StageTime fonksiyonu eklendi.
dungeon.h yeni enum eklendi.
Gelecekte aynı tip süre gösterimleri için.

C++:
Genişlet Daralt Kopyala
enum EDungeonStageType
{
    STAGE_TIME_TYPE_DEFAULT,
#if defined(ENABLE_12ZI)
    STAGE_TIME_TYPE_ZODIAC_TEMPLE,
#endif
};

CZodiacTemple sınıfında kullanıldı.

C++:
Genişlet Daralt Kopyala
StageTime(STAGE_NONE, STAGE_1, STAGE_TIME_TYPE_ZODIAC_TEMPLE, 10, 0);

Bu ilk Canavarların spawn olmadan önceki süreyi gösterir.

Video:

 
dungeon.cpp'de JumpAll ve JumpParty fonksiyonların parametresi eski haline getirildi. (Official'de WarpSet ile olduğu için)
Login WarpSet ile yapıldı.
1-6 / 8-13 gibi katlarda 1 dakika içerisinde tamamlanmadığı sürece her 1 dakika'da sonraki kat -1 azalır.
Bu azalma bulunduğum kat sayısının en fazla +1 kadarına kadar gelir.

CZodiacTemple sınıfına yeni fonksiyonlar eklendi.

UpdateStage
GetDynamicNextStage

File(cpp) Total Line : 809

Video(duraklatıp kayıt alındı.):

 
Son düzenleme:
CZodiacTemple sınıfına yeni fonksiyonlar eklendi.

GetChance -> Kat'a göre numara üretir.
MissionMessage -> Kat'a göre ve GetChance'den alınan numaraya göre yapılacak görevi söyler.

STAGE_1 -> GetChance -> 1 -> Tüm Metin Taşlarını Alt Et.
STAGE_1 -> GetChance -> 2 -> Tüm Canavarları Alt Et.

Video(duraklatıp kayıt alındı.):
 
Arada konuyu hatırlatalım offişıl okan unutmasın :D Bu arada asmedousdan daha değerli bence zodyak. @okan4141 Başarılar kral..

İlerleyen yerlerde bir örnek bırakayım bu arada takıldığın yerde mesaj atabilirsin zodyağı çok iyi bilen bir arkadaşım var o tane tane anlatır ;

offişıl zodyak:
Genişlet Daralt Kopyala
struct FPolyMonster
{
    FPolyMonster(int32_t bossX, int32_t bossY)
        : m_iBossX(bossX)
        , m_iBossY(bossY)
    {}

    void operator()(LPENTITY ent)
    {
        if (!ent || !ent->IsType(ENTITY_CHARACTER))
            return;

        LPCHARACTER ch = static_cast<LPCHARACTER>(ent);
        if (!ch || !ch->IsPC() || ch->IsDead() || ch->IsPolymorphed())
            return;

        // Calculate distance from boss
        const int32_t iDistance = DISTANCE_APPROX(
            ch->GetX() - m_iBossX,
            ch->GetY() - m_iBossY
        );

        // Apply polymorph if player is too far from boss
        if (iDistance > ZodiacPolymorph::SAFE_DISTANCE_FROM_BOSS)
        {
            ch->SetPolymorph(
                ZodiacPolymorph::POLYMORPH_ZODIAC_CURSE,
                ZodiacPolymorph::APPLY_PERMANENT
            );

            if (test_server)
            {
                sys_log(0, "ZodiacPolymorph: Player [%s] polymorphed at distance [%d] from boss position (%d, %d)",
                    ch->GetName(), iDistance, m_iBossX, m_iBossY);
            }
        }
    }

private:
    int32_t m_iBossX{};
    int32_t m_iBossY{};
};
 
Geri
Üst