Offline Alışveriş Sistemi[LUA]

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhabalar,

Bir arkadaşın önerisi üzerine bu sistemi hazırlamaya karar verdim. Umarım beğenirsiniz ve kullanılırsınız. Öncelikle sistemde herhangi bir bug olduğunu düşünmüyorum. En azından kontrol ettiğim kadarı ile olabilecek her türlü bugu engellemeye çalıştım. Eğer herhangi bir bug ile karşılaşırsanız lütfen bildirin. Kısa sürede düzeltir yenisini yayınlarım. Buna ek olarak sistemi biraz aceleye getirdiğim için kodlamada acemilik yapmış olabilirim. Fonksiyonları kullanarak yapacaktım fakat aceleye getirdiğim için bu şekilde oldu. Yinede kullanışlı ve herhangi bir sorun görünmüyor.


Peki nedir Offline Alışveriş Sistemi?

Oyuncuların oyunda olmasalar dahi eşyalarını satabilecekleri bir sistemdir.

Sistem nasıl işler?

Oyuncular satmak istedikleri eşyayı NPC'nin üzerine atarlar. Daha sonra karşılarına fiyat, ne kadar süre satışta kalacağı ve hangi kategoriye eklemek istediği bilgileri gelir. Gerekli seçimi yaptıktan sonra eşya alışverişe ekler. Oyuncu dilerse eşyasını geri çekebilir ve eşyasının fiyatını güncelleyebilir. Oyuncunun eşyasının süresi dolarsa o eşyanın satışı engellenir ve süresi bittikten sonra herhangi bir oyuna çıkış-giriş durumunda eşya oyuncunun kasasına yollanır ve alışveriş listesinden silinir. Eğer oyuncunun eşyası satılırsa, Alışveriş Kasasına parası kayıt edilir. Satılan tüm eşyaların parası orada tutulur ve oyuncu dilerse parasını çekebilir.

Dilerseniz sistemin nasıl işlediği ile ilgili ayrıntılı bir video paylaşayım:





LUA DOSYASI:







Tabii ki doğal olarak bu sistem MySQL veritabanı üzerinden işleyecek. İlk olarak MySQL kodları sunucumuzda çalışmıyorsa aşağıdaki işlemleri yapalım:


"questing.lua" dosyasını açıyor ve en altına aşağıdaki fonksiyonu ekliyoruz:



MYSQL FONKSİYONU:
Kod:
mysql_query10 = function(query)     if not pre then         local rt = io.open('CONFIG','r'):read('*all')         pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)  %s(%S+).+','-h%1 -u%2 -p%3 -D%4')     end     math.randomseed(os.time())     local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2  ^10),{},{}     --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51     os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55     for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);     for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)         out[i-1]               = out[i-1] or {}         out[i-1][a]            = tostring(b) or b or 'NULL'         out[t[1][a]]           = out[t[1][a]] or {}         out[t[1][a]][i-1]      = tostring(b) or b or 'NULL'     end) end     return out end


Şimdi "quest_functions" dosyamızı açalım ve "mysql_query10" var mı yok mu kontrol edelim. Eğer yoksa en alta "mysql_query10" kodunu ekleyelim. Burası ile de işimiz bitti.

Daha sonra kullanacağımız veritabanı dosyasını indiriyoruz.




MySQL dosyasını "player" veritabanına ekliyoruz. Herhangi bir işlem yapmanıza gerek yok. (REBOOT atmanıza gerek yok eklemeyi yaptıktan sonra)

Şimdi bir işlem daha yapmamız gerekiyor. "Player" tablosuna aşağıdaki gibi sağ tıklayıp "Design Table" diyoruz.

3DzD30.jpg



Daha sonra "alisveris_param" adında sütun ekliyoruz veritabanımıza.

ÖNEMLİ UYARI: Default değerini mutlaka 0 yapın! Çok önemli.



g5rvnN.jpg




VİP Sütunu eklemek:


"player" tablosuna sağ tıklıyor "Design Table" diyoruz. Daha sonra aşağıdaki gibi bir "vip" sütunu ekliyoruz:


WnPpA2.jpg




ÖNEMLİ UYARI: Default değerini mutlaka 0 yapın! Çok önemli.


ÖNEMLİ UYARI: Kişiyi VİP yapmak için 1 değerini girin. Eğer 1 dışında bir sayı yazarsanız VİP sistemi çalışmaz. 0 yaparsanız VİP özelliği gider, 1 yazarsanız aktif olur.



PARA MİKTARI ARASINA .(NOKTA) KOYMA:

Şimdi para tutarlarının arasına .(nokta) koyma fonksiyonuna geldik. Bu fonksiyonu da eklemeniz gerekiyor. Eğer bu fonksiyonu eklemezseniz sistem çalışmaz. Ona göre kodlandı. Şimdi o fonksiyonu eklemeyi göstereceğim:

"questlib.lua" dosyasını açıyoruz ve en alta aşağıdaki kodları ekleyip kapatıyoruz. Reboot atmanıza gerek yok. Başka işlem yapmanıza da gerek yok. "questlib.lua" nın en altına aşağıdaki vermiş olduğum kodu eklemeniz yeterli.


Fonksiyon kodu:
Kod:
function genel_veri(gelen_miktar)     gelen2 = tostring(gelen_miktar)     local gelen = gelen_miktar     local sayac = 10     local basamak = 1     local ilkhal = basamak     while true do         if gelen / sayac >= 1 then             basamak = basamak + 1             sayac = sayac * 10         else             break         end     end     t = {}     sonucText = ""     for i=1, string.len(gelen2) do         t[i]= (string.sub(gelen2,i,i))     end     for k , v in pairs(t) do--1324         if (basamak  == 9 or basamak == 6 or basamak == 3) and sonucText !=  "" then             sonucText = sonucText.."."             sonucText = sonucText..v         else             sonucText = sonucText..v         end         basamak = basamak - 1     end     return sonucText end


Bu işlem de bittikten sonra "quest_functions" dosyasını açıyor ve en alta "genel_veri" fonksiyonunu ekliyoruz. Bura ile de işimiz bitti.


LUA dosyasını okutma:


1-) usr/game/share/locale/turkey/quest bölümüne "alisveris_sistemi.lua" dosyasını atıyoruz. Daha sonra;

2-)Putty'e geliyoruz.

cd /usr/game/share/locale/turkey/quest yazıp enterliyoruz. Daha sonra şu komutu yazıyoruz.

./qc alisveris_sistemi.lua

Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra Offline Alışveriş Sistemini kullanmaya başlayabilirsiniz.

Offline Alışveriş Sistemi[LUA] Nedir?
Metin2 sunucularında kullanıcı deneyimini artırmak için geliştirilen sistemlerden birisi olan Offline Alışveriş Sistemi[LUA], oyuncuların aktif olmasalar bile oyun içi alışverişi gerçekleştirmelerine olanak tanır. Bu sistem sayesinde oyuncular, belirli bir süre aktif olamadıklarında dahi kendi envanterlerini veya mağazalarını yönetebilir, eşya alıp satabilirler. Özellikle Metin2 sunucularında popüler olan bu sistem, LUA script dili kullanılarak geliştirilir ve sunucu tarafında güvenli bir şekilde çalıştırılır.

Sistem Nasıl Çalışır?
Offline Alışveriş Sistemi[LUA], oyuncu giriş yapmadan önce veritabanına kaydedilmiş alışveriş isteklerini işler. Oyuncu sistem üzerinden bir ürün satın almak istediğinde, bu işlem doğrudan veritabanına yazılır ve sistem, oyuncu tekrar aktif olduğunda bu işlemleri gerçekleştirmeye devam eder. Bu, güvenli ve etkili bir yöntemdir çünkü sunucu tıkanıklığına neden olmaz ve oyuncuların zaman kaybetmeden alışveriş yapabilmesini sağlar.

Avantajları Nelerdir?
Bu sistem sayesinde oyuncular, sunucuda aktif olmadıkları zamanlarda dahi oyun içi ekonomiye katkı sağlayabilir. Özellikle ticaret yapan oyuncular için bu büyük bir kolaylıktır. Ayrıca, quest sistemleri ile entegre edildiğinde, oyunculara özel görevlerle eşya alımı gibi işlemler yapılabilir. Örneğin, quest tamamlandığında belirli bir eşya satın alınabilir veya özel bir mağaza açılıp kapatılabilir.

Teknik Detaylar ve Geliştirme
Bu sistem genellikle Metin2 LUA scriptleriyle geliştirilir. Geliştiriciler, quest dosyaları üzerinde değişiklik yaparak sistemi özelleştirebilirler. Quest yazımı sırasında dikkat edilmesi gereken durumlar arasında veritabanı bağlantıları, güvenlik kontrolleri ve hata ayıklama işlemleri yer alır. Debug işlemleri, sistemin doğru çalışması için kritik öneme sahiptir. Quest hataları, sistemde aksaklıklara yol açabileceği için dikkatle test edilmelidir.

Sunucu Tarafında Entegrasyon
Sistemin sunucuya entegrasyonu oldukça kolaydır. Ancak doğru yapılandırılmadığında performans sorunlarına neden olabilir. Özel quest sistemleri ile birleştirildiğinde, oyunculara daha fazla esneklik sunulabilir. Örneğin, daily quest tamamlandığında bir miktar para ile otomatik alışveriş yapılabilir. Bu gibi senaryolar, oyuncu sadakati açısından oldukça faydalıdır.

Güvenlik ve Performans
Offline Alışveriş Sistemi[LUA], doğru şekilde yapılandırıldığında hem güvenli hem de performanslı bir şekilde çalışır. Ancak, sistemde açıklar oluşursa hack ya da exploit riski doğabilir. Bu nedenle, güvenlik önlemleri eksiksiz alınmalıdır. Veritabanı sorguları güvenli olmalı ve tüm işlemler loglanmalıdır. Quest sistemleri ile entegre edilirken, flag ve state kontrolleri mutlaka yapılmalıdır.


What is Offline Shopping System[LUA]?
The Offline Shopping System[LUA], developed to enhance user experience on Metin2 servers, allows players to make in-game purchases even while they are not active. With this system, players can manage their inventories or shops and buy or sell items during periods when they are unable to stay online. This system, which has become popular especially on Metin2 servers, is developed using the LUA scripting language and runs securely on the server side.

How Does It Work?
The Offline Shopping System[LUA] processes shopping requests stored in the database before the player logs in. When a player wants to purchase an item through the system, the transaction is directly written into the database, and the system continues executing these operations once the player becomes active again. This is a secure and efficient method since it doesn't cause server congestion and allows players to shop without wasting time.

What Are Its Advantages?
Thanks to this system, players can contribute to the in-game economy even when they are not actively logged in. This is especially convenient for players involved in trading. Additionally, when integrated with quest systems, actions such as purchasing specific items upon completing a quest can be enabled. For example, after a quest is completed, a certain item can be purchased automatically or a special shop opened or closed.

Technical Details and Development
This system is usually developed using Metin2 LUA scripts. Developers can customize the system by modifying quest files. During quest writing, considerations include database connections, security checks, and debugging procedures. Debug operations are critical for ensuring the system works properly. Since quest errors may cause issues within the system, they must be tested carefully.

Integration on Server Side
Integrating the system into the server is quite straightforward. However, if configured incorrectly, it can lead to performance issues. When combined with custom quest systems, more flexibility can be offered to players. For instance, after a daily quest is completed, automatic shopping can be performed with a certain amount of money. Such scenarios are highly beneficial for increasing player loyalty.

Security and Performance
When properly configured, the Offline Shopping System[LUA] operates both securely and efficiently. However, vulnerabilities in the system may result in risks such as hacking or exploits. Therefore, security measures must be thoroughly implemented. Database queries should be secure, and all transactions must be logged. When integrating with quest systems, flag and state checks must be performed.
 

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

Benzer konular

Geri
Üst Alt