New Loading TIP Info System without Source by: Grzyb [2024]

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
I did a job for someone once, and when I saw Mali's code from 2020, I was stunned by how many unnecessary packets and lines of code it sends.

Birine bir kere iş yaptım ve Mali'nin 2020'den kalma kodunu gördüğümde, ne kadar gereksiz paket ve kod satırı gönderdiğini görünce şaşkına döndüm.

204738_1d4af28873afd52c347da31818750e83.png

Code:
Kod:
locale_game.txt NEW_KOMUNIKAT1    Testowy Komunikat Jeden NEW_KOMUNIKAT2    Testowy Komunikat Dwa NEW_KOMUNIKAT3    Testowy Komunikat Trzy NEW_KOMUNIKAT4    Testowy Komunikat Cztery NEW_KOMUNIKAT5    Testowy Komunikat Piec NEW_KOMUNIKAT6    Testowy Komunikat Szesc ui.py class MiddleBoard(Window):     CORNER_WIDTH = 16     CORNER_HEIGHT = 16     LINE_WIDTH = 16     LINE_HEIGHT = 16     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"] ]         Base = ExpandedImageBox()         Base.AddFlag("not_pick")         Base.LoadImage("d:/ymir work/ui/cien.png")         Base.SetParent(self)         Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)         Base.Show()         self.Base = Base         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)         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)         if self.Base:             self.Base.SetRenderingRect(0, 0, (float(width)-32)/float(self.Base.GetWidth()) - 1.0, (float(height)-32)/float(self.Base.GetHeight()) - 1.0)     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() and             elif Type == "middleboard":                 parent.Children[Index] = MiddleBoard()                 parent.Children[Index].SetParent(parent)                 self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) introloading.py add import: import background import random Find: self.loadingGage=self.GetChild("FullGage") add after: self.loadingTip2=self.GetChild("LoadingTip") Find:     def LoadData(self, playerX, playerY): and add:     def LoadData(self, playerX, playerY):         grzybovh = [             localeInfo.NEW_KOMUNIKAT1,             localeInfo.NEW_KOMUNIKAT2,         ]         grzybovh2 = [             localeInfo.NEW_KOMUNIKAT3,             localeInfo.NEW_KOMUNIKAT4,         ]         grzybovh3 = [             localeInfo.NEW_KOMUNIKAT5,             localeInfo.NEW_KOMUNIKAT6,         ]     #Here you can add any maps, names from atlasinfo         if background.GetCurrentMapName() == "metin2_map_a1":             self.loadingTip2.SetText(random.choice(grzybovh))         elif background.GetCurrentMapName() == "metin2_map_c1":             self.loadingTip2.SetText(random.choice(grzybovh2))         else:             self.loadingTip2.SetText(random.choice(grzybovh3)) uiscript/introloading.py         {             "name": "TipBackground",             "type": "middleboard",             "x": float(SCREEN_WIDTH) / 2 - (SCREEN_WIDTH / 4),             "y": float(SCREEN_HEIGHT) * 500 / 600.0 - 50,             "width": SCREEN_WIDTH / 2,             "height": 50,             "children": [                 {                     "name": "LoadingTip",                     "type": "text",                     "x": float(SCREEN_WIDTH) / 4,                     "y": 16,                     "text": " ",                     "text_horizontal_align": "center",                     "fontsize": "LARGE",                 },             ],         },

Yeni Yükleniyor Ekranı Sistemi Tanıtımı: Grzyb Tarafından Geliştirilen Kaynak Kodu Olmayan TIP Bilgi Sistemi (2024)

Metin2 özel sunucularında kullanıcı deneyimini artırmak amacıyla geliştirilen sistemlerden biri de Grzyb tarafından paylaşılan yeni yükleniyor ekranı sistemidir. Bu sistem, sunucu tarafında oyun başlatılırken oyunculara çeşitli bilgileri aktarmak için kullanılır. Kaynak koda ihtiyaç duymadan çalışabilmesi, birçok geliştirici tarafından tercih edilmesinin temel nedenlerinden biridir. Özellikle Metin2 özel sunucu geliştirme dünyasında, kullanıcıya bilgi verme konusunda etkili ve estetik bir yöntemdir.

Sistem Özellikleri ve Kullanım Alanları

Bu sistem sayesinde, oyuncuların karakter seçimi sonrası sunucuya giriş yaparken karşılaştıkları yükleme ekranında dinamik olarak değişen bilgiler gösterilebilir. Örneğin, güncel sunucu duyuruları, PvP sistemleri, ödüllü etkinlikler veya sunucu içi özel kurallar gibi önemli bilgiler bu ekranda sergilenebilir. Sistem, C++ veya Python tabanlı sunucu yapılarına entegre edilebilir ve client tarafında herhangi bir değişiklik gerektirmez.

Yükleniyor Sisteminin Avantajları

Kaynak kod gerektirmemesi sayesinde, hem yeni başlayan hem de profesyonel düzeydeki geliştiriciler için oldukça kullanıcı dostudur. Oyun içi UI Script dosyalarıyla kolayca entegre edilebilir. Aynı zamanda, Python GUI ile hazırlanan arayüzlerle de uyumlu çalışmaktadır. Bu sayede geliştiriciler, sistem üzerinde özelleştirme yapabilir ve sunucularına özel bir dokunuş kata bilirler.

Sistemin Kurulumu ve Entegrasyonu

Sistemin kurulumu oldukça basittir. Game server tarafında gerekli ayarlamalar yapıldıktan sonra, client tarafında herhangi bir değişiklik yapılmasına gerek yoktur. Ancak bazı durumlarda, yükleme ekranının görünümünü özelleştirmek isterseniz uiscript dosyalarında küçük değişiklikler yapmanız gerekebilir. Bu da genellikle root dizininde yer alan dosyalarda yapılır. Sistem aynı zamanda Martysama veya diğer popüler Metin2 frameworkleriyle de uyumlu çalışmaktadır.

Oyuncu Deneyimini Artırmada Rolü

Bu tip sistemler, oyuncuların sunucuya giriş yaparken daha fazla bilgi sahibi olmasını sağlar. Ayrıca, sunucu yöneticileri için de etkili bir duyuru aracıdır. DB Core ve Game Core yapıları üzerinde yapılan düzenlemelerle, bilgiler sunucu tarafında dinamik olarak değiştirilebilir. Böylece her gün farklı içerikler gösterilebilir. Bu, oyuncuların ilgisini çekecek ve sunucuya olan bağlılığını artıracaktır.

Sonuç

Grzyb tarafından geliştirilen bu sistem, Metin2 özel sunucu geliştiricileri için harika bir araçtır. Source edit gerektirmemesi, kullanım kolaylığı ve özelleştirilebilir yapısıyla dikkat çeker. Metin2 Lobby olarak, bu tip yenilikçi projeleri takip etmeyi ve topluluğa sunmayı sürdürüyoruz.


New Loading Screen System Introduction: TIP Information System Without Source Code by Grzyb (2024)

One of the systems developed to enhance the user experience in Metin2 private servers is the new loading screen system shared by Grzyb. This system is used to convey various information to players during the game startup on the server side. Its ability to work without requiring source code is one of the main reasons why many developers prefer it. In the world of Metin2 private server development, it serves as an effective and aesthetic method for delivering information to users.

System Features and Usage Areas

Thanks to this system, dynamic information can be displayed on the loading screen that players encounter after character selection when entering the server. For example, current server announcements, PvP systems, rewarded events, or special in-game rules can be showcased on this screen. The system can be integrated into C++ or Python-based server structures and does not require any client-side modifications.

Advantages of the Loading Screen System

Its lack of need for source code makes it very user-friendly for both beginner and advanced-level developers. It can be easily integrated with UI Script files within the game. Additionally, it works well with interfaces prepared using Python GUI. This allows developers to customize the system and add unique touches to their servers.

Installation and Integration of the System

Installing the system is quite simple. After making necessary adjustments on the game server side, no changes are required on the client side. However, in some cases, if you wish to customize the appearance of the loading screen, minor modifications may be needed in the uiscript files. These are usually made in files located in the root directory. The system also works compatibly with popular frameworks like Martysama.

Role in Enhancing Player Experience

Such systems allow players to become more informed upon entering the server. Additionally, they serve as an effective announcement tool for server administrators. With adjustments made on DB Core and Game Core structures, information can be dynamically changed on the server side. Thus, different content can be displayed each day. This will attract player interest and increase their loyalty to the server.

Conclusion

The system developed by Grzyb is an excellent tool for Metin2 private server developers. It stands out due to its lack of need for source edits, ease of use, and customizable structure. As Metin2 Lobby, we continue to follow and present such innovative projects to the community.
 

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

Benzer konular

Geri
Üst Alt