- Katılım
- 11 May 2023
- Konular
- 237
- Mesajlar
- 1,032
- Online süresi
- 1ay 23g
- Reaksiyon Skoru
- 678
- Altın Konu
- 1
- Başarım Puanı
- 176
- TM Yaşı
- 2 Yıl 11 Ay 14 Gün
- MmoLira
- 503
- DevLira
- 315
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
// Senkronizasyon sahibi ile mesafe 250 birimden fazla ise, senkronizasyon yapılmaz
if (DISTANCE_APPROX(GetX() - ch->GetX(), GetY() - ch->GetY()) > 2000)
{
sys_log(1, "SetSyncOwner distance over than 250 %s %s", GetName(), ch->GetName());
if (m_pkChrSyncOwner == ch)
return true;
return false;
}
2000 sizde 250 yazar
şöyleki
a karakter birine saldırınca b kıpırdamadan duruyorsa b karakteri ileri atar doğru.
a kakrateri b karakteri 500 600 mesafeyi iter ama damage işlemesi halen devam eder doğru.
ama a karakter b karater 500 600 mesafe ileri atsada öldürsede 500 600 mesafe ilerde.
b karater oyunu baslat dirilme dediğinde baslangıc pozisyonunda doğuyor.
hata bu
bu durum b karaterin sync girmediği içindir görünürde hareketsiz kaldığı içindir
buna karakter kayması diyip düzeltelim çabasına giren çok oldu aslında mesafeyi aşınca sync kapatma işlevi varmış
Sync nedir?
Karakterlerin birbirine yaptığı davranış etkileri.
Yani x karakter y karakteri iterse bu bilgi karşı tarafa gider. Burda sync işlevi gerçekleşir.
Bu konunun oluşmasında %90 yapay zeka yardımcı oldu.
Kodun ne işe yaradığını bilmiyorsan kodu yapay zekaya yapıştır kodu detaylı Türkçeleştir yaz hepsini açıklıyor
Bu konudaki kodda yapay zeka turkcelestirdi
if (DISTANCE_APPROX(GetX() - ch->GetX(), GetY() - ch->GetY()) > 2000)
{
sys_log(1, "SetSyncOwner distance over than 250 %s %s", GetName(), ch->GetName());
if (m_pkChrSyncOwner == ch)
return true;
return false;
}
2000 sizde 250 yazar
şöyleki
a karakter birine saldırınca b kıpırdamadan duruyorsa b karakteri ileri atar doğru.
a kakrateri b karakteri 500 600 mesafeyi iter ama damage işlemesi halen devam eder doğru.
ama a karakter b karater 500 600 mesafe ileri atsada öldürsede 500 600 mesafe ilerde.
b karater oyunu baslat dirilme dediğinde baslangıc pozisyonunda doğuyor.
hata bu
bu durum b karaterin sync girmediği içindir görünürde hareketsiz kaldığı içindir
buna karakter kayması diyip düzeltelim çabasına giren çok oldu aslında mesafeyi aşınca sync kapatma işlevi varmış
Kod:
bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList)
{
// TRENT_MONSTER: Özel bir kısıtlama (hareket etmeyen karakterler)
if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
return false;
// END_OF_TRENT_MONSTER
// Senkronizasyon yapılacak karakter var mı?
if (ch)
{
// Eğer hedef karakterle savaş yapılabilir değilse, senkronizasyon yapılmaz
if (!battle_is_attackable(ch, this))
{
SendDamagePacket(ch, 0, DAMAGE_BLOCK);
return false;
}
}
// Eğer kendisiyle senkronize olmaya çalışıyorsa, işlem yapılmaz
if (ch == this)
{
sys_err("SetSyncOwner owner == this (%p)", this);
return false;
}
// Eğer senkronizasyon yapılacak karakter yoksa
if (!ch)
{
// Senkronizasyon sahibini kaldırma işlemi
if (bRemoveFromList && m_pkChrSyncOwner)
{
m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this);
}
// Senkronizasyon sahibi varsa loglama yaparak sıfırlama işlemi
if (m_pkChrSyncOwner)
sys_log(1, "SyncRelease %s %p from %s", GetName(), this, m_pkChrSyncOwner->GetName());
m_pkChrSyncOwner = NULL;
}
else
{
// Eğer hedef karakter senkronizasyon sahibi olamazsa, işlem yapılmaz
if (!IsSyncOwner(ch))
return false;
// Senkronizasyon sahibi ile mesafe 250 birimden fazla ise, senkronizasyon yapılmaz
if (DISTANCE_APPROX(GetX() - ch->GetX(), GetY() - ch->GetY()) > 2000)
{
sys_log(1, "SetSyncOwner distance over than 250 %s %s", GetName(), ch->GetName());
if (m_pkChrSyncOwner == ch)
return true;
return false;
}
// Eğer mevcut senkronizasyon sahibi farklıysa
if (m_pkChrSyncOwner != ch)
{
// Önceki senkronizasyon sahibinden çıkarma
if (m_pkChrSyncOwner)
{
sys_log(1, "SyncRelease %s %p from %s", GetName(), this, m_pkChrSyncOwner->GetName());
m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.remove(this);
}
// Yeni senkronizasyon sahibini ayarlama
m_pkChrSyncOwner = ch;
m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.emplace_back(this);
// Senkronizasyon zamanını sıfırlama
static const timeval zero_tv = {0, 0};
SetLastSyncTime(zero_tv);
sys_log(1, "SetSyncOwner set %s %p to %s", GetName(), this, ch->GetName());
}
// Senkronizasyon zamanını güncelleme
m_fSyncTime = get_float_time();
}
// Senkronizasyon paketini oluşturma
TPacketGCOwnership pack;
pack.bHeader = HEADER_GC_OWNERSHIP;
pack.dwOwnerVID = ch ? ch->GetVID() : 0;
pack.dwVictimVID = GetVID();
// Paket çevredeki karakterlere gönderilir
PacketAround(pack);
return true;
}
Sync nedir?
Karakterlerin birbirine yaptığı davranış etkileri.
Yani x karakter y karakteri iterse bu bilgi karşı tarafa gider. Burda sync işlevi gerçekleşir.
Bu konunun oluşmasında %90 yapay zeka yardımcı oldu.
Kodun ne işe yaradığını bilmiyorsan kodu yapay zekaya yapıştır kodu detaylı Türkçeleştir yaz hepsini açıklıyor
Bu konudaki kodda yapay zeka turkcelestirdi
Son düzenleme:
- Katılım
- 21 Eyl 2010
- Konular
- 142
- Mesajlar
- 1,589
- Online süresi
- 2ay 8g
- Reaksiyon Skoru
- 628
- Altın Konu
- 34
- Başarım Puanı
- 248
- TM Yaşı
- 15 Yıl 7 Ay 4 Gün
- MmoLira
- 28,050
- DevLira
- 102
paylaşım için teşekkürler.
- Katılım
- 13 Ocak 2020
- Konular
- 1,399
- Mesajlar
- 9,721
- Online süresi
- 1y 29g
- Reaksiyon Skoru
- 7,089
- Altın Konu
- 306
- Başarım Puanı
- 393
- TM Yaşı
- 6 Yıl 3 Ay 9 Gün
- MmoLira
- 3,946
- DevLira
- 15
paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 395
- Cevaplar
- 3
- Görüntüleme
- 290










