- Katılım
- 6 Mayıs 2022
- Konular
- 48,269
- Mesajlar
- 48,579
- Tepkime puanı
- 74
- M2 Yaşı
- 3 yıl 11 ay 10 gün
- Trophy Puan
- 48
- M2 Yang
- 488,659
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:
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.
Bul:
İçinden Sil:
Bul ve Sil (Tüm struct yapıları):
ADIM 3: DB Source Düzenlemeleri
Dosya: Server\Source\db\ClientManager.cpp
Dosya: Server\Source\db\ClientManager.h
İşlem: Sildiğimiz fonksiyonların tanımlarını (header) buradan da silin.
Dosya: Server\Source\db\LoginData.cpp & .h
İşlem:
,
değişkenlerini ve bunların Set/Get metodlarını tamamen kaldırın.
Dosya: Server\Source\db\ClientManagerLogin.cpp & ClientManagerPlayer.cpp
İşlem:
çağrılarını silin.
ADIM 4: Game Source Düzenlemeleri
Dosya: Server\Source\game\config.cpp & .h
İşlem:
değişkenini ve
bloğunu silin.
Dosya: Server\Source\game\db.cpp
⚠️ ÖNEMLİ DEĞİŞİKLİK:
fonksiyonunun yapısını değiştiriyoruz.
Bul:
Bununla Değiştir:
* 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 & .h
İşlem:
değişkenini ve ilgili metodları silin.
Dosya: Server\Source\game\input_db.cpp & input.h
İşlem:
,
,
,
fonksiyonlarını silin.
Dosya: Server\Source\game\main.cpp
İşlem: heartbeat ve main fonksiyonlarındaki
çağrılarını kaldırın.
ADIM 5: Client Tarafı
Dosya: root/intrologin.py
Bul ve Sil:
Dosya: locale/xx/locale_game.txt
Bul ve Sil:
İş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
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
- <li data-xf-list-type="ol">Include'u kaldırın:
<li data-xf-list-type="ol">Şu fonksiyonların içini ve kendisini tamamen silin:Kod:
#include "../common/billing.h"
<li data-xf-list-type="ol">ProcessPackets içindekiKod:BillingExpire BillingCheck SendAllLoginToBilling SendLoginToBillingveKod:HEADER_GD_BILLING_EXPIREcase'lerini silin. <li data-xf-list-type="ol">QUERY_SETUP, QUERY_AUTH_LOGIN ve RemovePeer fonksiyonlarındaki Billing ile ilgili tüm referansları temizleyin.Kod:HEADER_GD_BILLING_CHECK
Dosya: Server\Source\db\ClientManager.h
İşlem: Sildiğimiz fonksiyonların tanımlarını (header) buradan da silin.
Dosya: Server\Source\db\LoginData.cpp & .h
İşlem:
Kod:
m_bBillType
Kod:
m_dwBillID
Dosya: Server\Source\db\ClientManagerLogin.cpp & ClientManagerPlayer.cpp
İşlem:
Kod:
SendLoginToBilling
ADIM 4: Game Source Düzenlemeleri
Dosya: Server\Source\game\config.cpp & .h
İşlem:
Kod:
g_bBilling
Kod:
TOKEN("billing")
Dosya: Server\Source\game\db.cpp
- <li data-xf-list-type="ul">Include sil:
<li data-xf-list-type="ul">Şu fonksiyonları tamamen silin:Kod:
#include "../common/billing.h"
<li data-xf-list-type="ul">AnalyzeReturnQuery fonksiyonundaKod:SetBilling PushBilling FlushBilling CheckBilling StopAllBilling GetGameTimeIP GetGameTime SendBillingExpireveKod:QID_BILLING_GET_TIMEcase bloklarını silin.Kod:QID_BILLING_CHECK
⚠️ ÖNEMLİ DEĞİŞİKLİK:
Kod:
LoginPrepare
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 & .h
İşlem:
Kod:
m_dwBillingExpireSecond
Dosya: Server\Source\game\input_db.cpp & input.h
İşlem:
Kod:
BillingRepair
Kod:
BillingExpire
Kod:
BillingLogin
Kod:
BillingCheck
Dosya: Server\Source\game\main.cpp
İşlem: heartbeat ve main fonksiyonlarındaki
Kod:
FlushBilling
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 & 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.
İ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.
