- Mesaj
- 489
- Çözümler
- 37
- Beğeni
- 1.094
- Puan
- 1.149
- 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.)
Server tarafından, src içinden bazı sayılar; (Yorum satırı sevmeyenleri delirtmelik ss
)
Client kısmı buraya sığmayacak, onu da yorum olarak ekleyeyim.
(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:
/********************************************************/
/* 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:
/***********************************************************************/
/* 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:
//--------------------------------------------------------------------------------------------------------------------------------------------//
/****************************************************** 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

Client kısmı buraya sığmayacak, onu da yorum olarak ekleyeyim.

Son düzenleme: