*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.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
- <li data-xf-list-type="ul">daha sonra yukarıdaki sitedeki kodu en altına ekleyin
*uishop.py dosyasını açın.
Kod:
import time import gameInfo
- <li data-xf-list-type="ul">Importların arasına ekleyin
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
Kod:
def LoadDialog(self):
- <li data-xf-list-type="ul">aratın
Kod:
self.btnLogs = GetObject("LogsButton")
altına ekleyin
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
- <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()
- <li data-xf-list-type="ul">bulun
Kod:
def Close(self):
- <li data-xf-list-type="ul">fonksiyonun altına ekleyin
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
- <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()
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
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
- <li data-xf-list-type="ul">fonksiyonu yukarıdaki sitedeki kodlarla değiştirin
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
*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 -> ' + bol[1] + ' -> ' + 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
*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 < 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 < 0: scrollLen = 0 self.SetBasePos(int(self.scrollBar.GetPos()*scroll Len))
- <li data-xf-list-type="ul">üstüne ekleyin
Hazır dosyalar:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
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.
