emirhanHCL 1
emirhanHCL
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
Hikaye Ekle

Lonca Çit Sistemi Full SRC

  • Konuyu başlatan Konuyu başlatan therasmus
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 38
  • Görüntüleme Görüntüleme 8K
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

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.

Ücretli satılanı tanımam bilmem zamanında araştırıp deneyip yapmıştım.

Kodlar;
C++:
//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;

ekstralar

skillerin çarpmasını engellemek isteyenler

bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)

if (victim->GetRaceNum() == 20387)
return false;

çit isimlerini gizlemek içinde

void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)

if (pInstance->IsGuildWall())
return;

altına

if (pInstance->GetRace() == 20387)
return;

içinden geçilmemesini sağlamak içinde

mob protodan vnum bulup KING DOOR yaparak geçişleri engellersiniz

yararımız dokunsun

gamesrc > char_Battle.cpp: bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
clientsrc > PythonTextTail.cpp: void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)

anlatımda 7 8 yerde eksiklik vardı sökemeyen kardeşlerimiz olur diye bunuda konuya ekleyebilirsin

ekstralar için teşekkürler.

Kanıt:




 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

ekstralar

skillerin çarpmasını engellemek isteyenler

bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)

if (victim->GetRaceNum() == 20387)
return false;

çit isimlerini gizlemek içinde

void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)

if (pInstance->IsGuildWall())
return;

altına

if (pInstance->GetRace() == 20387)
return;

içinden geçilmemesini sağlamak içinde

mob protodan vnum bulup KING DOOR yaparak geçişleri engellersiniz

yararımız dokunsun
ekstralar

skillerin çarpmasını engellemek isteyenler

bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)

if (victim->GetRaceNum() == 20387)
return false;

çit isimlerini gizlemek içinde

void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)

if (pInstance->IsGuildWall())
return;

altına

if (pInstance->GetRace() == 20387)
return;

içinden geçilmemesini sağlamak içinde

mob protodan vnum bulup KING DOOR yaparak geçişleri engellersiniz

yararımız dokunsun
gamesrc > Battle.cpp: bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
clientsrc > PythonTextTail.cpp: void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)

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

Geri
Üst