MT2Dev Work - Geliştirme Günlüğü

MT2Dev

Cplusplus
Premium Üye
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
415
Çözümler
35
Beğeni
767
Puan
924
Ticaret Puanı
0
Selamlar MMOTutkunları, geliştirme günlüğü konsepti aslında uzun yıllardır çok sevdiğim, paylaşılanları okurken çok keyif aldığım ve zaman zaman da belirli fikirler aldığım çok güzel bir konsept, uzun zamandır bende bu tarz bir konu açmak istiyordum fakat çok uzun bir hazırlık aşaması gerektiğini düşündüğümden hep erteledim. Pandemi dönemi iş güç olayları hafiflemişken Mart 2020 gibi bir altyapı geliştirmeye başladım, hedefim olabildiğince güncel ve temiz bir altyapı yapmak ve tüm sorunları fixlemekti, tabii tam zamanlı olarak üzerinde çalışma fırsatı bulamadım hatta bazı dönemler iş yoğunluğu sebebiyle aylarca devam edemediğim dönemler de oldu. Geldiğim noktada hala finalden çok uzaktayım fakat asıl amacım uğraşırken keyif aldığım bir hobi projesi olmasıydı, öyle de devam ediyor. Bu konuyu açma sebebim hem okumayı seven arkadaşlara bir içerik oluşturmak hem de benim paylaştığım notlardan belki bir fikir üretecek veya kendine uyarlayacak arkadaşlara yardımcı olmak, yaklaşık 4 senelik bir süreç olduğu için biraz yer kaplayacak, başlayalım.

(Bu sürümden sonraki sürümlerin güncellemeleri yorum olarak gelecek.)
0.70V - SERVER TARAFI;

(Buraya eklemeye çalışınca ortalama 80.000 harf ile bütün sınırları alt üst ettiği için bazı listeleri paste üzerinden paylaşıyorum, en azından bu seferlik.)

Linkleri görebilmek için giriş yap veya kayıt ol.


Linkleri görebilmek için giriş yap veya kayıt ol.


ServiceDefs.h:
Genişlet Daralt Kopyala
/********************************************************/
/* FILE:    ServiceDefs.h                               */
/* INFO:    All defines linked to a single header file. */
/* AUTHOR:  MT2Dev                                      */
/* DATE:    11/09/2023                                  */
/********************************************************/
#ifndef __MT2DEV_SERVER_SERVICEDEFS_H__
#define __MT2DEV_SERVER_SERVICEDEFS_H__

//********************************************************************* DEBUGGING_FEATURES **********************************************************************//
#define USE_STACKTRACE            // Ymir Stacktrace System for Analyze Errors (Be sure to edit game/src/Makefile, USE_STACKTRACE = 1 or 0)
#define USE_QUERY_LOGS            // Logging Queries for Analyzing (If it is test server of course)
//#define ENABLE_SEQUENCE_SYSTEM  // Ymir Sequence System (Useful for debugging)
#define ENABLE_SYSLOG_PACKET_SENT // Syslogs for Packet Sent (If it is test server of course)
#define ENABLE_SYSLOG_LEVEL_3     // It will enable all of the syslogs for debugging & test purposes
//***************************************************************** END_OF_DEBUGGING_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//****************************************************************** FIX_AND_SECURITY_FEATURES ******************************************************************//
/* IMPORTANT NOTE!!! - Both encryption systems CANNOT BE ACTIVATED at the same time!!! Btw if you disable both, packet encryption will be COMPLETELY turned off. */
//#define _IMPROVED_PACKET_ENCRYPTION_ // Ymir Improved Packet Encryption System
//#define _OLD_PACKET_ENCRYPTION_      // Ymir Old Packet Encryption System (Old ones like xtea, pong, keys etc.)
//#define ENABLE_EXTERNAL_IP_SUPPORT   // For Cloud (Oracle, Google, AWS, Azure) External IP Support (INFO; If you don't use external ip, NOT uncomment this!)
#define ENABLE_PORT_SECURITY           // P2P (API Tool) Extra Security
//************************************************************** END_OF_FIX_AND_SECURITY_FEATURES ***************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//********************************************************************** OPTIONAL_FEATURES **********************************************************************//
//#define ENABLE_PVP_SERVER_MODE              // With this define, new players start 90 Level and have 1Kkk yang also they have +9 item set. (Look DEFINE_SETTINGS)
//#define UNLIMITED_POTIONS                   // Unlimited Potions (Ex; HP/SP Potions, Purple/Green Potions, Ability Potions, Blends etc.)
//#define UNLIMITED_CAPE_OF_COURAGE           // Unlimited Cape Of Courage (All Vnums)
//#define UNLIMITED_METIN_STONE_DETECTOR      // Unlimited Metin Stone Detector (All Vnums)
//#define UNLIMITED_GUILD_MEMBER              // Unlimited Guild Member (This one allows you to take unlimited guild member in your guild rather than limited version)
//#define UNLIMITED_ARROWS                    // Unlimited Arrows (All Vnums)
//#define BOOSTED_EXP_DROP                    // 8x EXP Drop Bonus (Sometimes Will Useful For Speed-up In Game Test Purposes) - (Works ONLY in test server mode!)
//#define BOOSTED_YANG_DROP                   // 4x Yang Drop Bonus (Sometimes Will Useful For Increase In Game Earnings)
//#define DISABLE_EMPIRE_DAMAGE_ADVANTAGE     // Disable Empire Damage Advantage (If the attacker belongs to a different empire, reduce damage by %10)
//#define DISABLE_BOW_DISTANCE                // Disable Bow Distance Factor in the Assasin Damage Calculation
//#define DISABLE_STAMINA_WALK                // Disable Walk Mode When Stamina is 0 (NOTE: Not only for PC's, also AI, Horse and Pets include this too!)
//#define DISABLE_DEATH_PENALTY               // Disable EXP Loss After Death (Restart Here)
//#define DISABLE_PREVENT_DEATH_FROM_POISON   // Disable Prevent Death From Poison (INFO: If this enabled, PC's can die due poison damage, HP not stay at 1.)
//#define DISABLE_HORSE_HEALTH_AND_STAMINA    // Disable Horse Health and Stamina Factors (So horse never be die, never be starving, never be out of stamina etc.)
//#define DISABLE_LOVER_NEED_SP_TO_WARP       // Disable Lovers Need SP For Warp (With Marriage Ring)
//#define DISABLE_MONSTERS_POISONED_ONLY_ONCE // Disable Monsters Poisoned Only Once (Normally players just have one chance to poison while kill the monster)
//#define DISABLE_NEED_EXP_FOR_SKILL_READING  // Disable Need EXP For Skill Reading (Normally players give 20.000 EXP for each reading)
//#define DISABLE_GUILD_SKILL_USAGE           // Disable Guild Skill Usage During War (Only guild leader can use skills)
//#define DISABLE_GUILD_JOIN_COOLDOWN         // Disable Guild Re-join Cooldown (After leave or kick some guild you not wait any time for join again)
//#define DISTANCE_CHECK_FOR_MARRIAGE_POINT   // Distance Check For Earn Marriage Point (While this one is turn on, if lovers not around each other they not earn any love points)
//****************************************************************** END_OF_OPTIONAL_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//*********************************************************************** DEFINE_SETTINGS ***********************************************************************//
#ifdef ENABLE_PVP_SERVER_MODE // This option made for PvP server concept, if you activated this define YOU MUST NEED TO EDIT START QUEST! (Like gold,items etc.)
    #define PLAYER_START_LEVEL            90         // New player start Level.
    #define PLAYER_START_GOLD            1000000000 // New player start Yang.
    #define PLAYER_MAX_INITIAL_ITEM        8          // New player initial items max.
#endif //ENABLE_PVP_SERVER_MODE
//******************************************************************* END_OF_DEFINE_SETTINGS ********************************************************************//
#endif //__MT2DEV_SERVER_SERVICEDEFS_H__

Settings.h:
Genişlet Daralt Kopyala
/***********************************************************************/
/* FILE:    Settings.h                                                 */
/* INFO:    All important settings are linked to a single header file. */
/* AUTHOR:  MT2Dev                                                     */
/* DATE:    26/11/2020                                                 */
/***********************************************************************/
#ifndef __MT2DEV_SERVER_SETTINGS_H__
#define __MT2DEV_SERVER_SETTINGS_H__

// SECURITY_SETTINGS
#define CLIENT_VERSION_KEY                2407972020       // Client Version Key, it's must be same on the serverside!
#define LSS_SECURITY_KEY                4321dcba5678efgz // Ymir Security Key (Only used if _OLD_PACKET_ENCRYPTION_ is enabled)
// END_OF_SECURITY_SETTINGS

// VARIOUS_SETTINGS
#define MAP_ALLOW_LIMIT                    32         // Map Allow Limit.
#define PK_LEVEL_FOR_PROTECT            15         // PK Protect Level For New Players (Ex; If this is 15, nobody can hit (PvP) new players if they under 15 level)
#define MAX_STAT                        95         // Maximum Stat Points. (Note: The packside needs to be change too when you set another value here, to avoid gauge bug.)
#define MAX_LEVEL_POINT_CAN_STEP        98         // Maximum Level at Which The Character Will Continue to Gain Status.
#define MAX_ITEM_INTRO_STACK            200        // Maximum Number of Items Stacked (Maximum setting that can be made for now; 255).
#define GOLD_MAX                        2000000000 // Maximum Yang Limit (Maximum setting that can be made for now {int}; 2.147.483.647 Yang).
#define INVENTORY_MAX_NUM                90         // Number of Inventory Slots (90 Slots = 2 Inventory). (Note: The sum of the slots of the inventory should not exceed 255 !!)
#define INVENTORY_PAGE_COUNT            2          // Inventory Total Page Count.
#define ITEM_DROP_PENALTY_LEVEL            50         // Minimum Level to Item Drop Penalty (Note: If the low rank character is below level 50, their item will not drop.)
#define MOBS_DISAPPEARANCE_TIME            3          // Mobs disappearance time(Second) after death, it needs to be kept low to avoid lag.
#define AUTO_RESTART_TOWN_TIME            180        // After Player's die, if they not choose start here/town, after this time they will be spawn in town automatically.
#define BRAVE_CAPE_POSSIBILITY            80         // Brave Cape - Possibility(%) (With just one click) to Attract Monsters.
#define BRAVE_CAPE_MAX_DISTANCE            5000       // Brave Cape - Maximum Distance Of Monsters You Can Attract.
#define CAMPFIRE_TIME                    30         // How many seconds will the campfire be active after using it ?
#define STONE_INSERT_PERCENT_CHANCE        30         // Chance(%) For Stones to be Added.
#define ORE_INSERT_PERCENT_CHANCE        50         // Percentage(%) of Success When Adding Ores to The Item.
#define ITEM_ACCESSORY_SOCKET_MAX_NUM    3          // Maximum Number of Ores That Can Be Added to Interior Items.
#define KILLER_MODE_COOLDOWN            30         // After PC's set PvP mode Free or Guild, how many seconds need to set Peace after not hit anyone.
#define SHORT_PORTAL_LIMIT_TIME            3          // Cooldown Before Warp When Not Doing Anything Recently.
#define PORTAL_LIMIT_TIME                10         // Cooldown Before Warp For Trading or Post-Battle Control.
#define REQUEST_LIMIT_TIME                10         // Validity Seconds Of Requests Received By Players.
#define ITEM_DESTROY_TIME                10         // The Time(Second) It Takes For an Item The Player Throws to Disappear.
#define OWNER_ITEM_DESTROY_TIME            240        // The Time(Second) It Takes For an Item To Drop Specifically For One Player To Disappear or Delete Ownership. (Items with an anti-flag against dropping, that is, only the owner can take that item.)
#define DROP_ITEM_DESTROY_TIME            60         // The Time(Second) It Takes For an Item To Drop Player. (with ownership)
#define ORE_ITEM_OWNERSHIP_TIME            20         // The Time(Second) It Takes For an Ore Item(Mining) To Drop Player. (with ownership)
#define CAN_RESET_HERE_TIME                170        // How Soon After The Character Dies Will He Be Able to Stand Up ? (170 = 10 Seconds) (Respawn Here)
#define CAN_RESET_TOWN_TIME                173        // How Soon After The Character Dies Will He Be Able to Stand Up ? (173 =  7 Seconds) (Respawn Town)
#define CAN_SHOUT_LEVEL_LIMIT            15         // Level Required to Shout.
#define CAN_SHOUT_TIME_LIMIT            15         // Time Required to Shout.
#define PARTY_CAN_JOIN_MAX_LEVEL        30         // Maximum Level Difference Between Players to Enter a Group.
#define MAX_MEMBER_INTRO_PARTY            8          // Maximum Number of Players That Can Be in a Group.
#define SAFEBOX_MAX_NUM                    135        // Maximum Number of Safebox Slots (135 Slots = 3 Page).
#define SAFEBOX_PASSWORD_MAX_LEN        6          // Safebox Maximum Password Length.
#define DEAD_HORSE_DISAPPEAR_TIME        20         // When Player Summon Their Dead Horse, How Many Seconds Take To Disappear ?
#define NEW_CHAR_CREATE_COOLDOWN        30         // Players Can Only Create One Character Per 30 Seconds (To Prevent Spam).
#define NECESSARY_GOLD_FOR_GUILD        200000     // Necessary Yang For Create a New Guild.
#define NECESSARY_LEVEL_FOR_GUILD        40         // Necessary Level For Create a New Guild.
// END_OF_VARIOUS_SETTINGS

