- Katılım
- 6 Mayıs 2022
- Konular
- 48,285
- Mesajlar
- 48,595
- Tepkime puanı
- 75
- M2 Yaşı
- 3 yıl 11 ay 10 gün
- Trophy Puan
- 48
- M2 Yang
- 488,819
Arkadaşlar Bu aralar herkes bir source kodlaması derdinde bende kendi elimle başladığım sourcede fixlemeler falan yapıyorum. Burda paylaşım yapan arkadaşlara çok teşekkürler ama warningler hakkında fazla bir konu yok ondan ben burda fixlediğim tüm warning uyarılarını sizin ile paylaşıcam konuyu elimden geldiğince güncellicem.
İlk paylaşımım basit bir şey olacak
Uyarı - 1
Kod bloğunun içinde böyle bir kod bulunması gerek
Bu kod bloğunu alttaki ile değiştirin.
Bunu yaptıktan sonra biraz daha aşagı gelin alttaki gibi bir kod var
üstteki kodu alttaki ile değiştirin.
Şimdilik bu kadar. yakında daha çok ekliyecegim.
Uyarı - 2
ve alttaki ile değiştirin.
alttaki kodu aratın.
ve alttaki ile değiştirin.
alttaki kodu aratın
alttaki ile değiştirin.
alttakini aratın
değiştirin
alttakini aratın
değiştirin
alttakini aratın
değiştir
alttakini aratın
değiştir
alttakini aratın
değiştir
alttakini aratın
değiştir
alttakini aratın
değiştir
alttakini aratın
degiştir
altakini aratın
degiştir.
Arkadaşlar öncelikle üsteki kodları uzman arkadaşlar test etsin veya bir sorun varsa bildirsin.
peki bunlarda int'ten önce neden unsigned kodu yerleştirdim.
arkadaşlar böyle her gördüğünüz hataya unsigned yerleştirmek doşru değil
unsigned char 0 ~ 255 arası sayıları temsil eder
signed char ise -128 ~ 127 arasındaki sayıları
üsteki kodlar - ye giden bir sayı yok gördüğünüz gibi int++ ya gitmiş bu da aslında oyunda bug oluşturmaya müsait bir açık değerinde olabileceğini düşünüyorum. o yüzden değeri unsigned yaparak değerin - değerler almamasını ayarlamış olduk.
böylece warning sorununu çözmüş olduk bu tür uyarılar aldığınızda
signed and unsigned bu uyarıları üsteki anlatımımdan yola cıkarak düzeltebilirsiniz.
ben kendimce böyle yorumladım bilgili arkadaşlar doğru yapmışmıyım diye kontrol ederlerse sevinirim yanlış bilgi vermek istemem konudan anında silerim yanlışım varsa daha yeniyim hatalar olabilir.
Uyarı - 3
gibi saçma bir şekilde build ediyor.
normalde o yazı elseif'deki yazıyla aynı alttakilerden hoşunuza gideni kullanın.
222. satırdaki kodu alttakilerden biriyle değiştirin hangisi kafanıza yatarsa.
Uyarı - 4
içindeki
üsteki sayıyı alttaki ile değiştir.
bu kadar.
Uyarı - 5
çok basit boyutsal bakımdan tanımlandırılmamışlar buda uyarıya sebep oluyor boyutsal bakımı bende anlamadım
ama araştırmalarıma bakılırsa bu kodlarda değerler tanımlandırılması gerekiyor.
peki bunları tek tek tanımlandırcaz mı hayır.
Security Features in the CRT sistemini eklicez.
üsteki kodları kontrol edip gönderilecek kodu veya yazıyı ona göre boyutlandırtırıyor.
peki security features in the crt yi nasıl eklicez derseniz işte oda çok kolay.
kısaca _s kodu otomatik biçimlendiricektir ve bizim #define STR_LENGTH 20 gibi bazı kodları eklememize gerek kalmıcak
evet sorusu olan varsa sormasın bu çözüm kesin çözümdür. bulana kadar çok uğraştım hele ki kesin çözüm olduguna emin olana kadar.

arkadaşlar uyarıları tek tek yazmıcam siz c4995 hatası aldınız mı _s fonksiyonu ekleyip düzeltin lütfen.
çünkü çok fazla böyle sorun var.
size genel çözümünü sundum.
Önemli Hata almamanız için okuyun.
çok önemli bir not daha belirtmek isterim
c4995 hatasını gördünüz kodda _sprintf yazıyor ama kod blogundaki
sprintf bakın _sprintf ise _s eklersiniz ama farklı bir kod yazıyor sprintf
sakın sonuna direk _s eklemeyin yoksa error alırsınız fonksiyonda
_sprintf_s
olarak tamamlayın. ha bazı uyarılarda _s koymayın çünkü error'a dönüştürür warning'i örnek PythonChatModule.cpp(434)
len += _snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
len += veya cn += gibi bir şeyler varsa fonksiyonda korkun çünkü o fonksiyonda _s eklerseniz büyük bir ihtimal hata alırsınız.
hatta _ koymak bile hataya sebep olabilir o yüzden deneyin error alırsanız zaten eski haline getirirsiniz.
ama kesin hata alcaksınız çünkü genelde o fonksiyonlara bir şey tanımlanmış oluyor ve
function does not take 2 arguments gibi 2 argument kullanamazsınız gibi hatalar alırsınız.
c4996 _ çözüm
arkadaşlar c4996 çok güzel bir uyarıdır
sprintf
strcat
strcpy
üsteki fonksiyonlara _ başına eklenerek çözülür.
_sprintf
_strcat
_strcpy
bu çözüm ile c4996 uyarısından kurtulduk fakat bitmedi çünkü build ederken fonksiyonda c4995 alabilirsiniz
o zamanda
_sprintf_s
_strcat_s
_strcpy_s
bu şekilde yapmanız gerekmektedir.
teşekkürler.
not : fopen gibi farklı fonksiyonlarda _ veya _s eklemeyin çünkü hata alırsınız.
dikkat bazı fonksiyonlarda hata alma ihtimaliniz var
_ ve _s her zaman çözmüyor daha kötü yapabiliyor.
o yüzden herşey kesin çözcek diye bir şey yok çünkü bazıları tanımlanmış oluyor kodlar cakışabiliyor.
konu üzerindeki araştırmalarım devam etmekte örnek vermicem çünkü çok farklı onlarca örnek var kendiniz deneyip test edip sorunlarınızı çözün.çünkü fonksiyonlara baglı olarak farklı hatalar veya cevaplar cıkabiliyor.
bu c4995 ile c4996 sorunları başımı uyuşturdu biraz kafa dinlicem.
bende insanım.
hadi bol şanslar.
Uyarı - 6
client > UserInterface > NetworkActorManager.cpp
arkadaşlar internette bazıları bool kodunu int çevirin falan demiş ama ben farklı bir çözüm ile yaptım.
1.uyarı
değiştir
2.uyarı
değiştir
uyarı gitmiştir.
Uyarı - 7
çözüm
1.
kodu aratın ve alttaki gibi yapın
2.
kodunu aratın ve başına static ekleyin.alttaki gibi olacak
kolay gelsin.
Uyarı - 8
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
arat
değiştir
3. warning: returns address of local variable
ClientManagerPlayer.cpp
arat
değiştir
4. warning: Statement has no effect
ClientManagerBoot.cpp
arat
değiştir.
5. warning: Unused Veriable
ClientManagerBoot.cpp
arat
değiştir
6. warning:
protoreader.cpp
ara
değiştir
protoreader.h
ara
değiştir
Evet uzun bir aranın sonundan tekrar güzel bir şekilde size elimdekileri paylaşmaya calıştım.
İşinize yaradıysa ne mutlu bana.
4 saatlik çalışmamdan bu kadar şimdi diğer işlerime geçicem metin2'ye bu kadar yeterli
arkadaşlar test_data yı falan pek önemsemeyin gereksiz komutlar onlar ondan dolayı warningli kısımlara // ekledim.
1. sebebi test_data işlemsizdi
2. sebeb testValue boş elemandı.
yani gereksiz verilerdi.
6.warning ise çok uğraştırdı sinir krizi geçiricektim sonra bir baktım aynı değerleri protoreader.h dada tanımlandırmış ondan error veriyormuş biraz güldüm ama sorunuda çözdük.
Tekrar güzel bir paylaşım yapana kadar hoşt çakal.
Uyarı - 9
değiştir
ara
değiştir
ara
değiştir
ara
değiştir
ara
değiştir
ara
değiştir
ara
değiştir
inputmain.cpp
ara
değiştir
questlua_petnew.cpp
ara
değiştir
new_petsystem.cpp
ara
değiştir
dragonsoul.cpp
ara
değiştir
locale_service.cpp
ara
değiştir.
2.fix Warning: comparison between signed or unsigned
belt_inventory_helper.h
ara
değiştir
new_petsystem.cpp'de warning veriyor fakat
new_petsystem.h'da çözüyoruz.
ara
değiştir
group_text_parse_tree.h
ara
değiştir
ara
değiştir
group_text_parse_tree_cpp
ara
değiştir
ara
değiştir
shop_manager.cpp
ara
değiştir
ara
değiştir
acce.cpp
ara
değiştir
shopex.cpp
ara
değiştir.
dragonsoul.cpp
ara
değiştir.
ara
değiştir
ara
değiştir
ara
değiştir.
item_manager.cpp
ara
değiştir
item.cpp
ara
değiştir
ara
değiştir
ara
değiştir.
char_item.cpp
ara
değiştir
ara
değiştir
ara
değiştir
char_skill.cpp
ara
değiştir
ara
değiştir
cube.cpp
ara
değiştir
ara
değiştir
desc_client.cpp
ara
değiştir
shop.cpp
ara
değiştir
3. Warning : no newline at end of file
Alttakilerin Sonlarında Birer tane boş satır bırakın.
New_PetSystem.cpp
questlua_petnew.cpp
char_dragonsoul.cpp
Uyarı - 10
bul
değiştir.
item.cpp
bul
değiştir
warning: comparison is always false due to limited range of data type
Char_item.cpp
uyarı alınan fonksiyon
aratın
alttaki koddan 2 tane vardır 2 sinide aratın
burdaki ile değiştirin.
warning: control reaches end of non-void function
char_dragonsoul.cpp
arat
fonksiyon sonundaki bunu
değiştir
char_item.cpp
arat
fonksiyonun sonuna gel
değiştir.
desc_p2p.cpp
arat
fonksiyonu sonundaki
değiştir
warning will be initialized after
item.h
arat
değiştir
ClientPackageCryptInfo.h
arat
değiştir
group_text_parse_tree.h
arat
değiştir
Kolay Gelsin!
:cay:
UYARI - 11
değiştir
unused variable pPC /efsun nesnesi süresi fixlerken oluşan bir hata ben eski haline getirdim efsun nesnesinde süre hala yok.
char_item.cpp
bul
değiştir
unused variable dwCurtime / hareket ederken item değiştirmeyi fixlerken oluşuyor bence orjinal hali daha iyidir haraket ederken item değişmesin millet.
char_item.cpp
bul
değiştir
unused variable sum,prob_sum,dwVnum,count,rider,bDoMoveAlone,len_global,last,line,strArg1,itemType,itemSubType,bWereMine,vnum,q,pPC,petVID,npcVNUM,old_value,new_value
New_PetSystem.cpp
arat
altına ekle
arat
altına ekle
acce.cpp
arat
altına ekle
DragonSoul.cpp
arat
altına ekle
arat
altına ekle
arat
üstüne eklendi
arat
üstüne ekle
buff_on_attributes.cpp
arat
altına ekle
cube.cpp
arat
altına ekle
PetSystem.cpp
arat
altına ekle
char_state.cpp
bul
altına ekle
petsystem.cpp
bul
altına ekle
input_main.cpp
bul
altına ekle
input_auth.cpp
aratın
altına eklenir.
config.cpp
aratılır
bulunur
altına eklenir
cmd_general.cpp
arat
bulunur
altına eklenir
char_item.cpp
aratın
altına eklenir.
item.cpp
arat
altına ekle
item.cpp
arat
altına ekle
questlua_npc.cpp
arat 4 tane uyarı var uyarı aldıklarınıza uygulayın.
altına yapıştır
questnpc.cpp
arat
altına ekle
"cell","n","x","y","returnBool" may be used uninitialized in this function
cmd_gm.cpp
arat
altında bul
değiştir.
arat
altında bul
değiştir.
arat
altında bul
değiştir
questlua.cpp
arat
altında bul
değiştir
NULL used in aritmetic
questlua_petnew.cpp
arat
altında bul
değiştir
arat
altında bul
değiştir
arat
altında bul
değiştir
arat
altında bul
değiştir
cmd_gm.cpp
arat
değiştir
config.cpp
aratın 3 tane var 3 içinde uygulayın
değiştirin
utils.cpp
ara
değiştir
ara
değiştir
ara
değiştir
:cay:
UYARI - 12
Hata - 1
13>D:\Azura\Azura\Mainline_Re\extern\include\Python-2.7/token.h(62): warning C4005: 'AT' : macro redefinition
13> D:\Azura\Azura\Mainline_Re\extern\include\mss.h(1044) : see previous definition of 'AT'
Arkadaşlar bu hata 2 tane dosyadan gelen #define AT kodu mevcut.
bana en doğrusu mss.h geldiğinden.
extern/include/Phyton-2.7/token.h
dosyasını açıyoruz.
aratıp
#define AT 50
değiştiriyoruz.
/*#define AT 50 */
Hata - 2
assignment operator could not be generated
arat (örnek verildi.)
CombinedNameValuePairs(const NameValuePairs &pairs1, const NameValuePairs &pairs2)
: m_pairs1(pairs1), m_pairs2(pairs2) {}
altına ekle
CombinedNameValuePairs & operator=( const CombinedNameValuePairs & ) { return *this; }
arkadaşlar eklediğiniz kod içinde "CombinedNameValuePairs" kısımlarını değiştirerek uyarı aldığınız yerlerde kullanabilirsiniz.
Hata - 3
arat (örnek)
if (sizeof(T) != 1 && size > ELEMS_MAX)
değiştir
bool azurat1 = sizeof(T) != 1 && size > ELEMS_MAX;
if (azurat1)
arkadaşlar "if(kod)" if içerisinde ki kod kısmını alın "bool istediğiniz_kelime = kod;" olacak şekilde if'in üstüne ekleyiniz. "if(kod)" kısmınıda "if(istediğiniz kelime)" şeklinde düzenleyin uyarı düzelecektir.
Tamamlanmış Sourcelerden görseller
DB Source
Konu çok uzun olacağı için görüntü kirliliğini kaldırmak amaçlı kodlar spoiler içine alınmıştır.
Lady Azura
Source Warning Fixleri Azura
Metin2 özel sunucu geliştirme süreçlerinde, Azura sistemleri üzerinde çalışırken karşılaşılan source warning fixleri oldukça yaygın bir konudur. Bu tür uyarılar, hem derleme sırasında hem de sunucu çalışırken ortaya çıkabilir. Bu yazıda, Metin2 özel sunucularında Azura sistemlerinde karşılaşılan source warning fixleri hakkında detaylı bilgiler ve çözüm önerileri sunacağız.
Metin2 özel sunucularında PvP sistem tasarımı yaparken, C++ source dosyaları üzerinde değişiklikler yapılır. Bu esnada, source edit işlemleri sırasında bazı derleyici uyarıları (warnings) alınabilir. Bu uyarılar, genellikle kodda potansiyel sorunlar olduğunu belirtmektedir. Azura tabanlı sistemlerde bu uyarılar, game server programming açısından dikkatle ele alınmalıdır.
Neden Source Warning Fixleri Önemlidir?
Source warning fixleri, kodun daha temiz, daha kararlı ve daha sürdürülebilir olmasına yardımcı olur. Uyarılar göz ardı edildiğinde, küçük hatalar zamanla büyük sorunlara dönüşebilir. Özellikle Metin2 özel sunucularında server src veya client src üzerinde çalışırken, bu uyarıları düzeltmek, performans ve güvenlik açısından kritik öneme sahiptir.
C++ source dosyalarında karşılaşılan yaygın uyarılar arasında:
- Uninitialized variables
- Unused variables
- Type mismatch warnings
- Deprecated function calls
Azura Sistemlerinde Warning Fixleri Nasıl Yapılır?
Azura sistemlerinde source warning fixleri yaparken öncelikle derleyici çıktısını dikkatlice okumalısınız. Her bir uyarı, hangi satırda ve neden oluştuğunu belirtir. Bu sayede, kodunuzu daha temiz hale getirebilirsiniz. Örneğin, bir değişken tanımladığınız halde kullanmadıysanız, derleyici bunu bir uyarı olarak raporlayacaktır. Bu gibi durumlarda, değişkeni kaldırmanız veya kullanmanız yeterlidir.
Game server programming kapsamında, auth ve game servislerinde yapılan değişikliklerde de benzer uyarılar oluşabilir. Bu uyarılar, genellikle farklı veri tipleri arasında dönüşüm yapılırken veya eksik fonksiyon bildirimlerinden dolayı meydana gelir.
Dikkat Edilmesi Gerekenler
Source edit yaparken, özellikle Metin2 özel sunucularında, veritabanı (db) ile ilgili işlemlerde dikkatli olunmalıdır. DB core üzerinde yapılan değişikliklerde, warning fixleri göz ardı edilirse, sunucu çökmeleri veya veri kayıpları yaşanabilir. Ayrıca, Python system entegrasyonlarında da, Py Root ve Py GUI sistemlerinde benzer durumlar görülebilir.
Martysama ve diğer Metin2Dev kaynakları üzerinden elde edilen source kodlarda da benzer uyarılar mevcuttur. Bu kaynaklar üzerinden öğrenme sürecinde, compile sırasında alınan tüm uyarıları düzelterek, kod kalitenizi artırabilirsiniz.
Metin2 özel sunucularında core üzerinde çalışırken, channel yapılandırmalarında da benzer source warning fixleri dikkate alınmalıdır. Özellikle game core ve db core arasında veri aktarımı yapılırken, eksik kontrol veya uyumsuz veri türleri uyarıya sebep olabilir.
Sonuç
Source warning fixleri, Metin2 özel sunucu geliştirme sürecinde ihmal edilmemesi gereken önemli bir konudur. Azura sistemlerinde bu uyarıları düzeltmek, hem kod kalitesini artırır hem de sunucunuzun kararlılığını ve performansını olumlu yönde etkiler. PvP sistem tasarımı, C++ source düzenlemeleri ve Python entegrasyonları gibi birçok alanda bu uyarılar dikkate alınmalıdır.
Source Warning Fixes for Azura
Metin2 private server development processes often involve dealing with source warning fixes on Azura based systems. These warnings can appear during compilation or while the server is running. In this article, we will provide detailed information and solutions regarding source warning fixes encountered on Azura systems in Metin2 private servers.
When designing PvP systems in Metin2 private servers, modifications are made to C++ source files. During these source edit operations, various compiler warnings may occur. These warnings usually indicate potential issues within the code. On Azura based systems, such warnings must be carefully handled from a game server programming perspective.
Why Are Source Warning Fixes Important?
Source warning fixes help make the code cleaner, more stable, and maintainable. Ignoring warnings can lead small errors into larger problems over time. Especially when working on server src or client src in Metin2 private servers, fixing these warnings is critical in terms of performance and security.
Common warnings encountered in C++ source files include:
- Uninitialized variables
- Unused variables
- Type mismatch warnings
- Deprecated function calls
How to Perform Warning Fixes in Azura Systems?
When performing source warning fixes in Azura systems, you should first read the compiler output carefully. Each warning indicates the line number and the reason for its occurrence. This allows you to clean up your code. For example, if you define a variable but do not use it, the compiler will report this as a warning. In such cases, removing or using the variable is sufficient.
In game server programming, similar warnings may occur in auth and game services during changes. These warnings typically arise due to type conversions between different data types or missing function declarations.
What to Pay Attention To
When doing source edits, especially in Metin2 private servers, care must be taken in database (db) related operations. If warning fixes are ignored during changes to the DB core, server crashes or data loss may occur. Additionally, similar issues can occur in Python system integrations, particularly in Py Root and Py GUI systems.
Similar warnings exist in source codes obtained through Martysama and other Metin2Dev resources. Throughout the learning process via these sources, improving your code quality by fixing all warnings received during compile time is possible.
When working on core in Metin2 private servers, source warning fixes should also be considered in channel configurations. Particularly during data transfers between game core and db core, incomplete checks or incompatible data types can cause warnings.
Conclusion
Source warning fixes are an important topic that should not be overlooked during Metin2 private server development. Fixing these warnings in Azura systems improves both code quality and the stability and performance of your server. These warnings should be considered in many areas, including PvP system design, C++ source modifications, and Python integrations.
İlk paylaşımım basit bir şey olacak
Uyarı - 1
Kod:
bool CClientManager::MirrorItemTableIntoDB()
Kod bloğunun içinde böyle bir kod bulunması gerek
Kod:
"%d, %d, %d, \"%s\", \"%s\", %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d )",
Bu kod bloğunu alttaki ile değiştirin.
Kod:
"%d, %d, %d, \"%s\", \"%s\", %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, " "%d, %ld, %d, %ld, " "%d, %ld, %d, %ld, %d, %ld, " "%ld, %ld, %ld, %ld, %ld, %ld )",
Bunu yaptıktan sonra biraz daha aşagı gelin alttaki gibi bir kod var
Kod:
"%d, %d, %d, \"%s\", %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d )",
üstteki kodu alttaki ile değiştirin.
Kod:
"%d, %d, %d, \"%s\", %d, %d, %d, %d, " "%d, %d, %d, %d, " "%d, %d, %d, %d, %d, " "%d, %ld, %d, %ld, " "%d, %ld, %d, %ld, %d, %ld, " "%ld, %ld, %ld, %ld, %ld, %ld )",
Şimdilik bu kadar. yakında daha çok ekliyecegim.
Uyarı - 2
Kod:
for (int i = 0; i < m_vecDragonSoulNames.size(); i++)
ve alttaki ile değiştirin.
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulNames.size(); i++)
alttaki kodu aratın.
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
ve alttaki ile değiştirin.
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttaki kodu aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttaki ile değiştirin.
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttakini aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
değiştirin
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttakini aratın
Kod:
for (int k = 0; k < vec_probs.size(); k++)
değiştirin
Kod:
for (unsigned int k = 0; k < vec_probs.size(); k++)
alttakini aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
değiştir
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttakini aratın
Kod:
for (int k = 0; k < vec_probs.size(); k++)
değiştir
Kod:
for (unsigned int k = 0; k < vec_probs.size(); k++)
alttakini aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
değiştir
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttakini aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
değiştir
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
alttakini aratın
Kod:
for (int k = 0; k < vec_chargings.size(); k++)
değiştir
Kod:
for (unsigned int k = 0; k < vec_chargings.size(); k++)
alttakini aratın
Kod:
for (int k = 0; k < vec_probs.size(); k++)
degiştir
Kod:
for (unsigned int k = 0; k < vec_probs.size(); k++)
altakini aratın
Kod:
for (int i = 0; i < m_vecDragonSoulTypes.size(); i++)
degiştir.
Kod:
for (unsigned int i = 0; i < m_vecDragonSoulTypes.size(); i++)
Arkadaşlar öncelikle üsteki kodları uzman arkadaşlar test etsin veya bir sorun varsa bildirsin.
peki bunlarda int'ten önce neden unsigned kodu yerleştirdim.
arkadaşlar böyle her gördüğünüz hataya unsigned yerleştirmek doşru değil
unsigned char 0 ~ 255 arası sayıları temsil eder
signed char ise -128 ~ 127 arasındaki sayıları
üsteki kodlar - ye giden bir sayı yok gördüğünüz gibi int++ ya gitmiş bu da aslında oyunda bug oluşturmaya müsait bir açık değerinde olabileceğini düşünüyorum. o yüzden değeri unsigned yaparak değerin - değerler almamasını ayarlamış olduk.
böylece warning sorununu çözmüş olduk bu tür uyarılar aldığınızda
signed and unsigned bu uyarıları üsteki anlatımımdan yola cıkarak düzeltebilirsiniz.
ben kendimce böyle yorumladım bilgili arkadaşlar doğru yapmışmıyım diye kontrol ederlerse sevinirim yanlış bilgi vermek istemem konudan anında silerim yanlışım varsa daha yeniyim hatalar olabilir.
Uyarı - 3
Kod:
..xx ??xx ???
normalde o yazı elseif'deki yazıyla aynı alttakilerden hoşunuza gideni kullanın.
222. satırdaki kodu alttakilerden biriyle değiştirin hangisi kafanıza yatarsa.
Kod:
SendNoticeMap("5ì´Ëââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬¢¤ íâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ë¦¬ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹ ë¶âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åâââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åâââââââââ¬Å¡¬Å¡¬Å¡¬Åâââââââ¬Å¡¬Å¡¬Åâââââ¬Å¡¬Åâââ¬Åâ¤ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ë°âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ê¹¥ìÅââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Å¼ë¡Åââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Å ì´ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¢ ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹Åââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Åíâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¤ê² ìÅ µëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹Ëââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹¤.", OXEVENT_MAP_INDEX, true);
Kod:
SendNoticeMap(LC_TEXT("5ì´Ëââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬¢¤ íâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ë¦¬ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹ ë¶âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åâââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åâââââââââ¬Å¡¬Å¡¬Å¡¬Åâââââââ¬Å¡¬Å¡¬Åâââââ¬Å¡¬Åâââ¬Åâ¤ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ë°âââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ê¹¥ìÅââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Å¼ë¡Åââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Å ì´ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¢ ìâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹Åââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Åââââââââ¬Å¡¬Å¡¬Å¡¬Åââââââ¬Å¡¬Å¡¬Åââââ¬Å¡¬Åââ¬Åíâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¤ê² ìÅ µëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹Ëââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬ ëâââââââââââââ¬Å¡¬Å¡¬Å¡¬Å¡¬Å¡¬¹¤."), OXEVENT_MAP_INDEX, true);
Uyarı - 4
Kod:
DWORD CHARACTER::GetNextExp() const
içindeki
Kod:
return 2500000000;
üsteki sayıyı alttaki ile değiştir.
Kod:
return 2500000000LL;
bu kadar.
Uyarı - 5
Kod:
vsprintfsprintf strcat strcpy
çok basit boyutsal bakımdan tanımlandırılmamışlar buda uyarıya sebep oluyor boyutsal bakımı bende anlamadım
ama araştırmalarıma bakılırsa bu kodlarda değerler tanımlandırılması gerekiyor.
peki bunları tek tek tanımlandırcaz mı hayır.
Security Features in the CRT sistemini eklicez.
üsteki kodları kontrol edip gönderilecek kodu veya yazıyı ona göre boyutlandırtırıyor.
peki security features in the crt yi nasıl eklicez derseniz işte oda çok kolay.
Kod:
vsprintf_s sprintf_s strcat_s strcpy_s
kısaca _s kodu otomatik biçimlendiricektir ve bizim #define STR_LENGTH 20 gibi bazı kodları eklememize gerek kalmıcak
evet sorusu olan varsa sormasın bu çözüm kesin çözümdür. bulana kadar çok uğraştım hele ki kesin çözüm olduguna emin olana kadar.
arkadaşlar uyarıları tek tek yazmıcam siz c4995 hatası aldınız mı _s fonksiyonu ekleyip düzeltin lütfen.
çünkü çok fazla böyle sorun var.
size genel çözümünü sundum.
Önemli Hata almamanız için okuyun.
çok önemli bir not daha belirtmek isterim
c4995 hatasını gördünüz kodda _sprintf yazıyor ama kod blogundaki
sprintf bakın _sprintf ise _s eklersiniz ama farklı bir kod yazıyor sprintf
sakın sonuna direk _s eklemeyin yoksa error alırsınız fonksiyonda
_sprintf_s
olarak tamamlayın. ha bazı uyarılarda _s koymayın çünkü error'a dönüştürür warning'i örnek PythonChatModule.cpp(434)
len += _snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
len += veya cn += gibi bir şeyler varsa fonksiyonda korkun çünkü o fonksiyonda _s eklerseniz büyük bir ihtimal hata alırsınız.
hatta _ koymak bile hataya sebep olabilir o yüzden deneyin error alırsanız zaten eski haline getirirsiniz.
ama kesin hata alcaksınız çünkü genelde o fonksiyonlara bir şey tanımlanmış oluyor ve
function does not take 2 arguments gibi 2 argument kullanamazsınız gibi hatalar alırsınız.
c4996 _ çözüm
arkadaşlar c4996 çok güzel bir uyarıdır
sprintf
strcat
strcpy
üsteki fonksiyonlara _ başına eklenerek çözülür.
_sprintf
_strcat
_strcpy
bu çözüm ile c4996 uyarısından kurtulduk fakat bitmedi çünkü build ederken fonksiyonda c4995 alabilirsiniz
o zamanda
_sprintf_s
_strcat_s
_strcpy_s
bu şekilde yapmanız gerekmektedir.
teşekkürler.
not : fopen gibi farklı fonksiyonlarda _ veya _s eklemeyin çünkü hata alırsınız.
dikkat bazı fonksiyonlarda hata alma ihtimaliniz var
_ ve _s her zaman çözmüyor daha kötü yapabiliyor.
o yüzden herşey kesin çözcek diye bir şey yok çünkü bazıları tanımlanmış oluyor kodlar cakışabiliyor.
konu üzerindeki araştırmalarım devam etmekte örnek vermicem çünkü çok farklı onlarca örnek var kendiniz deneyip test edip sorunlarınızı çözün.çünkü fonksiyonlara baglı olarak farklı hatalar veya cevaplar cıkabiliyor.
bu c4995 ile c4996 sorunları başımı uyuşturdu biraz kafa dinlicem.
bende insanım.
hadi bol şanslar.
Uyarı - 6
Kod:
Warning 1 warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) C:\Users\Desktop\Source Client\source\UserInterface\NetworkActorManager.cpp 370 1 UserInterface Warning 2 warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) C:\Usersn\Desktop\Source Client\source\UserInterface\NetworkActorManager.cpp 420 1 UserInterface
arkadaşlar internette bazıları bool kodunu int çevirin falan demiş ama ben farklı bir çözüm ile yaptım.
1.uyarı
Kod:
bool bIsMountingHorse = pOldInstance->IsMountingHorse();
Kod:
bool bIsMountingHorse = pOldInstance->IsMountingHorse() !=0;
Kod:
bool bIsMountingHorse = pMainInstance->IsMountingHorse();
Kod:
bool bIsMountingHorse = pMainInstance->IsMountingHorse() !=0;
uyarı gitmiştir.
Uyarı - 7
Kod:
Warning 3 warning C4101: 'iSourceSlotIndex' : unreferenced local variable C:\Users\Desktop\Source Client\source\UserInterface\PythonPlayerModule.cpp 763 1 UserInterface Warning 4 warning C4101: 'iSlotPos' : unreferenced local variable C:\Users\Desktop\Source Client\source\UserInterface\PythonPlayerModule.cpp 978 1 UserInterface
çözüm
1.
Kod:
int iSourceSlotIndex;
Kod:
static int iSourceSlotIndex;
Kod:
int iSlotPos;
Kod:
static int iSlotPos;
kolay gelsin.
Uyarı - 8
Kod:
while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
değiştir
Kod:
while (unsigned(cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
arat
Kod:
for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arType)/sizeof(arType[0]);j++)
arat
Kod:
for(int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++)
arat
Kod:
for(int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++)
arat
Kod:
for(int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++)
arat
Kod:
for(int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++)
arat
Kod:
for (int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++)
arat
Kod:
for (int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++)
arat
Kod:
for (int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++)
arat
Kod:
for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arType)/sizeof(arType[0]);j++)
arat
Kod:
for (int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++)
arat
Kod:
for (int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++)
değiştir
Kod:
for (unsigned int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++)
arat
Kod:
for(int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++)
arat
Kod:
for(int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++)
arat
Kod:
for(int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++)
değiştir
Kod:
for(unsigned int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++)
arat
Kod:
for (int i=0; i<sizeof(dataArray)/sizeof(dataArray[0]);i++)
değiştir
Kod:
for (unsigned int i=0; i<sizeof(dataArray)/sizeof(dataArray[0]);i++)
arat
Kod:
for (int j = 0; j < i; ++j)
değiştir
Kod:
for (unsigned int j = 0; j < i; ++j)
arat
Kod:
int pos = s.find("~");
değiştir
Kod:
unsigned int pos = s.find("~");
3. warning: returns address of local variable
ClientManagerPlayer.cpp
arat
Kod:
char command[20] = "";
değiştir
Kod:
static char command[20] = "";
4. warning: Statement has no effect
ClientManagerBoot.cpp
arat
Kod:
test_data;
değiştir.
Kod:
//test_data;
5. warning: Unused Veriable
ClientManagerBoot.cpp
arat
Kod:
int testValue = m_vec_itemTable.size();
değiştir
Kod:
//int testValue = m_vec_itemTable.size();
6. warning:
protoreader.cpp
ara
Kod:
int get_Item_SubType_Value(int type_value, string inputString)
değiştir
Kod:
int get_Item_SubType_Value(unsigned int type_value, string inputString)
protoreader.h
ara
Kod:
int get_Item_SubType_Value(int type_value, std::string inputString);
değiştir
Kod:
int get_Item_SubType_Value(unsigned int type_value, std::string inputString);
Evet uzun bir aranın sonundan tekrar güzel bir şekilde size elimdekileri paylaşmaya calıştım.
İşinize yaradıysa ne mutlu bana.
4 saatlik çalışmamdan bu kadar şimdi diğer işlerime geçicem metin2'ye bu kadar yeterli
arkadaşlar test_data yı falan pek önemsemeyin gereksiz komutlar onlar ondan dolayı warningli kısımlara // ekledim.
1. sebebi test_data işlemsizdi
2. sebeb testValue boş elemandı.
yani gereksiz verilerdi.
6.warning ise çok uğraştırdı sinir krizi geçiricektim sonra bir baktım aynı değerleri protoreader.h dada tanımlandırmış ondan error veriyormuş biraz güldüm ama sorunuda çözdük.
Tekrar güzel bir paylaşım yapana kadar hoşt çakal.
Uyarı - 9
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT duration FROM new_petsystem WHERE id = %lu LIMIT 1", item2->GetID());
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT duration FROM new_petsystem WHERE id = %d LIMIT 1", item2->GetID());
Kod:
sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "No change by item{VN:%d VAL%d:%ld}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Increase %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Increase %ds by item{VN:%d VAL%d:%ld}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "No change by item{VN:%d VAL%d:%ld}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "No change by item{VN:%d SOC%d:%d}", item->GetVnum(), ITEM_SOCKET_CHARGING_AMOUNT_IDX, item->GetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "No change by item{VN:%d SOC%d:%ld}", item->GetVnum(), ITEM_SOCKET_CHARGING_AMOUNT_IDX, item->GetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Inc %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Inc %ds by item{VN:%d VAL%d:%ld}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Inc %ds by item{VN:%d SOC%d:%d}", ret, item->GetVnum(), ITEM_SOCKET_CHARGING_AMOUNT_IDX, item->GetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX));
Kod:
sprintf(buf, "Inc %ds by item{VN:%d SOC%d:%ld}", ret, item->GetVnum(), ITEM_SOCKET_CHARGING_AMOUNT_IDX, item->GetSocket(ITEM_SOCKET_CHARGING_AMOUNT_IDX));
inputmain.cpp
ara
Kod:
snprintf(szQuery1, sizeof(szQuery1), "INSERT INTO new_petsystem VALUES(%lu,'%s', 1, 0, 0, 0, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)", item->GetID(), p->petname, number(1, 23), number(1, 23), number(1, 23), tmpskill[0], 0, tmpskill[1], 0, tmpskill[2], 0, tmpdur, tmpdur);
Kod:
snprintf(szQuery1, sizeof(szQuery1), "INSERT INTO new_petsystem VALUES(%d,'%s', 1, 0, 0, 0, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)", item->GetID(), p->petname, number(1, 23), number(1, 23), number(1, 23), tmpskill[0], 0, tmpskill[1], 0, tmpskill[2], 0, tmpdur, tmpdur);
questlua_petnew.cpp
ara
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT duration,tduration FROM new_petsystem WHERE id = %lu ", id);
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT duration,tduration FROM new_petsystem WHERE id = %d ", id);
new_petsystem.cpp
ara
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT name,level,exp,expi,bonus0,bonus1,bonus2,skill0,skill0lv,skill1,skill1lv,skill2,skill2lv,duration,tduration,evolution FROM new_petsystem WHERE id = %lu ", pSummonItem->GetID());
Kod:
snprintf(szQuery1, sizeof(szQuery1), "SELECT name,level,exp,expi,bonus0,bonus1,bonus2,skill0,skill0lv,skill1,skill1lv,skill2,skill2lv,duration,tduration,evolution FROM new_petsystem WHERE id = %d ", pSummonItem->GetID());
dragonsoul.cpp
ara
Kod:
sprintf(buf, "dice(%d) prob(%d)", fDice, fProb);
Kod:
sprintf(buf, "dice(%d) prob(%d)", (int)fDice, (int)fProb);
locale_service.cpp
ara
Kod:
printf("<ERROR> PLAYER_PER_ACCOUNT = %lld\n", PLAYER_PER_ACCOUNT);
Kod:
printf("<ERROR> PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT);
belt_inventory_helper.h
ara
Kod:
static TGradeUnit GetBeltGradeByRefineLevel(int level)
Kod:
static TGradeUnit GetBeltGradeByRefineLevel(unsigned int level)
new_petsystem.cpp'de warning veriyor fakat
new_petsystem.h'da çözüyoruz.
ara
Kod:
int GetNextExpFromMob() { return m_dwExpFromMob; } int GetNextExpFromItem() { return m_dwExpFromItem; }
Kod:
unsigned int GetNextExpFromMob() { return m_dwExpFromMob; } unsigned int GetNextExpFromItem() { return m_dwExpFromItem; }
group_text_parse_tree.h
ara
Kod:
bool CGroupNode::CGroupNodeRow::GetValue(int idx, OUT T& value) const bool CGroupNode::CGroupNodeRow::GetValue(unsigned int idx, OUT T& value) const
Kod:
bool GetValue(int idx, OUT T& value) const; bool GetValue(unsigned int idx, OUT T& value) const;
Kod:
int idx = m_pOwnerGroupNode->GetColumnIndexFromName(stColKey);
Kod:
unsigned int idx = m_pOwnerGroupNode->GetColumnIndexFromName(stColKey);
group_text_parse_tree_cpp
ara
Kod:
bool CGroupNode::GetRow(int idx, OUT const CGroupNode::CGroupNodeRow ** ppRow) const bool CGroupNode::GetRow(unsigned int idx, OUT const CGroupNode::CGroupNodeRow ** ppRow) const
Kod:
bool GetRow(int idx, OUT const CGroupNodeRow ** ppRow) const; bool GetRow(unsigned int idx, OUT const CGroupNodeRow ** ppRow) const;
Kod:
for (int i = 1; i < stTokenVector.size(); i++)
Kod:
for (unsigned int i = 1; i < stTokenVector.size(); i++)
shop_manager.cpp
ara
Kod:
for (int i = 0; i < shopItems.size(); i++)
Kod:
for (unsigned int i = 0; i < shopItems.size(); i++)
Kod:
if((unsigned)dwPrice > item->GetGold())
Kod:
if((unsigned)dwPrice > item->GetGold())
acce.cpp
ara
Kod:
for (int i = 0; i < s_acce_proto.size(); ++i)
Kod:
for (unsigned int i = 0; i < s_acce_proto.size(); ++i)
shopex.cpp
ara
Kod:
int count = ch->CountSpecifyTypeItem(ITEM_SECONDARY_COIN);
Kod:
unsigned int count = ch->CountSpecifyTypeItem(ITEM_SECONDARY_COIN);
dragonsoul.cpp
ara
Kod:
for (int i = 0; i < vec_addtional_applys.size(); i++)
Kod:
for (unsigned int i = 0; i < vec_addtional_applys.size(); i++)
Kod:
for (int j = 0; j < vec_addtional_applys.size(); j++)
Kod:
for (unsigned int j = 0; j < vec_addtional_applys.size(); j++)
Kod:
for (int idx = 0; idx < vec_probs.size(); idx++)
Kod:
for (unsigned int idx = 0; idx < vec_probs.size(); idx++)
Kod:
for (int i = 0; i < vec_probs.size(); i++)
Kod:
for (unsigned int i = 0; i < vec_probs.size(); i++)
item_manager.cpp
ara
Kod:
for (int i = 0; i < m_vec_item_vnum_range_info.size(); i++)
Kod:
for (unsigned int i = 0; i < m_vec_item_vnum_range_info.size(); i++)
item.cpp
ara
Kod:
int remain_sec = GetSocket(ITEM_SOCKET_REMAIN_SEC);
Kod:
unsigned int remain_sec = GetSocket(ITEM_SOCKET_REMAIN_SEC);
Kod:
int remain_sec = GetSocket(ITEM_SOCKET_REMAIN_SEC); int given_time = fPercent * duration / 100;
Kod:
unsigned int remain_sec = GetSocket(ITEM_SOCKET_REMAIN_SEC); unsigned int given_time = fPercent * duration / 100;
Kod:
for (int i = 0; i < sizeof(infos) / sizeof(infos[0]); i++)
Kod:
for (unsigned int i = 0; i < sizeof(infos) / sizeof(infos[0]); i++)
char_item.cpp
ara
Kod:
if (item->GetSocket(0) >= _countof(aApplyInfo))
Kod:
if ((unsigned)item->GetSocket(0) >= _countof(aApplyInfo))
Kod:
for (int i = 0; i < sizeof(g_aBuffOnAttrPoints)/sizeof(g_aBuffOnAttrPoints[0]); i++)
Kod:
for (unsigned int i = 0; i < sizeof(g_aBuffOnAttrPoints)/sizeof(g_aBuffOnAttrPoints[0]); i++)
Kod:
for (int i = 0; i < sizeof(g_aBuffOnAttrPoints)/sizeof(g_aBuffOnAttrPoints[0]); i++)
Kod:
for (unsigned int i = 0; i < sizeof(g_aBuffOnAttrPoints)/sizeof(g_aBuffOnAttrPoints[0]); i++)
char_skill.cpp
ara
Kod:
int iArrayIndexSkill[*] = {94, 95, 96, 109, 110, 111};
Kod:
unsigned int iArrayIndexSkill[*] = {94, 95, 96, 109, 110, 111};
Kod:
for (int iBuffSkill = 0; iBuffSkill < _countof(iArrayIndexSkill); iBuffSkill++)
Kod:
for (unsigned int iBuffSkill = 0; iBuffSkill < _countof(iArrayIndexSkill); iBuffSkill++)
cube.cpp
ara
Kod:
if (ch->GetGold() < cube_proto->gold)
Kod:
if ((unsigned)ch->GetGold() < cube_proto->gold)
Kod:
for (int i = 0; i < s_cube_proto.size(); ++i)
Kod:
for (unsigned int i = 0; i < s_cube_proto.size(); ++i)
desc_client.cpp
ara
Kod:
if (fForce || m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDATE_PERIOD < t) {
Kod:
if (fForce || (unsigned)m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDATE_PERIOD < t) {
shop.cpp
ara
Kod:
if (m_itemVector[i].itemid == itemID)
Kod:
if ((unsigned)m_itemVector[i].itemid == itemID)
3. Warning : no newline at end of file
Alttakilerin Sonlarında Birer tane boş satır bırakın.
New_PetSystem.cpp
questlua_petnew.cpp
char_dragonsoul.cpp
Uyarı - 10
Kod:
bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
Kod:
long duration = (0 != item->GetSocket(0)) ? item->GetSocket(0) : item->GetProto()->aLimits[item->GetProto()->cLimitRealTimeFirstUseIndex].lValue;
Kod:
long duration = (0 != item->GetSocket(0)) ? item->GetSocket(0) : item->GetProto()->aLimits[static_cast<unsigned char>(item->GetProto()->cLimitRealTimeFirstUseIndex)].lValue;
item.cpp
bul
Kod:
return GetProto()->aLimits[GetProto()->cLimitTimerBasedOnWearIndex].lValue;
Kod:
return GetProto()->aLimits[static_cast<unsigned char>(GetProto()->cLimitTimerBasedOnWearIndex)].lValue;
warning: comparison is always false due to limited range of data type
Char_item.cpp
uyarı alınan fonksiyon
Kod:
if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
Kod:
void CHARACTER::ClearItem()
Kod:
BYTE p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j);
Kod:
int p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j);
warning: control reaches end of non-void function
char_dragonsoul.cpp
arat
Kod:
bool CHARACTER::DragonSoul_ActivateDeck(int deck_idx)
Kod:
}
Kod:
return true; }
char_item.cpp
arat
Kod:
case DRAGON_SOUL_INVENTORY:
Kod:
}
Kod:
return false; }
desc_p2p.cpp
arat
Kod:
bool DESC_P2P::Setup(LPFDWATCH fdw, socket_t fd, const char * host, WORD wPort)
Kod:
}
Kod:
return true; }
warning will be initialized after
item.h
arat
Kod:
LPEVENT m_pkDestroyEvent; LPEVENT m_pkExpireEvent; LPEVENT m_pkUniqueExpireEvent; LPEVENT m_pkTimerBasedOnWearExpireEvent; LPEVENT m_pkRealTimeExpireEvent; LPEVENT m_pkAccessorySocketExpireEvent; LPEVENT m_pkOwnershipEvent;
Kod:
LPEVENT m_pkDestroyEvent; LPEVENT m_pkUniqueExpireEvent; LPEVENT m_pkTimerBasedOnWearExpireEvent; LPEVENT m_pkRealTimeExpireEvent; LPEVENT m_pkExpireEvent; LPEVENT m_pkAccessorySocketExpireEvent; LPEVENT m_pkOwnershipEvent;
ClientPackageCryptInfo.h
arat
Kod:
int m_nCryptKeyPackageCnt; std::vector<BYTE> m_vecPackageCryptKeys; BYTE* m_pSerializedCryptKeyStream;
Kod:
std::vector<BYTE> m_vecPackageCryptKeys; BYTE* m_pSerializedCryptKeyStream; int m_nCryptKeyPackageCnt;
group_text_parse_tree.h
arat
Kod:
CGroupNode * m_pRootGroupNode; std::string m_strFileName; DWORD m_dwcurLineIndex;
Kod:
std::string m_strFileName; DWORD m_dwcurLineIndex; CGroupNode * m_pRootGroupNode;
Kolay Gelsin!
:cay:
UYARI - 11
Kod:
if (amount < 0 && exp < -amount)
Kod:
if (amount < 0 && (signed)exp < -amount)
unused variable pPC /efsun nesnesi süresi fixlerken oluşan bir hata ben eski haline getirdim efsun nesnesinde süre hala yok.
char_item.cpp
bul
Kod:
if (pPC) /*{ DWORD dwNowMin = get_global_time() / 60; DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag); if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("??? ??? %d? ???? ?? ??? ? ????.(%d ? ??)"), dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin)); return false; } pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin); }*/
Kod:
if (pPC) { DWORD dwNowMin = get_global_time() / 60; DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag); if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("??? ??? %d? ???? ?? ??? ? ????.(%d ? ??)"), dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin)); return false; } pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin); }
unused variable dwCurtime / hareket ederken item değiştirmeyi fixlerken oluşuyor bence orjinal hali daha iyidir haraket ederken item değişmesin millet.
char_item.cpp
bul
Kod:
/*if (iWearCell != WEAR_ARROW && (dwCurTime - GetLastAttackTime() <= 1500 || dwCurTime - m_dwLastSkillTime <= 1500)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("??? ?? ?? ??? ? ????.")); return false; }*/
Kod:
if (iWearCell != WEAR_ARROW && (dwCurTime - GetLastAttackTime() <= 1500 || dwCurTime - m_dwLastSkillTime <= 1500)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("??? ?? ?? ??? ? ????.")); return false; }
unused variable sum,prob_sum,dwVnum,count,rider,bDoMoveAlone,len_global,last,line,strArg1,itemType,itemSubType,bWereMine,vnum,q,pPC,petVID,npcVNUM,old_value,new_value
New_PetSystem.cpp
arat
Kod:
bool bDoMoveAlone = true;
Kod:
(void)bDoMoveAlone;
arat
Kod:
DWORD petVID = petActor->Summon(petName, pSummonItem, bSpawnFar);
Kod:
(void)petVID;
acce.cpp
arat
Kod:
int count = 0;
Kod:
(void)count;
DragonSoul.cpp
arat
Kod:
DWORD dwVnum = pItem->GetVnum();
Kod:
(void)dwVnum;
arat
Kod:
float prob_sum;
Kod:
(void)prob_sum;
arat
Kod:
if (-1 == idx)
Kod:
(void)sum;
arat
Kod:
if (-1 == (result_step = Gamble(vec_probs)))
Kod:
(void)sum;
buff_on_attributes.cpp
arat
Kod:
int old_value = sum_of_attr_value * m_bBuffValue / 100; int new_value = sum_of_attr_value * bNewValue / 100;
Kod:
(void)old_value; (void)new_value;
cube.cpp
arat
Kod:
const DWORD& npcVNUM = iter->first;
Kod:
(void)npcVNUM;
PetSystem.cpp
arat
Kod:
DWORD petVID = petActor->Summon(petName, pSummonItem, bSpawnFar);
Kod:
(void)petVID;
char_state.cpp
bul
Kod:
LPCHARACTER rider = GetRider();
Kod:
(void)rider;
petsystem.cpp
bul
Kod:
bool bDoMoveAlone = true;
Kod:
(void)bDoMoveAlone;
input_main.cpp
bul
Kod:
int len_global
Kod:
(void)len_global;
input_auth.cpp
aratın
Kod:
char *last = 0;
Kod:
(void)last;
config.cpp
aratılır
Kod:
TOKEN("WEB_AUTH")
Kod:
const char * line = two_arguments(value_string, openid_host, sizeof(openid_host), openid_uri, sizeof(openid_uri));
Kod:
(void)line;
cmd_general.cpp
arat
Kod:
ACMD(do_CubePetAdd)
Kod:
const std::string& strArg1 = std::string(arg1);
Kod:
(void)strArg1;
char_item.cpp
aratın
Kod:
BYTE itemType = item->GetType(); BYTE itemSubType = item->GetSubType();
Kod:
(void)itemType; (void)itemSubType;
item.cpp
arat
Kod:
bool bWereMine = this->GetLastOwnerPID() == ch->GetPlayerID();
Kod:
(void)bWereMine;
item.cpp
arat
Kod:
const DWORD vnum = item->GetVnum();
Kod:
(void)vnum;
questlua_npc.cpp
arat 4 tane uyarı var uyarı aldıklarınıza uygulayın.
Kod:
CQuestManager& q = CQuestManager::instance();
Kod:
(void)q;
questnpc.cpp
arat
Kod:
PC * pPC = CQuestManager::instance().GetPC(pc.GetID());
Kod:
(void)pPC;
"cell","n","x","y","returnBool" may be used uninitialized in this function
cmd_gm.cpp
arat
Kod:
ACMD (do_use_item)
Kod:
int cell;
Kod:
int cell = 0;
arat
Kod:
int nPoint = nCurPoint + nChangeAmount;
Kod:
int n;
Kod:
int n = 0;
arat
Kod:
ACMD(do_mob_ld)
Kod:
long x, y;
Kod:
long x = 0, y = 0;
questlua.cpp
arat
Kod:
bool FPartyCheckFlagLt::operator() (LPCHARACTER ch)
Kod:
bool returnBool;
Kod:
bool returnBool = false;
NULL used in aritmetic
questlua_petnew.cpp
arat
Kod:
bool petActor = petSystem->IncreasePetSkill(skill);
Kod:
if (NULL == petActor)
Kod:
if ('\0' == petActor)
arat
Kod:
bool petActor = petSystem->IncreasePetEvolution();
Kod:
if (NULL == petActor)
Kod:
if ('\0' == petActor)
arat
Kod:
int pet_level = petSystem->GetLevel();
Kod:
if (NULL == pet_level)
Kod:
if ('\0' == pet_level)
arat
Kod:
int pet_evo = petSystem->GetEvolution();
Kod:
if (NULL == pet_evo)
Kod:
if ('\0' == pet_evo)
cmd_gm.cpp
arat
Kod:
if (*szName == NULL || *szChangeAmount == '\0')
Kod:
if (*szName == '\0' || *szChangeAmount == '\0')
config.cpp
aratın 3 tane var 3 içinde uygulayın
Kod:
if (NULL != line[0])
Kod:
if ('\0' != line[0])
utils.cpp
ara
Kod:
if (NULL == w[1])
Kod:
if ('\0' == w[1])
Kod:
if (NULL == *s)
Kod:
if ('\0' == *s)
Kod:
if (NULL == *w)
Kod:
if ('\0' == *w)
:cay:
UYARI - 12
Hata - 1
13>D:\Azura\Azura\Mainline_Re\extern\include\Python-2.7/token.h(62): warning C4005: 'AT' : macro redefinition
13> D:\Azura\Azura\Mainline_Re\extern\include\mss.h(1044) : see previous definition of 'AT'
Arkadaşlar bu hata 2 tane dosyadan gelen #define AT kodu mevcut.
bana en doğrusu mss.h geldiğinden.
extern/include/Phyton-2.7/token.h
dosyasını açıyoruz.
aratıp
#define AT 50
değiştiriyoruz.
/*#define AT 50 */
Hata - 2
assignment operator could not be generated
arat (örnek verildi.)
CombinedNameValuePairs(const NameValuePairs &pairs1, const NameValuePairs &pairs2)
: m_pairs1(pairs1), m_pairs2(pairs2) {}
altına ekle
CombinedNameValuePairs & operator=( const CombinedNameValuePairs & ) { return *this; }
arkadaşlar eklediğiniz kod içinde "CombinedNameValuePairs" kısımlarını değiştirerek uyarı aldığınız yerlerde kullanabilirsiniz.
Hata - 3
arat (örnek)
if (sizeof(T) != 1 && size > ELEMS_MAX)
değiştir
bool azurat1 = sizeof(T) != 1 && size > ELEMS_MAX;
if (azurat1)
arkadaşlar "if(kod)" if içerisinde ki kod kısmını alın "bool istediğiniz_kelime = kod;" olacak şekilde if'in üstüne ekleyiniz. "if(kod)" kısmınıda "if(istediğiniz kelime)" şeklinde düzenleyin uyarı düzelecektir.
Tamamlanmış Sourcelerden görseller
DB Source
Konu çok uzun olacağı için görüntü kirliliğini kaldırmak amaçlı kodlar spoiler içine alınmıştır.
Lady Azura
Source Warning Fixleri Azura
Metin2 özel sunucu geliştirme süreçlerinde, Azura sistemleri üzerinde çalışırken karşılaşılan source warning fixleri oldukça yaygın bir konudur. Bu tür uyarılar, hem derleme sırasında hem de sunucu çalışırken ortaya çıkabilir. Bu yazıda, Metin2 özel sunucularında Azura sistemlerinde karşılaşılan source warning fixleri hakkında detaylı bilgiler ve çözüm önerileri sunacağız.
Metin2 özel sunucularında PvP sistem tasarımı yaparken, C++ source dosyaları üzerinde değişiklikler yapılır. Bu esnada, source edit işlemleri sırasında bazı derleyici uyarıları (warnings) alınabilir. Bu uyarılar, genellikle kodda potansiyel sorunlar olduğunu belirtmektedir. Azura tabanlı sistemlerde bu uyarılar, game server programming açısından dikkatle ele alınmalıdır.
Neden Source Warning Fixleri Önemlidir?
Source warning fixleri, kodun daha temiz, daha kararlı ve daha sürdürülebilir olmasına yardımcı olur. Uyarılar göz ardı edildiğinde, küçük hatalar zamanla büyük sorunlara dönüşebilir. Özellikle Metin2 özel sunucularında server src veya client src üzerinde çalışırken, bu uyarıları düzeltmek, performans ve güvenlik açısından kritik öneme sahiptir.
C++ source dosyalarında karşılaşılan yaygın uyarılar arasında:
- Uninitialized variables
- Unused variables
- Type mismatch warnings
- Deprecated function calls
Azura Sistemlerinde Warning Fixleri Nasıl Yapılır?
Azura sistemlerinde source warning fixleri yaparken öncelikle derleyici çıktısını dikkatlice okumalısınız. Her bir uyarı, hangi satırda ve neden oluştuğunu belirtir. Bu sayede, kodunuzu daha temiz hale getirebilirsiniz. Örneğin, bir değişken tanımladığınız halde kullanmadıysanız, derleyici bunu bir uyarı olarak raporlayacaktır. Bu gibi durumlarda, değişkeni kaldırmanız veya kullanmanız yeterlidir.
Game server programming kapsamında, auth ve game servislerinde yapılan değişikliklerde de benzer uyarılar oluşabilir. Bu uyarılar, genellikle farklı veri tipleri arasında dönüşüm yapılırken veya eksik fonksiyon bildirimlerinden dolayı meydana gelir.
Dikkat Edilmesi Gerekenler
Source edit yaparken, özellikle Metin2 özel sunucularında, veritabanı (db) ile ilgili işlemlerde dikkatli olunmalıdır. DB core üzerinde yapılan değişikliklerde, warning fixleri göz ardı edilirse, sunucu çökmeleri veya veri kayıpları yaşanabilir. Ayrıca, Python system entegrasyonlarında da, Py Root ve Py GUI sistemlerinde benzer durumlar görülebilir.
Martysama ve diğer Metin2Dev kaynakları üzerinden elde edilen source kodlarda da benzer uyarılar mevcuttur. Bu kaynaklar üzerinden öğrenme sürecinde, compile sırasında alınan tüm uyarıları düzelterek, kod kalitenizi artırabilirsiniz.
Metin2 özel sunucularında core üzerinde çalışırken, channel yapılandırmalarında da benzer source warning fixleri dikkate alınmalıdır. Özellikle game core ve db core arasında veri aktarımı yapılırken, eksik kontrol veya uyumsuz veri türleri uyarıya sebep olabilir.
Sonuç
Source warning fixleri, Metin2 özel sunucu geliştirme sürecinde ihmal edilmemesi gereken önemli bir konudur. Azura sistemlerinde bu uyarıları düzeltmek, hem kod kalitesini artırır hem de sunucunuzun kararlılığını ve performansını olumlu yönde etkiler. PvP sistem tasarımı, C++ source düzenlemeleri ve Python entegrasyonları gibi birçok alanda bu uyarılar dikkate alınmalıdır.
Source Warning Fixes for Azura
Metin2 private server development processes often involve dealing with source warning fixes on Azura based systems. These warnings can appear during compilation or while the server is running. In this article, we will provide detailed information and solutions regarding source warning fixes encountered on Azura systems in Metin2 private servers.
When designing PvP systems in Metin2 private servers, modifications are made to C++ source files. During these source edit operations, various compiler warnings may occur. These warnings usually indicate potential issues within the code. On Azura based systems, such warnings must be carefully handled from a game server programming perspective.
Why Are Source Warning Fixes Important?
Source warning fixes help make the code cleaner, more stable, and maintainable. Ignoring warnings can lead small errors into larger problems over time. Especially when working on server src or client src in Metin2 private servers, fixing these warnings is critical in terms of performance and security.
Common warnings encountered in C++ source files include:
- Uninitialized variables
- Unused variables
- Type mismatch warnings
- Deprecated function calls
How to Perform Warning Fixes in Azura Systems?
When performing source warning fixes in Azura systems, you should first read the compiler output carefully. Each warning indicates the line number and the reason for its occurrence. This allows you to clean up your code. For example, if you define a variable but do not use it, the compiler will report this as a warning. In such cases, removing or using the variable is sufficient.
In game server programming, similar warnings may occur in auth and game services during changes. These warnings typically arise due to type conversions between different data types or missing function declarations.
What to Pay Attention To
When doing source edits, especially in Metin2 private servers, care must be taken in database (db) related operations. If warning fixes are ignored during changes to the DB core, server crashes or data loss may occur. Additionally, similar issues can occur in Python system integrations, particularly in Py Root and Py GUI systems.
Similar warnings exist in source codes obtained through Martysama and other Metin2Dev resources. Throughout the learning process via these sources, improving your code quality by fixing all warnings received during compile time is possible.
When working on core in Metin2 private servers, source warning fixes should also be considered in channel configurations. Particularly during data transfers between game core and db core, incomplete checks or incompatible data types can cause warnings.
Conclusion
Source warning fixes are an important topic that should not be overlooked during Metin2 private server development. Fixing these warnings in Azura systems improves both code quality and the stability and performance of your server. These warnings should be considered in many areas, including PvP system design, C++ source modifications, and Python integrations.
