Neler yeni

Foruma hoş geldin, Ziyaretçi

Metin2Lobby.com Metin2 Private Server Tanıtım Advertising Ve Geliştirme Forumudur.Metin2 pvp serverler,1-99,1-105,1-120,55-120 global serverları paylaş yada ara.
Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Billing Sistemi Detaylı Kaldırma Rehberi

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
48,280
Mesajlar
48,590
Tepkime puanı
75
M2 Yaşı
3 yıl 11 ay 10 gün
Trophy Puan
48
Konum
Web sitesi
M2 Yang
488,769
Ticaret : 1 / 0 / 0
Ticaret Oranı : 100%

Gereksiz Yükten Kurtulun: Billing Sistemini Kaldırma Rehberi
Login sürecini hızlandırın, veritabanını rahatlatın ve ölü kodlardan kurtulun.



Nedir ve Neden Kaldırıyoruz?

Metin2’nin orijinal altyapısında bulunan Billing Sistemi, aslında oyunculara süre bazlı oyun erişimi satmak (Time-to-Play) için tasarlanmış eski bir mekanizmadır. Tıpkı WoW veya Elder Scrolls Online mantığı gibi, süresi biten oyuncuyu oyundan atar.

Ancak PVP ve Private Serverlar için bu sistem yıllardır tamamen işlevsizdir. Kullanılmasa bile arka planda ciddi bir yük oluşturur:

  • <li data-xf-list-type="ul">❌ Gereksiz Trafik: Client, Game, DB ve Auth arasında sürekli gereksiz paket alışverişi yapar. <li data-xf-list-type="ul">❌ Ölü Kod (Dead Code): Config'den kapalı olsa bile hafıza ayırmaya ve döngüleri çalıştırmaya devam eder. <li data-xf-list-type="ul">❌ Karmaşıklık: LoginData ve ClientManager sınıflarını gereksiz yere şişirir, debug yapmayı zorlaştırır. <li data-xf-list-type="ul">❌ Veritabanı Kirliliği: Asla kullanılmayan log ve zaman tablolarını tutar.

Bu rehberi uyguladığınızda login süreci çok daha sade, okunabilir ve modern geliştirmelere açık hale gelecektir.



⚠️ DİKKAT ⚠️
İşlemlere başlamadan önce mutlaka Game Source, DB Source ve MySQL yedeğinizi alınız!



ADIM 1: Veritabanı Temizliği (MySQL)

Navicat veya kullandığınız SQL editöründe account veritabanına sağ tıklayıp Console/Query ekranını açın ve şu tablıları silin:

Kod:
DROP TABLE IF EXISTS gametime; DROP TABLE IF EXISTS gametimeip; DROP TABLE IF EXISTS gametimelog;



ADIM 2: Common (Ortak) Dosyalar

Dosya: Server\Source\common\billing.h
İşlem: Bu dosyayı tamamen silin.

Dosya: Server\Source\common\tables.h
İşlem: Aşağıdaki kodları bulun ve silin.

Kod:
// Silinecekler: HEADER_GD_BILLING_EXPIRE = 104, HEADER_GD_BILLING_CHECK = 106, HEADER_DG_BILLING_REPAIR = 128, HEADER_DG_BILLING_EXPIRE = 129, HEADER_DG_BILLING_LOGIN = 130, HEADER_DG_BILLING_CHECK = 132,

Bul:
Kod:
typedef struct SPacketGDAuthLogin
İçinden Sil:
Kod:
BYTE bBillType; DWORD dwBillID;

Bul ve Sil (Tüm struct yapıları):
Kod:
typedef struct SPacketBillingLogin ... typedef struct SPacketBillingRepair ... typedef struct SPacketBillingExpire ...



ADIM 3: DB Source Düzenlemeleri

Dosya: Server\Source\db\ClientManager.cpp

  1. <li data-xf-list-type="ol">Include'u kaldırın:
    Kod:
    #include "../common/billing.h"
    <li data-xf-list-type="ol">Şu fonksiyonların içini ve kendisini tamamen silin:
    Kod:
    BillingExpire BillingCheck SendAllLoginToBilling SendLoginToBilling
    <li data-xf-list-type="ol">ProcessPackets içindeki
    Kod:
    HEADER_GD_BILLING_EXPIRE
    ve
    Kod:
    HEADER_GD_BILLING_CHECK
    case'lerini silin. <li data-xf-list-type="ol">QUERY_SETUP, QUERY_AUTH_LOGIN ve RemovePeer fonksiyonlarındaki Billing ile ilgili tüm referansları temizleyin.