// TRICKY_SETTINGS
// WARNING: Don't change this one's, if you don't know what are you doing exactly.. - [MT2Dev Note] - 30/05/2023
#define QUEST_NAME_MAX_LEN                32
#define QUEST_STATE_MAX_LEN                64
#define MAX_ALLOW_USER                    4096
#define DRAGON_SOUL_STRENGTH_MAX        7
#define MAX_BLEND_ITEM_VALUE            5
#define POLYMORPH_SKILL_ID                129
#define POLYMORPH_BOOK_ID                50322
#define OXEVENT_MAP_INDEX                113
#define NORM_ATTR_MAX                    5
#define RARE_ATTR_MAX                    2
#define GUILD_SYMBOL_FILENAME            "guild_symbol.tga"
#define OLD_MARK_INDEX_FILENAME            "guild_mark.idx"
#define OLD_MARK_DATA_FILENAME            "guild_mark.tga"
// END_OF_TRICKY_SETTINGS
#endif //__MT2DEV_SERVER_SETTINGS_H__

Server Files Info:
Genişlet Daralt Kopyala
//--------------------------------------------------------------------------------------------------------------------------------------------//
/****************************************************** BASIC INFOS ****************************************************************************
Project Info       = MT2DevWork - Modernized Base SF (Server Files)
Project Start Date = March 2020
Files Base         = Maxmi 3.6
DB Base            = Germany 2011 DB
***********************************************************************************************************************************************/
//--------------------------------------------------------------------------------------------------------------------------------------------//
/************************************************** LIBRARIES & VERSIONS ***********************************************************************
Active Versions  = FreeBSD 14.1 / MariaDB 10.6
FreeBSD Support  = FreeBSD 14.1 and ABOVE
Database Support = MariaDB 10.6.x and ABOVE / MySQL 8.0 (WARNING; MySQL is not tested!)
Files Info       = Even though this project is "modern", there are NO NEW SYSTEMS such as Alchemy, Sash, Aura etc. in the prepared game content!
Files Version    = v1.0
***********************************************************************************************************************************************/

**************************************
-----------------1.0V-----------------
**************************************

- Detaylı bir kontrol ve yedekleme scripti yapıldı.
- Questler tamamen düzenlendi, quest_list düzenlendi.Artık rahatça sh make.sh çekilebiliyor ayrıca qc.core verdirten tüm sorunlar çözüldü artık core vermiyor.
- Quest bölümünde qc ve make.sh dosyaları düzenlendi, optimize edildi.

/**** Quest Bölümü Yapılanlar Başlangıç ;*/
         -* Mysql_query kodu komple kaldırılıp sağlıklı bir şekilde yorum satırıyla (/* -- Mysql_query baslangic / bitis */) eklendi.
         -* Questlib ve quest_functions düzenlendi gereksiz fonksiyonlar kaldırıldı.
         -* Renkli quest yazmaya yarayan fonksiyon sağlıklı bir şekilde yorum satırıyla (/* -- Questlerde Renk Kullanma Baslangic / Bitis */) eklendi.
         -* Renkli quest yazmak için örnek kod; " say_color("yesil","Bu quest yeşil renklidir.") ". // (Bulunan renklerin kodları; mavi - yesil - kirmizi - sari - beyaz - siyah - turkuaz - pembe - turuncu -mor.)
         -* Baslangic.lua - map_sınır.lua - move_ring.lua gibi yeni questler eklendi. (/* Şimdilik sadece gerekli şeyleri ekledim. */)
/**** Quest Bölümü Yapılanlar Bitiş.*/

- Kanalların, Auth'un ve DB'nin verdiği bütün syserrler tek tek çözüldü, çok fazla boyut şişiren gereksiz 2 adet syslog src taraflı deaktif edildi.
- Config dosyaları düzenlendi güvenlik için gerekli kodlar eklendi. ("Game & Client & Files") taraflı, gerekli tüm düzenlemeleri ile beraber yapıldı.
- No TXT DB sistemi eklendi, istenirse artık veritabanından protolar düzenlenebiliyor.DB içerisinde conf.txt dosyasında "NO TXT = 0" şeklinde ayarlı "1" yaparsanız Navicat üzerinden düzenleme yapılabilir.
- Mob_proto ve item_proto ("DB-Pack-Files taraflı olarak") düzenlendi, gereksiz ve bozuk item ve moblar silindi, isim hataları tek tek düzeltildi.
- Common_drop_item, drop_item_group, etc_drop_item, mob_drop_item, special_item_group dosyalarından da silinen itemler kaldırıldı.
- Simya sistemi komple kaldırıldı.
- Efsun oranları zor TR tipine uygun olacak şekilde 4 olasılıklı olarak baştan sona düzenlendi, probları da aynı şekilde düzenlendi.
- "Şimşeğe & Rüzgara & Ateşe Karşı Dayanıklılık" efsunları işlevsizdi, hepsi aktif edildi. Aktif edilen moblar şu şekilde;

/******************************************
Şimşeğe Karşı Dayanıklılık = Sürgün Mağarası içindeki Setaou sınıfı canavarlar ve Beran-Setaou, Buz Cadısı, Güçlü Buz Cadısı, Yılan vadisindeki devler karşısında savunma.
Rüzgara Karşı Dayanıklılık = Örümcek Zindanı 1.Kat , 2.Kat , 3.Kat içerisindeki tüm örümcekler, Örümcek Barones, Kraliçe Örümcek karşısında savunma.
Ateşe   Karşı Dayanıklılık = Doyyumhwan içerisindeki tüm ateş yaratıkları ve Kırmızı Ejderha karşısında savunma.
******************************************/

- İtem_Proto ve Mob_Proto tekrar temizlendi, hatalı ve kullanılmayan nesneler ve moblar tamamen silindi. // (Oyun içeriğinde kullanılmayacağı için Simya eşyaları, Kemerler, +5 sonrası taşlar vs. buna dahil.)

// TODO List;

// - Tüm kanallardaki game dosyalarına özel isim ver mesela ch1game, ch99game, auth vs. gibi.
// - Navicat tabloları tek tek incelendi, gereksiz kullanılmayan tablo ve değerler kaldırıldı.
// - Daha yüksek performans için eski motor "MyISAM" motorundan "Aria" 'ya geçiş yapıldı. (Tüm tablolar taşındı.)
// - Efsunlara düzenleme yapılacak ateş,rüzgar,şimşek için.
// - Questler tekrar gözden geçirilecek ve yenileri eklenecek. Quest listesinden kullanılmayan questler ve fonksiyonlar kaldırılacak. (event flagları tek tek srcde arat kullanılmayanları sil)

Server tarafından, src içinden bazı sayılar; (Yorum satırı sevmeyenleri delirtmelik ss :ROFLMAO: )

Screenshot_1.webp


Client kısmı buraya sığmayacak, onu da yorum olarak ekleyeyim. :LOL:
 
Son düzenleme:
CLIENT TARAFI;

NOT; Client tarafı ile fazla ilgilenemedim, son zamanlarda uğraştığım paket hataları sebebiyle server tarafına ağırlık vermiş durumdayım, zamanla eşitleneceklerdir.

Client Version Info:
Genişlet Daralt Kopyala
/***************************************************************************************************************************
Proje Bilgisi   = MT2Dev - Yeni Nesil Altyapı (Başlangıç Tarihi = Mart 2020)
Client SRC      = Mainline_Released (ClientSide)
Client Derleme  = Visual Studio 2022
Kodlama         = Kaynak kodları, Eric Allman'ın kodlama stili olan "Allman Style" referans alınarak düzenlendi. -
                  Ymir'in özensiz, okuması güç ve güvenlikten uzak kodlama stili tamamen değiştirildi. -
                  (Detaylı Bilgi; https://en.wikipedia.org/wiki/Indentation_style#Allman_style)
****************************************************************************************************************************/
//-------------------------------------------------------------------------------------------------------------------------//
/******************************************** KÜTÜPHANELER & ÇEŞİTLİ BİLGİLER ***********************************************
Visual Studio    = 2022
C++ Standartları = C++20
Speed Tree       = 1.6
Miles            = 6.5c
DirectX          = 8
Python           = 2.7.3
Granny           = 2.11.8
DevIL            = 1.8.0  [Compiled shared with Visual Studio 2022 (v143 & std:c++20)]
LZO              = 2.10   [Compiled static with Visual Studio 2022 (v143 & std:c++20)]
LibJPEG          = 9e     [Compiled static with Visual Studio 2022 (v143 & std:c++20)]
CryptoPP         = 8.9    [Compiled static with Visual Studio 2022 (v143 & std:c++20)]
****************************************************************************************************************************/
/*############################################## !!! ÖNEMLİ NOT, DİKKAT !!! ################################################
####### DevFix 1xxx(Sayısı) şeklinde paylaşılan fixlerin detaylarına "ClientSide_Info.h" dosyasından ulaşabilirsiniz.#######
################################################ !!! ÖNEMLİ NOT, DİKKAT !!! ###############################################*/

//************************* SÜRÜM BİLGİLERİ ********************************//
//**************************************************************************//
// Debug      = Just for debug purposes.. No security, no optimization etc. //
// Disturbute =      HENÜZ YAPMADIM YAP BUNU UNUTMA !!!                     //
// Release    =      HENÜZ YAPMADIM YAP BUNU UNUTMA !!!                     //
//**************************************************************************//

***************************************
-----------------0.1V------------------
***************************************

- Mainline_Released clientside kaynak kodları "Kraizy.tgz" (/*2014 yılında sızdırılan source dosyaları*/) içinden alındı ve builde hazır hale getirildi.
- VS 2008 'den 2013 'e taşındı.
- Python 2.2 'den 2.7 'ye yükseltildi.
- Exe iconu değiştirildi.
- New_equipment, dragon_soul ve belt_system defineları "locale_inc.h" 'ye eklendi. (Oyunda aktif olması için gerekli.)
- Src Maxmi files için uyumlu hale getirildi. (/*True-False hatası fix.*/)

**************************************
-----------------0.2V-----------------
**************************************

- Src içinde warninge sebep olan 7 kod blogu düzenlendi.

**************************************
-----------------0.3V-----------------
**************************************

- Kullanılmayan bazı sistemler/kodlar src içerisinden kaldırıldı. (/*Tüm kaldırılanların detaylı listesine, "ClientSide_Info.h" dosyasından ulaşabilirsiniz.*/)

**************************************
-----------------0.4V-----------------
**************************************

- (Game & Client & Files) taraflı CheckClientVersion sistemi aktif edildi, yeni bir key atandı. (/* Bu sistem sayesinde oyuncular başka bir exe ile oyuna giriş yaparsa bir kaç saniye içinde hata alıp oyundan atılacak.*/)
- HD şekilde düzenlenmiş yeni bir metin2.ico koyuldu.

**************************************
-----------------0.5V-----------------
**************************************

- Kullanılmayan bazı sistemler/kodlar src içerisinden kaldırıldı. (/*Tüm kaldırılanların detaylı listesine, "ClientSide_Info.h" dosyasından ulaşabilirsiniz.*/)

**************************************
-----------------0.6V-----------------
**************************************

- Granny 2.11.8 'e yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- Boost 1.72 'ye yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- libjpeg-9a 'ya yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- Cryptopp 8.2 'e yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- Lzo 2.10 'a yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- DevIL 1.8.0 'a yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.

- EterPack içerisinden pack keyleri değiştirildi.
- Header 254 hatası fixlendi. (/*DevFix 1017*/)
- Sequence sistemi kaldırıldı. (/* Syserr kapatmaktan bahsetmiyorum tüm kodlarıyla beraber sistem TAMAMEN kaldırıldı. */)

**************************************
-----------------0.7V-----------------
**************************************

- Kullanılmayan bazı sistemler/kodlar src içerisinden kaldırıldı. (/*Tüm kaldırılanların detaylı listesine, "ClientSide_Info.h" dosyasından ulaşabilirsiniz.*/)

**************************************
-----------------0.8V-----------------
**************************************

- Cryptopp 8.5 'e yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- Boost 1.77 'ye yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.

- Paket sistemi komple elden geçirildi, kullanılmayan paketler temizlendi, paketler kategorize edildi ve bazı olası unknown packet headers hatalarının önüne geçildi.
- Client içerisindeki tüm dosyaların dili Korea olarak ayarlanıp ardından formatları UTF-8'e dönüştürüldü, notları ve local textleri görmek için kolaylık sağlandı.
- "Tools" klasörü eklendi, içinde gerekli olan tüm programlar mevcut, zamanla onlar da geliştirilecek.
- "Extern" klasörü düzenlendi, header dosyaları kategorize edildi.
- "Locale_inc.h" dosyası iptal edildi, yeni service dosyası "ServiceDefs.h" aktif edildi.
- AStyle ile gözden kaçabilecek son pürüzler de düzeltildi, kodlamalar artık daha temiz ve düzenli.
- İsimlerinde gereksiz eklentiler olan bazı fonksiyon adları (/*NEW, __, vs.*/) sadeleştirildi.
- Tüm client src düzenlendi, kodlamalar optimize edilip oyuna uygun hale getirildi ve kullanılmayan tüm paketler, loglar, kodlar, dosyalar temizlendi.
- Kullanılmayan bazı sistemler/kodlar src içerisinden kaldırıldı. (/*Tüm kaldırılanların detaylı listesine, "ClientSide_Info.h" dosyasından ulaşabilirsiniz.*/)
- Korece yazılan tüm hata metinleri İngilizce diline çevirildi.
- DevFix 1001 uygulandı.
- DevFix 1002 uygulandı.
- DevFix 1003 uygulandı.
- DevFix 1004 uygulandı.
- DevFix 1005 uygulandı.
- DevFix 1006 uygulandı.
- DevFix 1007 uygulandı.
- DevFix 1008 uygulandı.
- DevFix 1009 uygulandı.
- DevFix 1010 uygulandı.
- DevFix 1011 uygulandı.
- DevFix 1012 uygulandı.
- DevFix 1013 uygulandı.
- DevFix 1014 uygulandı.
- DevFix 1015 uygulandı.
- DevFix 1016 uygulandı.
- DevFix 1017 uygulandı.
- DevFix 1018 uygulandı.
- DevFix 1019 uygulandı.
- DevFix 1020 uygulandı.
- HEADER_GC_ITEM_SET2 paketi kaldırıldı, artık tek bir item set paketi (/*HEADER_GC_ITEM_SET*/) mevcut, olası paket hatalarını ve karışıklığı önlemek adına gerekliydi.

**************************************
-----------------0.9V-----------------
**************************************

- DevFix 1021 uygulandı.
- "ServiceDefs.h" dosyası düzenlendi, tüm define'lar buraya taşındı.

**************************************
-----------------1.0V-----------------
**************************************

- Tüm proje Visual Studio 2022'ye geçirildi, kütüphaneler (/*Boost kaldırılıp yerine std kullanıldı*/) ve oyunun client kaynak kodları VS 2022 kullanılarak yeniden derlendi.
- Görüntü kirliliğini önlemek ve düzeni korumak için tüm proje dosyaları "vs22_files" isimli harici bir klasöre taşındı.
- VS 2022 uyumluluğu için kodlarda yapılması gereken tüm modernleştirme işlemleri (/* 156 Adet */) tek tek yapıldı. (/* Hepsinin yanında // VS22 Update şeklinde bilgi var. */)

- Boost kaldırıldı.
- LibJPEG 9e 'ye yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- CryptoPP 8.9 'a yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı.
- DevIL 1.6.5 'e düşürüldü. (Sıradaki sürümde 1.8.0'e güncellenecek.)

- DevFix 1022 uygulandı.
- DevFix 1023 uygulandı.
- DevFix 1024 uygulandı.
- DevFix 1025 uygulandı.
- DevFix 1026 uygulandı.
- DevFix 1027 uygulandı.

**************************************
-----------------2.0V-----------------
**************************************

- VS 2022 ile birlikte gelen tüm warningler çözüldü. Tüm projelerde warningler en üst seviyede (/*-Wall değil bir seviye altı olan -W4 seviyesini kullanıyorum, sebebi ise -Wall ile müdahale edemediğimiz internal header dosyalarından aldığımız warninglerin önüne geçmek..*/) aktif edildi. (25 adet düzeltme yapıldı hepsinin yanında // VS22 Warning Fix (Sayısı) şeklinde bilgi var.) - NOT: Hala devam ediyorum, tahminen 200'den fazla düzenleme gerekecek.. -_-
- DevIL 1.8.0 'a yükseltildi (Son Sürüm), gerekli düzenlemeler yapıldı. (Hepsinin yanında // DevIL 1.8.0 Update şeklinde not var.)

- CppDepend kullanılarak tüm kodlar incelendi, düzenleme gereken yerlere comment satırları eklendi. (/*Hepsinin yanında "- CppDepend" şeklinde bilgi var, ileri versiyonlarda ilgileneceğim.*/)
- Ymir tarafından yapılan versiyonu her ne kadar eksik ve final sürümü için kullanışsız olsa da, debug aşamasında bazı durumlarda yardımı dokunduğu için "ENABLE_SEQUENCE_SYSTEM" revize edilerek tekrar eklendi, define yorum satırı haline getirildiği takdirde yine deaktif olacaktır.
- "_PACKETDUMP" sistemi daha ayrıntılı şekilde bilgi vermesi için revize edildi, yeni define "_IMPROVED_PACKETDUMP_" aktif edildi.
- "ENABLE_PRINT_RECV_PACKETS" sistemi eklendi, debug modunda paket hatalarını analiz etmek için kullanışlı olacaktır.
- "EXT_PACKET_ERROR_DUMP" sistemi eklendi, aynı şekilde debug modunda paket hatalarını analiz etmek için kullanışlı olacaktır.

- "Network Packet" sistemi baştan sona düzenlendi, paket hatalarını minimuma indirmek için çeşitli düzenlemeler yapıldı, tüm ölü kodlar temizlendi.
- "Enums.h" ve "Packets.h" isimli iki yeni header oluşturuldu, tüm paket kodları ve enumlar (/*tüm demek yanlış olabilir, aslında sadece gerekli gördüklerim*/) bu iki dosyaya taşındı,-
- Hataları tespit etmek veya düzenleme yapmak artık daha kolay olacaktır çünkü gereken tüm kodlar tek bir dosyada.


Clientside Fix Info:
Genişlet Daralt Kopyala
/*#################################################################################################################*/
/*##########################################      MT2Dev - Fixler      ############################################*/
/*#################################################################################################################*/

/*FIX ISMI                                           DUZELTILEN SORUNUN ACIKLAMASI                                      ISLEM YAPILAN DOSYA*/
- DevFix 1001 = Olasi bir unknown packet hatasini onlemek icin gerekli duzenleme yapildi.                                (PythonNetworkStreamPhaseGame.cpp)
- DevFix 1002 = Artik DEBUG modu aktifken, "_IMPROVED_PACKETDUMP_" sayesinde network paket trafigi gozlemlenebilecek.    (NetStream.cpp)
- DevFix 1003 = Gerekli bir TraceError eklendi, icerisinde gereken bilgi mevcut.                                        (GrpImage.cpp&GrpImageTexture.cpp)
- DevFix 1004 = IME icerisinde nullptr kontrolu konulmamis yerlere gerekli kontroller eklendi.                            (IME.cpp)
- DevFix 1005 = Yazdirilmamasi gereken karakterlerin (CTRL + <key>) kullanilmamasi icin kontrol eklendi.                (IME.cpp)
- DevFix 1006 = SkyBox icerisinde yanlis konumlandirilan ve gozukmeyen bir bolum duzeltildi.                            (SkyBox.cpp)
- DevFix 1007 = Ymir'in deaktif ettigi if blogu duzenlenerek tekrar aktif edildi, cunku kullanisli.                        (ActorInstanceRender.cpp)
- DevFix 1008 = Iconu pack icerisinde mevcut olmayan itemler icin genel bir icon atandi.                                (ItemData.cpp)
- DevFix 1009 = Client tarafinda eksik olan bazi flaglar ItemData icerisine eklendi.                                    (ItemData.h)
- DevFix 1010 = AddTexture fonksiyonuna erase icin ufak bir ekleme yapildi.                                                (TextureSet.cpp)
- DevFix 1011 = Artik DEBUG modu aktifken, __PERFORMANCE_CHECK__ ile paket loglari gozlemlenebilecek.                    (PythonNetworkStreamPhaseGame.cpp)
- DevFix 1012 = Eski usul ""; yerine ".clear" kullanimina gecis yapildi.                                                (AccountConnector.cpp&PythonNetworkStream.cpp)
- DevFix 1013 = Wear_Max hesaplamasinda, "c_Wear_Max" iptal edilip, yerine "WEAR_MAX_NUM" kullanildi.                    (GameType.h)
- DevFix 1014 = Gereksiz sekilde ekstra tanimlama kullanilan yerler "Cxxxx::" kullanilarak baglandi.                    (GameType.h&PythonMiniMap.cpp&InstanceBase.cpp)
- DevFix 1015 = InstanceBase.cpp icerisine kostumler icin yeni bir case eklendi, ileride lazim olacak.                    (InstanceBase.cpp)
- DevFix 1016 = Eksik bir "TraceError" satiri, gerekenler eklenerek yeniden duzenlendi.                                    (PythonCharacterManager.cpp)
- DevFix 1017 = Header254 Log problemi cozuldu.                                                                            (PythonNetworkStreamPhaseGame.cpp&PythonNetworkStreamModule.cpp)
- DevFix 1018 = Player.GetItemLink 6-7. bonusu kapsamiyordu, olasi bug'un onune gecmek icin duzenlendi.                    (PythonPlayerModule.cpp)
- DevFix 1019 = Oyuncunun bilgisayarinda "D:\\ymir work" konumu mevcutsa artik oyun acilmayacak.                        (UserInterface.cpp)
- DevFix 1020 = "D:\\ymir work" konumunun ("DVD-Rom") oyunda sebep oldugu lag ve FPS dususu sorunlari duzeltildi.        (UserInterface.cpp&EterPackManager.cpp)
- DevFix 1021 = Oyuncularin 800x600 'den daha dusuk cozunurlukte oyunu acamamasi icin kontrol eklendi.                    (PythonSystem.cpp)
- DevFix 1022 = Paket hatalarini daha net tespit etmek icin bir kac duzenleme daha yapildi.                                (PythonNetworkStream.cpp)
- DevFix 1023 = "Group::Create" fonksiyonu bastan sona duzenlendi.                                                        (parser.cpp&h)
- DevFix 1024 = Oyunda cekilen screenshotlarin kalitesi arttirildi.                                                        (PythonGraphic.cpp)
- DevFix 1025 = Network icerisine "GetLoginId" isimli yeni bir fonksiyon eklendi, ileride kullanisli olabilir.            (PythonNetworkStream.cpp&h&PythonNetworkStreamModule.cpp)
- DevFix 1026 = Pack tarafinda ".png" uzantili dosyalarin kullanimi icin duzenleme yapildi.                                (Resource.cpp)
- DevFix 1027 = TextureSet icerisinde negatif deger kontrolu yapmayan bir kod duzeltildi ve gerekli kontrol eklendi.    (TextureSet.cpp)

/*#################################################################################################################*/
/*#######################      MT2Dev - Kaldirilan Sistemler, Silinen Fonksiyonlar vs.      #######################*/
/*#################################################################################################################*/

** - Listede ekli olmayan (/*veya eklemeyi unuttugum*/), Ymir'in test amacli ekledigi veya ekleyip hicbir yerde kullanmadigi tum kodlar temizlendi.
1  - XTrap
2  - HackShield
3  - NProtect Game Guard
4  - CheckLatestFiles
5  - Auction
6  - PC_Bang
7  - AutoBan
8  - IsDev
9  - IsLive
10 - IsTest
11 - MovieMan
12 - ProcessCRC
13 - ProcessScanner
//14 - Sequence - 2.0V Surumunde sadece debugging kullanimi icin tekrar aktif edildi.
15 - SMS
16 - Mobile
17 - Matrix Card (/*Runup,China vs. her turlusu*/)
18 - OpenID  (/*Login4*/)
19 - Passpod (/*Login5*/)
20 - GAIDEN
21 - SE_LEVELUP_ON_14_FOR_GERMANY
22 - SE_LEVELUP_UNDER_15_FOR_GERMANY
23 - CACHE_DEFORMED_VERTEX
24 - Dimm
25 - Msctf
26 - OLD_rtrim
27 - DYNAMIC_POOL_STRICT
28 - EterPackPolicy_CSHybridCrypt
29 - Panama
30 - DecryptIV
31 - __MAKE_PACK__
32 - USE_VIETNAM_CONVERT_WEAPON_VNUM
33 - __MOVIE_MODE__
34 - ITEM_SMALL_DESCR_MAX_LEN
35 - MonsterAreaInfo
36 - PythonExceptionSender
37 - USE_SPEEDGRASS
38 - SPEEDTREE_DATA_FORMAT_DIRECTX
39 - __PERFORMANCE_CHECKER__
40 - Kullanilmayan locale dosyalari ve kodlari
41 - PythonNetworkDatagram
42 - PythonApplicationLogo
43 - Version
44 - _20050304Myevan
45 - m_isWaitKey
46 - __20040725_CAMERA_WORK__
47 - c_Wear_Max
48 - __IS_TEST_SERVER_MODE__
49 - __VTUNE__
50 - __ComboProcess
51 - IS_CHEONMA
52 - __UNITTEST__
53 - PERF_CHECKER_RENDER_GAME
54 - Safebox Money
55 - HEADER_GC_MOUNT
56 - ATTACK_TIME_LOG
57 - HEADER_GC_ITEM_SET2 (/*Iki adet olan set paketleri birlestirilerek teke dusuruldu, game tarafinda oldugu gibi..*/)
58 - __ATTACK_SPEED_CHECK__
59 - SaveWindowStatus
60 - LoadInterfaceStatus
61 - SaveInterfaceStatus
62 - isInterfaceConfig
63 - ApplicationStringTable
64 - USE_RELATIVE_PATH
65 - stRegisterCmdLine
66 - Metin2GameMutex
67 - __PrintTimeStamp
68 - NEEDED_COMMAND_ARGUMENT
69 - NEEDED_COMMAND_CLIPBOARD
70 - APSTUDIO_INVOKED
71 - StringCodec_Vietnamese (/*ve diger locale Vietnam ayarlari*/)
72 - WORLD_EDITOR
73 - _TEST
74 - SPHERELIB_STRICT
75 - COUNT_SHOWING_SPHERE
76 - __HEIGHT_CACHE_TRACE__
77 - __WINDOW_LEAK_CHECK__
78 - DEMO
79 - CHECKSUM_CHECK_MD5
80 - __STATIC_RANGE__
81 - CHECK_LOD
82 - USE_CRAMERS_RULE
83 - CHECK_ANSWERS
84 - _USE_CPP_RTL_FLIP


Settings.h from Clientside:
Genişlet Daralt Kopyala
#pragma once

// SECURITY_SETTINGS
#define CLIENT_VERSION_KEY                2407972020       // Client Version Key, it's must be same on the serverside!
#define LSS_SECURITY_KEY                4321dcba5678efgz // Ymir Security Key (Only used if _OLD_PACKET_ENCRYPTION_ is enabled)
// END_OF_SECURITY_SETTINGS


ServiceDefs.h from Clientside:
Genişlet Daralt Kopyala
/********************************************************/
/* FILE:    ServiceDefs.h                               */
/* INFO:    All defines linked to a single header file. */
/* AUTHOR:  MT2Dev                                      */
/* DATE:    11/09/2023                                  */
/********************************************************/
#pragma once

//********************************************************************* DEBUGGING_FEATURES **********************************************************************//
#ifdef _DEBUG   // DevFix 1002 & DevFix 1011
//#define ENABLE_SEQUENCE_SYSTEM  // Ymir Sequence System (Useful for debugging)
#define ENABLE_PRINT_RECV_PACKETS // Print Recv Packets   (Useful for to determine unknown packet errors)
#define _IMPROVED_PACKETDUMP_     // Improved Packet Logs (Useful for to determine unknown packet errors)
#define EXT_PACKET_ERROR_DUMP     // Extended Packet Logs (Useful for to determine unknown packet errors)
#define __PERFORMANCE_CHECK__     // Packet Performance Logs
//#define __RENDER_SLOT_AREA__    // Displaying All Slot Renderings
#endif //_DEBUG
//***************************************************************** END_OF_DEBUGGING_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//****************************************************************** FIX_AND_SECURITY_FEATURES ******************************************************************//
/* IMPORTANT NOTE!!! - Both encryption systems CANNOT BE ACTIVATED at the same time!!! Btw if you disable both, packet encryption will be COMPLETELY turned off. */
#define _IMPROVED_PACKET_ENCRYPTION_ // Ymir Improved Packet Encryption System
//#define _OLD_PACKET_ENCRYPTION_      // Ymir Old Packet Encryption System (Old ones like xtea, pong, keys etc.)
//************************************************************** END_OF_FIX_AND_SECURITY_FEATURES ***************************************************************//


Packside Info:
Genişlet Daralt Kopyala
/***************************************************************************************************************************
Proje Bilgisi   = MT2Dev - Yeni Nesil Altyapı (Başlangıç Tarihi = Mart 2020)
Pack Bilgisi    = Metin2 EN (2014) Temiz Pack
Ekstra Dosyalar = Maxmi 3.6 Mini Pack
Kodlama         = Python kodları, Guido van Rossum&Barry Warsaw ve Nick Coghlan kodlama stili olan "PEP 8" referans alınarak düzenlendi.
                  Ymir'in özensiz, okuması güç ve güvenlikten uzak kodlama stili değiştirildi.
                  (Detaylı Bilgi; https://peps.python.org/pep-0008/)
****************************************************************************************************************************/
//-------------------------------------------------------------------------------------------------------------------------//
/******************************************** SÜRÜMLER & ÇEŞİTLİ BİLGİLER **************************************************
Desteklenen Sistemler = Windows Vista, Windows 7, Windows 8, Windows 10. (Windows 11 test edilmedi, Windows XP ve altını desteklemez!)
Pack Encrypt Methodu  = MartySama's Pack Maker Lite 2.8 (Type0 & NO-MCSP)
Python                = 2.7
Granny                = 2.11.8
Pack İçeriği Hakkında = Bu proje her ne kadar altyapı olarak yeni nesile uygun olacak şekilde düzenlense de, hazırlanan oyun içeriğinde Simya, Kuşak, Aura vs. gibi yeni sistemler YOKTUR!
Pack Versiyonu        = v1.0
****************************************************************************************************************************/

**************************************
-----------------1.0V-----------------
**************************************

- Mob_proto ve item_proto ("DB-Pack-Files taraflı olarak") düzenlendi, gereksiz ve bozuk item ve moblar silindi, isim hataları tek tek düzeltildi.
- Tüm loading resimleri ve login ekranı 1920x1080 formatına çevrildi, "HD" yeni arkaplanlar koyuldu.
- Granny sürümünü 2.11.8'e yükseltilmişti, bütün packler açılıp tek tek bütün .gr2 dosyaları 2.11.8'e dönüştürüldü.
- Eski Tip loading ekranı, köy zemini, yazı tipi gibi detaylar oyuna entegre edildi.
- GetMotionDuration - Invalid Motion Key hatası çözüldü.
- Karakter gauge bugu düzeltildi. // (Max statü 95 olarak ayarlandı, yükleme ekranında 95 son rakamdır ona ulaşınca bar fullenir, ayrıca karaktere 98 levele kadar statü puanı gelir.)
- Locale içerisindeki tüm dds ve tga dosyaları incelendi, gerekenlerde (/*neredeyse tüm .dds dosyaları*/) ufak görsel düzeltmeler yapıldı, "windows.dds" baştan sona düzenlendi ve "select.jpg" değiştirildi.
- Console modülü tamamen kaldırıldı, kullanılmayacağı için aktif halde pack içerisinde bulunması gereksiz olacaktı.
- Client&Server SRC tarafında kaldırılan tüm sistemler aynı şekilde pack içerisinden de kaldırıldı.
- Simya, Enerji, Expanded gibi yeni sistemler "Pack" içerisinden kaldırıldı.
- "Pack" içerisindeki kullanılmayan tanımlamalar, ülkelere özel ayarlar vs. gibi eklentiler kaldırıldı.
- Tüm "Pack" düzenlendi, kodlamalar optimize edildi ve "PEP 8" kurallarına göre düzenlendi.
- Tüm "Pack" içerisinde, Korece yazılmış text'ler ve yorum satırları İngilizce diline çevrildi.
- Debug modu aktiften sağ üstte gösterilen bilgilerden gereksiz olanları kaldırıldı.
- "Virtual Keyboard" eklentisi kaldırıldı.
- "BGM", "mark", "miles" klasörleri "lib" içerisine alındı, maksat temiz bir görünüm oluşturmak.


Ekstra Notlar;

Oyun kaynağından çok fazla şey kaldırırsanız, olası paket hataları ve optimizasyon sorunlarıyla karşılaşabileceğinizi unutmayın.. -_-
Modernleştirme topuna girerseniz sadece compiler sürümünü değil oyunun kodlarını da optimize etmeniz gerektiğini unutmayın.
Eklediğiniz veya kaldırdığınız sistemlerin local test sunucunuzda veya 3-5 oyuncuyla sıkıntı yaratmayıp, yüzlerce oyunculu bir live sunucuda başınıza bela açabileceğini unutmayın.
Her zaman garantici olmak, her noktaya kontrol eklemek iyidir fakat her kontrol için bir log tutturmayı unutmayın, böylece eklediğiniz kontrol bir sıkıntıya sebebiyet verirse nereden kaynaklandığını bulabilirsiniz.
Ymir'in homemade ilkel network paket alışverişi sisteminin her an problem yaratabileceğini ve düzenleme yaparken sürekli yedek almak gerektiğini unutmayın.
Yorum satırlarını silmek kodunuzu "temiz" yapmaz, yorum satırları veya fonksiyon hakkında bilgi veren bölümler sizden sonra dosyalarla çalışacak yazılımcılar için gereklidir, iyi yazılımcılar sık comment bırakır, bunu unutmayın.
Kodunuzun gerçekten yalın ve temiz olmasını istiyorsanız modern C++ özelliklerinden faydalanın, belirli bir coding style seçip ona uygun kod yazın veya düzenleyin, gereksiz uzun kodlar yazmaktan kaçının, ölü kodları ve kullanılmayacak olan özellikleri kodunuzdan temizleyin, bu kodunuzu gerçekten "temiz" yapar.
Fazla mükemmeliyetçi olmanın bazen faydadan çok zarar verebileceğini aklınızdan çıkartmayın ve o meşhur yazılımcı atasözünü unutmayın; çalışıyorsa elleme.
 
Son düzenleme:
Keyifle okuduğum seri ben de senin gibi özenerek detaylı bi log tutmaya çalışıyorum ve şu dediğine katılıyorum temiz olcağını düşünüp her şeyi kaldırmak doğru değil dikkat edin kafanız yanmasın arkadaşlar.
 
oyyhhh konunun güzelliğine bak ağzım açık okudum elinize sağlık dikkatle takip ediyorum. Kolaylıklar dilerim. Bu arada oyunu baştan yazmışsınız gibi ne kadar çok değişiklik yapmışsınız kendi açtığım changelogtan utandım 😅😅 çok hoşuma gitti.
 
oyyhhh konunun güzelliğine bak ağzım açık okudum elinize sağlık dikkatle takip ediyorum. Kolaylıklar dilerim. Bu arada oyunu baştan yazmışsınız gibi ne kadar çok değişiklik yapmışsınız kendi açtığım changelogtan utandım 😅😅 çok hoşuma gitti.
Teşekkürler güzel yorumun için, oyunun paket sistemi şu sıralar acayip derecede canımı sıkmakta o yüzden parti parti sağda solda tanımlı dinamik statik, struct, enum vs. ne varsa client-server birebir olacak şekilde düzenlemeye karar verdim, başka türlü kurtulamayacağım çünkü. :LOL: Aslında Aeldra örneğinden sonra protobuf kullanmak çok daha cazip bir yöntem ama onu entegre etmesi çok uzun süreceği için şimdilik rafa kaldırdım.

Bu yoruma özel ekstra bir not daha, Ymir'in geliştirici ekibi gerçekten ne yaptığını tam olarak bilmiyormuş. Korece yazılmış tüm comment satırlarını çevirip baktım neredeyse, birbirlerinin yaptıkları işlerden bile haberleri yok. Projenin en başında muhtemelen yaratıcı ekipten olan bir iki isim hariç (myevan ve levites favorim :D) sonrasında çalışan farklı geliştiriciler sanki temeli çürük bir binaya sürekli kaçak kat çıkmış gibi, official sunucuların optimizasyon sorunlarından kurtulamamasına şaşırmamak gerek..
 
Teşekkürler güzel yorumun için, oyunun paket sistemi şu sıralar acayip derecede canımı sıkmakta o yüzden parti parti sağda solda tanımlı dinamik statik, struct, enum vs. ne varsa client-server birebir olacak şekilde düzenlemeye karar verdim, başka türlü kurtulamayacağım çünkü. :LOL: Aslında Aeldra örneğinden sonra protobuf kullanmak çok daha cazip bir yöntem ama onu entegre etmesi çok uzun süreceği için şimdilik rafa kaldırdım.

Bu yoruma özel ekstra bir not daha, Ymir'in geliştirici ekibi gerçekten ne yaptığını tam olarak bilmiyormuş. Korece yazılmış tüm comment satırlarını çevirip baktım neredeyse, birbirlerinin yaptıkları işlerden bile haberleri yok. Projenin en başında muhtemelen yaratıcı ekipten olan bir iki isim hariç (myevan ve levites favorim :D) sonrasında çalışan farklı geliştiriciler sanki temeli çürük bir binaya sürekli kaçak kat çıkmış gibi, official sunucuların optimizasyon sorunlarından kurtulamamasına şaşırmamak gerek..
Bence iskeletini oluşturup bıraktılar kalanını stajyerlere yaptırdılar 😂😂
 
Paket sistemiyle aramızda ufak bir arbede yaşandı ama çalışmalar devam ediyor, güncelleme gelmesi biraz uzun sürecek gibi çünkü paketleri düzenlerken çok fazla şeyin yerini değiştirmem gerekti, bu süre zarfında konuyu takip edenlere ufak bir paylaşım yapayım, aktiflik düşmesin. :D

Bu RaR dosyasının içinde sızdırılan dosyaların içinde bulunan, Ymir&WebZen ve GF tarafından oluşturulmuş çeşitli kılavuzların (kurulum yönergeleri, patch notları vs.) Korece dilinden İngilizceye çevrilip düzenlenmiş versiyonları mevcut, merak edenler için bir içerik olsun. :coffee:
 

Dosya Eklentileri

Patch notlarını çevirirken billing ile ilgili kısmı da görünce uzun zamandır düşündüğüm bir soru aklıma geldi, "billing" sistemini komple kaldırıp yerine auth için ekstra bir şey koymamak yüksek online sayılarında, yığılma olduğunda veya şuan simüle edemediğim farklı bir senaryoda herhangi bir sıkıntı yaratır mı şuan pek kestiremiyorum. Aeldra dosyaları piyasaya yayıldığı zaman dikkatimi çeken ilk şey, billing sistemini #define ile tanımlayıp muhtemelen kapatıp açarak çeşitli testler yaptıklarını görmek oldu, lakin finalde onlar da kapatmayı tercih etmiş. Her zaman öğrenecek bir şeyler vardır, bu konuda tecrübesi olanlardan gelecek fikirlere de açığım.
 
Paket sistemiyle aramızda ufak bir arbede yaşandı ama çalışmalar devam ediyor, güncelleme gelmesi biraz uzun sürecek gibi çünkü paketleri düzenlerken çok fazla şeyin yerini değiştirmem gerekti, bu süre zarfında konuyu takip edenlere ufak bir paylaşım yapayım, aktiflik düşmesin. :D

Bu RaR dosyasının içinde sızdırılan dosyaların içinde bulunan, Ymir&WebZen ve GF tarafından oluşturulmuş çeşitli kılavuzların (kurulum yönergeleri, patch notları vs.) Korece dilinden İngilizceye çevrilip düzenlenmiş versiyonları mevcut, merak edenler için bir içerik olsun. :coffee:
öfkeli kalabalık olarak acil güncelleme bekliyoruz korece yazı çevirileri bizi kesmezz :D
 
Paket kodlarını düzenleme niyetiyle başladığım iş büyük ruhsal problemlere doğru ilerliyor, tüm .cpp dosyalarını tek tek açıp baştan sona kontrol ediyorum manuel olarak, 300 civarı dosyayı kontrol edip üzerinde değişiklik yapmak biraz vakit alıyor haliyle. :LOL: Manuel kontrolden kastım, bildiğiniz dümdüz baştan sona okuyorum, değişiklik gereken bir yer görürsem düzenleyip devam ediyorum, incelerken pek çok ufak detaya rastladım ve bunlardan ilginç olabileceklerini isteğe göre açıp kapatmak için define olarak tanımladım, henüz tam bir güncelleme vermekten uzağım ama ufak bir gelişim kaydı verebilirim sanıyorum;

C++:
Genişlet Daralt Kopyala
**************************************
-----------------0.70V----------------
**************************************
/*############################################ !!! ÖNEMLİ NOT - DİKKAT !!! ##############################################
## Tüm dosyalarda, önemli kısımlara yazdığım yüzlerce not var; [MT2Dev Note] şeklinde aratarak hepsine ulaşabilirsiniz.##
###### Ayrıca Ymir developerlarının yazdığı önemli notların, Korece'den İngilizce'ye çevrilmiş versiyonlarına da; #######
### " Ymir Dev Note " şeklinde aratarak ulaşabilirsiniz, detaylı olanlarda yazan kişi ve tarih bilgisi de mevcuttur. ####
############################################## *************************** #############################################*/

- DevFix 113 uygulandı.
- DevFix 114 uygulandı.
- DevFix 115 uygulandı.
- DevFix 116 uygulandı.
- DevFix 117 uygulandı.
- DevFix 118 uygulandı.
- DevFix 119 uygulandı.
- DevFix 120 uygulandı.
- DevFix 121 uygulandı.
- DevFix 122 uygulandı.
- DevFix 123 uygulandı.

- Modern C++ dan tam anlamıyla yararlanmak için gerekli düzenlemeler yapıldı. (/*Örnek; Auto Transform, Nullptr Transform, New Smart Pointers vs.*/)
- "itertype", "typeof" gibi modern C++ standartlarında yeri olmayan tanımlar değiştirildi.
- Ymir tarafından artık kullanılmayan eski paket şifreleme yöntemi "_OLD_PACKET_ENCRYPTION_" isimli bir define içerisine alındı, aktif paket şifreleme sistemimiz olan "_IMPROVED_PACKET_ENCRYPTION_" de düzenlendi.-
- Artık her iki define deaktif edilirse paket şifreleme komple kapatılır ve paketler şifresiz olarak sorunsuz şekilde iletilir, ayrıca iki şifreleme yöntemi de aktif edilmeye hazır halde, sorunsuz çalışıyorlar.- (/*KESİNLİKLE AYNI ANDA İKİ DEFİNE AKTİF EDİLMEMELİ, AYNI ANDA SADECE 1 TANESİ AKTİF EDİLEBİLİR!!!!!!*/)
- Default olarak "_IMPROVED_PACKET_ENCRYPTION_" her zaman AKTİF olmalıdır! Paket şifrelemeyi komple deaktif etmek sadece belirli debug aşamalarında gerekli olabilir, sadece bu amaçla kullanılmalıdır.

- "Network Packet" sistemi baştan sona düzenlendi, paket hatalarını minimuma indirmek için çeşitli düzenlemeler yapıldı, tüm ölü kodlar temizlendi.
- "Enums.h" ve "Packets.h" isimli iki yeni header oluşturuldu, tüm paket kodları ve enumlar (/*tüm demek yanlış olabilir, aslında sadece gerekli gördüklerim*/) bu iki dosyaya taşındı,-
- Hataları tespit etmek veya düzenleme yapmak artık daha kolay olacaktır çünkü gereken tüm kodlar tek bir dosyada.
- Yukarıda bahsettiğim işlem esnasında artık kullanımına gerek kalmayan (/*yani içeriği tamamen yukarıda bahsettiğim yeni dosyalara taşınan*/); -
- "common/length.h", "common/item_length.h", "common/tables.h", "db/QID.h", "game/packet.h", "game/unique_item.h" isimli dosyalar srcden kaldırıldı.

- Kendimi ve daha önce yaptığım bir düzenlemeyi güncelleme ihtiyacı duydum, daha önceki sürümlerde modern tekniklere daha uygun olduğunu düşündüğüm için,
- "#pragma once" kullanımına geçiş yapmıştım fakat 2024 yılında dahi "#pragma once" hala standart olarak kabul görmüyor ve farklı alt klasörlerdeki aynı isimli header dosyaları,
- Bu uygulamadan düşük bir ihtimalle de olsa etkilenebilir, dolayısıyla eski ama daha güvenli (/*Eşsiz header isimleri düzgün şekilde ayarlandığında*/) olan header guardları kullanmaya devam etmeye karar verdim, böylesi bana daha güvende hissettiriyor. (/*Guard isimlerini benzersiz olacaklarına emin olarak tekrar düzenledim.*/)
- SRC içerisinde "unordered_map" ve "unordered_set" kullanılan tüm yerlerde std:: kullanımına geçilip boost iptal edildi.

- Peer P2P için genişletilmiş bir log sistemi eklendi. (Kod bloğunda "// EXTENDED_PEER_P2P_LOGS" şeklinde bilgi var.)
- Oyuncuların sadece 1. ve 2. köylerde pazar kurabilmesi için bir düzenleme yapıldı. (Kod bloğunda "// PRIVATE_SHOPS_ONLY_OPENABLE_IN_TOWN" şeklinde bilgi var.)
- Oyuncuların yere attığı itemlerin logunun tutulması için düzenleme yapıldı. (Kod bloğunda "// DROP_ITEM_LOG" şeklinde bilgi var.)
- GMlerin istediği oyuncuyu zehirleyebilmesi için yeni bir GM kodu eklendi. (Kod bloğunda "// POISON_COMMAND" şeklinde bilgi var.)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_POTIONS" eklendi. (/*Aktif edilirse potlar, sular gibi envai çeşit iksir sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_CAPE_OF_COURAGE" eklendi. (/*Aktif edilirse Cesaret Pelerinleri sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_METIN_STONE_DETECTOR" eklendi. (/*Aktif edilirse Metin Taşı Dedektörü sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "BOOSTED_EXP_DROP" eklendi. (/*Aktif edilirse test server modu aktifken EXP kazanımı 8 ile çarpılır, hızlandırılmış oyun içi testler için işe yarayabilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_BOW_DISTANCE" eklendi. (/*Aktif edilirse yay ile vuruş yapan Ninja karakterlerin hasar hesaplaması yapılırken karakterin vuruş esnasındaki mesafesi dikkate alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_STAMINA_WALK" eklendi. (/*Aktif edilirse karakterlerin staminası bittiği zaman yürümeye başlamazlar*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_DEATH_PENALTY" eklendi. (/*Aktif edilirse karakterler öldükten sonra burada başla seçeneğini seçerse EXP kaybetmezler*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_PREVENT_DEATH_FROM_POISON" eklendi. (/*Aktif edilirse karakterler zehir hasarıyla ölebilir, normalde karakterin canı 1 olduğunda hasar vurmayı durduruyor*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_HORSE_HEALTH_AND_STAMINA" eklendi. (/*Aktif edilirse atın can azalması, stamina azalması, ölmesi gibi faktörler devre dışı kalır, at beslenmese bile ölmez*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_LOVER_NEED_SP_TO_WARP" eklendi. (/*Aktif edilirse nikah yüzüğü ile birbirine ışınlanmak isteyen evli karakterlerden ışınlanma için SP alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_MONSTERS_POISONED_ONLY_ONCE" eklendi. (/*Aktif edilirse zehir yiyen bir mob, zehrin etkisi geçtikten (normalde moblar sadece 1 defa zehirlenirler, o süre zarfında ölmezse bir daha zehir yemez) sonra oyuncular tarafından tekrar zehirlenebilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_NEED_EXP_FOR_SKILL_READING" eklendi. (/*Aktif edilirse beceri geliştirme esnasında oyuncudan eksilen 20.000 EXP devre dışı kalır, EXP harcamadan işlem devam eder*/)
- "Documents" isimli yeni bir dosya eklendi, içerisinde Ymir'in orijinal developer ekibinin yazdığı patch loglarının İngilizceye çevrilip, düzenlenmiş halleri mevcut.
- Hali hazırda aktif olan veya comment satırı haline getirilmiş, işlevsel olabilecek tüm sys_log kayıtları test server modu için aktif edildi. (/*Normalde aktif olan logların bazıları da sadece test server modunda çalışacak şekilde düzenlendi.*/)


C++:
Genişlet Daralt Kopyala
// Yeni fixler;

- DevFix 113 = Karakterler yaratilirken verilen random statlar sabit hale getirildi.                (constants.cpp)
- DevFix 114 = Eksik bir bolume gerekli "sys_log" blogu eklendi, bilgi onemli.                        (ClientManager.cpp)
- DevFix 115 = Ata veya binege belirli maplerde binilmemesi icin kontrol eklendi.                    (char_item.cpp&cmd_general.cpp)
- DevFix 116 = "CHARACTER::BuffOnAttr_ValueChange" fonksiyonu modern tarzda yenilendi.                (char_item.cpp)
- DevFix 117 = Eger oyuncu son seviyeye ulasirsa, beceri kitabi okumasi icin EXP gerekmeyecektir.    (char_skill.cpp)
- DevFix 118 = Game Masterlar artik aninda "Burada Basla" veya "Sehirde Basla" ile dirilebilirler.    (cmd_general.cpp)
- DevFix 119 = Sadece GMlerin kullanmasina izin verilen komutlara ekstra kontroller eklendi.        (cmd_general.cpp&cmd_gm.cpp)
- DevFix 120 = "Cube_make" icerisine gerekli bir -yang kontrolu eklendi.                            (cube.cpp)
- DevFix 121 = Bazi GM veya Player komutlarinda negatif(-) arg kullanimi engellendi.                (cmd_gm.cpp&cmd_general.cpp)
- DevFix 122 = Gereksiz buyuk veri tipi kullanan yerler, bellek tuketimini azaltmak icin duzenlendi.(Lot of files have this one)
- DevFix 123 = "/do_set" komutu komple yenilendi, eksik kontroller eklendi.                            (cmd_gm.cpp)
    

// ServiceDefs'in son hali;
    
/********************************************************/
/* FILE:    ServiceDefs.h                               */
/* INFO:    All defines linked to a single header file. */
/* AUTHOR:  MT2Dev                                      */
/* DATE:    11/09/2023                                  */
/********************************************************/
#ifndef __MT2DEV_SERVICEDEFS_H__
#define __MT2DEV_SERVICEDEFS_H__

//********************************************************************* DEBUGGING_FEATURES **********************************************************************//
//#define ENABLE_SEQUENCE_SYSTEM  // Ymir Sequence System (Useful for debugging)
#define USE_STACKTRACE            // Ymir Stacktrace System for Analyze Errors (Be sure to edit game/src/Makefile, USE_STACKTRACE = 1 or 0)
#define USE_QUERY_LOGS            // Logging Queries for Analyzing (If it is test server of course)
#define ENABLE_SYSLOG_PACKET_SENT // Syslogs for Packet Sent (If it is test server of course)
//***************************************************************** END_OF_DEBUGGING_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//****************************************************************** FIX_AND_SECURITY_FEATURES ******************************************************************//
/* IMPORTANT NOTE!!! - Both encryption systems CANNOT BE ACTIVATED at the same time!!! Btw if you disable both, packet encryption will be COMPLETELY turned off. */
//#define _IMPROVED_PACKET_ENCRYPTION_ // Ymir Improved Packet Encryption System
//#define _OLD_PACKET_ENCRYPTION_      // Ymir Old Packet Encryption System (Old ones like xtea, pong, keys etc.)
//#define ENABLE_EXTERNAL_IP_SUPPORT   // For Cloud (Oracle, Google, AWS, Azure) External IP Support (INFO; If you don't use external ip, NOT uncomment this!)
#define ENABLE_PORT_SECURITY           // P2P (API Tool) Extra Security
//************************************************************** END_OF_FIX_AND_SECURITY_FEATURES ***************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//********************************************************************** OPTIONAL_FEATURES **********************************************************************//
//#define UNLIMITED_POTIONS                   // Unlimited Potions (Ex; HP/SP Potions, Purple/Green Potions, Ability Potions, Blends etc.)
//#define UNLIMITED_CAPE_OF_COURAGE           // Unlimited Cape Of Courage (All Vnums)
//#define UNLIMITED_METIN_STONE_DETECTOR      // Unlimited Metin Stone Detector (All Vnums)
//#define BOOSTED_EXP_DROP                    // 8x EXP Drop Bonus (Sometimes Will Useful For Speed-up In Game Test Purposes) - (Works ONLY in test server mode!)
//#define DISABLE_BOW_DISTANCE                // Disable Bow Distance Factor in the Assasin Damage Calculation
//#define DISABLE_STAMINA_WALK                // Disable Walk Mode When Stamina is 0 (NOTE: Not only for PC's, also AI, Horse and Pets include this too!)
//#define DISABLE_DEATH_PENALTY               // Disable EXP Loss After Death (Restart Here)
//#define DISABLE_PREVENT_DEATH_FROM_POISON   // Disable Prevent Death From Poison (INFO: If this enabled, PC's can die due poison damage, HP not stay at 1.)
//#define DISABLE_HORSE_HEALTH_AND_STAMINA    // Disable Horse Health and Stamina Factors (So horse never be die, never be starving, never be out of stamina etc.)
//#define DISABLE_LOVER_NEED_SP_TO_WARP       // Disable Lovers Need SP For Warp (With Marriage Ring)
//#define DISABLE_MONSTERS_POISONED_ONLY_ONCE // Disable Monsters Poisoned Only Once (Normally players just have one chance to poison while kill the monster)
//#define DISABLE_NEED_EXP_FOR_SKILL_READING  // Disable Need EXP For Skill Reading (Normally players give 20.000 EXP for each reading)
//****************************************************************** END_OF_OPTIONAL_FEATURES *******************************************************************//
#endif //__MT2DEV_SERVICEDEFS_H__
Adsız.png

1Adsız.png
 
Paket kodlarını düzenleme niyetiyle başladığım iş büyük ruhsal problemlere doğru ilerliyor, tüm .cpp dosyalarını tek tek açıp baştan sona kontrol ediyorum manuel olarak, 300 civarı dosyayı kontrol edip üzerinde değişiklik yapmak biraz vakit alıyor haliyle. :LOL: Manuel kontrolden kastım, bildiğiniz dümdüz baştan sona okuyorum, değişiklik gereken bir yer görürsem düzenleyip devam ediyorum, incelerken pek çok ufak detaya rastladım ve bunlardan ilginç olabileceklerini isteğe göre açıp kapatmak için define olarak tanımladım, henüz tam bir güncelleme vermekten uzağım ama ufak bir gelişim kaydı verebilirim sanıyorum;

C++:
Genişlet Daralt Kopyala
**************************************
-----------------0.70V----------------
**************************************
/*############################################ !!! ÖNEMLİ NOT - DİKKAT !!! ##############################################
## Tüm dosyalarda, önemli kısımlara yazdığım yüzlerce not var; [MT2Dev Note] şeklinde aratarak hepsine ulaşabilirsiniz.##
###### Ayrıca Ymir developerlarının yazdığı önemli notların, Korece'den İngilizce'ye çevrilmiş versiyonlarına da; #######
### " Ymir Dev Note " şeklinde aratarak ulaşabilirsiniz, detaylı olanlarda yazan kişi ve tarih bilgisi de mevcuttur. ####
############################################## *************************** #############################################*/

- DevFix 113 uygulandı.
- DevFix 114 uygulandı.
- DevFix 115 uygulandı.
- DevFix 116 uygulandı.
- DevFix 117 uygulandı.
- DevFix 118 uygulandı.
- DevFix 119 uygulandı.
- DevFix 120 uygulandı.
- DevFix 121 uygulandı.
- DevFix 122 uygulandı.
- DevFix 123 uygulandı.

- Modern C++ dan tam anlamıyla yararlanmak için gerekli düzenlemeler yapıldı. (/*Örnek; Auto Transform, Nullptr Transform, New Smart Pointers vs.*/)
- "itertype", "typeof" gibi modern C++ standartlarında yeri olmayan tanımlar değiştirildi.
- Ymir tarafından artık kullanılmayan eski paket şifreleme yöntemi "_OLD_PACKET_ENCRYPTION_" isimli bir define içerisine alındı, aktif paket şifreleme sistemimiz olan "_IMPROVED_PACKET_ENCRYPTION_" de düzenlendi.-
- Artık her iki define deaktif edilirse paket şifreleme komple kapatılır ve paketler şifresiz olarak sorunsuz şekilde iletilir, ayrıca iki şifreleme yöntemi de aktif edilmeye hazır halde, sorunsuz çalışıyorlar.- (/*KESİNLİKLE AYNI ANDA İKİ DEFİNE AKTİF EDİLMEMELİ, AYNI ANDA SADECE 1 TANESİ AKTİF EDİLEBİLİR!!!!!!*/)
- Default olarak "_IMPROVED_PACKET_ENCRYPTION_" her zaman AKTİF olmalıdır! Paket şifrelemeyi komple deaktif etmek sadece belirli debug aşamalarında gerekli olabilir, sadece bu amaçla kullanılmalıdır.

- "Network Packet" sistemi baştan sona düzenlendi, paket hatalarını minimuma indirmek için çeşitli düzenlemeler yapıldı, tüm ölü kodlar temizlendi.
- "Enums.h" ve "Packets.h" isimli iki yeni header oluşturuldu, tüm paket kodları ve enumlar (/*tüm demek yanlış olabilir, aslında sadece gerekli gördüklerim*/) bu iki dosyaya taşındı,-
- Hataları tespit etmek veya düzenleme yapmak artık daha kolay olacaktır çünkü gereken tüm kodlar tek bir dosyada.
- Yukarıda bahsettiğim işlem esnasında artık kullanımına gerek kalmayan (/*yani içeriği tamamen yukarıda bahsettiğim yeni dosyalara taşınan*/); -
- "common/length.h", "common/item_length.h", "common/tables.h", "db/QID.h", "game/packet.h", "game/unique_item.h" isimli dosyalar srcden kaldırıldı.

- Kendimi ve daha önce yaptığım bir düzenlemeyi güncelleme ihtiyacı duydum, daha önceki sürümlerde modern tekniklere daha uygun olduğunu düşündüğüm için,
- "#pragma once" kullanımına geçiş yapmıştım fakat 2024 yılında dahi "#pragma once" hala standart olarak kabul görmüyor ve farklı alt klasörlerdeki aynı isimli header dosyaları,
- Bu uygulamadan düşük bir ihtimalle de olsa etkilenebilir, dolayısıyla eski ama daha güvenli (/*Eşsiz header isimleri düzgün şekilde ayarlandığında*/) olan header guardları kullanmaya devam etmeye karar verdim, böylesi bana daha güvende hissettiriyor. (/*Guard isimlerini benzersiz olacaklarına emin olarak tekrar düzenledim.*/)
- SRC içerisinde "unordered_map" ve "unordered_set" kullanılan tüm yerlerde std:: kullanımına geçilip boost iptal edildi.

- Peer P2P için genişletilmiş bir log sistemi eklendi. (Kod bloğunda "// EXTENDED_PEER_P2P_LOGS" şeklinde bilgi var.)
- Oyuncuların sadece 1. ve 2. köylerde pazar kurabilmesi için bir düzenleme yapıldı. (Kod bloğunda "// PRIVATE_SHOPS_ONLY_OPENABLE_IN_TOWN" şeklinde bilgi var.)
- Oyuncuların yere attığı itemlerin logunun tutulması için düzenleme yapıldı. (Kod bloğunda "// DROP_ITEM_LOG" şeklinde bilgi var.)
- GMlerin istediği oyuncuyu zehirleyebilmesi için yeni bir GM kodu eklendi. (Kod bloğunda "// POISON_COMMAND" şeklinde bilgi var.)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_POTIONS" eklendi. (/*Aktif edilirse potlar, sular gibi envai çeşit iksir sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_CAPE_OF_COURAGE" eklendi. (/*Aktif edilirse Cesaret Pelerinleri sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_METIN_STONE_DETECTOR" eklendi. (/*Aktif edilirse Metin Taşı Dedektörü sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "BOOSTED_EXP_DROP" eklendi. (/*Aktif edilirse test server modu aktifken EXP kazanımı 8 ile çarpılır, hızlandırılmış oyun içi testler için işe yarayabilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_BOW_DISTANCE" eklendi. (/*Aktif edilirse yay ile vuruş yapan Ninja karakterlerin hasar hesaplaması yapılırken karakterin vuruş esnasındaki mesafesi dikkate alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_STAMINA_WALK" eklendi. (/*Aktif edilirse karakterlerin staminası bittiği zaman yürümeye başlamazlar*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_DEATH_PENALTY" eklendi. (/*Aktif edilirse karakterler öldükten sonra burada başla seçeneğini seçerse EXP kaybetmezler*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_PREVENT_DEATH_FROM_POISON" eklendi. (/*Aktif edilirse karakterler zehir hasarıyla ölebilir, normalde karakterin canı 1 olduğunda hasar vurmayı durduruyor*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_HORSE_HEALTH_AND_STAMINA" eklendi. (/*Aktif edilirse atın can azalması, stamina azalması, ölmesi gibi faktörler devre dışı kalır, at beslenmese bile ölmez*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_LOVER_NEED_SP_TO_WARP" eklendi. (/*Aktif edilirse nikah yüzüğü ile birbirine ışınlanmak isteyen evli karakterlerden ışınlanma için SP alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_MONSTERS_POISONED_ONLY_ONCE" eklendi. (/*Aktif edilirse zehir yiyen bir mob, zehrin etkisi geçtikten (normalde moblar sadece 1 defa zehirlenirler, o süre zarfında ölmezse bir daha zehir yemez) sonra oyuncular tarafından tekrar zehirlenebilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_NEED_EXP_FOR_SKILL_READING" eklendi. (/*Aktif edilirse beceri geliştirme esnasında oyuncudan eksilen 20.000 EXP devre dışı kalır, EXP harcamadan işlem devam eder*/)
- "Documents" isimli yeni bir dosya eklendi, içerisinde Ymir'in orijinal developer ekibinin yazdığı patch loglarının İngilizceye çevrilip, düzenlenmiş halleri mevcut.
- Hali hazırda aktif olan veya comment satırı haline getirilmiş, işlevsel olabilecek tüm sys_log kayıtları test server modu için aktif edildi. (/*Normalde aktif olan logların bazıları da sadece test server modunda çalışacak şekilde düzenlendi.*/)


C++:
Genişlet Daralt Kopyala
// Yeni fixler;

- DevFix 113 = Karakterler yaratilirken verilen random statlar sabit hale getirildi.                (constants.cpp)
- DevFix 114 = Eksik bir bolume gerekli "sys_log" blogu eklendi, bilgi onemli.                        (ClientManager.cpp)
- DevFix 115 = Ata veya binege belirli maplerde binilmemesi icin kontrol eklendi.                    (char_item.cpp&cmd_general.cpp)
- DevFix 116 = "CHARACTER::BuffOnAttr_ValueChange" fonksiyonu modern tarzda yenilendi.                (char_item.cpp)
- DevFix 117 = Eger oyuncu son seviyeye ulasirsa, beceri kitabi okumasi icin EXP gerekmeyecektir.    (char_skill.cpp)
- DevFix 118 = Game Masterlar artik aninda "Burada Basla" veya "Sehirde Basla" ile dirilebilirler.    (cmd_general.cpp)
- DevFix 119 = Sadece GMlerin kullanmasina izin verilen komutlara ekstra kontroller eklendi.        (cmd_general.cpp&cmd_gm.cpp)
- DevFix 120 = "Cube_make" icerisine gerekli bir -yang kontrolu eklendi.                            (cube.cpp)
- DevFix 121 = Bazi GM veya Player komutlarinda negatif(-) arg kullanimi engellendi.                (cmd_gm.cpp&cmd_general.cpp)
- DevFix 122 = Gereksiz buyuk veri tipi kullanan yerler, bellek tuketimini azaltmak icin duzenlendi.(Lot of files have this one)
- DevFix 123 = "/do_set" komutu komple yenilendi, eksik kontroller eklendi.                            (cmd_gm.cpp)
    

// ServiceDefs'in son hali;
    
/********************************************************/
/* FILE:    ServiceDefs.h                               */
/* INFO:    All defines linked to a single header file. */
/* AUTHOR:  MT2Dev                                      */
/* DATE:    11/09/2023                                  */
/********************************************************/
#ifndef __MT2DEV_SERVICEDEFS_H__
#define __MT2DEV_SERVICEDEFS_H__

//********************************************************************* DEBUGGING_FEATURES **********************************************************************//
//#define ENABLE_SEQUENCE_SYSTEM  // Ymir Sequence System (Useful for debugging)
#define USE_STACKTRACE            // Ymir Stacktrace System for Analyze Errors (Be sure to edit game/src/Makefile, USE_STACKTRACE = 1 or 0)
#define USE_QUERY_LOGS            // Logging Queries for Analyzing (If it is test server of course)
#define ENABLE_SYSLOG_PACKET_SENT // Syslogs for Packet Sent (If it is test server of course)
//***************************************************************** END_OF_DEBUGGING_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//****************************************************************** FIX_AND_SECURITY_FEATURES ******************************************************************//
/* IMPORTANT NOTE!!! - Both encryption systems CANNOT BE ACTIVATED at the same time!!! Btw if you disable both, packet encryption will be COMPLETELY turned off. */
//#define _IMPROVED_PACKET_ENCRYPTION_ // Ymir Improved Packet Encryption System
//#define _OLD_PACKET_ENCRYPTION_      // Ymir Old Packet Encryption System (Old ones like xtea, pong, keys etc.)
//#define ENABLE_EXTERNAL_IP_SUPPORT   // For Cloud (Oracle, Google, AWS, Azure) External IP Support (INFO; If you don't use external ip, NOT uncomment this!)
#define ENABLE_PORT_SECURITY           // P2P (API Tool) Extra Security
//************************************************************** END_OF_FIX_AND_SECURITY_FEATURES ***************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//********************************************************************** OPTIONAL_FEATURES **********************************************************************//
//#define UNLIMITED_POTIONS                   // Unlimited Potions (Ex; HP/SP Potions, Purple/Green Potions, Ability Potions, Blends etc.)
//#define UNLIMITED_CAPE_OF_COURAGE           // Unlimited Cape Of Courage (All Vnums)
//#define UNLIMITED_METIN_STONE_DETECTOR      // Unlimited Metin Stone Detector (All Vnums)
//#define BOOSTED_EXP_DROP                    // 8x EXP Drop Bonus (Sometimes Will Useful For Speed-up In Game Test Purposes) - (Works ONLY in test server mode!)
//#define DISABLE_BOW_DISTANCE                // Disable Bow Distance Factor in the Assasin Damage Calculation
//#define DISABLE_STAMINA_WALK                // Disable Walk Mode When Stamina is 0 (NOTE: Not only for PC's, also AI, Horse and Pets include this too!)
//#define DISABLE_DEATH_PENALTY               // Disable EXP Loss After Death (Restart Here)
//#define DISABLE_PREVENT_DEATH_FROM_POISON   // Disable Prevent Death From Poison (INFO: If this enabled, PC's can die due poison damage, HP not stay at 1.)
//#define DISABLE_HORSE_HEALTH_AND_STAMINA    // Disable Horse Health and Stamina Factors (So horse never be die, never be starving, never be out of stamina etc.)
//#define DISABLE_LOVER_NEED_SP_TO_WARP       // Disable Lovers Need SP For Warp (With Marriage Ring)
//#define DISABLE_MONSTERS_POISONED_ONLY_ONCE // Disable Monsters Poisoned Only Once (Normally players just have one chance to poison while kill the monster)
//#define DISABLE_NEED_EXP_FOR_SKILL_READING  // Disable Need EXP For Skill Reading (Normally players give 20.000 EXP for each reading)
//****************************************************************** END_OF_OPTIONAL_FEATURES *******************************************************************//
#endif //__MT2DEV_SERVICEDEFS_H__
bu okçuyu nasıl kapatabilirim acaba
 
Paket kodlarını düzenleme niyetiyle başladığım iş büyük ruhsal problemlere doğru ilerliyor, tüm .cpp dosyalarını tek tek açıp baştan sona kontrol ediyorum manuel olarak, 300 civarı dosyayı kontrol edip üzerinde değişiklik yapmak biraz vakit alıyor haliyle. :LOL: Manuel kontrolden kastım, bildiğiniz dümdüz baştan sona okuyorum, değişiklik gereken bir yer görürsem düzenleyip devam ediyorum, incelerken pek çok ufak detaya rastladım ve bunlardan ilginç olabileceklerini isteğe göre açıp kapatmak için define olarak tanımladım, henüz tam bir güncelleme vermekten uzağım ama ufak bir gelişim kaydı verebilirim sanıyorum;

C++:
Genişlet Daralt Kopyala
**************************************
-----------------0.70V----------------
**************************************
/*############################################ !!! ÖNEMLİ NOT - DİKKAT !!! ##############################################
## Tüm dosyalarda, önemli kısımlara yazdığım yüzlerce not var; [MT2Dev Note] şeklinde aratarak hepsine ulaşabilirsiniz.##
###### Ayrıca Ymir developerlarının yazdığı önemli notların, Korece'den İngilizce'ye çevrilmiş versiyonlarına da; #######
### " Ymir Dev Note " şeklinde aratarak ulaşabilirsiniz, detaylı olanlarda yazan kişi ve tarih bilgisi de mevcuttur. ####
############################################## *************************** #############################################*/

- DevFix 113 uygulandı.
- DevFix 114 uygulandı.
- DevFix 115 uygulandı.
- DevFix 116 uygulandı.
- DevFix 117 uygulandı.
- DevFix 118 uygulandı.
- DevFix 119 uygulandı.
- DevFix 120 uygulandı.
- DevFix 121 uygulandı.
- DevFix 122 uygulandı.
- DevFix 123 uygulandı.

- Modern C++ dan tam anlamıyla yararlanmak için gerekli düzenlemeler yapıldı. (/*Örnek; Auto Transform, Nullptr Transform, New Smart Pointers vs.*/)
- "itertype", "typeof" gibi modern C++ standartlarında yeri olmayan tanımlar değiştirildi.
- Ymir tarafından artık kullanılmayan eski paket şifreleme yöntemi "_OLD_PACKET_ENCRYPTION_" isimli bir define içerisine alındı, aktif paket şifreleme sistemimiz olan "_IMPROVED_PACKET_ENCRYPTION_" de düzenlendi.-
- Artık her iki define deaktif edilirse paket şifreleme komple kapatılır ve paketler şifresiz olarak sorunsuz şekilde iletilir, ayrıca iki şifreleme yöntemi de aktif edilmeye hazır halde, sorunsuz çalışıyorlar.- (/*KESİNLİKLE AYNI ANDA İKİ DEFİNE AKTİF EDİLMEMELİ, AYNI ANDA SADECE 1 TANESİ AKTİF EDİLEBİLİR!!!!!!*/)
- Default olarak "_IMPROVED_PACKET_ENCRYPTION_" her zaman AKTİF olmalıdır! Paket şifrelemeyi komple deaktif etmek sadece belirli debug aşamalarında gerekli olabilir, sadece bu amaçla kullanılmalıdır.

- "Network Packet" sistemi baştan sona düzenlendi, paket hatalarını minimuma indirmek için çeşitli düzenlemeler yapıldı, tüm ölü kodlar temizlendi.
- "Enums.h" ve "Packets.h" isimli iki yeni header oluşturuldu, tüm paket kodları ve enumlar (/*tüm demek yanlış olabilir, aslında sadece gerekli gördüklerim*/) bu iki dosyaya taşındı,-
- Hataları tespit etmek veya düzenleme yapmak artık daha kolay olacaktır çünkü gereken tüm kodlar tek bir dosyada.
- Yukarıda bahsettiğim işlem esnasında artık kullanımına gerek kalmayan (/*yani içeriği tamamen yukarıda bahsettiğim yeni dosyalara taşınan*/); -
- "common/length.h", "common/item_length.h", "common/tables.h", "db/QID.h", "game/packet.h", "game/unique_item.h" isimli dosyalar srcden kaldırıldı.

- Kendimi ve daha önce yaptığım bir düzenlemeyi güncelleme ihtiyacı duydum, daha önceki sürümlerde modern tekniklere daha uygun olduğunu düşündüğüm için,
- "#pragma once" kullanımına geçiş yapmıştım fakat 2024 yılında dahi "#pragma once" hala standart olarak kabul görmüyor ve farklı alt klasörlerdeki aynı isimli header dosyaları,
- Bu uygulamadan düşük bir ihtimalle de olsa etkilenebilir, dolayısıyla eski ama daha güvenli (/*Eşsiz header isimleri düzgün şekilde ayarlandığında*/) olan header guardları kullanmaya devam etmeye karar verdim, böylesi bana daha güvende hissettiriyor. (/*Guard isimlerini benzersiz olacaklarına emin olarak tekrar düzenledim.*/)
- SRC içerisinde "unordered_map" ve "unordered_set" kullanılan tüm yerlerde std:: kullanımına geçilip boost iptal edildi.

- Peer P2P için genişletilmiş bir log sistemi eklendi. (Kod bloğunda "// EXTENDED_PEER_P2P_LOGS" şeklinde bilgi var.)
- Oyuncuların sadece 1. ve 2. köylerde pazar kurabilmesi için bir düzenleme yapıldı. (Kod bloğunda "// PRIVATE_SHOPS_ONLY_OPENABLE_IN_TOWN" şeklinde bilgi var.)
- Oyuncuların yere attığı itemlerin logunun tutulması için düzenleme yapıldı. (Kod bloğunda "// DROP_ITEM_LOG" şeklinde bilgi var.)
- GMlerin istediği oyuncuyu zehirleyebilmesi için yeni bir GM kodu eklendi. (Kod bloğunda "// POISON_COMMAND" şeklinde bilgi var.)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_POTIONS" eklendi. (/*Aktif edilirse potlar, sular gibi envai çeşit iksir sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_CAPE_OF_COURAGE" eklendi. (/*Aktif edilirse Cesaret Pelerinleri sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "UNLIMITED_METIN_STONE_DETECTOR" eklendi. (/*Aktif edilirse Metin Taşı Dedektörü sınırsız olur*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "BOOSTED_EXP_DROP" eklendi. (/*Aktif edilirse test server modu aktifken EXP kazanımı 8 ile çarpılır, hızlandırılmış oyun içi testler için işe yarayabilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_BOW_DISTANCE" eklendi. (/*Aktif edilirse yay ile vuruş yapan Ninja karakterlerin hasar hesaplaması yapılırken karakterin vuruş esnasındaki mesafesi dikkate alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_STAMINA_WALK" eklendi. (/*Aktif edilirse karakterlerin staminası bittiği zaman yürümeye başlamazlar*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_DEATH_PENALTY" eklendi. (/*Aktif edilirse karakterler öldükten sonra burada başla seçeneğini seçerse EXP kaybetmezler*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_PREVENT_DEATH_FROM_POISON" eklendi. (/*Aktif edilirse karakterler zehir hasarıyla ölebilir, normalde karakterin canı 1 olduğunda hasar vurmayı durduruyor*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_HORSE_HEALTH_AND_STAMINA" eklendi. (/*Aktif edilirse atın can azalması, stamina azalması, ölmesi gibi faktörler devre dışı kalır, at beslenmese bile ölmez*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_LOVER_NEED_SP_TO_WARP" eklendi. (/*Aktif edilirse nikah yüzüğü ile birbirine ışınlanmak isteyen evli karakterlerden ışınlanma için SP alınmaz*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_MONSTERS_POISONED_ONLY_ONCE" eklendi. (/*Aktif edilirse zehir yiyen bir mob, zehrin etkisi geçtikten (normalde moblar sadece 1 defa zehirlenirler, o süre zarfında ölmezse bir daha zehir yemez) sonra oyuncular tarafından tekrar zehirlenebilir*/)
- Opsiyonel olarak kullanılmak istenirse aktif edilebilecek yeni bir sistem olan "DISABLE_NEED_EXP_FOR_SKILL_READING" eklendi. (/*Aktif edilirse beceri geliştirme esnasında oyuncudan eksilen 20.000 EXP devre dışı kalır, EXP harcamadan işlem devam eder*/)
- "Documents" isimli yeni bir dosya eklendi, içerisinde Ymir'in orijinal developer ekibinin yazdığı patch loglarının İngilizceye çevrilip, düzenlenmiş halleri mevcut.
- Hali hazırda aktif olan veya comment satırı haline getirilmiş, işlevsel olabilecek tüm sys_log kayıtları test server modu için aktif edildi. (/*Normalde aktif olan logların bazıları da sadece test server modunda çalışacak şekilde düzenlendi.*/)


C++:
Genişlet Daralt Kopyala
// Yeni fixler;

- DevFix 113 = Karakterler yaratilirken verilen random statlar sabit hale getirildi.                (constants.cpp)
- DevFix 114 = Eksik bir bolume gerekli "sys_log" blogu eklendi, bilgi onemli.                        (ClientManager.cpp)
- DevFix 115 = Ata veya binege belirli maplerde binilmemesi icin kontrol eklendi.                    (char_item.cpp&cmd_general.cpp)
- DevFix 116 = "CHARACTER::BuffOnAttr_ValueChange" fonksiyonu modern tarzda yenilendi.                (char_item.cpp)
- DevFix 117 = Eger oyuncu son seviyeye ulasirsa, beceri kitabi okumasi icin EXP gerekmeyecektir.    (char_skill.cpp)
- DevFix 118 = Game Masterlar artik aninda "Burada Basla" veya "Sehirde Basla" ile dirilebilirler.    (cmd_general.cpp)
- DevFix 119 = Sadece GMlerin kullanmasina izin verilen komutlara ekstra kontroller eklendi.        (cmd_general.cpp&cmd_gm.cpp)
- DevFix 120 = "Cube_make" icerisine gerekli bir -yang kontrolu eklendi.                            (cube.cpp)
- DevFix 121 = Bazi GM veya Player komutlarinda negatif(-) arg kullanimi engellendi.                (cmd_gm.cpp&cmd_general.cpp)
- DevFix 122 = Gereksiz buyuk veri tipi kullanan yerler, bellek tuketimini azaltmak icin duzenlendi.(Lot of files have this one)
- DevFix 123 = "/do_set" komutu komple yenilendi, eksik kontroller eklendi.                            (cmd_gm.cpp)
    

// ServiceDefs'in son hali;
    
/********************************************************/
/* FILE:    ServiceDefs.h                               */
/* INFO:    All defines linked to a single header file. */
/* AUTHOR:  MT2Dev                                      */
/* DATE:    11/09/2023                                  */
/********************************************************/
#ifndef __MT2DEV_SERVICEDEFS_H__
#define __MT2DEV_SERVICEDEFS_H__

//********************************************************************* DEBUGGING_FEATURES **********************************************************************//
//#define ENABLE_SEQUENCE_SYSTEM  // Ymir Sequence System (Useful for debugging)
#define USE_STACKTRACE            // Ymir Stacktrace System for Analyze Errors (Be sure to edit game/src/Makefile, USE_STACKTRACE = 1 or 0)
#define USE_QUERY_LOGS            // Logging Queries for Analyzing (If it is test server of course)
#define ENABLE_SYSLOG_PACKET_SENT // Syslogs for Packet Sent (If it is test server of course)
//***************************************************************** END_OF_DEBUGGING_FEATURES *******************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//****************************************************************** FIX_AND_SECURITY_FEATURES ******************************************************************//
/* IMPORTANT NOTE!!! - Both encryption systems CANNOT BE ACTIVATED at the same time!!! Btw if you disable both, packet encryption will be COMPLETELY turned off. */
//#define _IMPROVED_PACKET_ENCRYPTION_ // Ymir Improved Packet Encryption System
//#define _OLD_PACKET_ENCRYPTION_      // Ymir Old Packet Encryption System (Old ones like xtea, pong, keys etc.)
//#define ENABLE_EXTERNAL_IP_SUPPORT   // For Cloud (Oracle, Google, AWS, Azure) External IP Support (INFO; If you don't use external ip, NOT uncomment this!)
#define ENABLE_PORT_SECURITY           // P2P (API Tool) Extra Security
//************************************************************** END_OF_FIX_AND_SECURITY_FEATURES ***************************************************************//

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

//********************************************************************** OPTIONAL_FEATURES **********************************************************************//
//#define UNLIMITED_POTIONS                   // Unlimited Potions (Ex; HP/SP Potions, Purple/Green Potions, Ability Potions, Blends etc.)
//#define UNLIMITED_CAPE_OF_COURAGE           // Unlimited Cape Of Courage (All Vnums)
//#define UNLIMITED_METIN_STONE_DETECTOR      // Unlimited Metin Stone Detector (All Vnums)
//#define BOOSTED_EXP_DROP                    // 8x EXP Drop Bonus (Sometimes Will Useful For Speed-up In Game Test Purposes) - (Works ONLY in test server mode!)
//#define DISABLE_BOW_DISTANCE                // Disable Bow Distance Factor in the Assasin Damage Calculation
//#define DISABLE_STAMINA_WALK                // Disable Walk Mode When Stamina is 0 (NOTE: Not only for PC's, also AI, Horse and Pets include this too!)
//#define DISABLE_DEATH_PENALTY               // Disable EXP Loss After Death (Restart Here)
//#define DISABLE_PREVENT_DEATH_FROM_POISON   // Disable Prevent Death From Poison (INFO: If this enabled, PC's can die due poison damage, HP not stay at 1.)
//#define DISABLE_HORSE_HEALTH_AND_STAMINA    // Disable Horse Health and Stamina Factors (So horse never be die, never be starving, never be out of stamina etc.)
//#define DISABLE_LOVER_NEED_SP_TO_WARP       // Disable Lovers Need SP For Warp (With Marriage Ring)
//#define DISABLE_MONSTERS_POISONED_ONLY_ONCE // Disable Monsters Poisoned Only Once (Normally players just have one chance to poison while kill the monster)
//#define DISABLE_NEED_EXP_FOR_SKILL_READING  // Disable Need EXP For Skill Reading (Normally players give 20.000 EXP for each reading)
//****************************************************************** END_OF_OPTIONAL_FEATURES *******************************************************************//
#endif //__MT2DEV_SERVICEDEFS_H__
şu documents packini bi görebiliyor muyuz acaba :D
 
bu okçuyu nasıl kapatabilirim acaba
Kendinize iş çıkartmayıp sadece oyundaki yay ve okları yok edin, src tarafında çok fazla işlem gerekir hiç gerek yok.
şu documents packini bi görebiliyor muyuz acaba :D
Paket sistemiyle aramızda ufak bir arbede yaşandı ama çalışmalar devam ediyor, güncelleme gelmesi biraz uzun sürecek gibi çünkü paketleri düzenlerken çok fazla şeyin yerini değiştirmem gerekti, bu süre zarfında konuyu takip edenlere ufak bir paylaşım yapayım, aktiflik düşmesin. :D

Bu RaR dosyasının içinde sızdırılan dosyaların içinde bulunan, Ymir&WebZen ve GF tarafından oluşturulmuş çeşitli kılavuzların (kurulum yönergeleri, patch notları vs.) Korece dilinden İngilizceye çevrilip düzenlenmiş versiyonları mevcut, merak edenler için bir içerik olsun. :coffee:

Bu yorumuma ek olarak eklemiştim.
 
Kaynak kodlarından gözüme çarpan (veya okurken kendi kendime söylenip hatta yanına foruma yazamayacağım tarzda yorum satırları ekleyip sonra sildiğim :ROFLMAO: ) saçmalıklar;

Özellikle cmd dosyalarında inanılmaz amatör bir veri kullanım şekli var, adam MINMAX ile sadece 0 ve 3 arasında seçilebilecek bir str_to_number fonksiyonu yazmış mesela ama countu int ile tanımlamış ? Ya arkadaş, bu kadar kısa bir aralığı kapsayan şeyi int ile tutmanın manası nedir ? Bu tek başına bir tüketime yol açmaz belki ama src komple bunlarla dolu, hepsini alt alta koyduğun da illaki bellek tüketimine olumsuz etki eder.

Cmd_general içindeki shutdown komutunun fonksiyonunda, CH'nin NULL olup olmadığını kontrol ediyor eğer NULL ise sys_err yazdırıyor ama sys_err içinde ch->GetName kullanmış ? CH nullsa adını nasıl alacaksın sevgili Koreli abi, kimse bunu görüp ya biz napıyoruz demedi mi ?

new xxx ile yeni tanımlama yaptığınız fonksiyonların sonunda delete ile bunu silmek çok mu zordu ? Şuan smart pointerlar bu işi halleder ama siz bunlar olmadan (o yıllarda yoktu) fonksiyonu yazmışsınız kimse de iş bittikten sonra biz bunu silmiyoruz acaba memory leak yaratır mıyız dememiş.

Örnek olarak bonus;



C++:
Genişlet Daralt Kopyala
        int iSocketCount = 0; // neden int ?????
        str_to_number (iSocketCount, arg2);

        if (!iSocketCount || iSocketCount >= ITEM_SOCKET_MAX_NUM)
        {
            iSocketCount = 3; // bir üst satırda ITEM_SOCKET_MAX_NUM kullanmışsın burda niye sabit kodladın hasta mısınız siz kafayı yememe az kaldı
        }


 
Üst