#Lonca Lideri Tagı Sistemi - C++

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 30

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
En çok aranan konulardan birisi budur herhalde. Bi ara paylaşılmıştı sonradan kaldırıldı. Bu anlatacağım bool dur yani 0 ve 1 ile çalışır. Burda anlatacağım gmlerin yere item atmasını engelleyecek config kodunu oluşturma. Umarım bitane mod gelip daha önce verildi diye kapatmaz konuyu burdaki amaç yeni config kodu nasıl oluşturulur. Config kodundan değer çekmeyide yarına paylaşırım. Örneğin max_lonca_skor: 250 gibi.

Lütfen kopyala/yapıştır yapmayın hata alırısınız kendi elinizle yazın resimlere bakarak.

İlk başta sourcemize config komutlarını ekleyelim.

Açılır: config.cpp

Aratılır: gPlayerMaxLevel

Altına eklenir: // Burdaki sıfır eğer config dosyamızda bu kod yoksa standart olarak geçerli olacak değerdir.
Kod:
int gmyereitematamaz= 0;

Eq4AX9.png


Daha sonra tekrar aratılır: gPlayerMaxLevel

Bulduğumuz kod bloğunun altına eklenir:
Kod:
TOKEN("GM_YERE_ITEM_ATAMAZ") {     str_to_number(gmyereitematamaz, value_string);     printf("GM_YERE_ITEM_ATAMAZ: 1\n");     continue; }


j2GN9G.png


Şimdi config.h açılır.

Aratılır: gPayerMaxLevel

Altına eklenir:
Kod:
extern int gmyereitematamaz;

2kVoD0.png


Config kodumuzu oluşturduk şimdi geldi buna işlev yüklemeye. Belirttiğim gibi gm nin yere item atmasını engelleyen config kodunu oluşturmayı gösteriyorum bu konuda. Siz de geliştirip farklı işlevler için kod oluşturabilirsiniz. Mantık genellikle aynı.

Açılır: char_item.cpp

Aratılır:
Kod:
bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)

Bulunur:
Kod:
LPITEM item = NULL;

Yukardaki koddan sonra iki defa entere basıp alttaki kod eklenir.

Kod:
if (gmyereitematamaz == 1) {     if (GetGMLevel() > GM_PLAYER)     {         ChatPacket(CHAT_TYPE_INFO, "|cFFff0000|H|h<Hata> GameMaster yere item atamaz.");         return false;     } }

B05bqj.png



Bu işlemler bittik sonra config dosyana gm_yere_item_atamaz: 1 kodunu eklersen gmlerin yere item atmasını engellesin.

Kanıt:
cT19yUq.jpg

#Lonca Lideri Tagı Sistemi - C++

Metin2 Private Server Geliştirme dünyasında, oyuncuların deneyimini zenginleştiren pek çok sistem vardır. Bunlardan birisi de Lonca Lideri Tagı Sistemi'dir. Bu sistem sayesinde, loncaların liderleri belirgin bir şekilde tanımlanabilir ve diğer oyuncular tarafından kolayca fark edilebilir. Bu yazıda, C++ tabanlı bir Lonca Lideri Tagı sisteminin nasıl geliştirileceğini ve entegre edileceğini detaylı olarak inceleyeceğiz.

Sistem Mimarisi ve Amacı
Lonca Lideri Tagı sistemi, oyuncu adının solunda veya sağında bir etiketin görünmesini sağlar. Bu etiket, genellikle '[LIDER]' veya 'C.GUILD.LEADER' gibi ifadelerdir. Bu sayede diğer oyuncular, bir karakterin bir loncanın lideri olduğunu hemen anlayabilir. Bu sistem, PvP savaşları, lonca savaşları ve sosyal etkileşim açısından oldukça değerlidir.

C++ Kaynak Kod Entegrasyonu
Sistemi uygulamak için öncelikle Metin2 sunucu tarafında değişiklikler yapılması gerekir. Oyunun C++ tabanlı game server kaynak koduna entegre edilir. Özellikle packet yapıları ve karakter bilgileri gönderilirken bu tag bilgisi de pakete dahil edilmelidir. Sunucu tarafında, oyuncunun bir loncanın lideri olup olmadığını kontrol eden bir fonksiyon yazılır. Eğer oyuncu liderse, client tarafına özel bir tag gönderimi yapılır.

