TL Bakiye Sistemi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Mıgo Sen artık yangın yanında bir türk lirası mı olsun istiyorsun olsun kardaş birde bunu gm eklesin oyuncuda bunu kendine hesabına çeksin mi istiyorsun al bakalım ozaman

Game Server (C++) — TL Ekleme
Kod:
// character.h içinde class CHARACTER {     // Mevcutlar... private:     DWORD m_dwTL;  // Yeni para birimi TL bakiyesi public:     DWORD GetTL() const { return m_dwTL; }     void SetTL(DWORD tl) { m_dwTL = tl; }     void AddTL(DWORD tl) { m_dwTL += tl; }     bool SubTL(DWORD tl)     {         if (m_dwTL < tl)             return false;         m_dwTL -= tl;         return true;     } };



MIGO Karakter veritabanı güncelle​


Veritabanında karakter tablosuna tl isimli yeni bir kolon diğer değişle tablo ekle . Sunucu açılırken bu değer yüklenmeli ve kapanırken kaydedilmeli ha.


TL bakiye görüntüleme komutu​

Kod:
ACMD(do_tlbakiyesi) {     if (!ch)         return;     ch->ChatPacket(CHAT_TYPE_INFO, "TL bakiyeniz: %u", ch->GetTL()); }

TL gönderme komutu

Kod:
ACMD(do_gm_tlgonder) {     if (!ch)         return;     // Sadece GM yetkisi olanlar kullanabilir     if (!ch->IsGM())     {         ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanmak için yetkiniz yok.");         return;     }     char target_name[CHARACTER_NAME_MAX_LEN + 1];     int amount = 0;     if (sscanf(argument, "%s %d", target_name, &amount) != 2)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /gmtlgonder <oyuncu_ismi> <miktar>");         return;     }     if (amount <= 0)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Geçersiz miktar.");         return;     }     LPCHARACTER target_char = CHARACTER_MANAGER::instance().FindPC(target_name);     if (!target_char)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı.");         return;     }     target_char->AddTL(amount);     ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusuna %d TL gönderildi.", target_char->GetName(), amount);     target_char->ChatPacket(CHAT_TYPE_INFO, "%s tarafından %d TL aldınız.", ch->GetName(), amount);     sys_log(0, "GM_TL_TRANSFER: %s sent %d TL to %s", ch->GetName(), amount, target_char->GetName()); }


Komut Kayıt (komut kayıt nedir soranlara hani gm komutları olan bölüm​

Kod:
void RegisterCommands() {     command_info.insert(std::make_pair("gmtlgonder", do_gm_tlgonder)); }

varya kardaş oraya ekle)​



Mıgo Pack ve Client Entegrasyonu


character.py dosyasına TL alanı ekleme

Kod:
class Character:     def __init__(self):         self.tl = 0  # Yeni para birimi TL     def load_from_db(self, data):         # Örnek olarak veritabanından gelen veri         self.tl = data.get('tl', 0)     def save_to_db(self):         # Veritabanına kaydetme işlemi         return {'tl': self.tl}     def add_tl(self, amount):         self.tl += amount     def sub_tl(self, amount):         if self.tl < amount:             return False         self.tl -= amount         return True


Pack — TL Bilgisini Client’a Gönderme​


Metin2 pack içinde client’a veri gönderme genellikle packet yapısı ile olur. Yeni bir packet alanı açıp TL bilgisini göndermen gerekir bremın .

Python packet fonksiyonu

Kod:
def send_tl_update(character):     from net import send_packet     # Basit örnek, paket yapısına göre düzenle     packet = {         'header': 'TL_UPDATE',         'tl': character.tl     }     send_packet(character.player_id, packet)



Client (C#) — TL Bilgisini Alma ve Arayüzde Gösterme

Client Veri Yapısına TL alanı ekle

Kod:
public class PlayerData {     public int TL { get; set; } = 0;     // Diğer özellikler... }



Packet işleyici içinde TL paketini yakalama

Kod:
public void OnPacketReceived(Packet packet) {     if (packet.Header == "TL_UPDATE")     {         int tlAmount = packet.ReadInt();         PlayerData.TL = tlAmount;         // TL bilgisini UI'da güncelle         UIManager.Instance.UpdateTLDisplay(tlAmount);     } }


UI’da TL Gösterimi
Kod:
public class UIManager {     public static UIManager Instance = new UIManager();     public void UpdateTLDisplay(int tlAmount)     {         // Örnek: TL miktarını oyun arayüzündeki ilgili label/textbox'a yaz         tlLabel.Text = $"TL: {tlAmount}";     }     private Label tlLabel; // Bu label arayüzde oluşturulmalı }



mıgo kanka ui tasarımıda mı olsun istiyorsun al ozaman


TL Gösterim Label’ı Oluşturma yani hele bir tl nin şeklini halini görelim


Kod:
using System; using System.Windows.Forms; public class TLForm : Form {     private Label tlLabel;     public TLForm()     {         this.Text = "Oyun Parası: TL";         tlLabel = new Label();         tlLabel.Text = "TL: 0";         tlLabel.Font = new System.Drawing.Font("Arial", 14);         tlLabel.AutoSize = true;         tlLabel.Location = new System.Drawing.Point(10, 10);         this.Controls.Add(tlLabel);         this.Width = 200;         this.Height = 60;     }     // TL miktarını güncelleyen metot     public void UpdateTL(int amount)     {         if (this.InvokeRequired)         {             this.Invoke(new Action<int>(UpdateTL), amount);         }         else         {             tlLabel.Text = $"TL: {amount}";         }     } }


Ana Client UI’ya Entegre Etme yani client src ye ha biliyorsunuzdur ya okadar da değil

Kod:
// Örnek: Oyun başlarken veya karakter girişinde TLForm tlForm = new TLForm(); tlForm.Show();

Packet Geldiğinde UI Güncelleme

Kod:
public void OnTLUpdatePacketReceived(int newAmount) {     tlForm.UpdateTL(newAmount); }


hee bu kadar şimdi yukardaki kodu ekledin mesela gittin benim oyuncular arası yang paylaşımi sisteeminide oyuna entegre ettin. ordan feyz olarak yang fonksiyonu veya değişkeni yerine yeni para birimi olan tl yi eklediğini düşünsene oyun içinde türk lirası dönüyor mıgo o konu nerde diye sorma konuyu göreceksin zaten



TL Bakiye Sistemi Nedir?
Metin2 özel sunucularında kullanıcı deneyimini artırmak ve oyuncuların daha fazla aktif kalmasını sağlamak amacıyla birçok geliştirici, ekonomik sistemler entegre eder. Bu sistemlerden birisi de TL Bakiye Sistemi'dir. Bu sistem sayesinde oyuncular, bakiyelerini artırabilmek için belirli görevleri gerçekleştirebilir veya satın alım yapabilir. Aynı zamanda bu bakiyeyi sunucu içinde özel ödüller, item paketleri ya da bonuslar karşılığı harcayabilirler.

Sistemin Kullanım Alanları
TL Bakiye Sistemi, Metin2 özel sunucularında birçok farklı alanda kullanılabilir. Örneğin, oyuncular belli miktarda TL karşılığı özel item paketleri açabilir, karakterlerini güçlendirebilir veya PvP avantajları kazanabilir. Ayrıca bazı özel etkinliklerde TL bakiyesi olan oyunculara özel öncelik tanınabilir. Bu durum, oyuncuların daha aktif ve sadık kalmasını sağlar.

Sistem Nasıl Çalışır?
Bu sistem genellikle C++ backend tarafında geliştirilir. Database (DB) üzerinde tutulan bakiye değerleri, oyuncunun karakteri ile ilişkilendirilir. Oyuncu bakiye yüklemek istediğinde, ödeme işlemi tamamlandıktan sonra bakiye DB’ye yazılır. Ardından oyuncu, bakiyesini satın alma ekranlarında kullanabilir. Bu işlemler genellikle auth ve game sunucuları arasında senkronize olarak çalışır.

Python GUI Entegrasyonu
TL bakiye sistemine erişim sağlayan bazı arayüzler de Python GUI kullanılarak geliştirilebilir. Bu tür arayüzler, admin paneli olarak tasarlanabilir ve bakiye işlemleri, transferler, raporlamalar gibi işlemler kolayca yönetilebilir. PyRoot klasörlerinde bu tür UI scriptleri yer alabilir. Böylece hem backend hem de frontend tarafında sistemin yönetimi kolaylaşır.

Avantajları Nelerdir?
Bu sistem, oyuncuların daha fazla zaman harcamasını teşvik eder. Aynı zamanda sunucu operatörlerine ek gelir kaynağı sağlar. PvP sistemlerinde, TL bakiyesi yüksek olan oyuncular özel bonuslar alabilir. Bu da rekabeti artırır ve oyuncuların sistemle daha fazla etkileşim kurmasını sağlar.

Sonuç
TL Bakiye Sistemi, Metin2 özel sunucularında hem kullanıcı deneyimini artıran hem de gelir elde edilmesini sağlayan önemli bir özelliktir. Doğru şekilde uygulandığında, oyuncu sadakati ve sunucu popülaritesi ciddi anlamda artabilir.


What is the TL Balance System?
To enhance the user experience on Metin2 private servers and keep players active, many developers integrate economic systems. One of these systems is the TL Balance System. This system allows players to increase their balance by completing specific tasks or making purchases. They can then spend this balance in exchange for special rewards, item packages, or bonuses within the server.

Usage Areas of the System
The TL Balance System can be used in various areas on Metin2 private servers. For example, players may open special item packages with a certain amount of TL, strengthen their characters, or gain PvP advantages. Additionally, priority may be given to players who have a TL balance during special events. This helps players stay more active and loyal to the server.

How Does the System Work?
This system is generally developed on the C++ backend. The balance values stored in the database (DB) are associated with the player's character. Once the payment process is completed, the balance is written to the DB. Players can then use their balance to make purchases in the shop interface. These processes typically run synchronously between auth and game servers.

Python GUI Integration
Some interfaces that provide access to the TL balance system can also be developed using Python GUI. Such interfaces can be designed as admin panels where balance operations, transfers, reports, etc., can be easily managed. These UI scripts can be located in PyRoot folders, simplifying management on both the backend and frontend sides of the system.

Advantages
This system encourages players to spend more time on the server. It also provides an additional revenue stream for server operators. In PvP systems, players with higher TL balances can receive special bonuses, increasing competition and interaction with the system.

Conclusion
The TL Balance System is a vital feature on Metin2 private servers that enhances user experience while generating revenue. When properly implemented, it can significantly increase player loyalty and server popularity.
 

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

Geri
Üst Alt