Neler yeni

Foruma hoş geldin, Ziyaretçi

Metin2Lobby.com Metin2 Private Server Tanıtım Advertising Ve Geliştirme Forumudur.Metin2 pvp serverler,1-99,1-105,1-120,55-120 global serverları paylaş yada ara.
Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Pazar Geçmişi Log Sistemi

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
48,291
Mesajlar
48,601
Tepkime puanı
75
M2 Yaşı
3 yıl 11 ay 10 gün
Trophy Puan
48
Konum
Web sitesi
M2 Yang
488,879
Ticaret : 1 / 0 / 0
Ticaret Oranı : 100%
Merhaba Arkadaşlar :

Bu Zamanlarda En Çok Aranan Sistem Haline Gelen Pazar Geçmişi Logunu Sizlerle Paylaşacağım. Pazarınızda ki İtemi Kimin Aldığını Hangi Saatte Aldığını Ve Ne Zaman Aldığını Görebilirsiniz. Pazar Geçmişi Logu Tablosunu Açmak Ve Kayıtları Görmek İçin Pazar Panelinizde ki Kayıtlar Kısmına Basmanız Yeterlidir. Bu Sayede Kimin Ne Zaman Hangi Saatte Hangi İtemi Aldığını Görebilirsiniz.

Anlatım :

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

Code:

{
"name" : "LogsButton",
"type" : "button",

"x" : 120,
"y" : 295,

"width" : 61,
"height" : 21,

"text" : "Kayitlar",

"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
},

Yukarıda Vermiş Olduğum Kodu En Alta Ekleyin.

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

Code:

import time
import gameInfo


İmportların Arasına Ekleyin.

bcac5f0979.png


Code:

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

Aratın.

Code:

self.kisi = ""
self.pazar = 0

Altına Ekleyin.
faf1dc1cf9.png


Code:

def LoadDialog(self):

Aratın.

Code:

self.btnLogs = GetObject("LogsButton")

Altına Ekleyin.
d77c5f66d1.png


Code:

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

Aratın.

Code:

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

Altına Ekleyin.

Code:

if chr.IsNPC(vid):

Bulun.

Code:

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


Bulun.

Code:

isMainPlayerPrivateShop = TRUE

self.btnBuy.Hide()
self.btnSell.Hide()
self.btnClose.Show()


else:


isMainPlayerPrivateShop = FALSE


self.btnBuy.Show()
self.btnSell.Show()
self.btnClose.Hide()

Değiştirin.

Code:

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


Bulun.

Code:

def Close(self):


Fonksiyonun Altına Ekleyin.

Code:

def AskLogsPrivateShop(self):
self.Board = ui.BoardWithTitleBar()
self.Board.SetSize(376+108+12+130, 306+35)
self.Board.SetCenterPosition()
self.Board.AddFlag('movable')
self.Board.AddFlag('float')
self.Board.SetTitleName('Alışveriş Kayıtların')
self.Board.SetCloseEvent(self.Kapat)
self.Board.Show()

self.ThinBoard = ui.SlotBar()
self.ThinBoard.SetParent(self.Board)
self.ThinBoard.SetSize(351+110+12+130, 260+35)
self.ThinBoard.SetPosition(10, 34)
self.ThinBoard.Show()

self.ListBox=ui.ListBoxScroll()
self.ListBox.SetParent(self.Board)
self.ListBox.SetPosition(10, 34)
self.ListBox.SetSize(345+110+12+130, 255+35)
self.ListBox.Show()

if len(gameInfo.PV_SHOP_LOG) != 0:
for i in xrange(0, len(gameInfo.PV_SHOP_LOG)):
self.ListBox.InsertItem(i, str(gameInfo.PV_SHOP_LOG.split("#")[1]) + ' adlı oyuncu -> ' + str(gameInfo.PV_SHOP_LOG.split("#")[2]) + ' -> ' + localeInfo.NumberToMoneyString(str(gameInfo.PV_SHO P_LOG.split("#")[3])) + "'a satın aldı. " + str(gameInfo.PV_SHOP_LOG.split("#")[4]))
else:
self.ListBox.InsertItem(0, "Henuz bu pazardan item satin alinmadi.")


94ffa9c623.png


Bulun.

Code:

def OnClosePrivateShop(self):


Altına Ekleyin.

Code:

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

ecc7a4c217.png


Code:

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


Bulun.

Code:

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


Değiştirin.

Code:

def AnswerBuyItem(self, flag):


Bulun.

Code:

def AnswerBuyItem(self, flag, itemAdi, itemFiyati, durum):
if flag:
pos = self.itemBuyQuestionDialog.pos
net.SendShopBuyPacket(pos)
##koray- shop - log
if self.kisi != "" and durum == 1 and player.GetElk() > itemFiyati:
net.SendWhisperPacket(self.kisi, '#'+str(itemAdi)+'#'+str(itemFiyati)+'#'+str(time. strftime("[%d:%m:%Y, %H:%M:%S]"))+'#_satin_aldi#')

self.itemBuyQuestionDialog.Close()
self.itemBuyQuestionDialog = None


Fonksiyonu Bununla Değiştirin.
ce8ef957a5.png


Code:

def OnUpdate(self):


Bulun.

Code:

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.

Code:

PV_SHOP_LOG = [*]

Yukarıda ki Kodu Ekleyip Kaydedin.

game.py açın.

Code:

import gameInfo

İmportların Arasına Ekleyin.

Code:

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

Aratın.

Code:

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.
df3aff009e.png


ui.py açın.

Code:

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

Aratın.

Code:

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

Altına Ekleyin.

Code:

class ScriptWindow(Window):

Arayın.

Code:

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))

Üstüne Ekleyin.

Yapamayanlar İçin Hazır Dosyalar : İndirme Linki:

Virüs Total:
Dip Not: Her Zaman Serverinizin Orjinal Pack Dosyalarını Kullanmanızda Fayda Var. Hazır Dosyalar Hata Verebilir. Ve Videoda İtem İsimleri Yabancı Olduğu İçin Sistem Kayıtlarında Yabancı Olarak Gözüküyor O Sistemden Değil Arkadaşın Serverinden Kaynaklanıyor. Sistem Tamamen Türkçe'dir.

Bir RepYeter Turkmmo <span style="color: rgb(51, 51, 51); font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 14px; line-height: 19.6000003814697px; text-align: center; font-weight: bold;"><span style="color: rgb(153, 51, 51);">
Ailesi
smile.png

Pazar Geçmişi Log Sistemi Nedir?

Metin2 özel sunucularında oyun içi ekonomi ve pazar hareketlerini takip edebilmek için kritik öneme sahip olan bir yapıdır Pazar Geçmişi Log Sistemi. Bu sistem sayesinde oyuncuların satın alma, satma ve teklif gibi işlemlerini kayıt altına alarak hem sunucu yöneticileri hem de oyuncular için şeffaf bir işlem geçmişi oluşturulur. Özellikle PvP sistemlerin yoğun olduğu Metin2 özel sunucularında, bu log sistemi oyun içi dengelerin analiz edilmesini sağlar.

Pazar Geçmişi Log Sistemi Nasıl Çalışır?

Pazar Geçmişi Log Sistemi, oyuncuların Market üzerinden gerçekleştirdiği her işlemi veritabanına kaydeder. Satın alma, satış yapma, fiyat belirleme gibi eylemler, DB tabanında özel log tablolarında tutulur. Bu sayede geçmişte hangi ürünün ne kadar fiyata satıldığını, hangi oyuncunun ne zaman işlem yaptığını görüntülemek mümkündür. Bu loglama sistemi genellikle Game Server tarafında C++ kaynak kodlarla entegre edilir. Martysama ve diğer Metin2 geliştirme araçları ile kolayca özelleştirilebilir.

Loglama İçin Gerekli Veriler Nelerdir?

Her log kaydı şu temel bilgileri içerir:
- Oyuncu Adı
- Ürün Adı
- Miktar
- Fiyat
- Tarih ve Saat
- İşlem Türü (Satış/Satın Alma)
Bu bilgiler sayesinde, sunucu sahipleri fiyat manipülasyonlarını tespit edebilir, ekonomik dengeleri gözlemleyebilir ve oyun içi inflasyonu kontrol altında tutabilirler.

