Official Yükleme Ekranı Bilgi 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 46

Admin

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

root/introloading.py girilir
aratılır

Kod:
self.loadingGage=self.GetChild("FullGage")
altına eklenir
Kod:
self.loadingTip=self.GetChild("LoadingTip")
aratılır
Kod:
width = float(wndMgr.GetScreenWidth()) / float(self.loadingImage.GetWidth())
altına eklenir
Kod:
tipTexts = pack_open(uiScriptLocale.tipList, "r").readlines()         tipID = app.GetRandom(1,len(tipTexts))         for i in xrange(len(tipTexts)):             lines = str(tipTexts[i])             if lines == "\n" or lines == "":                 continue             tokens = lines.split("\t")             tipID_inFile, tipText_inFile = int(tokens[0]), str(tokens[1])             if tipID == tipID_inFile:                 self.loadingTip.SetText(tipText_inFile)
root/uiscriptlocale.py
aratılır

Kod:
LoadLocaleFile(LOCALE_INTERFACE_FILE_NAME, locals())
altına eklenir
Kod:
tipList = "%s/loading_tips.txt" % (name)
root/ui.py
aratılır

Kod:
class ThinBoard(Window):
kod blogundan sonra eklenir
Kod:
class MiddleBoard(Window):     CORNER_WIDTH = 16     CORNER_HEIGHT = 16     LINE_WIDTH = 16     LINE_HEIGHT = 16     BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51)     LT = 0     LB = 1     RT = 2     RB = 3     L = 0     R = 1     T = 2     B = 3     def __init__(self, layer = "UI"):         Window.__init__(self, layer)         CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]         LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]         self.Corners = [*]         for fileName in CornerFileNames:             Corner = ExpandedImageBox()             Corner.AddFlag("attach")             Corner.AddFlag("not_pick")             Corner.LoadImage(fileName)             Corner.SetParent(self)             Corner.SetPosition(0, 0)             Corner.Show()             self.Corners.append(Corner)         self.Lines = [*]         for fileName in LineFileNames:             Line = ExpandedImageBox()             Line.AddFlag("attach")             Line.AddFlag("not_pick")             Line.LoadImage(fileName)             Line.SetParent(self)             Line.SetPosition(0, 0)             Line.Show()             self.Lines.append(Line)         Base = Bar()         Base.SetParent(self)         Base.AddFlag("attach")         Base.AddFlag("not_pick")         Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)         Base.SetColor(self.BOARD_COLOR)         Base.Show()         self.Base = Base         self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)         self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)     def __del__(self):         Window.__del__(self)     def SetSize(self, width, height):         width = max(self.CORNER_WIDTH*2, width)         height = max(self.CORNER_HEIGHT*2, height)         Window.SetSize(self, width, height)         self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)         self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)         self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)         self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)         self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)         verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT         horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH         self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)         self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)         self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)         self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)         self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)     def ShowInternal(self):         self.Base.Show()         for wnd in self.Lines:             wnd.Show()         for wnd in self.Corners:             wnd.Show()     def HideInternal(self):         self.Base.Hide()         for wnd in self.Lines:             wnd.Hide()         for wnd in self.Corners:             wnd.Hide()

aratılır
Kod:
elif Type == "thinboard":                 parent.Children[Index] = ThinBoard()                 parent.Children[Index].SetParent(parent)                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
altına eklenir
Kod:
elif Type == "middleboard":                 parent.Children[Index] = MiddleBoard()                 parent.Children[Index].SetParent(parent)                 self.LoadElementMiddleBoard(parent.Children[Index], ElementValue, parent)
aratılır
Kod:
## ThinBoard     def LoadElementThinBoard(self, window, value, parentWindow):
altına eklenir
Kod:
## MiddleBoard     def LoadElementMiddleBoard(self, window, value, parentWindow):         if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST):             return FALSE         window.SetSize(int(value["width"]), int(value["height"]))         self.LoadDefaultData(window, value, parentWindow)         return TRUE
locale/xx/ui/loadingwindow.py
aratılır

Kod:
## Board         {             "name" : "BackGround",             "type" : "expanded_image",             "x" : 0,             "y" : 0,             "image" : "d:/ymir work/ui/intro/pattern/Line_Pattern.tga",             "x_scale" : float(SCREEN_WIDTH) / 800.0,             "y_scale" : float(SCREEN_HEIGHT) / 600.0,         },
altına eklenir
Kod:
{             "name" : "TipBackground",             "type" : "middleboard",                     "x"    : 0,             "y" : float(SCREEN_HEIGHT) * 500 / 600.0 - 100,                     "width" : SCREEN_WIDTH,             "height" : 100,                     "children" :             (                 {                     "name" : "LoadingTip",                     "type" : "text",                                     "x"    : float(SCREEN_WIDTH) / 2,                     "y" : 40,                                                 "fontsize" : "LARGE",                     "text_horizontal_align" : "center",                 },             ),         },

19.06.2019 tarihine ait official locale packinden sökülmüş yükleme ekranı yazılarıdır.

Alıntıdır..

Official Yükleme Ekranı Bilgi Sistemi Nedir?


Metin2 özel sunucularında kullanıcı deneyimini artırmak ve profesyonel bir görünüm sağlamak adına geliştirilen sistemlerden birisi de Official Yükleme Ekranı Bilgi Sistemi'dir. Bu sistem, oyuncuların oyunu başlatırken karşılaştıkları ilk arayüzde sunulan bilgiyi yönetmeyi amaçlar. Özellikle C++ sistem tabanlı sunucularda, yükleme sırasında sunucuyla ilgili önemli mesajlar, duyurular veya teknik detaylar paylaşılabilir. Bu sayede oyuncular, sunucuya bağlanmadan önce güncel durumdan haberdar edilirler.

Sistem Nasıl Çalışır?
Bu bilgi sistemi genellikle game server tarafında çalıştırılır ve yükleme ekranında gösterilecek olan verileri auth server ile senkronize eder. Oyuncu oyunu açtığında, istemci (client) yükleme sırasında bu bilgileri alır ve ekranda gösterir. Geliştiriciler, bu sistemi uiscript veya py GUI ile entegre ederek görsel olarak daha etkileyici bir arayüz oluşturabilirler.

Neden Kullanılmalıdır?
Özel sunucuların rekabetçi yapısı göz önüne alındığında, kullanıcıyı cezbetmek için her detay önemli olur. Official Yükleme Ekranı Bilgi Sistemi, sunucu sahiplerinin duyuru yapabileceği, yeni özellikler tanıtabileceği ya da oyun içi etkinlikleri duyurabileceği ideal bir platformdur. Ayrıca, source edit sürecinde bu sistemin entegrasyonu, sunucunun genel core yapısına zarar vermeden yapılabilir.

Geliştirme Süreci
Bu sistemi entegre etmek isteyen geliştiriciler, öncelikle C++ kaynak kod üzerinde değişiklik yaparak sunucu tarafını güncellemelidir. Daha sonra, py root klasöründe bulunan GUI dosyalarını düzenleyerek istemci tarafında bilgilerin düzgün görüntülenmesini sağlamalıdır. Bu süreçte Python sistem bilgisi oldukça faydalı olacaktır. Geliştiriciler, Martysama gibi bilindik kaynaklardan destek alabilirler.

Teknik Uygulama Örnekleri
Genellikle, bu sistem db core üzerinden veritabanı bağlantısı kurarak, sunucu tarafından girilen metinleri dinamik olarak yükler. Geliştiriciler, bu verilerin sabit kalması yerine otomatik güncellenmesini sağlayarak daha akıllı bir yapı kurabilirler. Bu sayede PvP sistem duyuruları, turnuva tarihleri gibi bilgiler anlık olarak yükleme ekranında görünebilir.

Sonuç
Official Yükleme Ekranı Bilgi Sistemi, Metin2 özel sunucularında kullanıcı deneyimini artırmanın etkili yollarından biridir. Metin2 development süreçlerinde bu sistemin kullanımı, hem teknik hem de pazarlama açıdan büyük avantaj sağlar. Sunucu sahipleri, oyuna girmeden önce oyunculara aktarmak istedikleri tüm bilgileri bu sistemle kolayca iletebilirler.


What is the Official Loading Screen Info System?


The Official Loading Screen Info System is one of the systems developed to enhance user experience and provide a professional look on Metin2 private servers. This system manages the information presented to players when they first encounter the loading screen upon starting the game. Especially on C++ based servers, important messages, announcements, or technical details related to the server can be shared during loading. Thus, players are informed about the current status even before connecting to the server.

How Does It Work?
This info system generally runs on the game server side and synchronizes the data to be displayed on the loading screen with the auth server. When a player opens the game, the client receives this information during loading and displays it on the screen. Developers can integrate this system via uiscript or py GUI to create a more visually appealing interface.

Why Should It Be Used?
Considering the competitive nature of private servers, every detail matters in attracting users. The Official Loading Screen Info System serves as an ideal platform for server owners to make announcements, introduce new features, or announce in-game events. Moreover, integrating this system during the source edit process can be done without damaging the general core structure of the server.

Development Process
Developers who wish to integrate this system should first update the server-side by modifying the C++ source code. Afterwards, they should ensure that the information is properly displayed on the client side by editing GUI files located in the py root folder. Knowledge of Python systems will be quite useful during this process. Developers can also get support from known resources like Martysama.

Technical Implementation Examples
Usually, this system connects to the database through db core and dynamically loads texts entered by the server. Developers can set up a smarter structure by making these data update automatically instead of remaining static. This allows PvP system announcements, tournament dates, and similar information to appear instantly on the loading screen.

Conclusion
The Official Loading Screen Info System is an effective way to improve user experience on Metin2 private servers. Using this system in Metin2 development processes offers significant advantages both technically and marketing-wise. Server owners can easily convey all information they want to share with players before entering the game via this system.
 

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

Geri
Üst Alt