*Index dosyasını açın
Kod:
pack *
altına
Kod:
item_sil *
ekleyin
*locale/tr/ui/inventorywindow.py açın
bul:
"image" : "d:/ymir work/ui/equipment_bg_without_ring.tga",
değiştir:
"image" : "koray/equipment_bg_without_ring.tga",
Not: with_ring şeklindede olabilir yukardaki şekilde değilse resmi psden kendinize göre düzenleyin
aratın:
Kod:
## MallButton { "name" : "MallButton", "type" : "button", "x" : 118, "y" : 148, "tooltip_text" : uiScriptLocale.MALL_TITLE, "default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga", "over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga", "down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga", },
üstüne ekleyin:
Kod:
{ "name" : "Sil_Slot", "type" : "grid_table", "x" : 118, "y" : 148, "start_index" : 0, "x_count" : 1, "y_count" : 1, "x_step" : 32, "y_step" : 32, },
*game.py açın
Aratın:
Kod:
"MyShopPriceList" : self.__PrivateShop_PriceList,
üstüne ekle:
Kod:
"ItemSil_Index" : self.__ReceiveItemSilIndex, "get_item_value" : self.__GetItemValue, "InputStringStart" : self.ItemSilInputOn, "InputStringEnd" : self.ItemSilGetInputOff,
aratın:
Kod:
def BINARY_ServerCommand_Run(self, line):
üstüne ekleyin:
Kod:
def __ReceiveItemSilIndex(self, index): constInfo.ItemSil_Index = int(index) def __GetItemValue(self): net.SendQuestInputStringPacket(str(constInfo.ItemS il_Slot)) def ItemSilInputOn(self): constInfo.INPUT_IGNORE = 1 def ItemSilGetInputOff(self): constInfo.INPUT_IGNORE = 0
aratın:
Kod:
def OpenQuestWindow(self, skin, idx):
aşağıdaki şekilde değiştir:
Kod:
def OpenQuestWindow(self, skin, idx): if constInfo.INPUT_IGNORE == 1: return self.interface.OpenQuestWindow(skin, idx)
*uiinventory.py açın
importların altına ekleyin
Kod:
import event
aratın:
Kod:
wndEquip.SetOverOutItemEvent(ui.__mem_func__(self. OverOutItem))
alltına ekle:
Kod:
self.GetChild("Sil_Slot").SetSelectEmptySlotEvent( ui.__mem_func__(self.SilEmptySlot))
aratın:
Kod:
def Hide(self):
linkteki kodları üstüne ekleyin:
Kod:
ItemSil_Slot = 0 ItemSil_Index = 0 INPUT_IGNORE = 0
Not: input_ignore varsa tekrar eklemeyin
Daha sonra lua dosyasını quest klasörüne atıp qc çekin ve pack dosyasını klasörünüze atın
İndir:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Tarama:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Metin2 Sunucularında Envanterden Item Silme İşlemi
Metin2 özel sunucularında geliştirme yapan geliştiricilerin sık karşılaştığı konulardan birisi envanterden item silmek veya belirli durumlarda item silme mekanizmalarını doğru şekilde yönetebilmektir. Bu işlem, hem oyuncu deneyimini etkileyen hem de sunucu performansını doğrudan ilgilendiren önemli bir sistemdir. Bu yazıda, Metin2 özel sunucularında envanterden item silme işlemlerini nasıl gerçekleştirebileceğinizi ve bu işlemle ilgili dikkat etmeniz gerekenleri ele alacağız.
Envanter Sistemi Nedir?
Metin2 oyununda envanter, oyuncunun sahip olduğu item'ları taşıdığı temel sistemdir. Oyuncular, bu envanterde item'larını saklar, kullanır, siler ya da başka işlemler gerçekleştirir. Sunucu tarafında geliştirilen sistemlerle bu envanter üzerinde değişiklik yapabilmek mümkündür. Özellikle özel sunucularda, item silme işlemleri otomatikleştirilmiş ya da özel komutlarla yapılmaktadır.
Item Silme Yöntemleri
Oyuncu Komutları ile Silme: Bazı özel sunucularda geliştiriciler, belirli item'ların silinmesini sağlayan komutlar oluştururlar. Örneğin, !deleteitem gibi komutlarla oyuncu envanterinde belirtilen item silinebilir. Bu tür komutlar genellikle admin veya GM seviyesindeki kullanıcılar tarafından kullanılır.
Sunucu Tarafında Otomatik Silme: Bazı durumlarda, belirli event'ler sonrasında item'lar otomatik olarak silinir. Örneğin, bir item kullanıldığında, süresi bittiğinde veya başka bir sistemle tetiklendiğinde silinmesi sağlanabilir. Bu tür işlemler genellikle C++ veya Python tabanlı sistemlerle yapılır.
C++ ile Envanterden Item Silme
C++ sistemlerde Metin2 sunucusunun çekirdek dosyalarında değişiklik yaparak item silme işlemini doğrudan oyun motoruna entegre edebilirsiniz. Bu işlem genellikle CHARACTER_MANAGER.cpp veya ITEM_MANAGER.cpp gibi dosyalarda gerçekleştirilir. Geliştiriciler, belirli fonksiyonlar aracılığıyla envanterdeki item'ları ID'ye göre bulup silebilirler. Örneğin, CHARACTER::RemoveItem fonksiyonu kullanılarak item silme işlemi başlatılabilir.
Python ile Envanterden Item Silme
Python tabanlı sistemlerde, Metin2 sunucusu üzerinde çalışan script'ler ile envanterdeki item'lar kontrol edilip silinebilir. Özellikle py root klasöründe yer alan script'lerle oyuncunun envanterine erişim sağlanabilir. Bu sayede GUI üzerinden ya da belirli event'lerle item silme işlemleri yapılabilir. Python ile yapılan bu işlemler, genellikle daha esnek ve hızlı geliştirme süreçlerinde tercih edilir.
DB Tabanlı Item Silme
Veritabanı (DB) üzerinde yapılan işlemler, doğrudan envanterden item silmeye yarar. Oyuncunun item'ları DB'de tutulduğu için, burada yapılan silme işlemleri kalıcıdır. Ancak bu işlem manuel olarak yapıldığında dikkatli olunmalıdır. Yanlışlıkla item silmek, oyuncunun kayıplarına neden olabilir. Bu nedenle, DB üzerinde yapılan işlemlerde mutlaka yedek alınmalı ve test ortamında denenmelidir.
Güvenlik ve Performans Açısından Dikkat Edilmesi Gerekenler
Item silme işlemleri sırasında güvenlik ön plandadır. Hatalı bir işlem, oyuncunun item'larını kaybetmesine veya sunucuda hata oluşmasına neden olabilir. Bu yüzden, geliştiriciler bu işlemleri yaparken dikkatli olmalı ve test ortamlarında denemelidir. Ayrıca, sunucu tarafında item silme işlemleri fazla sıklıkla yapıldığında performans sorunlarına yol açabilir. Bu nedenle, silme işlemleri optimize edilmeli ve gerekli kontroller yapılmalıdır.
Sonuç
Metin2 özel sunucularında envanterden item silme işlemleri, sunucu yönetiminde önemli bir yere sahiptir. Hem C++ hem de Python tabanlı sistemlerde bu işlem yapılabilirken, DB üzerinde manuel müdahaleler dikkatle yapılmalıdır. Doğru uygulandığında, bu sistemler sunucu deneyimini ciddi anlamda iyileştirebilir.
Deleting Items from Inventory in Metin2 Servers
One of the common challenges faced by developers working on custom Metin2 servers is deleting items from the inventory or properly managing item removal mechanisms under certain conditions. This process directly affects both the player experience and server performance. In this article, we will examine how to delete items from inventory in Metin2 private servers and the key considerations you need to keep in mind during this process.
What Is the Inventory System?
In the game Metin2, the inventory is the main system where players store their items. Players can store, use, delete, or perform other actions with these items. On the server-side, modifications to this inventory can be made through custom systems. Particularly in private servers, item deletion processes are often automated or handled via special commands.
Methods for Deleting Items
Deleting via Player Commands: Some private servers implement commands that allow specific items to be deleted. For instance, commands like !deleteitem can be used to remove a specified item from a player's inventory. Such commands are typically reserved for admin or GM level users.
Automatic Deletion on Server-Side: In some cases, items are automatically removed after certain events occur. For example, an item might be deleted upon usage, expiry, or being triggered by another system. These types of operations are generally implemented using C++ or Python-based systems.
Deleting Items from Inventory with C++
Within C++ based systems, you can integrate item deletion directly into the game engine by modifying core files of the Metin2 server. This usually involves files such as CHARACTER_MANAGER.cpp or ITEM_MANAGER.cpp. Developers can locate and remove items in the inventory based on their IDs using specific functions. For example, the CHARACTER::RemoveItem function can initiate the deletion process.
Deleting Items from Inventory with Python
In Python-based systems, scripts running on the Metin2 server can access and delete items from the inventory. Scripts located in the py root folder allow access to the player’s inventory. This enables deletion of items either through a GUI or via specific events. Python-based implementations are often preferred in flexible and rapid development scenarios.
Database-Based Item Deletion
Operations performed directly on the database (DB) allow for permanent deletion of items from the inventory. Since player items are stored in the database, deletions here are permanent. However, manual DB operations must be done carefully. Removing an item incorrectly could result in a player losing valuable assets. Therefore, backups should always be taken before making any direct DB changes, and testing should be done in a controlled environment.
Security and Performance Considerations
Security is paramount when performing item deletion operations. An error could cause a player to lose items or trigger errors on the server. Thus, developers must be cautious and conduct tests in safe environments. Moreover, frequent item deletion operations on the server side can lead to performance issues. Therefore, deletion operations should be optimized and necessary checks applied.
Conclusion
Deleting items from inventory in Metin2 private servers plays a crucial role in server management. Whether using C++ or Python-based systems, or even manual DB interventions, care must be taken. When correctly implemented, these systems can significantly enhance the overall server experience.
