İlan
13 Haz 2026 15 çevrimiçi üye Duyurular
Ana Sayfa Metin2 Private Server Kurulumu
Ana Sayfa Forum Metin2 Private Server Kurulumu Orijinal başlığı Türkçe olarak yeniden yazdığım so...
İlan Yan banner placeholder

Orijinal başlığı Türkçe olarak yeniden yazdığım sonuç: - n2play dosyaları hakkında

wb244 29.04.2026 22:42 500 görüntüleme 3 cevap
Son Mesaj
wb244
Üye
Üye
Katılım14 Oca 2026
Konular8
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
29.04.2026 22:42 #1
Bu filesi tüm paylşaılan fileslardan farklı kılan özelliği.
syncleri çok iyi olması
örneğin ws atma sistemi kaymasızdır.
kodlama tipi biraz daha yeni nesildir.
dxmath steptimer directx9 bulunmaktadır.
oyun biraz da canlı gözükmektedir.
64 bit yapısı bulunması ve windows serverde çalışması
kendi anti cheati bulunması.
denediğimde hız hilesi yapılıyordu fakat atak hilesi yapılmıyordu.(cheat engine)
fakat hile engel sistemi geliştirilebilir.
küçük değişiklikler yapabilirsiniz.
meseal full canla başlama.
hani 1 level başlıyorsa bunu 99 levelde başlatma.
ama ücretli bi sistem alsanız meley gibi bunu kuramayabilirsiniz

dezavantajları.
çok basit kadim sistemini bile eklerken kopyala yapıştır yapıyoruz standat fileslarda
ama bu filesin kodlama biçimi farklı olduğu için
filesa göre ekleme yapmak gerekmekte.

kurulum şöyle
visual stduio 2019
cmake 3.16.9
python 2.7

buil ederken hata alabilirsiniz.
cmake taraflı yada source taraflı hata alabilirsiniz.

örnek bi kod ekliyorum

char.cpp ownersync
Kod:
bool CHARACTER::SetSyncOwner(CHARACTER *ch, bool bRemoveFromList)
{
    // TRENT_MONSTER
    if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
        return false;
    // END_OF_TRENT_MONSTER

    if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOPUSH))
        return false;

    if (ch == this) { return false; }

    if (!ch)
    {
        if (bRemoveFromList && m_pkChrSyncOwner) { m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this); }

        // 리스트에서 제거하지 않더라도 포인터는 NULL로 셋팅되어야 한다.
        m_pkChrSyncOwner = nullptr;
    }
    else
    {
        const auto mapIndex = ch->GetMapIndex();

        if (m_pkChrSyncOwner != ch)
        {
            if (m_pkChrSyncOwner) { m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this); }

            m_pkChrSyncOwner = ch;
            m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.push_back(this);

            // SyncOwner가 바뀌면 LastSyncTime을 초기화한다.
            static const timeval zero_tv = {0, 0};
            SetLastSyncTime(zero_tv);
        }

#ifdef ENHANCED_FLY_FIX
        m_fSyncTime = get_float_time();
#endif
    }

    // TODO: Sync Owner가 같더라도 계속 패킷을 보내고 있으므로,
    //       동기화 된 시간이 3초 이상 지났을 때 풀어주는 패킷을
    //       보내는 방식으로 하면 패킷을 줄일 수 있다.
    TPacketGCOwnership pack;
    pack.dwOwnerVID = ch ? ch->GetVID() : 0;
    pack.dwVictimVID = GetVID();

    PacketAround(m_map_view, this,HEADER_GC_OWNERSHIP, pack);
    return true;
}
HenryDocker
Üye
Üye
Katılım24 Oca 2026
Konular7
Mesajlar55
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
30.04.2026 04:16 #2
Paylaşım için teşekkürler.

İyi forumlar
wb244
Üye
Üye
Katılım14 Oca 2026
Konular8
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 00:33 #3
Bu filesi tüm paylşaılan fileslardan farklı kılan özelliği.
syncleri çok iyi olması
örneğin ws atma sistemi kaymasızdır.
kodlama tipi biraz daha yeni nesildir.
dxmath steptimer directx9 bulunmaktadır.
oyun biraz da canlı gözükmektedir.
64 bit yapısı bulunması ve windows serverde çalışması
kendi anti cheati bulunması.
denediğimde hız hilesi yapılıyordu fakat atak hilesi yapılmıyordu.(cheat engine)
fakat hile engel sistemi geliştirilebilir.
küçük değişiklikler yapabilirsiniz.
meseal full canla başlama.
hani 1 level başlıyorsa bunu 99 levelde başlatma.
ama ücretli bi sistem alsanız meley gibi bunu kuramayabilirsiniz

dezavantajları.
çok basit kadim sistemini bile eklerken kopyala yapıştır yapıyoruz standat fileslarda
ama bu filesin kodlama biçimi farklı olduğu için
filesa göre ekleme yapmak gerekmekte.

kurulum şöyle
visual stduio 2019
cmake 3.16.9
python 2.7

buil ederken hata alabilirsiniz.
cmake taraflı yada source taraflı hata alabilirsiniz.

örnek bi kod ekliyorum

char.cpp ownersync
Kod:
bool CHARACTER::SetSyncOwner(CHARACTER *ch, bool bRemoveFromList)
{
    // TRENT_MONSTER
    if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
        return false;
    // END_OF_TRENT_MONSTER

    if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOPUSH))
        return false;

    if (ch == this) { return false; }

    if (!ch)
    {
        if (bRemoveFromList && m_pkChrSyncOwner) { m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this); }

        // 리스트에서 제거하지 않더라도 포인터는 NULL로 셋팅되어야 한다.
        m_pkChrSyncOwner = nullptr;
    }
    else
    {
        const auto mapIndex = ch->GetMapIndex();

        if (m_pkChrSyncOwner != ch)
        {
            if (m_pkChrSyncOwner) { m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this); }

            m_pkChrSyncOwner = ch;
            m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.push_back(this);

            // SyncOwner가 바뀌면 LastSyncTime을 초기화한다.
            static const timeval zero_tv = {0, 0};
            SetLastSyncTime(zero_tv);
        }

#ifdef ENHANCED_FLY_FIX
        m_fSyncTime = get_float_time();
#endif
    }

    // TODO: Sync Owner가 같더라도 계속 패킷을 보내고 있으므로,
    //       동기화 된 시간이 3초 이상 지났을 때 풀어주는 패킷을
    //       보내는 방식으로 하면 패킷을 줄일 수 있다.
    TPacketGCOwnership pack;
    pack.dwOwnerVID = ch ? ch->GetVID() : 0;
    pack.dwVictimVID = GetVID();

    PacketAround(m_map_view, this,HEADER_GC_OWNERSHIP, pack);
    return true;
}
HenryDocker
Üye
Üye
Katılım24 Oca 2026
Konular7
Mesajlar55
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 21:18 #4
Paylaşım için teşekkürler.

İyi forumlar
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
İlan Yan banner placeholder