Lonca Çit Sistemi Full SRC

  • Konuyu açan Konuyu açan therasmus
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 1K

therasmus

Üye
Üye
Mesaj
119
Çözümler
10
Beğeni
70
Puan
729
Ticaret Puanı
0
Merhaba,
Lonca savaşı çit, engel sistemi herhangi bi gm müdahalesi gerekmez.
Savaş başladıktan 2 dakika sonra 30 sn geri saymaya başlar. Süre bitince engeller kalkar.

Kodlar;
Linkleri görebilmek için giriş yap veya kayıt ol.


C++:
Genişlet Daralt Kopyala
//war_map.cpp

Arat:
EVENTFUNC(war_begin_event)

Fonksiyonun altına ekle:
EVENTFUNC(war_begin_protection_event)
{
    war_map_info* info = dynamic_cast<war_map_info*>(event->info);

    if (info == NULL)
    {
        sys_err( "war_begin_protection_event> <Factor> Null pointer" );
        return 0;
    }

    CWarMap* pMap = info->pWarMap;

    if (pMap->GetBeginProtectionStatus() == false)
    {
        DWORD dwElapsedTime = get_dword_time() - pMap->GetStartTime();
        if (dwElapsedTime >= 180000) {
            pMap->SetBeginProtectionStatus(true);
            pMap->Notice("Savas basladi!");
            SECTREE_MANAGER::instance().PurgeNPCsInMap(pMap->GetMapIndex());
        }
        else {
            char szNoticeText[512];
            snprintf(szNoticeText, sizeof(szNoticeText), "Savas %ld saniye icinde baslayacak.", 179 - (dwElapsedTime / 1000));
            pMap->Notice(szNoticeText);
        }
    }

    return PASSES_PER_SEC(1);
}

Arat:
void CWarMap::SetBeginEvent(LPEVENT pkEv)

Fonksiyonun altına ekle:
void CWarMap::SetEndEvent(LPEVENT pkEv)
{
    if (m_pkEndEvent != NULL) {
        event_cancel(&m_pkEndEvent);
    }
    if (pkEv != NULL) {
        m_pkEndEvent = pkEv;
    }
}

Arat:
    event_cancel(&m_pkBeginEvent);

Altına ekle:
    event_cancel(&m_pkBeginProtectionEvent);
    
Arat:
    m_dwStartTime = get_dword_time();
    m_bEnded = false;

Altına ekle:
    m_bBeginProtectionCompleted = false;
    
Arat:
void CWarMap::IncMember(LPCHARACTER ch)

Bul:
    if (isWarMember)
    {

Altına ekle:
        if (m_set_pkChr.empty()) {
            m_dwFirstLogonTime = get_dword_time();
            SetBeginProtectionEvent(event_create(war_begin_protection_event, info, PASSES_PER_SEC(1)));
        }
        
Arat:
    if (GetType() == WAR_MAP_TYPE_FLAG)
    {
        AddFlagBase(0);
        AddFlagBase(1);
        AddFlag(0);
        AddFlag(1);
    }
Altına Ekle:
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 127 * 100 + 32000, 102 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 120 * 100 + 32000, 109 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 115 * 100 + 32000, 114 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 109 * 100 + 32000, 120 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 103 * 100 + 32000, 126 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 99 * 100 + 32000, 130 * 100 + 0, 2, false, 225, true);

    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 156 * 100 + 32000, 129 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 151 * 100 + 32000, 134 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 146 * 100 + 32000, 139 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 141 * 100 + 32000, 144 * 100 + 0, 2, false, 225, true);
    CHARACTER_MANAGER::instance().SpawnMob(20387, GetMapIndex(), 134 * 100 + 32000, 151 * 100 + 0, 2, false, 225, true);
    
-------------------------------------------------

//war_map.h

Arat:
        void    SetBeginEvent(LPEVENT pkEv);

Altına ekle:
        void    SetBeginProtectionEvent(LPEVENT pkEv);

Arat:
        LPEVENT        m_pkBeginEvent;

Altına ekle:
        LPEVENT        m_pkBeginProtectionEvent;
        
Arat:
        void    DecMember(LPCHARACTER ch);

Altına ekle:
        DWORD    GetStartTime();
        bool    GetBeginProtectionStatus();
        void    SetBeginProtectionStatus(bool bNewStat);

Arat:
        bool        m_bEnded;

Altına ekle:
        bool        m_bBeginProtectionCompleted;
        DWORD         m_dwFirstLogonTime;

Eksik olursa war_map.cpp ve war_map.h bırakıyorum;
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Kanıt:
Linkleri görebilmek için giriş yap veya kayıt ol.


Linkleri görebilmek için giriş yap veya kayıt ol.


Linkleri görebilmek için giriş yap veya kayıt ol.
 
Paylaşım için teşekkürler :) Pek az bulunyordu bu.
 
Paylaşım için teşekkürler. Uzun bir süre bunu aradım. Savaş başladıktan sonra 60 saniye tüm karakterlerin stun yediği sistem var, o daha mantıklı geldi ve onu kurdum :)
 
O sistemi paylaşır mısınız
Google’da toplu lonca sistemleri diye aratın, arşiv içerisinde mevcut. Sorunlu olabilir şöyle de yapabilirsin: Google’da Moderatörlük Şerefine 1-120 Dosyalar diye aratın, sistemi ordan sökün daha sağlıklı olur. Defineli sistem zaten.
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst