TGamesZeus 1
TGamesZeus
Best Studio 1
Best Studio
berkmenoo 1
berkmenoo
InfernoShade 1
InfernoShade
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
onur akbaş 1
onur akbaş
IronTalonX 1
IronTalonX
D 1
delimuratt
berzahx 1
berzahx
Hikaye Ekle

n2play files hakkında

  • Konuyu başlatan Konuyu başlatan apikomt2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 274

apikomt2

Level 6
Uzman
Katılım
11 May 2023
Konular
271
Mesajlar
1,154
Çözüm
2
Online süresi
1mo 25d
Reaksiyon Skoru
746
Altın Konu
1
Başarım Puanı
199
MmoLira
1,326
DevLira
381
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

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;
}
 
Paylaşım için teşekkürler.

İyi forumlar
 

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

Geri
Üst