Python GUI ile Log Takibi

Python tabanlı GUI sistemler ile logları görsel olarak analiz etmek mümkündür. Py Root klasörlerine entegre edilen GUI arayüzleri sayesinde logları filtreleyebilir, sıralayabilir ve detaylı istatistikler çıkarabilirsiniz. Bu tür Python GUI sistemleri, adminlerin hızlıca işlem geçmişi incelemesini sağlar. Özellikle Uiscript ile entegre edilen bu arayüzler, kullanıcı dostu bir deneyim sunar.

Neden Pazar Geçmişi Log Sistemi Kullanmalıyız?

Metin2 özel sunucularında hile kullanımı, fiyat manipülasyonu gibi durumlar görülebilir. Bu log sistemi sayesinde şüpheli hareketler tespit edilebilir. Ayrıca, oyun içi ekonomi dengesizliklerini analiz etmek için değerli veriler sağlar. Özellikle Core tabanlı sunucularda, DB Core ile entegre çalışan bu sistem, sunucu güvenliğini artırır.

Sistem Entegrasyonu ve Kurulum

Sistemi kurmak için öncelikle Game Sunucusu (Game Server) üzerinde gerekli C++ kodlamaları yapılmalıdır. Auth sunucusuyla senkronize çalışacak şekilde tasarlanmalıdır. Pack dosyalarına eklenen GUI arayüzü ile admin panelinden loglara erişim sağlanabilir. Bu süreçte DB Core ve Game Core yapıları dikkate alınmalıdır. Sistem, Metin2 Development (Metin2Dev) süreçlerine uygun şekilde optimize edilmelidir.

Bu sistem, Metin2 özel sunucularında hem teknik hem de oyun içi denge açısından kritik öneme sahiptir. Geliştiriciler için güçlü bir analiz aracıdır.


What is a Market History Log System?

The Market History Log System is a crucial structure for tracking in-game economy and market movements on Metin2 private servers. This system creates a transparent transaction history for both server administrators and players by logging every action such as buying, selling, and bidding made by players. Especially on Metin2 private servers where PvP systems are intense, this log system allows analysis of in-game balances.

How Does the Market History Log System Work?

The Market History Log System records every transaction made by players on the Market into the database. Actions like purchasing, selling, setting prices are stored in specific log tables within the DB system. This way, it becomes possible to view which item was sold at what price, and which player made a transaction at what time. This logging system is typically integrated with C++ source codes on the Game Server side. It can be easily customized with tools like Martysama and other Metin2 development utilities.

What Data Is Required for Logging?

Each log entry contains the following basic information:
- Player Name
- Item Name
- Quantity
- Price
- Date and Time
- Transaction Type (Sell/Buy)
With this information, server owners can detect price manipulation, observe economic balance, and control in-game inflation.

Tracking Logs with Python GUI[/BR]

It is possible to analyze logs visually using Python-based GUI systems. GUI interfaces integrated into Py Root folders allow filtering, sorting, and generating detailed statistics from logs. These types of Python GUI systems enable admins to quickly review transaction histories. Interfaces integrated with Uiscript provide a user-friendly experience.

Why Should We Use a Market History Log System?

On Metin2 private servers, cheating and price manipulation may occur. This log system helps detect suspicious activities. Additionally, it provides valuable data for analyzing in-game economic imbalances. Particularly on core-based servers, this system integrated with DB Core enhances server security.

System Integration and Installation

To install the system, necessary C++ coding must first be done on the Game Server. It should be designed to work synchronously with the Auth server. Access to logs through an admin panel can be provided via GUI interfaces added to Pack files. During this process, DB Core and Game Core structures should be considered. The system must be optimized according to Metin2 Development (Metin2Dev) processes.

This system is critically important for technical and in-game balance aspects on Metin2 private servers. It serves as a powerful analytical tool for developers.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kaydol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Üye ol
Giriş Yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş Yap

Tema düzenleyici

Tema özelletirmeleri