[C++]Lua Mysql Fonksiyonları

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
pasha37 nin konusudur isteyen daha rahat ulaşsın diye açıyorum


Merhabalar,
Source kullananlar için lua scriptlerinde kullanabilecekleri birkaç mysql fonksiyonu eklemeyi göstericem.

İçerik;
mysql.query
mysql.direct_query
mysql.update
mysql.real_escape_string
mysql.get_table_postfix


Anlatım:
../game/src dizinine aşağıdaki questlua_mysql.cpp dosyasını atın
Freebsd kullanıyorsanız Makefile dosyasındaki CPPFILE kısmına Visual studio kullanıyorsanız da game solution a ekleyin

queslua.cpp açın;
Kod:
RegisterDragonSoulFunctionTable();
aratın
Kod:
RegisterMysqlFunctionTable();
altına ekleyin

questlua.h açın;
Kod:
extern void RegisterDragonSoulFunctionTable();
aratın
Kod:
extern void RegisterMysqlFunctionTable();
altına ekleyin

ve derleyip kullanabilirsiniz


Kullanım:
mysql.real_escape_string(string)
mysql.query(string)
mysql.update(string)
mysql.get_table_postfix() -> return lua string
mysql.direct_query(string)





Metin2 Lobby olarak C++ ve Lua tabanlı Metin2 özel sunucularında geliştirme yaparken MySQL entegrasyonu oldukça önemli bir konudur. Özellikle PvP sistemleri, oyuncu verileri, özel eşyalar ve server-side event yönetimi gibi alanlarda veritabanı işlemleri büyük rol oynar. Bu yazıda C++ üzerinden Lua[/CODE] fonksiyonları aracılığıyla MySQL bağlantısı kurmayı ve temel işlemlerini nasıl yapacağımızı ele alacağız.

C++ Tarafında MySQL Bağlantısı Kurulumu
Metin2 sunucu tarafında MySQL bağlantısı kurabilmek için öncelikle C++ tarafında bir veritabanı sınıfı oluşturulmalıdır. Bu sınıf sayesinde SQL sorguları çalıştırılır, sonuçlar alınır ve Lua[/CODE] tarafına aktarılır. Bunun için mysql.h[/CODE] kütüphanesi projeye dahil edilmeli ve gerekli bağlantı ayarları yapılmalıdır.

Lua Fonksiyonlarını C++ ile Tanımlamak
Lua[/CODE] tarafında kullanılmak üzere C++ içinde lua_register[/CODE] fonksiyonu ile özel fonksiyonlar tanımlanabilir. Örneğin mySQL_query[/CODE] veya mySQL_fetch[/CODE] gibi isimlerle Lua tarafında kullanılabilen özel komutlar tanımlanabilir. Bu sayede scriptler içinde doğrudan veritabanı sorgusu çalıştırılabilir.

Temel MySQL İşlemleri Lua ile
Lua[/CODE] içinde şu şekilde temel sorgular çalıştırılabilir:
- mySQL_query('INSERT INTO table_name VALUES(...)')
- mySQL_query('SELECT * FROM table_name WHERE id=1')
- mySQL_query('UPDATE table_name SET column1=value1 WHERE id=1')
- mySQL_query('DELETE FROM table_name WHERE id=1')

Güvenlik ve Performans Konuları
SQL injection[/CODE] gibi güvenlik açıklarını önlemek için sorgularda parametreli ifadeler (prepared statements[/CODE]) kullanılması önerilir. Ayrıca sorguların performansı için indeksleme ve sorgu optimizasyonu önemlidir. Metin2 özel sunucularında yüksek trafikte çalışan sistemler için bu konular kritik öneme sahiptir.

Örnek Kullanım Senaryosu
Oyuncu özel envanter sistemi gibi gelişmiş yapılar için Lua[/CODE] üzerinden MySQL[/CODE] ile veri alışverişi oldukça faydalıdır. Oyuncunun eşyaları, seviyesi, coin miktarı gibi bilgiler doğrudan veritabanından alınabilir ve sunucu tarafında işlenebilir. Bu sayede kalıcı veri tutma ve eşzamanlı oyuncu verileri yönetimi kolaylaşır.

Sonuç
Metin2 Lobby kullanıcıları için C++ ve Lua[/CODE] üzerinden MySQL[/CODE] işlemleri gerçekleştirmek, güçlü ve esnek sistemler kurmak açısından büyük avantaj sağlar. Geliştiriciler bu yolla daha kararlı, güvenli ve ölçeklenebilir Metin2 özel sunucuları oluşturabilir.


Metin2 Lobby as C++ and Lua based Metin2 private servers, integrating MySQL is very important. Especially in areas like PvP systems, player data, custom items, and server-side events, database operations play a significant role. In this article, we will discuss how to establish MySQL connection via C++ and execute basic operations using Lua[/CODE] functions.

Setting up MySQL Connection on C++ Side
To connect to MySQL in Metin2 server side, first a database class must be created in C++. Through this class, SQL queries are executed, results are retrieved and transferred to the Lua[/CODE] side. For this purpose, mysql.h[/CODE] library should be included in the project and necessary connection settings should be made.

Defining Lua Functions in C++
Special functions can be defined in C++ for use in Lua[/CODE] using lua_register[/CODE] function. For example, commands named mySQL_query[/CODE] or mySQL_fetch[/CODE] can be defined for usage within scripts. This way, database queries can be executed directly from scripts.

Basic MySQL Operations with Lua
In Lua[/CODE], you can run basic queries like:
- mySQL_query('INSERT INTO table_name VALUES(...)')
- mySQL_query('SELECT * FROM table_name WHERE id=1')
- mySQL_query('UPDATE table_name SET column1=value1 WHERE id=1')
- mySQL_query('DELETE FROM table_name WHERE id=1')

Security and Performance Considerations
To prevent security vulnerabilities such as SQL injection[/CODE], it's recommended to use parameterized queries (prepared statements[/CODE]). Additionally, indexing and query optimization are important for performance. These topics are critical for high-traffic systems running on Metin2 private servers.

Example Use Case
For advanced structures like player custom inventory systems, data exchange between Lua[/CODE] and MySQL[/CODE] is highly beneficial. Player items, level, coin amount, etc., can be fetched directly from the database and processed on the server side. This simplifies persistent data storage and concurrent player data management.

Conclusion
For Metin2 Lobby users, executing MySQL[/CODE] operations through C++ and Lua[/CODE] offers great advantages for building robust, flexible systems. Developers can create more stable, secure, and scalable Metin2 private servers using these methods.
 

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

Benzer konular

Geri
Üst Alt