Client Tarafında Uygulama
Client tarafında, alınan bu tag bilgisi ekranda doğru konumda ve stilize bir şekilde gösterilmelidir. Bu işlem genellikle uiscript dosyalarında yapılır. UI elemanları üzerinde tag metni çizdirilir ve oyuncu adının yanına yerleştirilir. Bu işlem sırasında Python GUI (PyGUI) bilgisi de önemlidir. py root üzerinden UI düzenlemeleri yapılırken, tag sistemi ile uyumlu olacak şekilde layout tasarımı yapılmalıdır.

Tag Sisteminin Avantajları[/COORD]
Bu sistem, oyuncuların sosyal yapısını güçlendirir. Lonca liderlerinin tanınması, oyun içi yönetim süreçlerini kolaylaştırır. Ayrıca PvP sistemlerinde liderlerin korunması ya da hedef alınması gibi stratejik durumlar oluşabilir. Bu da oyun içi dengeleri ve rekabeti artırır.

Database Entegrasyonu
Tag sistemi, veritabanında bulunan lonca bilgileriyle entegre çalışır. Oyuncunun guild_id'si ile eşleşen lider bilgisi kontrol edilir. Bu işlemler db tarafında optimize bir şekilde yapılmalıdır. Performans kaybı yaşamamak adına, sorguların hızlı çalışması ve cache mekanizmalarının kullanılması önerilir.

Derleme ve Test Süreci
Geliştirilen sistem, compile işleminden sonra test sunucusunda denenmelidir. Her şeyin düzgün çalışıp çalışmadığı kontrol edilmelidir. Özellikle tag gösterimi, lonca değişikliklerinde güncellenmelidir. Martysama gibi geliştirici kaynaklarından yararlanmak da işleri kolaylaştırabilir.

Sonuç
Lonca Lideri Tagı Sistemi, Metin2 özel sunucularında kullanıcı deneyimini artıran küçük ama etkili bir özelliktir. C++ bilgisiyle geliştirilebilecek bu sistem, hem teknik hem de oyun içi sosyal yönüyle faydalıdır. Geliştiriciler için kolay entegre edilebilir ve özelleştirilebilir bir yapıya sahiptir.


Guild Leader Tag System - C++

Metin2 Private Server Development world includes many systems that enhance player experience. One of these is the Guild Leader Tag System. This system allows guild leaders to be clearly identified and easily recognized by other players. In this article, we will examine in detail how to develop and integrate a Guild Leader Tag system based on C++.

System Architecture and Purpose
The Guild Leader Tag system enables a label to appear next to a player’s name, typically phrases like '[LEADER]' or 'C.GUILD.LEADER'. This way, other players can immediately identify whether a character is a guild leader. This system is highly valuable for PvP battles, guild wars, and social interactions.

C++ Source Code Integration
To implement this system, modifications must first be made on the Metin2 server side. It integrates into the C++-based game server source code. Specifically, packet structures and character information must include this tag data when being sent. On the server side, a function checks whether the player is the leader of a guild. If so, a special tag is sent to the client side.

Client-Side Implementation
On the client side, the received tag information must be displayed in the correct location and with proper styling. This process usually occurs within uiscript files. The tag text is drawn onto UI elements and placed next to the player's name. During this process, knowledge of Python GUI (PyGUI) is also important. When modifying UI through py root, the layout design should be compatible with the tag system.

Benefits of the Tag System
This system strengthens the social structure among players. Recognizing guild leaders facilitates in-game management processes. Additionally, strategic scenarios such as protecting or targeting leaders during PvP situations may arise. This increases in-game balance and competitiveness.

Database Integration
The tag system works integrated with guild information stored in the database. The player's guild_id is checked against the leader record. These operations must be efficiently performed on the db side. To avoid performance loss, queries should run quickly and utilize caching mechanisms.

Compilation and Testing Process
After compiling the developed system, it should be tested on a test server. All functions must be verified for correct operation. Especially, tag display should update upon guild changes. Utilizing developer resources such as Martysama can also ease the process.

Conclusion
The Guild Leader Tag System is a small but effective feature that enhances user experience on Metin2 private servers. This system, which can be developed with C++ knowledge, is beneficial both technically and socially within the game. It has an easy-to-integrate and customizable structure for developers.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt