Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
Ben aslında onu "Metin2 için bu kadar da kasmaya gerek var mı?" Kafasıyla yazmıştım. Ama haklısınız, nihai kod kalitesi perspektifinden bakınca exception safety önemli bir konu. Eve gidince sağladığınız düzenlemeyi ekleyeceğim.
Metin2'nin neresi exception-safe ki? Bir de Set_Proto_Mob_Table zaten bool döndürüyor. Sizin verdiğiniz kod server ve Dump Proto parsing için over-engineering değil mi? Yanlış mı düşünüyorum?
assign(count, value) de fill gibi count kez copy assignment yapar; bu yüzden bilinçli olarak kullanılmadı. az önce eleştirilen fill yaklaşımının aynısı bu.
bu son yaptığım reserve + emplace_back en doğru yaklaşım olsa gerek
Haklısın, resize + index üzerinden doldurma yaklaşımı çalışıyor ama gereksiz default ctor çağrılarına yol açıyor ve uzun vadede ölçeklenebilir değil. Bu yüzden düzgün bir refactor için clear + reserve + emplace_back modeline geçmek daha doğru.
Şöyle yaptım:
/* - [4] Allocate target vector...
Konuyu tam olarak bunun için yoruma açık tutuyorum, katkınız için teşekkür ederim.
Başlığa C++26 yazmamın sebebi en azından C++26 ile derlenebilir kod almak ve daha modern yaklaşımları teşvik etmek. Yoksa evet bu özellikler C++20 ile geldi.
UB kokusu var dediğiniz yerde hakkınız var, ancak...
Aşağıdaki @Larry Watterson üyemizle yaptığımız tartışmalar neticesi daha da iyileştirildi ve güncellendi! Kendisine teşekkür etmek istiyorum.
Bu bölümde
https://www.mmotutkunlari.com/konu/db_name_column-sistemi-kald%C4%B1rma-detayl%C4%B1-rehber.24442/
Bu konudaki sadeleştirmenin üzerine
[1]...
:mmt-hakkinda:
Korece konuşmayan bize bir faydası olmadığı gibi hem kod kalabalığı yapıyor hem de encoding bozulması gibi sebeplerle sık sık geliştiricilere sorun çıkarıyor. Bence kaldırmak en doğrusu. Özetle proto'lardaki Korece isim / Lokal isim ikilemini kaldırıp tek sütun kullanacağız...
:mmt-hakkinda:
Metin2’nin çok eski dönemlerinde client bütünlüğünü kontrol etmek amacıyla eklenmiş bir güvenlik mekanizmasıdır. Mantık olarak client çalışırken belleğinden ve exe dosyasından CRC alır, bunu parça parça (MagicCube denilen yöntemle) server’a gönderir ve server da bu değerleri...
Problem gönderilen paket yanlışsa bile buffer temizlenmiyor, makinenin RAM'i dolana kadar büyür sonra core yersin. Herhangi biri istediği kadar yanlış paket gönderip sunucuyu patlatabilir.
:mmt-hakkinda:
Ymir'in bir web panelden server'a komutlar gönderip çeşitli özellikleri açıp-kapadığı, çeşitli oyuncu sayısı bilgilerini edindiği bir sistem. Bu web paneli elimizde olmadığı için kaldırıyoruz. Ancak uğraşmak isteyen tabi kodları okuyup ters mühendislikle bir web panel de...
Ben başlayayım o halde;
void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
Fonksiyonu içinde bu kod bloğu:
int iAlignIndex;
if (GetRealAlignment() >= 120000)
{
iAlignIndex = 0;
}
else if (GetRealAlignment() >= 80000)
{
iAlignIndex = 1;
}
else...
:mmotutkunlari-logo:
Bu başlık altında konu dışına çıkmadan, YMIR’in yaklaşık 20 yıl önce yazdığı ve günümüz standartlarına göre oldukça problemli olan kod bloklarını refaktör edip, ortaya çıkan sonuçları birbirimizle paylaşalım.
YMIR bu oyunu geliştirmeye başladığında, Visual Studio’da bugün...