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
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;
}