Merhaba aslında geçenlerde haksız yere hesabımı engelledikleri için yönetime kızgın olsam da game dosyasını incelerken bulduklarımdan ufak bir parça paylaşmak istedim. Açıklama yapmama gerek yok her şey açık ve net bir şekilde ortada kolay gelsin. :ka19:
<blockquote data-attributes="" data-quote="4PISTON" data-source="post: 16746207" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch">
örnek gösterirsek eğer;
1. "who": komut adı (oyun içerisinden /who).
2. do_who: game dosyasına yapılacak işlemi belirtiyor.
3. 0: yapılacak işin alt değeri (daha iyi anlamak için xmas komut dizisine bakın).
4. POS_DEAD: Kesin bir açıklamam olmadığı için ön görülerim ile yanıtlmak istemiyorum...
4. GM_IMPLEMENTOR: Komutun kullanılabilmesi için gereken en düşük yetki düzeyi.
Metin2 Lobby'de C++ Kaynak Kodları ile Gelişmiş Sistem Geliştirme
Metin2 özel sunucularında gelişmiş sistemler geliştirmek isteyen geliştiriciler için C++ dili, temel yapı taşlarından biridir. Bu bağlamda [SOURCE=C++] etiketi ile başlayan kod örnekleri, hem derinlemesine analiz hem de uygulamalı öğrenme imkanı sunar. Bu yazıda, Metin2 özel sunucu geliştirme sürecinde sıklıkla kullanılan bilinen ve bilinmeyen tüm C++ kodlarını ele alacağız. Bu kodlar sayesinde oyun içindeki sistemleri daha iyi anlayabilir, mevcut sistemleri genişletebilir veya tamamen yeni sistemler geliştirebilirsiniz.
C++ ile Metin2 Sunucu Geliştirme Temelleri
Metin2 sunucularında oyun mantığının büyük kısmı C++ ile yazılmıştır. Game server, auth server ve DB server gibi temel bileşenler C++ diline dayanmaktadır. Bu nedenle C++ bilgisi, özel sunucu geliştirme sürecinde kritik öneme sahiptir. Özellikle PvP sistemleri, eşya düşme mekanikleri, AI davranışları gibi detaylı sistemlerde C++ bilgisi olmadan gerçekçi ve verimli değişiklikler yapmak oldukça zordur.
Bilinen C++ Kodları ve Kullanımları
Oyuncuların sıklıkla etkileşimde bulunduğu sistemlerin çoğu, belli başlı C++ fonksiyonları ile çalışır. Örneğin bir oyuncu bir item kullandığında devreye giren fonksiyonlar, PvP esnasında tetiklenen event sistemleri, DB ile iletişim kurarak veri çekip yazan komutlar hepsi C++ tabanlıdır. Bunlara örnek olarak;
- ItemUsageHandler
- PlayerAttackSystem
- DatabaseQueryExec
- EventPvPTrigger
gibi fonksiyonlar gösterilebilir. Bu fonksiyonlar, doğru şekilde manipüle edildiğinde sunucunuzda farklı ve özgün özellikler yaratmanıza olanak tanır.
Bilinmeyen C++ Kodları ve Gizli Yetenekler
Ancak sadece bilinen sistemlerle yetinmek, gelişmiş bir Metin2 özel sunucusu oluşturmak isteyen geliştiriciler için yeterli değildir. Bilinmeyen bazı C++ komutları, sistemlerin daha verimli çalışmasını sağlarken, aynı zamanda hata ayıklama, performans artırımı ve güvenlik katmanı oluşturma gibi konularda da yardımcı olabilir. Bu kodlar genellikle kaynak kodun derinliklerinde saklıdır ve sadece tecrübeli geliştiriciler tarafından fark edilir. Örnek olarak:
- HiddenPacketProcessor
- InternalTimerReset
- CoreMemoryOptimizer
- SecureSocketLayer
gibi gizli kodlar sayesinde sunucunuzun daha kararlı ve hızlı çalışması sağlanabilir.
Python Entegrasyonu ve GUI Sistemleri
Günümüzde Metin2 geliştiricileri, sadece C++ değil aynı zamanda Python ile de entegre sistemler geliştirmektedir. Özellikle UI scripting, admin panel arayüzleri ve otomasyon süreçleri için Python tercih edilmektedir. PyRoot, UIScript, PyGUI gibi yapılar, C++ sistemleriyle uyumlu şekilde çalışarak daha kullanıcı dostu ve dinamik sistemler oluşturmayı sağlar. Bu sistemlerle birlikte hem backend hem frontend tarafında güçlü çözümler geliştirilebilir.
Metin2 Sunucu Paketleme ve Derleme Süreci
Metin2 özel sunucularında yapılan tüm değişikliklerin aktif hale gelmesi için doğru şekilde derlenmesi ve paketlenmesi gerekir. Bu süreçte C++ kaynak kodlarının derlenmesi, DB güncellemelerinin entegrasyonu ve client tarafında yapılacak değişikliklerin senkronize edilmesi önemlidir. Compile işlemi sırasında karşılaşılan hatalar, C++ bilgisi sayesinde daha hızlı çözülebilir. Ayrıca doğru yapılandırılmış bir core, hem oyun hem de DB tarafında sorunsuz çalışacaktır.
Sonuç
Metin2 özel sunucu dünyasında C++ bilgisi, geliştiriciye büyük avantajlar sağlar. Bilinen sistemleri geliştirmek kadar, bilinmeyen gizli kodları keşfetmek de önemli bir beceridir. Bu yazıda bahsedilen tüm teknik detaylar, Metin2 Lobby'de paylaşılacak olan örneklerle birlikte daha fazla geliştiriciye ulaşacak ve topluluğun gelişimine katkı sağlayacaktır.
Advanced System Development with C++ Source Codes on Metin2 Lobby
For developers looking to create advanced systems in Metin2 private servers, C++ language serves as one of the fundamental building blocks. In this context, code examples starting with the [SOURCE=C++] tag provide both in-depth analysis and practical learning opportunities. In this article, we will examine all known and unknown C++ codes frequently used during the Metin2 private server development process. These codes allow you to better understand in-game systems, expand existing ones, or develop entirely new features.
Fundamentals of C++ for Metin2 Server Development
The majority of game logic in Metin2 servers is written in C++. Core components such as the game server, auth server, and DB server are based on C++. Therefore, knowledge of C++ is critical in the private server development process. Especially for detailed systems like PvP mechanics, item drop systems, and AI behaviors, making realistic and efficient modifications without C++ knowledge is quite difficult.
Known C++ Codes and Their Uses
Many systems with which players frequently interact operate through specific C++ functions. For example, the functions triggered when a player uses an item, the event systems activated during PvP, and commands that retrieve and write data by communicating with the database are all C++-based. Examples include:
- ItemUsageHandler
- PlayerAttackSystem
- DatabaseQueryExec
- EventPvPTrigger
These functions can enable you to create different and unique features on your server when properly manipulated.
Unknown C++ Codes and Hidden Capabilities
However, relying solely on known systems is insufficient for developers aiming to create an advanced Metin2 private server. Some lesser-known C++ commands can assist in debugging, performance enhancement, and creating security layers, while also ensuring more efficient operation of your systems. These codes are usually hidden deep within the source code and only noticed by experienced developers. As examples:
- HiddenPacketProcessor
- InternalTimerReset
- CoreMemoryOptimizer
- SecureSocketLayer
Thanks to these hidden codes, your server can run more stably and faster.
Python Integration and GUI Systems
Today, Metin2 developers not only use C++ but also develop integrated systems using Python. Python is preferred especially for UI scripting, admin panel interfaces, and automation processes. Structures such as PyRoot, UIScript, and PyGUI work harmoniously with C++ systems to create more user-friendly and dynamic solutions. With these systems, robust solutions can be developed on both the backend and frontend sides.
Metin2 Server Packaging and Compilation Process
All changes made in Metin2 private servers must be correctly compiled and packaged to become active. During this process, compiling C++ source codes, integrating DB updates, and synchronizing client-side changes are important. Errors encountered during the compilation process can be resolved more quickly with C++ knowledge. Additionally, a correctly configured core will run smoothly on both the game and DB sides.
Conclusion
In the world of Metin2 private servers, knowledge of C++ provides significant advantages to developers. Discovering unknown hidden codes is just as important as enhancing known systems. The technical details mentioned in this article will reach more developers together with examples shared on Metin2 Lobby and contribute to the growth of the community.
Kod:
{ "!RESERVED!",NULL,0,POS_DEAD,GM_IMPLEMENTOR}, /* ¹İµå½Ã ÀÌ °ÍÀÌ Ã³À½À̾î¾ß ÇÑ´Ù. */ { "who",do_who,0,POS_DEAD,GM_IMPLEMENTOR}, { "war",do_war,0,POS_DEAD,GM_PLAYER}, { "warp",do_warp,0,POS_DEAD,GM_LOW_WIZARD}, { "user",do_user,0,POS_DEAD,GM_HIGH_WIZARD}, { "notice",do_notice,0,POS_DEAD,GM_HIGH_WIZARD}, { "notice_map",do_map_notice,0,POS_DEAD,GM_LOW_WIZARD}, { "big_notice",do_big_notice,0,POS_DEAD,GM_HIGH_WIZARD}, { "nowar",do_nowar,0,POS_DEAD,GM_PLAYER}, { "purge",do_purge,0,POS_DEAD,GM_WIZARD}, { "weaken",do_weaken,0,POS_DEAD,GM_GOD}, { "dc",do_disconnect,0,POS_DEAD,GM_LOW_WIZARD}, { "transfer",do_transfer,0,POS_DEAD,GM_LOW_WIZARD}, { "goto",do_goto,0,POS_DEAD,GM_LOW_WIZARD}, { "level",do_level,0,POS_DEAD,GM_LOW_WIZARD}, { "eventflag",do_event_flag,0,POS_DEAD,GM_HIGH_WIZARD}, { "geteventflag",do_get_event_flag,0,POS_DEAD,GM_LOW_WIZARD}, { "item",do_item,0,POS_DEAD,GM_GOD}, { "mob",do_mob,0,POS_DEAD,GM_HIGH_WIZARD}, { "mob_ld",do_mob_ld,0,POS_DEAD,GM_HIGH_WIZARD}, /* ¸÷ÀÇ À§Ä¡¿Í ¹æÇâÀ» ¼³Á¤ÇØ ¼Òȯ /mob_ld vnum x y dir */ { "ma",do_mob_aggresive,0,POS_DEAD,GM_HIGH_WIZARD}, { "mc",do_mob_coward,0,POS_DEAD,GM_HIGH_WIZARD}, { "mm",do_mob_map,0,POS_DEAD,GM_HIGH_WIZARD}, { "kill",do_kill,0,POS_DEAD,GM_HIGH_WIZARD}, { "ipurge",do_item_purge,0,POS_DEAD,GM_HIGH_WIZARD}, { "group",do_group,0,POS_DEAD,GM_HIGH_WIZARD}, { "grrandom",do_group_random,0,POS_DEAD,GM_HIGH_WIZARD}, { "set",do_set,0,POS_DEAD,GM_IMPLEMENTOR}, { "reset",do_reset,0,POS_DEAD,GM_HIGH_WIZARD}, { "greset",do_greset,0,POS_DEAD,GM_HIGH_WIZARD}, { "advance",do_advance,0,POS_DEAD,GM_GOD}, { "book",do_book,0,POS_DEAD,GM_IMPLEMENTOR }, { "console",do_console,0,POS_DEAD,GM_LOW_WIZARD}, { "shutdow",do_inputall,0,POS_DEAD,GM_HIGH_WIZARD}, { "shutdown",do_shutdown,0,POS_DEAD,GM_HIGH_WIZARD}, { "stat",do_stat,0,POS_DEAD,GM_PLAYER}, { "stat-",do_stat_minus,0,POS_DEAD,GM_PLAYER}, { "stat_reset",do_stat_reset,0,POS_DEAD,GM_LOW_WIZARD}, { "state",do_state,0,POS_DEAD,GM_LOW_WIZARD}, // ADD_COMMAND_SLOW_STUN { "stun",do_stun,0,POS_DEAD,GM_LOW_WIZARD}, { "slow",do_slow,0,POS_DEAD,GM_LOW_WIZARD}, // END_OF_ADD_COMMAND_SLOW_STUN { "respawn",do_respawn,0,POS_DEAD,GM_WIZARD}, { "makeguild",do_makeguild,0,POS_DEAD,GM_HIGH_WIZARD}, { "deleteguild",do_deleteguild,0,POS_DEAD,GM_HIGH_WIZARD}, { "mount",do_mount,0,POS_MOUNTING,GM_PLAYER}, { "restart_here",do_restart,SCMD_RESTART_HERE,POS_DEAD,GM_PLAYER}, { "restart_town",do_restart,SCMD_RESTART_TOWN,POS_DEAD,GM_PLAYER}, { "phase_selec",do_inputall,0,POS_DEAD,GM_PLAYER}, { "phase_select",do_cmd,SCMD_PHASE_SELECT,POS_DEAD,GM_PLAYER}, { "qui",do_inputall,0,POS_DEAD,GM_PLAYER}, { "quit",do_cmd,SCMD_QUIT,POS_DEAD,GM_PLAYER}, { "logou",do_inputall,0,POS_DEAD,GM_PLAYER}, { "logout",do_cmd,SCMD_LOGOUT,POS_DEAD,GM_PLAYER}, { "skillup",do_skillup,0,POS_DEAD,GM_PLAYER}, { "gskillup",do_guildskillup,0,POS_DEAD,GM_PLAYER}, { "pvp",do_pvp,0,POS_DEAD,GM_PLAYER}, { "safebox",do_safebox_size,0,POS_DEAD,GM_HIGH_WIZARD}, { "safebox_close",do_safebox_close,0,POS_DEAD,GM_PLAYER}, { "safebox_passwor",do_inputall,0,POS_DEAD,GM_PLAYER}, { "safebox_password",do_safebox_password,0,POS_DEAD,GM_PLAYER}, { "safebox_change_passwor", do_inputall,0,POS_DEAD,GM_PLAYER}, { "safebox_change_password", do_safebox_change_password,0,POS_DEAD,GM_PLAYER}, { "mall_passwor",do_inputall,0,POS_DEAD,GM_PLAYER}, { "mall_password",do_mall_password,0,POS_DEAD,GM_PLAYER}, { "mall_close",do_mall_close,0,POS_DEAD,GM_PLAYER}, // Group Command { "ungroup",do_ungroup,0,POS_DEAD,GM_PLAYER}, // REFINE_ROD_HACK_BUG_FIX { "refine_rod",do_refine_rod,0,POS_DEAD,GM_IMPLEMENTOR}, // END_OF_REFINE_ROD_HACK_BUG_FIX // REFINE_PICK { "refine_pick",do_refine_pick,0,POS_DEAD,GM_IMPLEMENTOR}, { "max_pick",do_max_pick,0,POS_DEAD,GM_IMPLEMENTOR}, // END_OF_REFINE_PICK { "fish_simul",do_fishing_simul,0,POS_DEAD,GM_IMPLEMENTOR}, { "invisible",do_invisibility,0,POS_DEAD,GM_LOW_WIZARD}, { "qf",do_qf,0,POS_DEAD,GM_IMPLEMENTOR}, { "clear_quest",do_clear_quest,0,POS_DEAD,GM_HIGH_WIZARD}, { "close_shop",do_close_shop,0,POS_DEAD,GM_PLAYER}, { "set_walk_mode",do_set_walk_mode,0,POS_DEAD,GM_PLAYER}, { "set_run_mode",do_set_run_mode,0,POS_DEAD,GM_PLAYER}, { "setjob",do_set_skill_group,0,POS_DEAD,GM_IMPLEMENTOR}, { "setskill",do_setskill,0,POS_DEAD,GM_LOW_WIZARD}, { "setskillother",do_setskillother,0,POS_DEAD,GM_HIGH_WIZARD}, { "setskillpoint", do_set_skill_point,0,POS_DEAD,GM_IMPLEMENTOR}, { "reload",do_reload,0,POS_DEAD,GM_IMPLEMENTOR}, { "cooltime",do_cooltime,0,POS_DEAD,GM_HIGH_WIZARD}, { "gwlist",do_gwlist,0,POS_DEAD,GM_LOW_WIZARD}, { "gwstop",do_stop_guild_war,0,POS_DEAD,GM_LOW_WIZARD}, { "gwcancel",do_cancel_guild_war, 0,POS_DEAD,GM_LOW_WIZARD}, { "gstate",do_guild_state,0,POS_DEAD,GM_LOW_WIZARD}, { "pkmode",do_pkmode,0,POS_DEAD,GM_PLAYER}, { "messenger_auth",do_messenger_auth,0,POS_DEAD,GM_PLAYER}, { "getqf",do_getqf,0,POS_DEAD,GM_LOW_WIZARD}, { "setqf",do_setqf,0,POS_DEAD,GM_LOW_WIZARD}, { "delqf",do_delqf,0,POS_DEAD,GM_LOW_WIZARD}, { "set_state",do_set_state,0,POS_DEAD,GM_LOW_WIZARD}, { "·Î±×¸¦º¸¿©Áà",do_detaillog,0,POS_DEAD,GM_LOW_WIZARD}, { "¸ó½ºÅͺ¸¿©Áà",do_monsterlog,0,POS_DEAD,GM_LOW_WIZARD}, { "detaillog",do_detaillog,0,POS_DEAD,GM_LOW_WIZARD}, { "monsterlog",do_monsterlog,0,POS_DEAD,GM_LOW_WIZARD}, { "forgetme",do_forgetme,0,POS_DEAD,GM_LOW_WIZARD}, { "aggregate",do_aggregate,0,POS_DEAD,GM_LOW_WIZARD}, { "attract_ranger",do_attract_ranger,0,POS_DEAD,GM_LOW_WIZARD}, { "pull_monster",do_pull_monster,0,POS_DEAD,GM_LOW_WIZARD}, { "setblockmode",do_setblockmode,0,POS_DEAD,GM_PLAYER}, { "polymorph",do_polymorph,0,POS_DEAD,GM_LOW_WIZARD}, { "polyitem",do_polymorph_item,0,POS_DEAD,GM_HIGH_WIZARD }, { "priv_empire",do_priv_empire,0,POS_DEAD,GM_HIGH_WIZARD}, { "priv_guild",do_priv_guild,0,POS_DEAD,GM_HIGH_WIZARD}, { "mount_test",do_mount_test,0,POS_DEAD,GM_IMPLEMENTOR}, { "unmount",do_unmount,0,POS_DEAD,GM_PLAYER}, { "private",do_private,0,POS_DEAD,GM_IMPLEMENTOR}, { "party_request",do_party_request,0,POS_DEAD,GM_PLAYER}, { "party_request_accept", do_party_request_accept,0,POS_DEAD,GM_PLAYER}, { "party_request_deny", do_party_request_deny,0,POS_DEAD,GM_PLAYER}, { "observer",do_observer,0,POS_DEAD,GM_IMPLEMENTOR}, { "observer_exit",do_observer_exit,0,POS_DEAD,GM_PLAYER}, { "socketitem",do_socket_item,0,POS_DEAD,GM_IMPLEMENTOR}, { "saveati",do_save_attribute_to_image, 0,POS_DEAD,GM_IMPLEMENTOR}, { "xmas_boom",do_xmas,SCMD_XMAS_BOOM,POS_DEAD,GM_HIGH_WIZARD}, { "xmas_snow",do_xmas,SCMD_XMAS_SNOW,POS_DEAD,GM_HIGH_WIZARD}, { "xmas_santa",do_xmas,SCMD_XMAS_SANTA,POS_DEAD,GM_HIGH_WIZARD}, { "view_equip",do_view_equip,0,POS_DEAD,GM_PLAYER }, { "jy",do_block_chat,0,POS_DEAD,GM_HIGH_WIZARD}, // BLOCK_CHAT { "vote_block_chat", do_vote_block_chat,0,POS_DEAD,GM_PLAYER}, { "block_chat",do_block_chat,0,POS_DEAD,GM_PLAYER}, { "block_chat_list",do_block_chat_list,0,POS_DEAD,GM_PLAYER}, // END_OF_BLOCK_CHAT { "build",do_build,0,POS_DEAD,GM_PLAYER}, { "clear_land", do_clear_land,0,POS_DEAD,GM_HIGH_WIZARD}, { "affect_remove",do_affect_remove,0,POS_DEAD,GM_LOW_WIZARD}, { "horse_state",do_horse_state,0,POS_DEAD,GM_HIGH_WIZARD}, { "horse_level",do_horse_level,0,POS_DEAD,GM_HIGH_WIZARD}, { "horse_ride",do_horse_ride,0,POS_DEAD,GM_HIGH_WIZARD}, { "horse_summon",do_horse_summon,0,POS_DEAD,GM_HIGH_WIZARD}, { "horse_unsummon",do_horse_unsummon,0,POS_DEAD,GM_HIGH_WIZARD}, { "horse_set_stat", do_horse_set_stat,0,POS_DEAD,GM_HIGH_WIZARD}, { "pcbang_update", do_pcbang_update,0,POS_DEAD,GM_LOW_WIZARD}, { "pcbang_check", do_pcbang_check,0,POS_DEAD,GM_LOW_WIZARD}, { "emotion_allow",do_emotion_allow,0,POS_FIGHTING,GM_PLAYER}, { "kiss",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "slap",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "french_kiss",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "clap",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "cheer1",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "cheer2",do_emotion,0,POS_FIGHTING,GM_PLAYER}, // DANCE { "dance1",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "dance2",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "dance3",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "dance4",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "dance5",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "dance6",do_emotion,0,POS_FIGHTING,GM_PLAYER}, // END_OF_DANCE { "congratulation",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "forgive",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "angry",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "attractive",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "sad",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "shy",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "cheerup",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "banter",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "joy",do_emotion,0,POS_FIGHTING,GM_PLAYER}, { "change_attr",do_change_attr,0,POS_DEAD,GM_IMPLEMENTOR}, { "add_attr",do_add_attr,0,POS_DEAD,GM_IMPLEMENTOR}, { "add_socket",do_add_socket,0,POS_DEAD,GM_IMPLEMENTOR}, { "user_horse_ride",do_user_horse_ride,0,POS_FISHING,GM_PLAYER}, { "user_horse_back",do_user_horse_back,0,POS_FISHING,GM_PLAYER}, { "user_horse_feed",do_user_horse_feed,0,POS_FISHING,GM_PLAYER}, { "show_arena_list",do_show_arena_list,0,POS_DEAD,GM_LOW_WIZARD}, { "end_all_duel",do_end_all_duel,0,POS_DEAD,GM_LOW_WIZARD}, { "end_duel",do_end_duel,0,POS_DEAD,GM_LOW_WIZARD}, { "duel",do_duel,0,POS_DEAD,GM_LOW_WIZARD}, { "con+",do_stat_plus_amount,POINT_HT,POS_DEAD,GM_LOW_WIZARD}, { "int+",do_stat_plus_amount,POINT_IQ,POS_DEAD,GM_LOW_WIZARD}, { "str+",do_stat_plus_amount,POINT_ST,POS_DEAD,GM_LOW_WIZARD}, { "dex+",do_stat_plus_amount,POINT_DX,POS_DEAD,GM_LOW_WIZARD}, { "break_marriage",do_break_marriage,0,POS_DEAD,GM_LOW_WIZARD}, { "show_quiz",do_oxevent_show_quiz,0,POS_DEAD,GM_LOW_WIZARD}, { "log_oxevent",do_oxevent_log,0,POS_DEAD,GM_LOW_WIZARD}, { "get_oxevent_att",do_oxevent_get_attender,0,POS_DEAD,GM_LOW_WIZARD}, { "effect",do_effect,0,POS_DEAD,GM_LOW_WIZARD}, { "threeway_info",do_threeway_war_info,0,POS_DEAD,GM_LOW_WIZARD}, { "threeway_myinfo",do_threeway_war_myinfo, 0,POS_DEAD,GM_LOW_WIZARD}, { "mto",do_monarch_warpto,0, POS_DEAD,GM_PLAYER}, { "mtr",do_monarch_transfer,0,POS_DEAD,GM_PLAYER}, { "minfo",do_monarch_info,0, POS_DEAD, GM_PLAYER}, { "mtax",do_monarch_tax,0,POS_DEAD,GM_PLAYER}, { "mmob",do_monarch_mob,0, POS_DEAD,GM_PLAYER}, { "elect",do_elect,0,POS_DEAD,GM_HIGH_WIZARD}, { "rmcandidacy",do_rmcandidacy,0, POS_DEAD,GM_LOW_WIZARD}, { "setmonarch",do_setmonarch,0, POS_DEAD,GM_LOW_WIZARD}, { "rmmonarch",do_rmmonarch,0, POS_DEAD, GM_LOW_WIZARD}, { "hair",do_hair,0,POS_DEAD,GM_PLAYER}, { "inventory",do_inventory,0,POS_DEAD,GM_LOW_WIZARD}, { "cube",do_cube,0,POS_DEAD,GM_PLAYER}, { "siege",do_siege,0,POS_DEAD,GM_LOW_WIZARD}, { "temp",do_temp,0,POS_DEAD,GM_IMPLEMENTOR}, { "frog",do_frog,0,POS_DEAD,GM_HIGH_WIZARD}, { "check_mmoney",do_check_monarch_money,0,POS_DEAD,GM_IMPLEMENTOR}, { "reset_subskill",do_reset_subskill,0,POS_DEAD,GM_HIGH_WIZARD }, { "flush",do_flush,0,POS_DEAD,GM_IMPLEMENTOR }, { "gift",do_gift,0, POS_DEAD, GM_PLAYER},//gift { "mnotice",do_monarch_notice,0,POS_DEAD,GM_PLAYER}, { "eclipse",do_eclipse,0,POS_DEAD,GM_HIGH_WIZARD}, { "weeklyevent",do_weeklyevent,0,POS_DEAD,GM_LOW_WIZARD}, { "eventhelper",do_event_helper,0,POS_DEAD,GM_HIGH_WIZARD}, { "in_game_mall",do_in_game_mall,0,POS_DEAD,GM_PLAYER}, { "get_mob_count",do_get_mob_count,0,POS_DEAD,GM_LOW_WIZARD}, { "dice",do_dice,0,POS_DEAD,GM_PLAYER}, { "ÁÖ»çÀ§",do_dice,0,POS_DEAD,GM_PLAYER}, { "special_item",do_special_item,0,POS_DEAD,GM_IMPLEMENTOR}, { "click_mall",do_click_mall,0,POS_DEAD,GM_PLAYER}, { "ride",do_ride,0,POS_DEAD,GM_PLAYER}, { "item_id_list",do_get_item_id_list,0,POS_DEAD,GM_LOW_WIZARD}, { "set_socket",do_set_socket,0,POS_DEAD,GM_LOW_WIZARD}, #ifdef __AUCTION__ // auction Àӽà { "auction_list",do_get_auction_list,0,POS_DEAD,GM_PLAYER}, { "my_auction_list", do_get_my_auction_list, 0, POS_DEAD,GM_PLAYER}, { "my_purchase_list", do_get_my_purchase_list, 0, POS_DEAD,GM_PLAYER}, { "enroll_auction",do_enroll_auction, 0,POS_DEAD,GM_PLAYER}, { "bid", do_auction_bid, 0,POS_DEAD,GM_PLAYER}, { "impur", do_auction_impur, 0,POS_DEAD,GM_PLAYER}, { "enroll_wish", do_enroll_wish, 0,POS_DEAD,GM_PLAYER}, { "enroll_sale", do_enroll_sale, 0,POS_DEAD,GM_PLAYER}, { "get_auctioned_item", do_get_auctioned_item, 0,POS_DEAD,GM_PLAYER}, { "buy_sold_item", do_buy_sold_item, 0,POS_DEAD,GM_PLAYER}, { "cancel_auction", do_cancel_auction, 0,POS_DEAD,GM_PLAYER}, { "cancel_wish", do_cancel_wish, 0,POS_DEAD,GM_PLAYER}, { "cancel_sale", do_cancel_sale, 0,POS_DEAD,GM_PLAYER}, { "rebid", do_rebid, 0,POS_DEAD,GM_PLAYER}, { "bid_cancel", do_bid_cancel, 0,POS_DEAD,GM_PLAYER}, #endif { "costume",do_costume, 0,POS_DEAD,GM_PLAYER}, { "tcon",do_set_stat,POINT_HT,POS_DEAD,GM_LOW_WIZARD}, { "tint",do_set_stat,POINT_IQ,POS_DEAD,GM_LOW_WIZARD}, { "tstr",do_set_stat,POINT_ST,POS_DEAD,GM_LOW_WIZARD}, { "tdex",do_set_stat,POINT_DX,POS_DEAD,GM_LOW_WIZARD}, { "cannot_dead",do_can_dead,1,POS_DEAD,GM_LOW_WIZARD}, { "can_dead",do_can_dead,0,POS_DEAD,GM_LOW_WIZARD}, { "full_set",do_full_set, 0, POS_DEAD,GM_LOW_WIZARD}, { "item_full_set",do_item_full_set, 0, POS_DEAD,GM_LOW_WIZARD}, { "attr_full_set",do_attr_full_set, 0, POS_DEAD,GM_LOW_WIZARD}, { "all_skill_master",do_all_skill_master,0,POS_DEAD,GM_LOW_WIZARD}, { "use_item",do_use_item,0, POS_DEAD,GM_LOW_WIZARD}, { "dragon_soul",do_dragon_soul,0,POS_DEAD,GM_PLAYER}, { "ds_list",do_ds_list,0,POS_DEAD,GM_PLAYER}, { "do_clear_affect", do_clear_affect, 0, POS_DEAD,GM_LOW_WIZARD}, { "\n",NULL,0,POS_DEAD,GM_IMPLEMENTOR} /* ¹İµå½Ã ÀÌ °ÍÀÌ ¸¶Áö¸·À̾î¾ß ÇÑ´Ù. */ };
<blockquote data-attributes="" data-quote="4PISTON" data-source="post: 16746207" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch">
Kod:
{ "who",do_who,0,POS_DEAD,GM_IMPLEMENTOR},
1. "who": komut adı (oyun içerisinden /who).
2. do_who: game dosyasına yapılacak işlemi belirtiyor.
3. 0: yapılacak işin alt değeri (daha iyi anlamak için xmas komut dizisine bakın).
4. POS_DEAD: Kesin bir açıklamam olmadığı için ön görülerim ile yanıtlmak istemiyorum...
4. GM_IMPLEMENTOR: Komutun kullanılabilmesi için gereken en düşük yetki düzeyi.
Metin2 Lobby'de C++ Kaynak Kodları ile Gelişmiş Sistem Geliştirme
Metin2 özel sunucularında gelişmiş sistemler geliştirmek isteyen geliştiriciler için C++ dili, temel yapı taşlarından biridir. Bu bağlamda [SOURCE=C++] etiketi ile başlayan kod örnekleri, hem derinlemesine analiz hem de uygulamalı öğrenme imkanı sunar. Bu yazıda, Metin2 özel sunucu geliştirme sürecinde sıklıkla kullanılan bilinen ve bilinmeyen tüm C++ kodlarını ele alacağız. Bu kodlar sayesinde oyun içindeki sistemleri daha iyi anlayabilir, mevcut sistemleri genişletebilir veya tamamen yeni sistemler geliştirebilirsiniz.
C++ ile Metin2 Sunucu Geliştirme Temelleri
Metin2 sunucularında oyun mantığının büyük kısmı C++ ile yazılmıştır. Game server, auth server ve DB server gibi temel bileşenler C++ diline dayanmaktadır. Bu nedenle C++ bilgisi, özel sunucu geliştirme sürecinde kritik öneme sahiptir. Özellikle PvP sistemleri, eşya düşme mekanikleri, AI davranışları gibi detaylı sistemlerde C++ bilgisi olmadan gerçekçi ve verimli değişiklikler yapmak oldukça zordur.
Bilinen C++ Kodları ve Kullanımları
Oyuncuların sıklıkla etkileşimde bulunduğu sistemlerin çoğu, belli başlı C++ fonksiyonları ile çalışır. Örneğin bir oyuncu bir item kullandığında devreye giren fonksiyonlar, PvP esnasında tetiklenen event sistemleri, DB ile iletişim kurarak veri çekip yazan komutlar hepsi C++ tabanlıdır. Bunlara örnek olarak;
- ItemUsageHandler
- PlayerAttackSystem
- DatabaseQueryExec
- EventPvPTrigger
gibi fonksiyonlar gösterilebilir. Bu fonksiyonlar, doğru şekilde manipüle edildiğinde sunucunuzda farklı ve özgün özellikler yaratmanıza olanak tanır.
Bilinmeyen C++ Kodları ve Gizli Yetenekler
Ancak sadece bilinen sistemlerle yetinmek, gelişmiş bir Metin2 özel sunucusu oluşturmak isteyen geliştiriciler için yeterli değildir. Bilinmeyen bazı C++ komutları, sistemlerin daha verimli çalışmasını sağlarken, aynı zamanda hata ayıklama, performans artırımı ve güvenlik katmanı oluşturma gibi konularda da yardımcı olabilir. Bu kodlar genellikle kaynak kodun derinliklerinde saklıdır ve sadece tecrübeli geliştiriciler tarafından fark edilir. Örnek olarak:
- HiddenPacketProcessor
- InternalTimerReset
- CoreMemoryOptimizer
- SecureSocketLayer
gibi gizli kodlar sayesinde sunucunuzun daha kararlı ve hızlı çalışması sağlanabilir.
Python Entegrasyonu ve GUI Sistemleri
Günümüzde Metin2 geliştiricileri, sadece C++ değil aynı zamanda Python ile de entegre sistemler geliştirmektedir. Özellikle UI scripting, admin panel arayüzleri ve otomasyon süreçleri için Python tercih edilmektedir. PyRoot, UIScript, PyGUI gibi yapılar, C++ sistemleriyle uyumlu şekilde çalışarak daha kullanıcı dostu ve dinamik sistemler oluşturmayı sağlar. Bu sistemlerle birlikte hem backend hem frontend tarafında güçlü çözümler geliştirilebilir.
Metin2 Sunucu Paketleme ve Derleme Süreci
Metin2 özel sunucularında yapılan tüm değişikliklerin aktif hale gelmesi için doğru şekilde derlenmesi ve paketlenmesi gerekir. Bu süreçte C++ kaynak kodlarının derlenmesi, DB güncellemelerinin entegrasyonu ve client tarafında yapılacak değişikliklerin senkronize edilmesi önemlidir. Compile işlemi sırasında karşılaşılan hatalar, C++ bilgisi sayesinde daha hızlı çözülebilir. Ayrıca doğru yapılandırılmış bir core, hem oyun hem de DB tarafında sorunsuz çalışacaktır.
Sonuç
Metin2 özel sunucu dünyasında C++ bilgisi, geliştiriciye büyük avantajlar sağlar. Bilinen sistemleri geliştirmek kadar, bilinmeyen gizli kodları keşfetmek de önemli bir beceridir. Bu yazıda bahsedilen tüm teknik detaylar, Metin2 Lobby'de paylaşılacak olan örneklerle birlikte daha fazla geliştiriciye ulaşacak ve topluluğun gelişimine katkı sağlayacaktır.
Advanced System Development with C++ Source Codes on Metin2 Lobby
For developers looking to create advanced systems in Metin2 private servers, C++ language serves as one of the fundamental building blocks. In this context, code examples starting with the [SOURCE=C++] tag provide both in-depth analysis and practical learning opportunities. In this article, we will examine all known and unknown C++ codes frequently used during the Metin2 private server development process. These codes allow you to better understand in-game systems, expand existing ones, or develop entirely new features.
Fundamentals of C++ for Metin2 Server Development
The majority of game logic in Metin2 servers is written in C++. Core components such as the game server, auth server, and DB server are based on C++. Therefore, knowledge of C++ is critical in the private server development process. Especially for detailed systems like PvP mechanics, item drop systems, and AI behaviors, making realistic and efficient modifications without C++ knowledge is quite difficult.
Known C++ Codes and Their Uses
Many systems with which players frequently interact operate through specific C++ functions. For example, the functions triggered when a player uses an item, the event systems activated during PvP, and commands that retrieve and write data by communicating with the database are all C++-based. Examples include:
- ItemUsageHandler
- PlayerAttackSystem
- DatabaseQueryExec
- EventPvPTrigger
These functions can enable you to create different and unique features on your server when properly manipulated.
Unknown C++ Codes and Hidden Capabilities
However, relying solely on known systems is insufficient for developers aiming to create an advanced Metin2 private server. Some lesser-known C++ commands can assist in debugging, performance enhancement, and creating security layers, while also ensuring more efficient operation of your systems. These codes are usually hidden deep within the source code and only noticed by experienced developers. As examples:
- HiddenPacketProcessor
- InternalTimerReset
- CoreMemoryOptimizer
- SecureSocketLayer
Thanks to these hidden codes, your server can run more stably and faster.
Python Integration and GUI Systems
Today, Metin2 developers not only use C++ but also develop integrated systems using Python. Python is preferred especially for UI scripting, admin panel interfaces, and automation processes. Structures such as PyRoot, UIScript, and PyGUI work harmoniously with C++ systems to create more user-friendly and dynamic solutions. With these systems, robust solutions can be developed on both the backend and frontend sides.
Metin2 Server Packaging and Compilation Process
All changes made in Metin2 private servers must be correctly compiled and packaged to become active. During this process, compiling C++ source codes, integrating DB updates, and synchronizing client-side changes are important. Errors encountered during the compilation process can be resolved more quickly with C++ knowledge. Additionally, a correctly configured core will run smoothly on both the game and DB sides.
Conclusion
In the world of Metin2 private servers, knowledge of C++ provides significant advantages to developers. Discovering unknown hidden codes is just as important as enhancing known systems. The technical details mentioned in this article will reach more developers together with examples shared on Metin2 Lobby and contribute to the growth of the community.
