DEV İstek kısmında Bir Arkadaş İstemişti bende X Bir Forumdan Bulup Bu Forumda olmadığını Gördüğüm için Herkezle Paylaşıyorum
[TABLE=full][TR][TD][/TD][TD][/TD][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][TD] [TABLE=full][TR][TD][/TD][/TR][/TABLE] [/TD][TD][/TD][/TR][/TABLE]
Metin2'de NPC Üzerinden Öğeleri Sıralama Rehberi
Metin2 özel sunucularında geliştirme yaparken, oyuncuların NPC üzerinden öğelere erişimini kolaylaştırmak büyük önem taşır. Bu süreçte, NPC üzerinde sunulan öğelerin mantıklı ve kullanıcı dostu bir şekilde sıralanması gerekir. Bu yazıda, NPC üzerinden öğelerin nasıl sıralanacağını, hangi tekniklerin kullanılacağını ve bunun sunucu performansı üzerindeki etkilerini detaylı olarak ele alacağız.
NPC İteme Göre Sıralama Nedir?
NPC üzerinden öğe sunumu yapılırken, belirli bir sıraya göre listeleme yapılması gerekir. Bu sıralama, genellikle öğe türüne, isim alfabetik sırasına, niteliğine veya rüt değerine göre yapılabilir. Bu sayede oyuncular istedikleri ögeyi daha hızlı bulabilir. Özellikle PvP sistemli sunucularda, eşyaların ve güçlendirici itemlerin kolayca bulunabilir olması oyun içi deneyimi artırır.
Sıralama Yöntemleri ve Uygulamaları
1. Alfabetik Sıralama: Öğelerin ismine göre A-Z sıralaması yapılır. Bu yöntem, oyuncuların belirli bir eşyayı ararken kolayca bulmasını sağlar. Python GUI üzerinden yapılan arayüzlerde bu tür sıralamalar kolaylıkla uygulanabilir.
2. Türüne Göre Sıralama: Örneğin, silahlar, zırhlar, aksesuarlar gibi kategorilere göre gruplanabilir. Bu, kullanıcıların daha organize bir şekilde gezmesini sağlar.
3. Nitelik Derecesine Göre Sıralama: Öğelerin sahip olduğu bonuslara veya güçlendirme seviyesine göre sıralanmasıdır. Özellikle PvP sunucularında bu tür sıralamalar çok tercih edilir.
C++ Kaynak Kodlarında Sıralama Mantığı
Metin2 sunucu tarafında C++ ile geliştirilen sistemlerde, veritabanından alınan öğe listesi std::sort fonksiyonu ile belirli kriterlere göre sıralanabilir. Örneğin:
int compareItems(const Item& a, const Item& b) { return a.getName() < b.getName(); }
Bu fonksiyon, isme göre sıralama yapar. Benzer şekilde, başka parametrelere göre de sıralama yapılabilir. Bu işlemler game core kısmında tanımlanmalıdır.
Python Arayüz Tarafında Sıralama
Py Root dosyalarında, UI üzerinden gösterilen öğeler Python tarafından yönetilir. Py GUI ile geliştirilen menülerde, sorted() fonksiyonu ile liste sıralanabilir. Örneğin:
sorted_items = sorted(item_list, key=lambda x: x.level)
Bu sayede, öğeler seviyeye göre sıralanır ve kullanıcıya daha okunabilir bir liste gösterilir.
Performans Etkileri
Sıralama işlemi, özellikle çok sayıda öğe olduğu durumlarda performansı etkileyebilir. Bu nedenle sıralama algoritmalarının optimize edilmesi ve sunucu tarafında minimum işlem yüküyle çalışması önemlidir. Martysama gibi gelişmiş sistemlerde, bu tür optimizasyonlar önceden planlanmıştır.
Sonuç
NPC üzerinden öğeleri sıralamak, kullanıcı deneyimini artıran küçük ama etkili bir özelliktir. C++, Python ve UI script tarafında yapılan değişikliklerle bu işlem sorunsuzca entegre edilebilir. Metin2 özel sunucularında geliştirme yapan geliştiricilerin dikkat etmesi gereken önemli detaylardan biridir.
Guide to Sorting Items by NPC in Metin2
When developing private Metin2 servers, making items accessible through NPCs in a user-friendly way is crucial. In this process, organizing and sorting the items displayed on NPCs logically is essential. This article will thoroughly examine how to sort items via NPCs, which techniques can be used, and their impact on server performance.
What Is Sorting Items by NPC?
When displaying items via NPCs, they should be listed in a specific order. This sorting may be based on item type, alphabetical name order, attributes, or raw value. By doing so, players can find desired items more quickly. Especially in PvP-based servers, having easily accessible items and power-up equipment enhances the in-game experience.
Sorting Methods and Applications
1. Alphabetical Sorting: Sorting according to the item's name in A-Z order. This method allows players to find a specific item faster. Such sorting can be easily implemented in interfaces created with Python GUI.
2. Sorting by Type: Grouping items like weapons, armors, accessories, etc., helps users navigate more systematically.
3. Sorting by Attribute Level: Sorting based on bonuses or enhancement levels of items. This kind of sorting is highly preferred especially in PvP servers.
Sorting Logic in C++ Source Code
In C++-based systems developed for Metin2 servers, item lists retrieved from the database can be sorted using the std::sort function based on specific criteria. For example:
int compareItems(const Item& a, const Item& b) { return a.getName() < b.getName(); }
This function sorts by name. Similarly, sorting can also be done based on other parameters. These operations must be defined within the game core.
Sorting in Python Interface Side
In Py Root files, items shown via UI are managed by Python. In menus developed with Py GUI, the list can be sorted using the sorted() function. For example:
sorted_items = sorted(item_list, key=lambda x: x.level)
Thus, items are sorted by level, and a more readable list is presented to the user.
Performance Impacts
The sorting process may affect performance, especially when there are many items. Therefore, optimizing sorting algorithms and ensuring minimal server-side processing load is important. In advanced systems like Martysama, such optimizations are planned beforehand.
Conclusion
Sorting items via NPCs is a small but effective feature that enhances user experience. With modifications on C++, Python, and UI script sides, this operation can be seamlessly integrated. It is one of the important details developers working on custom Metin2 servers need to pay attention to.
Kod:
Root/uishop.py: #Arat def Ref#Aratself): Root/uishop.py: # Altına ekle def GetEmptyLines(self): emptyLines = 8 for i in xrange(5): empty = 8 for j in xrange(8): itemIndex = shop.GetItemID(5*j+i) if itemIndex > 0: item.SelectItem(itemIndex) (w, h) = item.GetItemSize() empty -= h if empty < emptyLines: emptyLines = empty return emptyLines Root/uishop.py: # Arat self.itemSlotWindow = GetObject("ItemSlot") Root/uishop.py: # Altına ekle self.board = GetObject("board") Root/uishop.py: # Arat self.itemSlotWindow = 0 Root/uishop.py: # Altına Ekle self.board = 0 Root/uishop.py: # Arat # def Open(self, vid): Root/uishop.py: # değiştir def Open(self, vid): isPrivateShop = FALSE isMainPlayerPrivateShop = FALSE import chr if chr.IsNPC(vid): isPrivateShop = FALSE else: isPrivateShop = TRUE self.board.SetSize(184, 348) self.itemSlotWindow.ArrangeSlot(0, 5, 8, 32, 32, 0, 0) self.itemSlotWindow.RefreshSlot() self.itemSlotWindow.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0) self.btnBuy.SetPosition(21, 292) self.btnSell.SetPosition(104, 292) if player.IsMainCharacterIndex(vid): isMainPlayerPrivateShop = TRUE self.btnBuy.Hide() self.btnSell.Hide() self.btnClose.Show() else: if isPrivateShop == FALSE: EMPTY_LINES = 32 * self.GetEmptyLines() self.board.SetSize(184, 348 - EMPTY_LINES) self.itemSlotWindow.ArrangeSlot(0, 5, 8 - EMPTY_LINES / 32, 32, 32, 0, 0) self.itemSlotWindow.RefreshSlot() self.itemSlotWindow.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0) self.btnBuy.SetPosition(21, 292 - EMPTY_LINES) self.btnSell.SetPosition(104, 292 - EMPTY_LINES) isMainPlayerPrivateShop = FALSE self.btnBuy.Show() self.btnSell.Show() self.btnClose.Hide() shop.Open(isPrivateShop, isMainPlayerPrivateShop) self.Refresh() self.SetTop() self.Show() (self.xShopStart, self.yShopStart, z) = player.GetMainCharacterPosition() //65 slot icin eklesin def Open(self, vid): isPrivateShop = FALSE isMainPlayerPrivateShop = FALSE import chr if chr.IsNPC(vid): isPrivateShop = FALSE else: isPrivateShop = TRUE self.board.SetSize(283, 320) self.itemSlotWindow.ArrangeSlot(0, 8, 8, 32, 32, 0, 0) self.itemSlotWindow.RefreshSlot() self.itemSlotWindow.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0) # self.btnBuy.SetPosition(21, 292) # self.btnSell.SetPosition(104, 292) if player.IsMainCharacterIndex(vid): isMainPlayerPrivateShop = TRUE # self.btnBuy.Hide() # self.btnSell.Hide() self.btnClose.Show() else: if isPrivateShop == FALSE: EMPTY_LINES = 32 * self.GetEmptyLines() self.board.SetSize(283, 320 - EMPTY_LINES) self.itemSlotWindow.ArrangeSlot(0, 8, 8 - EMPTY_LINES / 32, 32, 32, 0, 0) self.itemSlotWindow.RefreshSlot() self.itemSlotWindow.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0) #self.btnBuy.SetPositi#self.btnBuy.SetPosition(21 #self.btnSell.SetPosit#self.btnSell.SetPosition(104 isMainPlayerPrivateShop = FALSE #self.btnBuy.Show() #self.btnBuy.Show(nSell.Show() #self.btnSell.Show(Close.Hide() shop.Open(isPrivateShop, isMainPlayerPrivateShop) self.Refresh() self.SetTop() self.Show() (self.xShopStart, self.yShopStart, z) = player.GetMainCharacterPosition()
Metin2'de NPC Üzerinden Öğeleri Sıralama Rehberi
Metin2 özel sunucularında geliştirme yaparken, oyuncuların NPC üzerinden öğelere erişimini kolaylaştırmak büyük önem taşır. Bu süreçte, NPC üzerinde sunulan öğelerin mantıklı ve kullanıcı dostu bir şekilde sıralanması gerekir. Bu yazıda, NPC üzerinden öğelerin nasıl sıralanacağını, hangi tekniklerin kullanılacağını ve bunun sunucu performansı üzerindeki etkilerini detaylı olarak ele alacağız.
NPC İteme Göre Sıralama Nedir?
NPC üzerinden öğe sunumu yapılırken, belirli bir sıraya göre listeleme yapılması gerekir. Bu sıralama, genellikle öğe türüne, isim alfabetik sırasına, niteliğine veya rüt değerine göre yapılabilir. Bu sayede oyuncular istedikleri ögeyi daha hızlı bulabilir. Özellikle PvP sistemli sunucularda, eşyaların ve güçlendirici itemlerin kolayca bulunabilir olması oyun içi deneyimi artırır.
Sıralama Yöntemleri ve Uygulamaları
1. Alfabetik Sıralama: Öğelerin ismine göre A-Z sıralaması yapılır. Bu yöntem, oyuncuların belirli bir eşyayı ararken kolayca bulmasını sağlar. Python GUI üzerinden yapılan arayüzlerde bu tür sıralamalar kolaylıkla uygulanabilir.
2. Türüne Göre Sıralama: Örneğin, silahlar, zırhlar, aksesuarlar gibi kategorilere göre gruplanabilir. Bu, kullanıcıların daha organize bir şekilde gezmesini sağlar.
3. Nitelik Derecesine Göre Sıralama: Öğelerin sahip olduğu bonuslara veya güçlendirme seviyesine göre sıralanmasıdır. Özellikle PvP sunucularında bu tür sıralamalar çok tercih edilir.
C++ Kaynak Kodlarında Sıralama Mantığı
Metin2 sunucu tarafında C++ ile geliştirilen sistemlerde, veritabanından alınan öğe listesi std::sort fonksiyonu ile belirli kriterlere göre sıralanabilir. Örneğin:
int compareItems(const Item& a, const Item& b) { return a.getName() < b.getName(); }
Bu fonksiyon, isme göre sıralama yapar. Benzer şekilde, başka parametrelere göre de sıralama yapılabilir. Bu işlemler game core kısmında tanımlanmalıdır.
Python Arayüz Tarafında Sıralama
Py Root dosyalarında, UI üzerinden gösterilen öğeler Python tarafından yönetilir. Py GUI ile geliştirilen menülerde, sorted() fonksiyonu ile liste sıralanabilir. Örneğin:
sorted_items = sorted(item_list, key=lambda x: x.level)
Bu sayede, öğeler seviyeye göre sıralanır ve kullanıcıya daha okunabilir bir liste gösterilir.
Performans Etkileri
Sıralama işlemi, özellikle çok sayıda öğe olduğu durumlarda performansı etkileyebilir. Bu nedenle sıralama algoritmalarının optimize edilmesi ve sunucu tarafında minimum işlem yüküyle çalışması önemlidir. Martysama gibi gelişmiş sistemlerde, bu tür optimizasyonlar önceden planlanmıştır.
Sonuç
NPC üzerinden öğeleri sıralamak, kullanıcı deneyimini artıran küçük ama etkili bir özelliktir. C++, Python ve UI script tarafında yapılan değişikliklerle bu işlem sorunsuzca entegre edilebilir. Metin2 özel sunucularında geliştirme yapan geliştiricilerin dikkat etmesi gereken önemli detaylardan biridir.
Guide to Sorting Items by NPC in Metin2
When developing private Metin2 servers, making items accessible through NPCs in a user-friendly way is crucial. In this process, organizing and sorting the items displayed on NPCs logically is essential. This article will thoroughly examine how to sort items via NPCs, which techniques can be used, and their impact on server performance.
What Is Sorting Items by NPC?
When displaying items via NPCs, they should be listed in a specific order. This sorting may be based on item type, alphabetical name order, attributes, or raw value. By doing so, players can find desired items more quickly. Especially in PvP-based servers, having easily accessible items and power-up equipment enhances the in-game experience.
Sorting Methods and Applications
1. Alphabetical Sorting: Sorting according to the item's name in A-Z order. This method allows players to find a specific item faster. Such sorting can be easily implemented in interfaces created with Python GUI.
2. Sorting by Type: Grouping items like weapons, armors, accessories, etc., helps users navigate more systematically.
3. Sorting by Attribute Level: Sorting based on bonuses or enhancement levels of items. This kind of sorting is highly preferred especially in PvP servers.
Sorting Logic in C++ Source Code
In C++-based systems developed for Metin2 servers, item lists retrieved from the database can be sorted using the std::sort function based on specific criteria. For example:
int compareItems(const Item& a, const Item& b) { return a.getName() < b.getName(); }
This function sorts by name. Similarly, sorting can also be done based on other parameters. These operations must be defined within the game core.
Sorting in Python Interface Side
In Py Root files, items shown via UI are managed by Python. In menus developed with Py GUI, the list can be sorted using the sorted() function. For example:
sorted_items = sorted(item_list, key=lambda x: x.level)
Thus, items are sorted by level, and a more readable list is presented to the user.
Performance Impacts
The sorting process may affect performance, especially when there are many items. Therefore, optimizing sorting algorithms and ensuring minimal server-side processing load is important. In advanced systems like Martysama, such optimizations are planned beforehand.
Conclusion
Sorting items via NPCs is a small but effective feature that enhances user experience. With modifications on C++, Python, and UI script sides, this operation can be seamlessly integrated. It is one of the important details developers working on custom Metin2 servers need to pay attention to.
