İlan
05 Haz 2026 25 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python Metin2 Efsanesi | Metin2 Source Dosyaları Nedir?...
İlan Yan banner placeholder

Metin2 Efsanesi | Metin2 Source Dosyaları Nedir?

myildirim43 07.04.2026 01:57 2K görüntüleme 6 cevap
Son Mesaj
myildirim43
Üye
Üye
Katılım08 Ara 2025
Konular4
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.04.2026 01:57 #1
Bu tarz konuları açması zaman alan bir işlem ve bu tarz konuları açmak yılların bilgi birikimini de beraberinde getiriyor. Bu konu da tabii ki de övünmüyorum ama şu noktada sitemimi bulundurmak istiyorum.
Platformumuzda paylaşılan içerikler herkese açık ve isteyenlerin de kaynağı belirtmek şartıyla paylaşabileceğini sürekli belirtiyorum ama insanlara iyilik yaramıyor. Kendi yazdığım bir sistemi paylaşıyorum bakıyorum başka sitelerde kendisi yapmış gibi paylaşanlar, rehber hazırlıyorum kendisi yapmış gibi paylaşanlar. Bu yakındığım kesimin çok az olduğunu da belirtmek istiyorum; bu yüzden de olabildiğinde bu sektöre katkılarımı sunmak istiyorum. Gelelim konumuza. Bu konumuz daha çok sistem yazmak isteyen kişiler için hazırlanmıştır. Bir platform üzerinde bir şeyler geliştirmek istiyorsanız ilk önce o platformu iyice tanımanız gerek. Bu konu da en azından bu işe yarayacak. İmkan olsa tüm kodları tek tek açıklayabileceğimiz bir konu açardık ama kitap haline getirsek binlerce sayfa yer kaplar.

Başlamadan önce şunu bilmelisiniz.
Metin2'nin kaynak kodları 2 parçadan oluşur: Bunlar Server ve Client.

Peki nedir bu server ve client?
Çok oyunculu oyunlarda server oyuncuların bilgilerini hafıza da tutmak ve bağlı olan tüm clientlere bilgi göndermekle yükümlüdür. Client ise oyunumuzu oynadığımız program. Serverden gelen verileri bizim anlayacağımız şekilde gösterir.
Mesela MMOZirve'dan örnek verelim. Tarayıcı ile bu siteyi açtınız ve size sunulan şeyleri görüyorsunuz. Bu kısım client oluyor. Server kısmı ise tüm herkesten gelen verileri işleyip, kaydedip başka bağlı olanlara göndermesini örnek gösterebiliriz. Metin2 gibi oyunlar da buna benzer bir yapı. Terimler de çok iyi değilim ama terimlerle sizi sıkmak istemiyorum. Merak edenler için socket programlama diye aratabilir.

Metin2'nin kaynak kodlarının 2 parçadan oluştuğunu ve gerekli açıklamaları yaptım. Lakin bu her parçanın kendi arasında da parçaları mevcut.
Client kısmı 16 ayrı parçaya ayrılmıştır. Tüm bu parçalar tek bir clienti oluşturur.
Server kısmı ise 8 ayrı parçaya ayrılmıştır. Serverde ki bu parçalar ise game ve dbyi oluşturur.

Ben server kısmının çoğuna baya hakimim ama cliente o kadar hakim değilim. Bu konu da sadece bildiğim şeyleri yazacağım. Bilmediğim yerleri bilmiyorum diye yazacağım. Eğer bilinmeyen yerlerle ilgili bilginiz varsa yorum olarak belirtirseniz konuya dahil ederim.

Şimdi başlayalım Server kısmını incelemeye
Not: Klasör yapısı filesten filese değişiklik gösterebilir. Ben kendi dosyalarımdan örnekliyorum!

Server şu yapıda bulunur.
  • common : Sabitlerin bulunduğu yer.
  • db : Veritabanı işlemlerini yapan çekirdek.
  • game : Veritabanından (db çekirdeğinden) ve clientlerden gelen bilgileri işleyen ve client ile bağlantısı olan yer. Yani oyunun kalbi.
    • lzo : Packların şifrelenmesiyle alakalı bir şey.
    • quest : Server filesimizde ./qc whistle.quest şeklinde komut yazıyoruz. qc'nin kaynak kodlarının bulunduğu yer burası.
  • libgame : game'ye yardımcı dosyalar bulundurur. Daha çok envanter kutucukları ve item efsunları için.
  • liblua : Server filesimizde bulunan lua (quest) kodlarının çalışması için.
  • libpoly : Oyunda ki dönüşüm.
  • libsql : Db için sql eklentisi. (veritabanı)
  • libthecore : Bilinmiyor.

Biz sadece common, db ve game içindeki dosyaları inceleyeceğiz. Sırasıyla incelemeye başlayalım o halde.

