Pazar geçmişi log 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 113

Admin

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



*uiscript/shopdialog.py dosyasını açın


  • <li data-xf-list-type="ul">"name" : "CloseButton", aratın. <li data-xf-list-type="ul">"x" : 0, bulun. <li data-xf-list-type="ul">"x" : -25, şeklinde değiştirin.




  • <li data-xf-list-type="ul">daha sonra yukarıdaki sitedeki kodu en altına ekleyin


96ae31e876.png




*uishop.py dosyasını açın.

Kod:
import time import gameInfo


  • <li data-xf-list-type="ul">Importların arasına ekleyin

bcac5f0979.png



Kod:
class ShopDialog(ui.ScriptWindow): def __init__(self):


  • <li data-xf-list-type="ul">aratın

Kod:
self.kisi = "" self.pazar = 0




  • <li data-xf-list-type="ul">altına ekleyin

faf1dc1cf9.png



Kod:
def LoadDialog(self):


  • <li data-xf-list-type="ul">aratın

Kod:
self.btnLogs = GetObject("LogsButton")

altına ekleyin

d77c5f66d1.png



Kod:
self.btnClose.SetEvent(ui.__mem_func__(self.AskClo sePrivateShop))

  • <li data-xf-list-type="ul">aratın

Kod:
self.btnLogs.SetEvent(ui.__mem_func__(self.AskLogs PrivateShop)) ##koray- shop - log


  • <li data-xf-list-type="ul">altına ekleyin

Kod:
if chr.IsNPC(vid):


  • <li data-xf-list-type="ul">bulun

Kod:
if chr.IsNPC(vid): self.pazar = 0 isPrivateShop = FALSE self.kisi = chr.GetNameByVID(vid) else: self.kisi = chr.GetNameByVID(vid) self.pazar = 1 isPrivateShop = TRUE

kodu tamamen değiştirin

d08dadee5b.png



  • <li data-xf-list-type="ul">bulun

Kod:
isMainPlayerPrivateShop = TRUE self.btnBuy.Hide() self.btnSell.Hide() self.btnClose.Show() else: isMainPlayerPrivateShop = FALSE self.btnBuy.Show() self.btnSell.Show() self.btnClose.Hide()


  • <li data-xf-list-type="ul">değiştirin


Kod:
isMainPlayerPrivateShop = TRUE self.btnBuy.Hide() self.btnSell.Hide() self.btnLogs.Show() self.btnClose.Show() else: isMainPlayerPrivateShop = FALSE self.btnBuy.Show() self.btnSell.Show() self.btnClose.Hide() self.btnLogs.Hide()


4c1b03bc87.png



  • <li data-xf-list-type="ul">bulun

Kod:
def Close(self):


  • <li data-xf-list-type="ul">fonksiyonun altına ekleyin



94ffa9c623.png



  • <li data-xf-list-type="ul">bulun

def OnClosePrivateShop(self):


  • <li data-xf-list-type="ul">altına ekleyin

Kod:
def Kapat(self): self.Board.Hide() self.ThinBoard.Hide() self.ListBox.Hide()

ecc7a4c217.png



Kod:
itemBuyQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerBuyItem(arg)) itemBuyQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerBuyItem(arg))


  • <li data-xf-list-type="ul">bulun

Kod:
itemBuyQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.AnswerBuyItem(arg, itemName, itemPrice, 1)) itemBuyQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerBuyItem(arg, itemName, itemPrice, 0))




  • <li data-xf-list-type="ul">değiştirin


Kod:
def AnswerBuyItem(self, flag):


  • <li data-xf-list-type="ul">bulun




  • <li data-xf-list-type="ul">fonksiyonu yukarıdaki sitedeki kodlarla değiştirin


ce8ef957a5.png



Kod:
def OnUpdate(self):


  • <li data-xf-list-type="ul">bulun

Kod:
if self.pazar == 1: self.GetChild("TitleName").SetText(str(self.kisi) + " - Dükkan") else: self.GetChild("TitleName").SetText("Dükkan")

en altına ekleyin

afff30fc76.png



*gameInfo.py oluşturun

Kod:
PV_SHOP_LOG = [*]


  • <li data-xf-list-type="ul">yukarıdaki kodu ekleyip kayıt edin


*game.py açın

Kod:
import gameInfo


  • <li data-xf-list-type="ul">Importların arasına ekleyin


Kod:
def OnRecvWhisper(self, mode, name, line):

aratın

Kod:
if line.find("#_satin_aldi#") != -1:  bol = line.split('#') chat.AppendChat(chat.CHAT_TYPE_INFO, name + ' adlı oyuncu -&gt; ' + bol[1] + ' -&gt; ' + localeInfo.NumberToMoneyString(bol[2]) + "'a satın aldı " + str(bol[3])) gameInfo.PV_SHOP_LOG.append("#"+name+'#'+bol[1]+'#'+bol[2]+'#'+bol[3]+'#') return

yukarıdaki kodu fonksiyona ekleyin

df3aff009e.png



*ui.py açın

Kod:
elif Type == "listbox": parent.Children[Index] = ListBox() parent.Children[Index].SetParent(parent) self.LoadElementListBox(parent.Children[Index], ElementValue, parent)


  • <li data-xf-list-type="ul">aratın

Kod:
elif Type == "listbox_scroll":  parent.Children[Index] = ListBoxScroll() parent.Children[Index].SetParent(parent) self.LoadElementListBox(parent.Children[Index], ElementValue, parent)


  • <li data-xf-list-type="ul">altına ekleyin


Kod:
class ScriptWindow(Window):


  • <li data-xf-list-type="ul">arayın

Kod:
class ListBoxScroll(ListBox): def __init__(self): ListBox.__init__(self) self.scrollBar = ScrollBar() self.scrollBar.SetParent(self) self.scrollBar.SetScrollEvent(self.__OnScroll) self.scrollBar.Hide() def SetSize(self, width, height): ListBox.SetSize(self, width - ScrollBar.SCROLLBAR_WIDTH, height) Window.SetSize(self, width, height) self.scrollBar.SetPosition(width - ScrollBar.SCROLLBAR_WIDTH, 0) self.scrollBar.SetScrollBarSize(height) def ClearItem(self): ListBox.ClearItem(self) self.scrollBar.SetPos(0) def _LocateItem(self): ListBox._LocateItem(self) if self.showLineCount &lt; len(self.itemList): self.scrollBar.SetMiddleBarSize(float(self.GetView ItemCount())/self.GetItemCount()) self.scrollBar.Show() else: self.scrollBar.Hide() def __OnScroll(self): scrollLen = self.GetItemCount()-self.GetViewItemCount() if scrollLen &lt; 0: scrollLen = 0 self.SetBasePos(int(self.scrollBar.GetPos()*scroll Len))

  • <li data-xf-list-type="ul">üstüne ekleyin



Hazır dosyalar:






Pazar Geçmişi Log Sistemi Nedir?
Metin2 özel sunucularında güvenilirlik ve deneyim sunumu açısından pazar geçmişi log sistemi büyük önem taşır. Bu sistem, oyuncuların gerçekleştirdiği alım-satım, takas, satış gibi pazar işlemleri hakkında detaylı geçmiş verileri tutar. Bu sayede hem sunucu yöneticileri hem de oyuncular geçmişe dönük analiz yapabilir. Bu yazıda, Metin2 özel sunucularında pazar geçmişi log sistemi nasıl kurulur, hangi avantajları sağlar ve nasıl optimize edilir ele alacağız.

C++ Kaynak Kod ve Python Entegrasyonu
Pazar geçmişi log sistemi genellikle game server tarafında C++ tabanlı bir yapıya sahiptir. Oyuncu bir eşyayı sattığında veya satın aldığında, bu işlem bir fonksiyon yardımıyla veritabanına (db) yazılır. Bu süreçte auth server ve game server senkronize çalışmalıdır. Martysama veya diğer Metin2 development kaynaklarında bu yapılar genellikle modüler olarak sunulur. Python ile yazılmış yardımcı sistemler (py gui, py root) ile bu log verileri daha kolay analiz edilebilir.

Loglama Ne Zaman Gereklidir?
Oyuncuların güvenli bir şekilde eşya alım-satımı yapabildiği bir ortamda, her işlemin loglanması sayesinde hile kullanımı tespit edilebilir. Ayrıca, Metin2 PvP sistem sunucularında nadir itemlerin dolaşımını takip etmek için bu log sistemi kritik öneme sahiptir. Her işlemde timestamp, player_id, item_name, quantity, price gibi bilgiler veritabanına işlenmelidir.

Sistem Kurulumu Adımları
1. Game server üzerinde pazar geçmişi için bir tablo oluşturulur. Örneğin: market_log.
2. Eşya satıldığında C++ script ile log fonksiyonu çağrılır.
3. Py root üzerinden bu loglar analiz edilir veya admin paneli ile gösterilir.
4. Source edit işlemleriyle loglama seviyesi ayarlanabilir (örneğin sadece belirli değer üstü satışlar loglanabilir).

Güvenlik Açıkları ve Dikkat Edilmesi Gerekenler
Log sistemi, doğru yapılandırılmadığında sunucuda performans düşüşüne neden olabilir. Özellikle log sayısı çok fazla artarsa, DB core üzerinde ciddi bir yük yaratır. Bu yüzden log verileri düzenli olarak arşivlenmeli veya eski veriler silinmelidir. Ayrıca, log verileri dışsal saldırılara karşı korunmalıdır. Bu sistemlerde uiscript tabanlı arayüzler ile adminler için kullanıcı dostu paneller geliştirilebilir.

Faydaları
- Sunucudaki hileleri tespit etme imkanı sunar.
- Oyuncular arasında şeffaflık sağlar.
- Sunucu ekonomisinin analiz edilmesini sağlar.
- PvP sistemlerinde item dolaşımını takip etmeyi mümkün kılar.

Sonuç
Metin2 özel sunucularında pazar geçmişi log sistemi, profesyonel yönetim ve kullanıcı güvenliği için oldukça faydalıdır. C++ ve Python tabanlı sistemlerle entegre bir yapı kurularak bu loglamalar verimli bir şekilde kullanılabilir. Metin2Dev toplulukları bu tür sistemleri paylaşarak gelişime açık bir yapı oluştururlar. Metin2Lobby olarak bu tür gelişmiş sistemler hakkında güncel kaynaklar sunmaya devam ediyoruz.


What is Market History Log System?
In Metin2 private servers, market history log system is crucial for reliability and user experience. This system stores detailed records of player transactions such as buying, selling, and trading items on the market. It allows both server administrators and players to analyze past activities. In this article, we will discuss how to implement market history log system in Metin2 private servers, its benefits and optimization techniques.

C++ Source Code and Python Integration
The market history log system is typically based on a C++ structure within the game server. When a player sells or purchases an item, the action is recorded into the database (db) via a function call. During this process, auth server and game server must work synchronously. In sources like Martysama or other Metin2 development repositories, these structures are usually provided in modular formats. Helper systems written in Python (py gui, py root) allow easier analysis of these logs.

When is Logging Required?
In environments where players securely trade items, logging every transaction helps detect cheating attempts. Moreover, in Metin2 PvP systems, tracking circulation of rare items requires such log systems. Every transaction should record details like timestamp, player_id, item_name, quantity, price in the database.

System Installation Steps
1. Create a table for market history in the game server, e.g., market_log.
2. Call a C++ script function to log the transaction when an item is sold.
3. Analyze logs through py root or display them on admin panels.
4. Adjust logging level with source edit operations (e.g., only log sales above a certain price).

Security Risks and Precautions
If not properly configured, the log system may cause performance drops. Especially when log entries grow excessively, they can create significant load on the DB core. Therefore, log data should be archived regularly or old entries removed. Additionally, log data must be protected against external attacks. User-friendly panels for admins can be developed using uiscript-based interfaces.

Benefits
- Helps detect cheating on the server.
- Provides transparency among players.
- Enables analysis of server economy.
- Allows tracking item flow in PvP systems.

Conclusion
In Metin2 private servers, market history log system is highly beneficial for professional management and user security. By establishing an integrated structure based on C++ and Python, these logs can be efficiently utilized. Metin2Dev communities share such systems to foster open-source development. Metin2Lobby continues to provide updated resources on such advanced systems.​
 

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

Benzer konular

Geri
Üst Alt