İlan
05 Haz 2026 16 çevrimiçi üye Duyurular
Ana Sayfa Development İstek
Ana Sayfa Forum Development İstek Official Zodyak Tapınağı Denemesi...
İlan Yan banner placeholder

Official Zodyak Tapınağı Denemesi

arifcan 10.04.2026 21:50 686 görüntüleme 2 cevap
Son Mesaj
arifcan
Üye
Üye
Katılım31 Oca 2026
Konular12
Mesajlar83
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
10.04.2026 21:50 #1
Zodyak sistemi için sıfırdan yazmak istedim fakat çok uğraş gerektiriyormuş 40 kat tek tek görevlerini bonus katlarını çok detaylı bir şekilde
valla bu sistem benim enerjimi sömürdü bu sistemde eksiklerim illaki olacak map regen bu işlerden pek anlamam o yüzden hali hazırda var ise yardımcı olursanız çok işime gelir bir de 40 katında görevlerini verirseniz hata yaptıysam düzeltme fırsatım olur. Şimdiden teşekkür ederim

Zodyak Tapınağı - Metin2 Wiki

Zodiac Temple Floor Structure - Metin2 Wiki


wiki bir yere kadar ilerletiyor araştırdım ama bu işi iyi bilen birisi varsa 40 katıda ezbere biliyorsa yardımcı olursa sevinirim

40 katın kodu:
    switch (m_iCurrentFloor)
    {
        case 1:
            if (remainingMobs <= 0) MissionCompleted(1);
            break;

        case 2:
            if (remainingMobs <= 0)
            {
                if (elapsedSeconds <= 60) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Mukemmel hiz! 6. Kata sicriyorsunuz."));
                    MissionCompleted(4);
                } else if (elapsedSeconds <= 240) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Iyi is cikardiniz. 5. Kata sicriyorsunuz."));
                    MissionCompleted(3);
                } else if (elapsedSeconds <= 360) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Yeterince hizli degilsiniz. 4. Kata geciyorsunuz."));
                    MissionCompleted(2);
                } else {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Cok yavas kaldiniz, tapinaktan atiliyorsunuz."));
                    KickAll();
                }
            }
            break;

        case 3: case 4: case 5:
            if (remainingMobs <= 0) MissionCompleted(1);
            break;

        case 6:
            if (pVictim->GetMobRank() >= MOB_RANK_BOSS && remainingMobs <= 0)
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Zodyak Patronu alt edildi! Olum Kapani asildi."));
                MissionCompleted(1);
            }
            break;

        case 7:
        case 21:
            if (pVictim->GetRaceNum() >= 2900 && pVictim->GetRaceNum() <= 2908)
            {
                bool bIsCorrect = (remainingMobs <= 0) ? true : (number(1, 2) == 1);
                
                if (bIsCorrect) {
                    GiveRandomZodiacBuff();
                    MissionCompleted(1);
                } else {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Yanlis metin tasi! Zodyak Kurdu uyandi."));
                    CHARACTER_MANAGER::instance().SpawnMob(2600, m_dwMapIndex, pVictim->GetX(), pVictim->GetY(), 0, false, -1);
                }
            }
            break;

        case 8:
            if (remainingMobs <= 0)
            {
                if (elapsedSeconds <= 60) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Hizli temizlik! 13. Kata sicriyorsunuz."));
                    MissionCompleted(5);
                } else {
                    MissionCompleted(1);
                }
            }
            break;

        case 9: case 10: case 11: case 12: case 13:
            if (remainingMobs <= 0) MissionCompleted(1);
            break;

        case 14:
            if (pVictim->IsStone() && remainingMobs <= 1)
            {
                GiveRandomZodiacBuff();
                MissionCompleted(1);
            }
            break;

        case 15:
            if (remainingMobs <= 0)
            {
                if (elapsedSeconds <= 60) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Simsek gibisin! 20. Kata sicriyorsunuz."));
                    MissionCompleted(5);
                } else {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Sure asildi. 19. Kata mahkum edildiniz."));
                    MissionCompleted(4);
                }
            }
            break;

        case 16: case 17: case 18: case 19:
            if (remainingMobs <= 0) MissionCompleted(1);
            break;

        case 20:
            if (pVictim->GetMobRank() >= MOB_RANK_BOSS && remainingMobs <= 0)
                MissionCompleted(1);
            break;

        case 22:
            if (pVictim->GetMobRank() >= MOB_RANK_BOSS && remainingMobs <= 0)
            {
                if (elapsedSeconds <= 60) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Zalimleri ezdiniz! 27. Kata sicriyorsunuz."));
                    MissionCompleted(5);
                } else {
                    MissionCompleted(1);
                }
            }
            break;

        case 23: case 24: case 25: case 26: case 27:
            if (remainingMobs <= 0) MissionCompleted(1);
            break;

        case 28:
            if (pVictim->IsStone() && remainingMobs <= 1)
            {
                GiveRandomZodiacBuff();
                MissionCompleted(1);
            }
            break;

        case 29: case 30: case 31: case 32: case 33:
            if (remainingMobs <= 0)
            {
                if (m_iCurrentFloor == 30 && elapsedSeconds <= 60) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Yolunuz acildi! 34. Kata sicriyorsunuz."));
                    MissionCompleted(4);
                } else {
                    MissionCompleted(1);
                }
            }
            break;

        case 34:
            if (pVictim->GetMobRank() >= MOB_RANK_BOSS)
            {
                for (auto it = m_setPlayers.begin(); it != m_setPlayers.end(); ++it)
                {
                    LPCHARACTER pMember = CHARACTER_MANAGER::instance().FindByPID(*it);
                    if (pMember && pMember->GetMapIndex() == m_dwMapIndex)
                    {
                        pMember->AutoGiveItem(33033, 1);
                        pMember->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Zodyak Patronu dustu! Altin Sandik kazandin."));
                    }
                }
                MissionCompleted(1);
            }
            break;

        case 35: case 36: case 37: case 38: case 39:
            if (pVictim->GetRaceNum() >= 2900 && pVictim->GetRaceNum() <= 2908)
            {
                bool bIsCorrect = (remainingMobs <= 0) ? true : (number(1, 2) == 1);
                
                if (bIsCorrect)
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Dogru kapi! Zodyak Tuccari seni bekliyor."));
                    int jumpTo40 = 40 - m_iCurrentFloor;
                    m_bSpawnMerchantAt40 = true;
                    MissionCompleted(jumpTo40);
                }
                else
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_STRING("Yanlis secim! Yola devam etmelisin. Zodyak Kurdu uyandi."));
                    CHARACTER_MANAGER::instance().SpawnMob(2600, m_dwMapIndex, pVictim->GetX(), pVictim->GetY(), 0, false, -1);

                    if (m_iCurrentFloor == 39)
                    {
                        m_bSpawnMerchantAt40 = false;
                        MissionCompleted(1);
                    }
                    else
                    {
                        MissionCompleted(1);
                    }
                }
            }
            break;

        case 40:
            break;
Serioususer
Üye
Üye
Katılım10 Mar 2026
Konular9
Mesajlar64
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
03.05.2026 01:12 #2
Konu uygun alana taşınmıştır.
Aşağıda hazır dosyalar paylaştım üstünden devam et
arifcan
Üye
Üye
Katılım31 Oca 2026
Konular12
Mesajlar83
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 03:26 #3
teşekkürler
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
İlan Yan banner placeholder