Dosya: Server\Source\db\ClientManager.h
İşlem: Sildiğimiz fonksiyonların tanımlarını (header) buradan da silin.

Dosya: Server\Source\db\LoginData.cpp &amp; .h
İşlem:
Kod:
m_bBillType
,
Kod:
m_dwBillID
değişkenlerini ve bunların Set/Get metodlarını tamamen kaldırın.

Dosya: Server\Source\db\ClientManagerLogin.cpp &amp; ClientManagerPlayer.cpp
İşlem:
Kod:
SendLoginToBilling
çağrılarını silin.



ADIM 4: Game Source Düzenlemeleri

Dosya: Server\Source\game\config.cpp &amp; .h
İşlem:
Kod:
g_bBilling
değişkenini ve
Kod:
TOKEN("billing")
bloğunu silin.

Dosya: Server\Source\game\db.cpp

  • <li data-xf-list-type="ul">Include sil:
    Kod:
    #include "../common/billing.h"
    <li data-xf-list-type="ul">Şu fonksiyonları tamamen silin:
    Kod:
    SetBilling PushBilling FlushBilling CheckBilling StopAllBilling GetGameTimeIP GetGameTime SendBillingExpire
    <li data-xf-list-type="ul">AnalyzeReturnQuery fonksiyonunda
    Kod:
    QID_BILLING_GET_TIME
    ve
    Kod:
    QID_BILLING_CHECK
    case bloklarını silin.

⚠️ ÖNEMLİ DEĞİŞİKLİK:
Kod:
LoginPrepare
fonksiyonunun yapısını değiştiriyoruz.

Bul:
Kod:
void DBManager::LoginPrepare(BYTE bBillType, DWORD dwBillID, long lRemainSecs, LPDESC d, DWORD * pdwClientKey, int* paiPremiumTimes)

Bununla Değiştir:
Kod:
void DBManager::LoginPrepare(LPDESC d, DWORD * pdwClientKey, int* paiPremiumTimes)

* Fonksiyon içeriğindeki SetBillType, SetBillID gibi satırları silmeyi unutmayın.

Dosya: Server\Source\game\db.h
İşlem: Header dosyasını cpp tarafındaki değişikliklere göre güncelleyin (Silinen fonksiyon tanımlarını kaldırın, LoginPrepare imzasını güncelleyin).

Dosya: Server\Source\game\desc.cpp &amp; .h
İşlem:
Kod:
m_dwBillingExpireSecond
değişkenini ve ilgili metodları silin.

Dosya: Server\Source\game\input_db.cpp &amp; input.h
İşlem:
Kod:
BillingRepair
,
Kod:
BillingExpire
,
Kod:
BillingLogin
,
Kod:
BillingCheck
fonksiyonlarını silin.

Dosya: Server\Source\game\main.cpp
İşlem: heartbeat ve main fonksiyonlarındaki
Kod:
FlushBilling
çağrılarını kaldırın.



ADIM 5: Client Tarafı

Dosya: root/intrologin.py
Bul ve Sil:
Kod:
"NOBILL"    : localeInfo.LOGIN_FAILURE_NOBILL,

Dosya: locale/xx/locale_game.txt
Bul ve Sil:
Kod:
LOGIN_FAILURE_NOBILL    Hesabınızın oyun süresi yok.



Tüm işlemleri yaptıktan sonra Game &amp; DB build almayı unutmayın.
İyi forumlar!

Metin2 Sunucularında Billing Sistemi Detaylı Kaldırma Rehberi

Metin2 özel sunucularında sistem yönetimi ve maliyet optimizasyonu açısından bazen billing sisteminin kaldırılması ihtiyacı doğabilmektedir. Bu rehber, Metin2 Lobby sitesi kullanıcıları için, özellikle C++ tabanlı sunucu kaynak kodları üzerinde nasıl güvenli ve eksiksiz bir şekilde billing sistemini kaldırabileceğinizi adım adım açıklamaktadır.

Billing Nedir?
Billing, oyuncuların oyun içi satın alma işlemleri gerçekleştirmesi için kullanılan ödeme sistemidir. Genellikle auth server üzerinden entegre edilir ve game server ile senkron çalışır. Ancak bazı özel sunucularda bu sisteme ihtiyaç duyulmayabilir.