Common içinde ki dosyalar;
  • billing.h : bilinmiyor.
  • cache.h : Adından da anlaşılayacağı üzere önbellek.
  • d3dtype.h : Renklerle alakalı şeyler.
  • noncopyable.h : Bilinmiyor.
  • pool.h : Bilinmiyor.
  • service.h : Definelerin tanımlı olduğu kısım. Makroları (#ifdef, #ifndef) tetikler. Genelde buraya sistemlerin sabitleri atanır. Örnek: #define CASRO2_OFFLINESHOP gibi.
  • singleton.h : Bilinmiyor.
  • teen_packet.h : Bilinmiyor.
  • VnumHelper.h : Oyunda ki mevcut itemlerin vnumuna göre kategoriye ayrılması. Örneğin: 71136 ise cadılar bayramı ile alakalı item.
  • building.h : Lonca binaları
  • item_length.h : İtemlerle akalı bilgiler bulunur. Flaglar, efsunlar vs.
  • length.h : Oyunun geneliyle alakalı bilgiler bulunur. Bir hesapta açılacak maks karakter miktarı, envanter boyutu, maks depolanan yang miktarı, karakter türleri, mob türleri, chat türleri vs.
  • auction_table.h : Bilinmiyor.
  • stl.h : Bilinmiyor.
  • tables.h : Game ile db arasında burada tanımlanan bilgilere göre veri gönderir (packet). Örn: Oyuna giriş yapılan karakterin bilgileri ve eşyaları, protoların yüklenmesi vs.
  • utils.h : Tam bilmiyorum ama kodlarda yazıları sayıya çeviren fonksiyonlar var.

db içinde ki dosyalar;
  • AuictionManager.cpp/h: Bilinmiyor.
  • BlockCountry.cpp/h : Ülkelere göre engelleme. (Veritabanında belirtilen ip aralıklarına sahip olan yerlerden oyuna girişi yasaklar.)
  • Cache.cpp/h : Önbellekleri bulundurur. Oyunda yerden item aldığınızda veya sattığınızda bunlar anlık olarak veritabanına yazılmaz. Hafıza da tutulur ve belli süre aralıklarla kayıt yapılır. Bu yüzden oyunu reboot attığınızda item kaybı varsa oyunu kapatırken yanlış işlem yaptığınız içindir.
  • ClientManager.h: Bu header birden fazla cpp dosyası içindir. Bunlar sırayla;
    • ClientManager.cpp : Burayı db çekirdeğinin kalbi diyebiliriz. game'den gelen verileri burada işler.
    • ClientManagerBoot.cpp : Oyun açılırken veritabanında ki verileri çeker. (npcler de satılan eşyalar, protolar, loncalar, lonca binaları vs)
    • ClientManagerEventFlag.cpp : player.quest tablosunda dwPID değeri 0 olanları çeker ve event flag olarak oyuna tanımlar. Örnek: ay ışığı eventi, exp_rate gibi.
    • ClientManagerGuild.cpp : Loncaların oluşturulması, silinmesi, loncaya üyelerin eklenmesi gibi işlemlerin bulunduğu dosya.
    • ClientManagerHorseName.cpp : Bunu açıklamaya gerek var mı bilmiyorum ama at şekeri ile atınıza isim verdiğinizde bu dosya da çalışır.
    • ClientManagerLogin.cpp : Kullanıcı girişi yaparken, karakteri seçerken gereken bilgileri game gönderir. Game'den gelen bilgileri de veritabanına kayıt eder. Bu listede ki çoğu dosyanın görevi bu. Gelen verileri kayıt eder, veri gönderir. Bu dosya da kısaca oyuncu hesabı bilgilerini barındırır.
    • ClientManagerParty.cpp : Oyunda kurduğumuz gruplar.
    • ClientManagerPlayer.cpp : Oyuna girişte seçilen karakterin bilgilerini işler. İtemler, statüler vs.
  • Config.cpp/h : Server filesinizin db içinde CONFIG, conf.txt gibi dosyalar var. Bunlarda ki verileri alır ve işler.
  • CsvReader.cpp/h : Server filesinizde ki bulunan (item_names.txt, item_proto.txt, mob_names,txt, mob_proto.txt) dosyaların okunmasını için yardımcı dosya. Bu program her tab ile ayrılan şeyleri ayrı sütün olarak algılar. Excel programı ile de protoları açarsanız düzgün bir şekilde sütünlara ayrıldığını görebilirsiniz. (Bu dosyalar ClientManagerBoot.cpp'de okunur, işlenir ve game'ye gönderilir.)
  • DBManager.cpp/h - DBManager_mainline.cpp : Sql sorguları için yazılmış.
  • Grid.cpp/h : Envanterde bulunan kutucuklar var. Onlar için. Görevleri kısaca şu. Belirtilen kutu da item varsa bilgilerini alır. İtem olup olmama kontrolünü filan yapar. Detaylar için dosyayı inceleyebilirsiniz.
  • GuildManager.cpp/h : Loncaların işlendiği yer. Boot aşamasında tüm loncaları veritabanından alır. Oyun kapanırken kayıt yapar vs.
  • HB.cpp/h : Bilinmiyor.
  • ItemAwardManager.cpp/h : player.item_award tablosunda ki verilerin okunması için.
  • ItemIDRangeManager.cpp/h : player.item tablosunda itemlerin idsi var. Bu idlerin tanımlanması için.
  • Lock.cpp/h : Bilinmiyor.
  • LoginData.cpp/h : Giriş yapılan hesapla ilgili bazı bilgileri alır. Premium durumu vs.
  • main.cpp/h : Bunu açıklamaya gerek var mı bilmiyorum ama c++ projelerinde main dosyası bulunur. Bu da onun için. Diğer tüm dosyaların kullanımını burada tanımlanır. db açıldığında sırasıyla yapılacak işlemler burada belirtilir.
  • Marriage.cpp/h : Evlilik.
  • Monarch.cpp/h : Bu kullanılmayan bir özellik olduğu için pas.
  • MoneyLog.cpp/h : Oyuncunun yang log kayıtları.
  • NetBase.cpp/h : Bilinmiyor.
  • Peer.cpp/h : Bilinmiyor.
  • PeerBase.cpp/h : Bilinmiyor.
  • PrivManager.cpp/h : Oyunda drop açıyoruz. Bunla ilgili işlemler.
  • ProtoReader.cpp/h : Protoların okunması için gerekli.
  • QID.h : Bilinmiyor.
  • stdafx.h : Bu da c++ projelerinde bulunan header dosyası.
  • version.cpp : Versiyonla alakalı şey. Filesinizde VERSION.txt diye bir dosya vardır. Bu dosyayı oluşturup versiyonu yazdıran kodlar burada.

Game içindeki dosyaları;
  • affect.cpp/h : Oyunuda sol üst kısımda bulunan etkiler. (oto yang toplama, exp artış miktarı vs)
  • affect_flag.h : Efektlerin kontrolü için fonksiyonlar sunar.
  • ani.cpp/h : Karakter animasyonlarının kontrolü yapıldığı yer.
  • arena.cpp/h : Oyuncuların birbirleri ile ws attığı bir harita vardı. Sistemin çalışması için gerekli kontroller burada.
  • auction_manager.cpp/h : Bilinmiyor.
  • auction_packet.h : Bilinmiyor.
  • auth_brazil.cpp/h : Bilinmiyor.
  • banword.cpp/h : Küfür filtresi. (player.banword tablosunda yazan kelimeleri sansürler.)
  • battle.cpp/h : Savaş dinamiklerinin bulunduğu dosya.
  • BattleArena.cpp/h : Savaş arenası.
  • belt_inventory_helper.h : Kemer taktığınız zaman envanterin yanında ki küçük bölgeye potlar koyuluyor. Bu dosya ise hangi itemlerin koyulabileceğini, ne kadar slotun açılacağını denetler.
  • blend_item.cpp/h : Bilinmiyor.
  • block_country.cpp/h : Ülkelere yönelik engelleme kontrolleri. Mesela oyuna ABD'den giriş yapılmasını istemiyorsunuz diyelim. Bu dosya işlemleri yapıyor.
  • BlueDragon.cpp/h : Sürgün mağarasında ki mavi ejderha.
  • BlueDragon_Binder.cpp/h : Bilinmiyor.
  • BlueDragon_Skill.h : Mavi ejderhanın becerileri. Mesela size karşı mavi bi ateş atıyor.
  • buff_on_attributes.cpp/h : Giydiğiniz itemlerin efsunlarına göre karakterinize bufflar verir.
  • buffer_manager.cpp/h : Karakter bufflarını yönetir.
  • building.cpp/h : Lonca binalar.
  • castle.cpp/h : Oyunda kaleler vardı. Bunlarla alakalı.
  • char.h: Karakterlerle ve moblarla alakalı fonksiyon ve structlar burada bulunur. Bu header dosyası birden fazla cpp dosyası tarafından kullanılmaktadır. Sırasıyla;
    • char.cpp : Karakter bilgilerinin saklandığı yer. Karakterin adını, leveli ve bir çok şey burada saklanır.
    • char_affect.cpp : Karakter etkileri. Can yenileme vs.
    • char_battle.cpp : Karakter savaş dinamikleri. Bir moba veya oyuncuya saldırdığınız da ne kadar hasar vereceğiniz hesaplanır. Ya da siz saldırı aldığınız da canınızın ne kadar gideceği filan belirlenir. Efsunlara, yeteneklerinize, statülerinize, ekipman seviyenize kadar her şeyi hesaplar.
    • char_change_empire.cpp : Kralların İzi itemi ile bayrak değiştirdiğiniz zaman bu dosyada ki fonksiyonlar çalışır.
    • char_dragonsoul.cpp : Simya sistemi.
    • char_hackshield.cpp : Hackshield programının çalışması için.
    • char_horse.cpp : At, binekler vs
    • char_item.cpp : İtemler kullanıldığında yapılacak işlemlerden tutun, envanter yönetimine kadar bir çok şey bu dosyada. Game çekirdeğinde en fazla kod bulunan dosyalardan birisi de budur.
    • char_quickslot.cpp : Yetenekleri ve bazı itemleri aşağı kısımda ki taskbara ekliyoruz. Bu özelliğin çalışması için gerekli.
    • char_resist.cpp : Zehir, bleding gibi etkilerin karakterinize uygulayacağı etkiler.
    • char_skill.cpp : Karakter yetenekleri.
    • char_state.cpp : Mob durumları agrasiflik, npc vs.
  • char_manager.cpp/h : Tüm karakterlerin bilgilerinin saklandığı yer burası.
  • check_server.h : Server key kontrolü ile alakalı.
  • cipher.cpp/h : Şifreleme ile alakalı şeyler.
  • ClientPackageCryptInfo.cpp/h : Şifrelenmiş packlarla alakalı.
  • cmd.h: Komut yazdığımız zaman çalışması için gereken fonksiyonlar. Bu header dosyası birden fazla cpp dosyasında kullanılır. Sırayla;
    • cmd.cpp : Komutlar ve komutların kullanabilmek için gerekli yetkilerin ayarlandığı dosya.
    • cmd_emotion.cpp : Duygular.
    • cmd_general.cpp : GM kodu dışında genel olarak kullanılan komutlar. Burada ki komutlar oyuncular tarafından da kullanılabilir.
    • cmd_gm.cpp : GM'lerin kullanabildiği kodlar burada bulunur.
    • cmd_oxevent.cpp : OX eventle ilgili komutlar.
  • config.cpp/h : Filesinizin kanal dosyaları içinde CONFIG dosyası bulunur. Bu dosyaların okunması için.
  • constants.cpp/h : Bazı sabitlerin bulunduğu yer. Örn: Efsun listesi, lonca ve karakter level atlaması için gerekli exp oranlarının bulunduğu bölge.
  • crc32.cpp/h : Bilinmiyor.
  • cube.cpp/h : Craft sistemi. İksir yapımı, item dönüşümleri vs.
  • db.cpp/h : Veritabanı ile alakalı şeyler. Query çalıştırma vs.
  • debug_allocator.h : Bilinmiyor.
  • debug_allocator_adapter.h : Bilinmiyor.
  • debug_ptr.h : Bilinmiyor.
  • desc.cpp/h : Packet gönderip almak için gerekli fonksiyonlar.
  • desc_client.cpp/h : Yeni bir client açıldığında socket bağlantısı kurması için.
  • desc_manager.cpp/h : Bağlı clientler, hesaplar ve karakter bilgilerinin bulunduğu dosya.
  • desc_p2p.cpp/h : Yeni bir p2p bağlantısı açıp sonlandırma.
  • dev_log.cpp/h : Bilinmiyor.
  • dragon_soul_table.cpp/h : Simya taş kademeleri.
  • DragonLair.cpp/h: Sürgün içinde ki mavi ejderha ile alakalı.
  • DragonSoul.cpp/h : Simya sistemi.
  • dungeon.cpp/h : Dungeon kontrolleri. game99 içinde bulunan haritalar için. Yeni bir giriş yapıldığında sanal core oluşturma, grup halinde oyuncuları aynı bölgeye atma vs.
  • empire_text_convert.cpp/h : Aynı krallıkta olmayan oyuncular ile iletişim kurulmuyor. Lisanı geliştirdikçe ufak ufak anlaşılır oluyordu. Bu dosya da yazdığınız yazının karşıda ki oyuncu da nasıl gözükeceği düzenler.
  • entitiy.cpp/h entitiy_view.cpp : Varlıklar (karakter mob vs.) gözükmesi için
  • event.cpp/h : Zaman ayarlı eventlerin düzenlenmesi için.
  • event_queue.cpp/h : Bilinmiyor.
  • exchange.cpp/h : Oyuncular arası ticaret. (ticaret penceresi)
  • fifo_allocator.h : Bilinmiyor.
  • file_loader.cpp/h : Filesinizde ki metin dosyalarının okunması için.
  • FileMonitor_Freebsd.cpp/h : Bilinmiyor.
  • fishing.cpp/h : Balıkçılık.
  • FSM.cpp/h : Bilinmiyor.
  • gm.cpp/h : GM
  • group_text_parse_tree.cpp/h : Bilinmiyor.
  • guild.cpp/h : Lonca bilgilerine ulaşmak için.
  • guild_manager.cpp/h : Tüm loncaların hafıza tutulduğu bölge.
  • guild_war.cpp : Lonca savaşı.
  • HackShield.cpp/h : HackShield programı için.
  • HackShield_Impl.cpp/h : HackShield programı için.
  • horse_rider.cpp/h : At sürme ile alakalı.
  • horsename_manager.cpp/h : Atına özel olarak isim ekleyen oyuncuların at isimleri burada bulunur.
  • IFileMonitor.h : Bilinmiyor.
  • input.h: Packetlerin işlenmesi için gerekli. Bu header dosyası birden fazla dosyada kullanılır. Sırasıyla;
    • input_auth.cpp : Login işlemleri.
    • input_db.cpp : DB ile Game arasında iletişim sonucu yapılacak işlemler. Mesela lonca eklediniz ve db gönderdiniz. db çekirdeği eklemeleri yaptıktan sonra tekrardan bu dosyaya packet gönderir ve bu dosya da loncanın objesinin yaratılması için guild_manager'a verileri gönderir.
    • input_login.cpp : Karakter seçtikten sonra oyuna girerken yapılacak işlemler.
    • input_main.cpp : Bu dosya da ise Client (istemci) ~ Server arasında ki ilişki içindir. Clientten gelen packetler burada analiz edilir ve yapılacak işlemler belirlenir. Mesela Casro2'de arkadaş ekleyeceksiniz diyelim. Siz clientte kişinin adını yazıp gönderiyorsunuz. Packet buraya geliyor ve arkadaş eklemek için tanımlanan fonksiyona CInputMain::Messenger gönderdiğiniz veri iletiliyor. Casro2 serveri bazı kontrolleri yaptıktan sonra MessengerManager'a arkadaşın eklenmesi için veriyi gönderiyor. Daha detaylı öğrenmek için kodları okumalısınız.
    • input_p2p.cpp : Coreler arası iletişimde kullanılır. Mesela siz genel sohbet kanalın da bir şey yazdınız. Yazdığınız tüm kanallar da gözükür.
    • input_teen.cpp : Bilinmiyor.
    • input_udp.cpp : TCP ve UDP terimlerini araştırın.
  • ip_ban.cpp/h : Banlı olan ip adreslerinden oyuna bağlanmasını engellemek için.
  • item.h: İtemlerle alakalı fonksiyonların ve structların bulunduğu header dosyası. Bu dosya birden fazla cpp dosyasında kullanılıyor. Sırasıyla;
    • item.cpp : Oyunda bulunan itemlerin bilgileri burada tutulur. Siz oyuna giriş yaptınız diyelim. Her bir eşyanız için tek tek item.cpp'de ki sınıf yaratılacak ve managerda ki vectörlere eklenecek. Protolarda tanımlı eşyalarda tanımlıdır.
    • item_addon.cpp : Eşyanın verdiği hasar vs.
    • item_attribute.cpp : Eşyalar efsun eklemek, efsun bilgilerini almak vs gibi işlemlerin bulunduğu dosya.
  • item_manager.h: Tüm itemlerin kontrolünün yapıldığı yer. İtem oluşturma, bulmak ve silme gibi fonksiyonlar bulunur. Bu header dosyası birden fazla cpp dosyası tarafından kullanılır. Sırasıyla;
    • item_manager.cpp : Tüm itemlerin kontrolerinin yapıldığı yer. İtem oluşturma, bulma, silme.
    • item_manager_idrange.cpp : Yeni item oluşturulduğunda id oluşturmak için.
    • item_manager_private_types.h : Droplarla alakalı.
    • item_manager_read_tables.cpp : Filesiniz de mob_drop_item.txt, special_item_group.txt, common_drop_item.txt bulunan txt dosyalarını okur.
  • limit_time.h : Zaman ayarlarıyla ilgili sabitler var.
  • locale.cpp : Ülkeden ülkeye serverde değişiklikler mevcut. Server türkiye için ayarlanmışsa locale/turkey dizininde ki verilerin alınması için yardımcı fonksiyonlar bulunur.
  • locale_service.cpp/h : Sabit olarak tanımlanan ülkeler bulunur. Bu ülkelerin karşılığında hangi dosyaların yükleneceği belirtilir. Almanya için ayarlanmışsa locale/germany dizini yüklenir.
  • log.cpp/h : Oyunda yapılan aktivitelerin kaydını veritabanına ekler.
  • login_data.cpp/h : Giriş yapmış kullanıcıların bilgilerini tutar.
  • login_sim.h : Login için veritabanına packetler gönderir.
  • lua_incl.h : Lua için eklenmiş.
  • lzo_manager.cpp/h : Lzo şifrelemesi ile ilgili.
  • main.cpp : c++ projelerinde main dosyası bulunur. Bu da onun için. Diğer tüm dosyaların kullanımını burada tanımlanır. game açıldığında sırasıyla yapılacak işlemler burada belirtilir.
  • malloc_allocator.h : Bilinmiyor.
  • map_location.cpp/h : Haritaların lokasyon bilgileri için. Mevcut konumu verdiğinizde haritanın indexini alır vs.
  • MarkManagar.h : Bu birden fazla cpp dosyasında kullanılıyor. Lonca ikonları için eklenen bir dosya. Kullanan diğer dosyalar sırayla şu şekilde;
    • MarkConvert.cpp : Resimlerin dönüştürülmesi.
    • MarkManager.cpp : Lonca resmi eklemiş tüm loncaların bilgilerini tutar.
  • MarkImage.cpp/h : Lonca ikonu resimlerini oluşturma, silme vs.
  • marriage.cpp/h : Evlilik.
  • matrix_card.cpp/h : Bilinmiyor.
  • messenger_manager.cpp/h : Arkadaş listesi.
  • mining.cpp/h : Madencilik.
  • mob_manager.cpp/h : Oyunda ki slotlar.
  • monarch.cpp/h : Bu özellik kullanılmadığı için pas.
  • motion.cpp/h : Slotların, oyuncuların hareketleriyle ilgili. share/data içinde ki dosyaları okur.
  • object_allocator.h : Classlarla ilgili. Obje ekleme, silme vs.
  • over9refine.cpp/h : Dönüşüm.
  • OXEvent.cpp/h : OX eventi.
  • p2p.cpp/h : P2P bağlantısı. Yeni bağlantı oluşturma, sonlandırma, packet gönderme vs gibi işlemleri yapar.
Evet arkadaşlar db kısmıda bitti ilerki zamanlarda konunun devamını yayınlayacağım. İyi forumlar.
wisex
myildirim43
Üye
Üye
Katılım08 Ara 2025
Konular4
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
25.04.2026 05:17 #2
Teşekkürler, bende bir katkıda bulunayım ;

libthecore : Hata oluştuğu zaman beliren core dosyalarının oluşumuna yardımcı olan eklenti, game.core/db.core gibi.( Teyide muhtaç, emin değilim. )

billing.h : Ymir'in auth için ekllediği ekstra bir sistem, kaldırılırken dikkat edilmeli.

teen_packet.h : Yine Ymir'in ne amaç güderek eklediğini anlamadığım bir ekstra veritabanı ulaşım servisi teen olayı tamamiyle gereksiz kaldırmanızı şiddetle tavsiye ederim.

auction_table.h : Sevgili Ymir'in ekleyipte hiçbir zaman kullanmadığı Açık Arttırma sistemi kaldırmanızı öneririm.

AuictionManager.cpp/h: Açık Arttırma zımbırtısı.

HB.cpp/h : HotBackup yani yedekleme sistemi.

auction_manager.cpp/h : Açık Arttırma zımbırtısı.

auction_packet.h : Açık Arttırma zımbırtısı.

auth_brazil.cpp/h : Brazilya serveri için özel yazılmış auth sistemi.

dev_log.cpp/h : Developerların kendi geliştirme aşamalarında daha ayrıntılı loglar görmek için yazdıkları log sistemi.

monarch.cpp/h :Monarşi sistemi, official bir etkinliktir kazanan bayrağa özel EXP, Yang vs. drobu verilir.Günümüzde pek kullanılmayan bir sistem.​
myildirim43
Üye
Üye
Katılım08 Ara 2025
Konular4
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 02:20 #3
Ama şunuda belirtmeliyim ki içerikleri alıp isimsiz olarak paylaşıyorlar hatta kendileri yapmış gibi sahipleniyorlar diye sitem edip seninde bu içerikleri farklı bir forumdan alıp kendin hazırlamış gibi göstermen biraz çelişkili değil mi ? Üstelik açılan bölümde yanlış gibi geldi. Server kurulum bölümü sanki daha uygun böyle bir konu için
ercan02
Üye
Üye
Katılım14 Oca 2026
Konular8
Mesajlar79
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 08:36 #4
Paylaşım için teşekkürler
ercan02
Üye
Üye
Katılım14 Oca 2026
Konular8
Mesajlar79
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 10:54 #5
Ama şunuda belirtmeliyim ki içerikleri alıp isimsiz olarak paylaşıyorlar hatta kendileri yapmış gibi sahipleniyorlar diye sitem edip seninde bu içerikleri farklı bir forumdan alıp kendin hazırlamış gibi göstermen biraz çelişkili değil mi ? Üstelik açılan bölümde yanlış gibi geldi. Server kurulum bölümü sanki daha uygun böyle bir konu için
Prostavaryo
Üye
Üye
Katılım19 Nis 2026
Konular7
Mesajlar32
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 11:52 #6
Teşekkürler, bende bir katkıda bulunayım ;

libthecore : Hata oluştuğu zaman beliren core dosyalarının oluşumuna yardımcı olan eklenti, game.core/db.core gibi.( Teyide muhtaç, emin değilim. )

billing.h : Ymir'in auth için ekllediği ekstra bir sistem, kaldırılırken dikkat edilmeli.

teen_packet.h : Yine Ymir'in ne amaç güderek eklediğini anlamadığım bir ekstra veritabanı ulaşım servisi teen olayı tamamiyle gereksiz kaldırmanızı şiddetle tavsiye ederim.

auction_table.h : Sevgili Ymir'in ekleyipte hiçbir zaman kullanmadığı Açık Arttırma sistemi kaldırmanızı öneririm.

AuictionManager.cpp/h: Açık Arttırma zımbırtısı.

HB.cpp/h : HotBackup yani yedekleme sistemi.

auction_manager.cpp/h : Açık Arttırma zımbırtısı.

auction_packet.h : Açık Arttırma zımbırtısı.

auth_brazil.cpp/h : Brazilya serveri için özel yazılmış auth sistemi.

dev_log.cpp/h : Developerların kendi geliştirme aşamalarında daha ayrıntılı loglar görmek için yazdıkları log sistemi.

monarch.cpp/h :Monarşi sistemi, official bir etkinliktir kazanan bayrağa özel EXP, Yang vs. drobu verilir.Günümüzde pek kullanılmayan bir sistem.​
sdf
Üye
Üye
Katılım07 Oca 2026
Konular10
Mesajlar70
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 11:58 #7
Bu tarz konuları açması zaman alan bir işlem ve bu tarz konuları açmak yılların bilgi birikimini de beraberinde getiriyor. Bu konu da tabii ki de övünmüyorum ama şu noktada sitemimi bulundurmak istiyorum.
Platformumuzda paylaşılan içerikler herkese açık ve isteyenlerin de kaynağı belirtmek şartıyla paylaşabileceğini sürekli belirtiyorum ama insanlara iyilik yaramıyor. Kendi yazdığım bir sistemi paylaşıyorum bakıyorum başka sitelerde kendisi yapmış gibi paylaşanlar, rehber hazırlıyorum kendisi yapmış gibi paylaşanlar. Bu yakındığım kesimin çok az olduğunu da belirtmek istiyorum; bu yüzden de olabildiğinde bu sektöre katkılarımı sunmak istiyorum. Gelelim konumuza. Bu konumuz daha çok sistem yazmak isteyen kişiler için hazırlanmıştır. Bir platform üzerinde bir şeyler geliştirmek istiyorsanız ilk önce o platformu iyice tanımanız gerek. Bu konu da en azından bu işe yarayacak. İmkan olsa tüm kodları tek tek açıklayabileceğimiz bir konu açardık ama kitap haline getirsek binlerce sayfa yer kaplar.

Başlamadan önce şunu bilmelisiniz.
Metin2'nin kaynak kodları 2 parçadan oluşur: Bunlar Server ve Client.

Peki nedir bu server ve client?
Çok oyunculu oyunlarda server oyuncuların bilgilerini hafıza da tutmak ve bağlı olan tüm clientlere bilgi göndermekle yükümlüdür. Client ise oyunumuzu oynadığımız program. Serverden gelen verileri bizim anlayacağımız şekilde gösterir.
Mesela MMOZirve'dan örnek verelim. Tarayıcı ile bu siteyi açtınız ve size sunulan şeyleri görüyorsunuz. Bu kısım client oluyor. Server kısmı ise tüm herkesten gelen verileri işleyip, kaydedip başka bağlı olanlara göndermesini örnek gösterebiliriz. Metin2 gibi oyunlar da buna benzer bir yapı. Terimler de çok iyi değilim ama terimlerle sizi sıkmak istemiyorum. Merak edenler için socket programlama diye aratabilir.

Metin2'nin kaynak kodlarının 2 parçadan oluştuğunu ve gerekli açıklamaları yaptım. Lakin bu her parçanın kendi arasında da parçaları mevcut.
Client kısmı 16 ayrı parçaya ayrılmıştır. Tüm bu parçalar tek bir clienti oluşturur.
Server kısmı ise 8 ayrı parçaya ayrılmıştır. Serverde ki bu parçalar ise game ve dbyi oluşturur.

Ben server kısmının çoğuna baya hakimim ama cliente o kadar hakim değilim. Bu konu da sadece bildiğim şeyleri yazacağım. Bilmediğim yerleri bilmiyorum diye yazacağım. Eğer bilinmeyen yerlerle ilgili bilginiz varsa yorum olarak belirtirseniz konuya dahil ederim.

Şimdi başlayalım Server kısmını incelemeye
Not: Klasör yapısı filesten filese değişiklik gösterebilir. Ben kendi dosyalarımdan örnekliyorum!

Server şu yapıda bulunur.
  • common : Sabitlerin bulunduğu yer.
  • db : Veritabanı işlemlerini yapan çekirdek.
  • game : Veritabanından (db çekirdeğinden) ve clientlerden gelen bilgileri işleyen ve client ile bağlantısı olan yer. Yani oyunun kalbi.
    • lzo : Packların şifrelenmesiyle alakalı bir şey.
    • quest : Server filesimizde ./qc whistle.quest şeklinde komut yazıyoruz. qc'nin kaynak kodlarının bulunduğu yer burası.
  • libgame : game'ye yardımcı dosyalar bulundurur. Daha çok envanter kutucukları ve item efsunları için.
  • liblua : Server filesimizde bulunan lua (quest) kodlarının çalışması için.
  • libpoly : Oyunda ki dönüşüm.
  • libsql : Db için sql eklentisi. (veritabanı)
  • libthecore : Bilinmiyor.

Biz sadece common, db ve game içindeki dosyaları inceleyeceğiz. Sırasıyla incelemeye başlayalım o halde.

Common içinde ki dosyalar;
  • billing.h : bilinmiyor.
  • cache.h : Adından da anlaşılayacağı üzere önbellek.
  • d3dtype.h : Renklerle alakalı şeyler.
  • noncopyable.h : Bilinmiyor.
  • pool.h : Bilinmiyor.
  • service.h : Definelerin tanımlı olduğu kısım. Makroları (#ifdef, #ifndef) tetikler. Genelde buraya sistemlerin sabitleri atanır. Örnek: #define CASRO2_OFFLINESHOP gibi.
  • singleton.h : Bilinmiyor.
  • teen_packet.h : Bilinmiyor.
  • VnumHelper.h : Oyunda ki mevcut itemlerin vnumuna göre kategoriye ayrılması. Örneğin: 71136 ise cadılar bayramı ile alakalı item.
  • building.h : Lonca binaları
  • item_length.h : İtemlerle akalı bilgiler bulunur. Flaglar, efsunlar vs.
  • length.h : Oyunun geneliyle alakalı bilgiler bulunur. Bir hesapta açılacak maks karakter miktarı, envanter boyutu, maks depolanan yang miktarı, karakter türleri, mob türleri, chat türleri vs.
  • auction_table.h : Bilinmiyor.
  • stl.h : Bilinmiyor.
  • tables.h : Game ile db arasında burada tanımlanan bilgilere göre veri gönderir (packet). Örn: Oyuna giriş yapılan karakterin bilgileri ve eşyaları, protoların yüklenmesi vs.
  • utils.h : Tam bilmiyorum ama kodlarda yazıları sayıya çeviren fonksiyonlar var.

db içinde ki dosyalar;
  • AuictionManager.cpp/h: Bilinmiyor.
  • BlockCountry.cpp/h : Ülkelere göre engelleme. (Veritabanında belirtilen ip aralıklarına sahip olan yerlerden oyuna girişi yasaklar.)
  • Cache.cpp/h : Önbellekleri bulundurur. Oyunda yerden item aldığınızda veya sattığınızda bunlar anlık olarak veritabanına yazılmaz. Hafıza da tutulur ve belli süre aralıklarla kayıt yapılır. Bu yüzden oyunu reboot attığınızda item kaybı varsa oyunu kapatırken yanlış işlem yaptığınız içindir.
  • ClientManager.h: Bu header birden fazla cpp dosyası içindir. Bunlar sırayla;
    • ClientManager.cpp : Burayı db çekirdeğinin kalbi diyebiliriz. game'den gelen verileri burada işler.
    • ClientManagerBoot.cpp : Oyun açılırken veritabanında ki verileri çeker. (npcler de satılan eşyalar, protolar, loncalar, lonca binaları vs)
    • ClientManagerEventFlag.cpp : player.quest tablosunda dwPID değeri 0 olanları çeker ve event flag olarak oyuna tanımlar. Örnek: ay ışığı eventi, exp_rate gibi.
    • ClientManagerGuild.cpp : Loncaların oluşturulması, silinmesi, loncaya üyelerin eklenmesi gibi işlemlerin bulunduğu dosya.
    • ClientManagerHorseName.cpp : Bunu açıklamaya gerek var mı bilmiyorum ama at şekeri ile atınıza isim verdiğinizde bu dosya da çalışır.
    • ClientManagerLogin.cpp : Kullanıcı girişi yaparken, karakteri seçerken gereken bilgileri game gönderir. Game'den gelen bilgileri de veritabanına kayıt eder. Bu listede ki çoğu dosyanın görevi bu. Gelen verileri kayıt eder, veri gönderir. Bu dosya da kısaca oyuncu hesabı bilgilerini barındırır.
    • ClientManagerParty.cpp : Oyunda kurduğumuz gruplar.
    • ClientManagerPlayer.cpp : Oyuna girişte seçilen karakterin bilgilerini işler. İtemler, statüler vs.
  • Config.cpp/h : Server filesinizin db içinde CONFIG, conf.txt gibi dosyalar var. Bunlarda ki verileri alır ve işler.
  • CsvReader.cpp/h : Server filesinizde ki bulunan (item_names.txt, item_proto.txt, mob_names,txt, mob_proto.txt) dosyaların okunmasını için yardımcı dosya. Bu program her tab ile ayrılan şeyleri ayrı sütün olarak algılar. Excel programı ile de protoları açarsanız düzgün bir şekilde sütünlara ayrıldığını görebilirsiniz. (Bu dosyalar ClientManagerBoot.cpp'de okunur, işlenir ve game'ye gönderilir.)
  • DBManager.cpp/h - DBManager_mainline.cpp : Sql sorguları için yazılmış.
  • Grid.cpp/h : Envanterde bulunan kutucuklar var. Onlar için. Görevleri kısaca şu. Belirtilen kutu da item varsa bilgilerini alır. İtem olup olmama kontrolünü filan yapar. Detaylar için dosyayı inceleyebilirsiniz.
  • GuildManager.cpp/h : Loncaların işlendiği yer. Boot aşamasında tüm loncaları veritabanından alır. Oyun kapanırken kayıt yapar vs.
  • HB.cpp/h : Bilinmiyor.
  • ItemAwardManager.cpp/h : player.item_award tablosunda ki verilerin okunması için.
  • ItemIDRangeManager.cpp/h : player.item tablosunda itemlerin idsi var. Bu idlerin tanımlanması için.
  • Lock.cpp/h : Bilinmiyor.
  • LoginData.cpp/h : Giriş yapılan hesapla ilgili bazı bilgileri alır. Premium durumu vs.
  • main.cpp/h : Bunu açıklamaya gerek var mı bilmiyorum ama c++ projelerinde main dosyası bulunur. Bu da onun için. Diğer tüm dosyaların kullanımını burada tanımlanır. db açıldığında sırasıyla yapılacak işlemler burada belirtilir.
  • Marriage.cpp/h : Evlilik.
  • Monarch.cpp/h : Bu kullanılmayan bir özellik olduğu için pas.
  • MoneyLog.cpp/h : Oyuncunun yang log kayıtları.
  • NetBase.cpp/h : Bilinmiyor.
  • Peer.cpp/h : Bilinmiyor.
  • PeerBase.cpp/h : Bilinmiyor.
  • PrivManager.cpp/h : Oyunda drop açıyoruz. Bunla ilgili işlemler.
  • ProtoReader.cpp/h : Protoların okunması için gerekli.
  • QID.h : Bilinmiyor.
  • stdafx.h : Bu da c++ projelerinde bulunan header dosyası.
  • version.cpp : Versiyonla alakalı şey. Filesinizde VERSION.txt diye bir dosya vardır. Bu dosyayı oluşturup versiyonu yazdıran kodlar burada.

Game içindeki dosyaları;
  • affect.cpp/h : Oyunuda sol üst kısımda bulunan etkiler. (oto yang toplama, exp artış miktarı vs)
  • affect_flag.h : Efektlerin kontrolü için fonksiyonlar sunar.
  • ani.cpp/h : Karakter animasyonlarının kontrolü yapıldığı yer.
  • arena.cpp/h : Oyuncuların birbirleri ile ws attığı bir harita vardı. Sistemin çalışması için gerekli kontroller burada.
  • auction_manager.cpp/h : Bilinmiyor.
  • auction_packet.h : Bilinmiyor.
  • auth_brazil.cpp/h : Bilinmiyor.
  • banword.cpp/h : Küfür filtresi. (player.banword tablosunda yazan kelimeleri sansürler.)
  • battle.cpp/h : Savaş dinamiklerinin bulunduğu dosya.
  • BattleArena.cpp/h : Savaş arenası.
  • belt_inventory_helper.h : Kemer taktığınız zaman envanterin yanında ki küçük bölgeye potlar koyuluyor. Bu dosya ise hangi itemlerin koyulabileceğini, ne kadar slotun açılacağını denetler.
  • blend_item.cpp/h : Bilinmiyor.
  • block_country.cpp/h : Ülkelere yönelik engelleme kontrolleri. Mesela oyuna ABD'den giriş yapılmasını istemiyorsunuz diyelim. Bu dosya işlemleri yapıyor.
  • BlueDragon.cpp/h : Sürgün mağarasında ki mavi ejderha.
  • BlueDragon_Binder.cpp/h : Bilinmiyor.
  • BlueDragon_Skill.h : Mavi ejderhanın becerileri. Mesela size karşı mavi bi ateş atıyor.
  • buff_on_attributes.cpp/h : Giydiğiniz itemlerin efsunlarına göre karakterinize bufflar verir.
  • buffer_manager.cpp/h : Karakter bufflarını yönetir.
  • building.cpp/h : Lonca binalar.
  • castle.cpp/h : Oyunda kaleler vardı. Bunlarla alakalı.
  • char.h: Karakterlerle ve moblarla alakalı fonksiyon ve structlar burada bulunur. Bu header dosyası birden fazla cpp dosyası tarafından kullanılmaktadır. Sırasıyla;
    • char.cpp : Karakter bilgilerinin saklandığı yer. Karakterin adını, leveli ve bir çok şey burada saklanır.
    • char_affect.cpp : Karakter etkileri. Can yenileme vs.
    • char_battle.cpp : Karakter savaş dinamikleri. Bir moba veya oyuncuya saldırdığınız da ne kadar hasar vereceğiniz hesaplanır. Ya da siz saldırı aldığınız da canınızın ne kadar gideceği filan belirlenir. Efsunlara, yeteneklerinize, statülerinize, ekipman seviyenize kadar her şeyi hesaplar.
    • char_change_empire.cpp : Kralların İzi itemi ile bayrak değiştirdiğiniz zaman bu dosyada ki fonksiyonlar çalışır.
    • char_dragonsoul.cpp : Simya sistemi.
    • char_hackshield.cpp : Hackshield programının çalışması için.
    • char_horse.cpp : At, binekler vs
    • char_item.cpp : İtemler kullanıldığında yapılacak işlemlerden tutun, envanter yönetimine kadar bir çok şey bu dosyada. Game çekirdeğinde en fazla kod bulunan dosyalardan birisi de budur.
    • char_quickslot.cpp : Yetenekleri ve bazı itemleri aşağı kısımda ki taskbara ekliyoruz. Bu özelliğin çalışması için gerekli.
    • char_resist.cpp : Zehir, bleding gibi etkilerin karakterinize uygulayacağı etkiler.
    • char_skill.cpp : Karakter yetenekleri.
    • char_state.cpp : Mob durumları agrasiflik, npc vs.
  • char_manager.cpp/h : Tüm karakterlerin bilgilerinin saklandığı yer burası.
  • check_server.h : Server key kontrolü ile alakalı.
  • cipher.cpp/h : Şifreleme ile alakalı şeyler.
  • ClientPackageCryptInfo.cpp/h : Şifrelenmiş packlarla alakalı.
  • cmd.h: Komut yazdığımız zaman çalışması için gereken fonksiyonlar. Bu header dosyası birden fazla cpp dosyasında kullanılır. Sırayla;
    • cmd.cpp : Komutlar ve komutların kullanabilmek için gerekli yetkilerin ayarlandığı dosya.
    • cmd_emotion.cpp : Duygular.
    • cmd_general.cpp : GM kodu dışında genel olarak kullanılan komutlar. Burada ki komutlar oyuncular tarafından da kullanılabilir.
    • cmd_gm.cpp : GM'lerin kullanabildiği kodlar burada bulunur.
    • cmd_oxevent.cpp : OX eventle ilgili komutlar.
  • config.cpp/h : Filesinizin kanal dosyaları içinde CONFIG dosyası bulunur. Bu dosyaların okunması için.
  • constants.cpp/h : Bazı sabitlerin bulunduğu yer. Örn: Efsun listesi, lonca ve karakter level atlaması için gerekli exp oranlarının bulunduğu bölge.
  • crc32.cpp/h : Bilinmiyor.
  • cube.cpp/h : Craft sistemi. İksir yapımı, item dönüşümleri vs.
  • db.cpp/h : Veritabanı ile alakalı şeyler. Query çalıştırma vs.
  • debug_allocator.h : Bilinmiyor.
  • debug_allocator_adapter.h : Bilinmiyor.
  • debug_ptr.h : Bilinmiyor.
  • desc.cpp/h : Packet gönderip almak için gerekli fonksiyonlar.
  • desc_client.cpp/h : Yeni bir client açıldığında socket bağlantısı kurması için.
  • desc_manager.cpp/h : Bağlı clientler, hesaplar ve karakter bilgilerinin bulunduğu dosya.
  • desc_p2p.cpp/h : Yeni bir p2p bağlantısı açıp sonlandırma.
  • dev_log.cpp/h : Bilinmiyor.
  • dragon_soul_table.cpp/h : Simya taş kademeleri.
  • DragonLair.cpp/h: Sürgün içinde ki mavi ejderha ile alakalı.
  • DragonSoul.cpp/h : Simya sistemi.
  • dungeon.cpp/h : Dungeon kontrolleri. game99 içinde bulunan haritalar için. Yeni bir giriş yapıldığında sanal core oluşturma, grup halinde oyuncuları aynı bölgeye atma vs.
  • empire_text_convert.cpp/h : Aynı krallıkta olmayan oyuncular ile iletişim kurulmuyor. Lisanı geliştirdikçe ufak ufak anlaşılır oluyordu. Bu dosya da yazdığınız yazının karşıda ki oyuncu da nasıl gözükeceği düzenler.
  • entitiy.cpp/h entitiy_view.cpp : Varlıklar (karakter mob vs.) gözükmesi için
  • event.cpp/h : Zaman ayarlı eventlerin düzenlenmesi için.
  • event_queue.cpp/h : Bilinmiyor.
  • exchange.cpp/h : Oyuncular arası ticaret. (ticaret penceresi)
  • fifo_allocator.h : Bilinmiyor.
  • file_loader.cpp/h : Filesinizde ki metin dosyalarının okunması için.
  • FileMonitor_Freebsd.cpp/h : Bilinmiyor.
  • fishing.cpp/h : Balıkçılık.
  • FSM.cpp/h : Bilinmiyor.
  • gm.cpp/h : GM
  • group_text_parse_tree.cpp/h : Bilinmiyor.
  • guild.cpp/h : Lonca bilgilerine ulaşmak için.
  • guild_manager.cpp/h : Tüm loncaların hafıza tutulduğu bölge.
  • guild_war.cpp : Lonca savaşı.
  • HackShield.cpp/h : HackShield programı için.
  • HackShield_Impl.cpp/h : HackShield programı için.
  • horse_rider.cpp/h : At sürme ile alakalı.
  • horsename_manager.cpp/h : Atına özel olarak isim ekleyen oyuncuların at isimleri burada bulunur.
  • IFileMonitor.h : Bilinmiyor.
  • input.h: Packetlerin işlenmesi için gerekli. Bu header dosyası birden fazla dosyada kullanılır. Sırasıyla;
    • input_auth.cpp : Login işlemleri.
    • input_db.cpp : DB ile Game arasında iletişim sonucu yapılacak işlemler. Mesela lonca eklediniz ve db gönderdiniz. db çekirdeği eklemeleri yaptıktan sonra tekrardan bu dosyaya packet gönderir ve bu dosya da loncanın objesinin yaratılması için guild_manager'a verileri gönderir.
    • input_login.cpp : Karakter seçtikten sonra oyuna girerken yapılacak işlemler.
    • input_main.cpp : Bu dosya da ise Client (istemci) ~ Server arasında ki ilişki içindir. Clientten gelen packetler burada analiz edilir ve yapılacak işlemler belirlenir. Mesela Casro2'de arkadaş ekleyeceksiniz diyelim. Siz clientte kişinin adını yazıp gönderiyorsunuz. Packet buraya geliyor ve arkadaş eklemek için tanımlanan fonksiyona CInputMain::Messenger gönderdiğiniz veri iletiliyor. Casro2 serveri bazı kontrolleri yaptıktan sonra MessengerManager'a arkadaşın eklenmesi için veriyi gönderiyor. Daha detaylı öğrenmek için kodları okumalısınız.
    • input_p2p.cpp : Coreler arası iletişimde kullanılır. Mesela siz genel sohbet kanalın da bir şey yazdınız. Yazdığınız tüm kanallar da gözükür.
    • input_teen.cpp : Bilinmiyor.
    • input_udp.cpp : TCP ve UDP terimlerini araştırın.
  • ip_ban.cpp/h : Banlı olan ip adreslerinden oyuna bağlanmasını engellemek için.
  • item.h: İtemlerle alakalı fonksiyonların ve structların bulunduğu header dosyası. Bu dosya birden fazla cpp dosyasında kullanılıyor. Sırasıyla;
    • item.cpp : Oyunda bulunan itemlerin bilgileri burada tutulur. Siz oyuna giriş yaptınız diyelim. Her bir eşyanız için tek tek item.cpp'de ki sınıf yaratılacak ve managerda ki vectörlere eklenecek. Protolarda tanımlı eşyalarda tanımlıdır.
    • item_addon.cpp : Eşyanın verdiği hasar vs.
    • item_attribute.cpp : Eşyalar efsun eklemek, efsun bilgilerini almak vs gibi işlemlerin bulunduğu dosya.
  • item_manager.h: Tüm itemlerin kontrolünün yapıldığı yer. İtem oluşturma, bulmak ve silme gibi fonksiyonlar bulunur. Bu header dosyası birden fazla cpp dosyası tarafından kullanılır. Sırasıyla;
    • item_manager.cpp : Tüm itemlerin kontrolerinin yapıldığı yer. İtem oluşturma, bulma, silme.
    • item_manager_idrange.cpp : Yeni item oluşturulduğunda id oluşturmak için.
    • item_manager_private_types.h : Droplarla alakalı.
    • item_manager_read_tables.cpp : Filesiniz de mob_drop_item.txt, special_item_group.txt, common_drop_item.txt bulunan txt dosyalarını okur.
  • limit_time.h : Zaman ayarlarıyla ilgili sabitler var.
  • locale.cpp : Ülkeden ülkeye serverde değişiklikler mevcut. Server türkiye için ayarlanmışsa locale/turkey dizininde ki verilerin alınması için yardımcı fonksiyonlar bulunur.
  • locale_service.cpp/h : Sabit olarak tanımlanan ülkeler bulunur. Bu ülkelerin karşılığında hangi dosyaların yükleneceği belirtilir. Almanya için ayarlanmışsa locale/germany dizini yüklenir.
  • log.cpp/h : Oyunda yapılan aktivitelerin kaydını veritabanına ekler.
  • login_data.cpp/h : Giriş yapmış kullanıcıların bilgilerini tutar.
  • login_sim.h : Login için veritabanına packetler gönderir.
  • lua_incl.h : Lua için eklenmiş.
  • lzo_manager.cpp/h : Lzo şifrelemesi ile ilgili.
  • main.cpp : c++ projelerinde main dosyası bulunur. Bu da onun için. Diğer tüm dosyaların kullanımını burada tanımlanır. game açıldığında sırasıyla yapılacak işlemler burada belirtilir.
  • malloc_allocator.h : Bilinmiyor.
  • map_location.cpp/h : Haritaların lokasyon bilgileri için. Mevcut konumu verdiğinizde haritanın indexini alır vs.
  • MarkManagar.h : Bu birden fazla cpp dosyasında kullanılıyor. Lonca ikonları için eklenen bir dosya. Kullanan diğer dosyalar sırayla şu şekilde;
    • MarkConvert.cpp : Resimlerin dönüştürülmesi.
    • MarkManager.cpp : Lonca resmi eklemiş tüm loncaların bilgilerini tutar.
  • MarkImage.cpp/h : Lonca ikonu resimlerini oluşturma, silme vs.
  • marriage.cpp/h : Evlilik.
  • matrix_card.cpp/h : Bilinmiyor.
  • messenger_manager.cpp/h : Arkadaş listesi.
  • mining.cpp/h : Madencilik.
  • mob_manager.cpp/h : Oyunda ki slotlar.
  • monarch.cpp/h : Bu özellik kullanılmadığı için pas.
  • motion.cpp/h : Slotların, oyuncuların hareketleriyle ilgili. share/data içinde ki dosyaları okur.
  • object_allocator.h : Classlarla ilgili. Obje ekleme, silme vs.
  • over9refine.cpp/h : Dönüşüm.
  • OXEvent.cpp/h : OX eventi.
  • p2p.cpp/h : P2P bağlantısı. Yeni bağlantı oluşturma, sonlandırma, packet gönderme vs gibi işlemleri yapar.
Evet arkadaşlar db kısmıda bitti ilerki zamanlarda konunun devamını yayınlayacağım. İyi forumlar.
Paylaşım için teşekkürler.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
İlan Yan banner placeholder