Yang Penceresi Yapımı...

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Tekrardan merhaba arkadaşlar.
Yabancı bir forumda gördüm. Denedim çalışmakta forumdada göremedim hemencecik yeni konu açayım dedim.
Ne işe yarıyor derseniz, kasılırken çok fazla yang düşüyor bildiğiniz üzere buda sohbet akışını bozuyor. bu sistemle sohbetin yanında ufak bir açılıp kapatılabilen bir pencere ekliyoruz ve düşen yanglar orada yazıyor ve sohbet temiz kalıyor...
Bir ufak görsel bırakayım şuraya.

PD2O89.gif





Geçelim yapımına:
1.) Root packini eternexusla açalım.

2.) game.py açıp aşağıdaki kodu aratın ve bir alttaki kod ile değiştirin...
Kod:
def OnPickMoney(self, money):         chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_MONEY % (money))

Kod:
def OnPickMoney(self, money):         self.interface.OnPickMoneyNew(money)

3.) interfacemodule.py açın sırası ile aşağıdaki işlemleri uygulayın.
Bunu aratın
Kod:
CHARACTER_SKILL_TAB = 2
Altında boş bir yere bunu ekleyin.
Kod:
class NewGoldChat(ui.Window):         def __init__(self, parent = None, x = 0, y = 0):             ui.Window.__init__(self)             self.texts = {}             self.parent = parent             self.SpaceBet = 14             self.maxY = 0             self.x = x             self.y = y             self.ColorValue = 0xFFFFFFFF                         self.show = self.Button('Show Yang', x, y+3, self.showYang, 'sanyed_yang/btn_expand_normal.tga', 'sanyed_yang/btn_expand_over.tga', 'sanyed_yang/btn_expand_down.tga')             self.hide = self.Button('Hide Yang', x, y+3, self.hideYang, 'sanyed_yang/btn_minimize_normal.tga', 'sanyed_yang/btn_minimize_over.tga', 'sanyed_yang/btn_minimize_down.tga')             self.show.Hide()             self.Show()         def Button(self, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):             button = ui.Button()             if self.parent != None:                 button.SetParent(self.parent)             button.SetPosition(x, y)             button.SetUpVisual(UpVisual)             button.SetOverVisual(OverVisual)             button.SetDownVisual(DownVisual)             button.SetToolTipText(tooltipText)             button.Show()             button.SetEvent(func)             return button         def showYang(self):             for i in xrange(len(self.texts)):                 self.texts[i].Show()             self.hide.Show()             self.show.Hide()             self.Show()         def hideYang(self):             for i in xrange(len(self.texts)):                 self.texts[i].Hide()             self.hide.Hide()             self.show.Show()             self.Hide()                     def GetMaxY(self):             return self.maxY         def AddGoldValue(self, text):             for i in xrange(len(self.texts)):                 if len(self.texts) == 10 and i == 0:                     self.texts[i].Hide()                 x, y = self.texts[i].GetLocalPosition()                 self.texts[i].SetPosition(x, y-self.SpaceBet)             i = 0             if len(self.texts) == 10:                 for i in xrange(len(self.texts)-1):                     self.texts[i] = self.texts[i+1]                 i = 9             else:                 i = len(self.texts)                         self.texts[i] = ui.TextLine("Tahoma:14")             if self.parent != None:                 self.texts[i].SetParent(self.parent)             self.texts[i].SetPosition(self.x, self.y)             self.texts[i].SetPackedFontColor(self.ColorValue)             self.texts[i].SetHorizontalAlignLeft()             self.texts[i].SetOutline(TRUE)             self.texts[i].SetText(text)             if self.hide.IsShow():                 self.texts[i].Show()             if self.hide.IsShow():                 x, y = self.texts[0].GetLocalPosition()                 x2, y2 = self.hide.GetLocalPosition()                 self.hide.SetPosition(x2, y-10)         def ClearAll(self):             self.Hide()             self.texts = {}             self.show.Hide()             self.show = None             self.hide.Hide()             self.hide = None         def OnRender(self):             if len(self.texts) > 0 and self.hide.IsShow():                 x, y = self.hide.GetGlobalPosition()                 w, h = self.texts[0].GetTextSize()                 grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 0.5))                 grp.RenderBar(x, y+h-6, 108, h*len(self.texts)+4)

Bunu aratın.
Kod:
def __MakeChatWindow(self):

yavaşça aşağıya doğru inin.şu kodu göreceksiniz.
Kod:
self.wndChat.SetOpenChatLogEvent(ui.__mem_func__(self.ToggleChatLogWindow))
altına bunu ekleyin
Kod:
if self.yangText:             self.yangText.Hide()         yangText = self.NewGoldChat(None, wndMgr.GetScreenWidth()/2 - wndChat.CHAT_WINDOW_WIDTH/2 + 600, wndMgr.GetScreenHeight() - wndChat.EDIT_LINE_HEIGHT - 37 + 9)         self.yangText = yangText     def OnPickMoneyNew(self, money):         self.yangText.AddGoldValue("+%s"%(localeInfo.NumberToMoneyString(money)))

Bunu aratın
Kod:
self.wndChat = None
Altına bunu ekleyin.
Kod:
self.yangText = None

Bunu aratın
Kod:
if self.wndChat:             self.wndChat.Destroy()

Altına bunu ekleyin
Kod:
if self.yangText:             self.yangText.ClearAll()

Bunu aratın
Kod:
del self.wndChat
Altına bunu ekleyin
Kod:
del self.yangText

Bunu aratın
Kod:
self.wndChat.Show()
Altına bunu ekleyin
Kod:
self.yangText.Show()

Bunu aratın
Kod:
if self.wndChat:             self.wndChat.Hide()
Altına bunu ekleyin
Kod:
if self.yangText:             self.yangText.Hide()

Bunu aratın
Kod:
self.wndChat,\
Altına bunu ekleyin
Kod:
self.yangText,\

4.)ui.py açın
Bunu aratın
Kod:
class TextLine(Window):

aşağıya doğru yavaşça inin

Bu kodu
Kod:
def __init__(self):
Bununla değiştirin
Kod:
def __init__(self, font = None):

ve gene aşağıdaki bu kodu
Kod:
self.SetFontName(localeInfo.UI_DEF_FONT)
Bununla değiştirin.
Kod:
if font == None:             self.SetFontName(localeInfo.UI_DEF_FONT)         else:             self.SetFontName(font)


Kodlarla işimiz bitti son olarak şu dosyayı indirip arşivden çıkartın ve klasör olarak root içine atın





Tamamdır bu kadar arkadaşlar. Yapamayan olursa clienti başlattığınızda çıkan popup hata ekranının resmini yorum olarak atın yardımcı olurum...
Yang Penceresi Nedir?
Metin2 özel sunucularında kullanıcı arayüzü geliştirmek, oyuncu deneyimini doğrudan etkileyen önemli bir unsurdur. Bu bağlamda Yang penceresi, oyuncuların sahip oldukları para miktarını takip edebilmeleri için kritik öneme sahiptir. Yang, Metin2 oyununda kullanılan sanal para birimidir ve oyuncuların satın alma işlemleri, envanter yönetimi gibi birçok işlemi bu para birimi üzerinden yapılır. Yang penceresi, bu parayı gösteren ve gerekirse belli işlemlerle miktarını güncelleyen bir UI bileşeni olarak tanımlanabilir.

Yang Penceresi Yapımı İçin Gereken Temel Unsurlar
Yang penceresi oluşturabilmek için öncelikle Python GUI (PyGUI) bilgisi ve UIScript yapısına aşinalık gereklidir. Metin2 özel sunucularında UI işlemleri genellikle Python dili kullanılarak yapılır. Bu nedenle py root dosyaları ve uiscript sistematiği iyi bilinmelidir. PyGUI, Python tabanlı arayüz oluşturma framework'üdür ve Metin2 client tarafında UI elementlerinin çalışmasını sağlar.

Yang Penceresi İçin Gerekli Dosya ve Yapılar
Yang penceresi oluşturmak için aşağıdaki yapıları kullanabilirsiniz:
- YangWindow.py (Python script dosyası)
- YangWindow.pyui (UIScript tanımı)
- YangWindow.xml (Görsel yapılandırma dosyası)
Bu dosyalarla birlikte, client tarafında yang miktarının doğru şekilde görüntülenmesi sağlanabilir.

Yang Penceresi Kodlama Adımları
Öncelikle uiscript dosyasında pencerenin konumu, boyutu ve içerdiği butonlar belirlenir. Örneğin, Yang penceresi 800x600 çözünürlüğünde bir ekranda sağ alt köşede konumlandırılabilir. Daha sonra py dosyasında bu pencereye ait fonksiyonlar yazılır. Yang miktarı auth veya game server tarafından gönderilir ve client üzerinde güncellenir. Bu işlem sırasında Python ile C++ arasındaki haberleşme önemlidir.

Hata Ayıklama ve Test
Yang penceresi oluşturulduktan sonra test edilmesi gerekir. Özellikle server-client senkronizasyonunda oluşabilecek aksaklıklar, yang miktarının yanlış gözükmesine yol açabilir. Bu nedenle, DB core ve game core yapıları ile uyumlu çalışması sağlanmalıdır. Ayrıca, paketleme (pack) işlemleri sırasında bu dosyaların doğru şekilde client'e entegre edildiğinden emin olunmalıdır.

Sonuç
Yang penceresi, Metin2 özel sunucularında kullanıcı dostu bir arayüz oluşturmanın temel bileşenlerinden biridir. Doğru yapılandırıldığında, oyuncuların oyun içi varlıklarını daha kolay takip etmelerini sağlar. PyGUI, UIScript ve root yapılarını kullanarak özgün ve işlevsel UI bileşenleri geliştirmek mümkündür.


What is Yang Window?
In Metin2 private servers, improving the user interface is a crucial factor that directly affects the player experience. In this context, the Yang window is critical for players to track their current money amount. Yang is the virtual currency used in Metin2, and many player actions such as purchasing items, inventory management are performed through this currency. The Yang window serves as a UI component that displays this currency and updates its value during certain operations.

Essential Components for Creating a Yang Window
To create a Yang window, knowledge of Python GUI (PyGUI) and familiarity with UIScript structures are required. UI operations in Metin2 private servers are typically handled using Python. Therefore, familiarity with py root files and uiscript mechanics is essential. PyGUI is a Python-based framework for creating user interfaces and enables UI elements to function properly on the Metin2 client side.

Files and Structures Required for Yang Window
The following structures can be used to create a Yang window:
- YangWindow.py (Python script file)
- YangWindow.pyui (UIScript definition)
- YangWindow.xml (Visual configuration file)
Using these files, correct display of the Yang amount on the client side can be ensured.

Coding Steps for Yang Window
Firstly, the position, size, and buttons included in the window are defined in the uiscript file. For instance, the Yang window might be placed at the bottom-right corner of an 800x600 resolution screen. Then, in the py file, functions related to the window are written. The Yang amount is sent by the auth or game server and updated on the client side. During this process, communication between Python and C++ is important.

Debugging and Testing
After the Yang window is created, it must be tested. Sync issues between the server and client may cause incorrect display of the Yang amount. Therefore, compatibility with DB core and game core structures must be ensured. Additionally, during packaging (pack) processes, it must be confirmed that these files are correctly integrated into the client.

Conclusion
The Yang window is one of the fundamental components of creating a user-friendly interface in Metin2 private servers. When properly configured, it allows players to more easily track their in-game assets. Using PyGUI, UIScript, and root structures, it is possible to develop original and functional UI components.​
 

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

Geri
Üst Alt