Neden Billing Sistemini Kaldırmalısınız?
Özel sunucularda, tüm içeriklerin ücretsiz olması istenebilir. Bu durumda, billing fonksiyonları hem performans kaybına neden olabilir hem de güvenlik açığı yaratabilir. Ayrıca, source edit sırasında bu sistemin mevcut olmaması, daha temiz ve optimize bir yapı kurmanıza olanak tanır.

Adım Adım Billing Sistemini Kaldırma

1. Auth Server Tarafında Değişiklikler
Auth server dosyalarında bulunan billing ile ilgili tüm fonksiyonlar silinmelidir. Özellikle billing_manager.cpp, billing_login.cpp gibi dosyalar hedef alınmalıdır. Bu dosyaları silmek veya devre dışı bırakmak, sistemin bu servise erişmesini engeller.

2. Game Server Kodlarında Ayarlar
Game server tarafında, billing ile ilgili tüm sorgular ve fonksiyonlar yorum satırına alınmalı ya da tamamen kaldırılmalıdır. Örneğin, clientmanager.cpp içindeki billing kontrolü yapan fonksiyonlar temizlenmelidir.

3. Database Tarafında Gerekli Temizlikler
Database (DB) içinde bulunan billing tabloları da silinmelidir. Bunlar genellikle auth database altında yer alır. Örnek tablo isimleri: billing_info, billing_log. Bu tabloların silinmesi ile birlikte, core yapıyı daha temiz hale getirebilirsiniz.

4. Client Tarafında Ayarlar
Client tarafında, oyun içi shop veya billing menüsüne erişimi engellemek için uiscript dosyalarında gerekli değişiklikler yapılmalıdır. py root klasöründe bulunan ilgili Python GUI dosyalarında, billing menüsüne erişimi sağlayan butonlar kaldırılabilir veya devre dışı bırakılabilir.

5. Compile ve Test İşlemleri
Metin2 compile[/COORD] işlemi sonrasında, billing sisteminden kaynaklanabilecek herhangi bir hata mesajı olup olmadığı test edilmelidir. Özellikle giriş sırasında yaşanan sorunlar bu sistemin hala aktif olabileceği anlamına gelebilir.

Sonuç
Billing sistemini güvenli bir şekilde kaldırmak, Metin2 lobby kullanıcıları için hem performans hem de güvenlik açısından faydalıdır. Bu rehber sayesinde, C++ ve Python tabanlı sistemlerde, billing sistemini başarıyla kaldırabilirsiniz.


Detailed Guide to Removing Billing System on Metin2 Servers

In some cases, removing the billing system becomes necessary for system management and cost optimization in Metin2 private servers. This guide explains step by step how users of Metin2 Lobby can safely and completely remove the billing system from C++ based server source codes.

What is Billing?
Billing is the payment system used for players to make in-game purchases. It is usually integrated through the auth server and works in sync with the game server. However, this system may not be needed in certain private servers.

Why Should You Remove the Billing System?
In private servers, it might be desired that all content is free. In such cases, billing functions can cause performance losses and potentially introduce security vulnerabilities. Moreover, removing this system during source edit allows for a cleaner and more optimized structure.

Step-by-Step Removal of Billing System

1. Changes on Auth Server Side
All functions related to billing in the auth server files must be removed. Files like billing_manager.cpp, billing_login.cpp should be targeted. Deleting or disabling these files prevents the system from accessing this service.

2. Adjustments in Game Server Codes
On the game server side, all queries and functions related to billing must be commented out or fully removed. For instance, functions in clientmanager.cpp that handle billing checks should be cleaned up.

3. Necessary Cleanup in Database
The billing tables located in the database (DB) should also be deleted. These are typically found under auth database. Example table names: billing_info, billing_log. Removing these tables helps keep your core structure clean.

4. Client-Side Adjustments
To prevent access to in-game shop or billing menus on the client side, necessary changes must be made in the uiscript files. In the py root folder, buttons providing access to the billing menu in relevant Python GUI files can be removed or disabled.

5. Compile and Testing Processes
After the Metin2 compile process, check whether there are any error messages originating from the billing system. Login issues in particular could indicate that the system is still active.

Conclusion
Safely removing the billing system is beneficial for both performance and security for Metin2 lobby users. With this guide, you can successfully remove the billing system in C++ and Python based systems.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kaydol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Üye ol
Giriş Yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş Yap

Tema düzenleyici

Tema özelletirmeleri