Selamlar, Forumda çok aradım ve bulamadım bir türlü bir npcden farklı kategoriler oluşturup cube açma sistemini 3 gun uğraştıktan sonra olayı çözdüm paylaşmak istiyorum ihtiyacı olan yararlansın.
Sistem bu;
Şimdi benim bulduğum çözüm yolu alternatif cube sistemi vs değil ufak bi yanıltma olcak yaptığım şu aslında, bir npcden bir quest fonksiyonu yardımıyla herhangi başka bir npcnın cubesine ulaşmayı göstericem bu sayede mesala bir npcye tıkladığınızda ilk seçenekten o npcnın kendi cubesini 2. secenekten baska bir npcnin cubesini 3. secenekten baska vs vs.
Jae-Seon Kim adlı npcden Yu-Hwanda'a tanımlı olan (cube.txt içinde Yu-Hwan'ın vnumunun kullanıldığı kısımlar) item listesini yani cube penceresini açıyorum burda;
Şimdi bu cube sisteminin olayı, quest içinde command("cube open") fonksiyonunu kullandığımız npcnin üzerinden geçiyor,
biz npcye tıkladığımız an game source icerisinde o npcyi bir obje olarak alıp vnumunu cube.txt içindeki vnumlarla karşılaştırıp sonradan kullanmak için itemleri listeliyor vs.
Npcye tıkladığımız andaki o npcnin id si game sourceye gidiyor ve bir sabit değişkene atanıyor
ben de bir quest fonksiyonu oluşturup bu game sourcedeki sabit değişkeni değiştiriyorum ve sanki farklı bir npcye tıklamışım gibi algılamasını istiyorum, yani olay şu;
Ilk when bloğunda 20383 kodlu npc normal bir şekilde çalışıyor ama 2. when blokğunda 20383 kodlu npcye tıkladığımda ilk önce o npcnin idsi game sourceye gidiyor sonrasından kendi ürettiğim select_npc_by_vnum(int npcVnum) fonksiyonu ile başka bir npcnın idsini game sourceye yolluyorum yani farklı bir npcyi açmış gibi gosteriyorum ve o npcnin cubesini açıyor bana, yani bir npcde birden fazla npcnin cubesını kullanabıleceğim bir durum oluştu şuan
peki olayı anlattım devamı olan kodlar da şu şekilde
önce quest fonksiyonumuzu oluşturacağız;
questlua_global.cpp dosyasını açıyoruz;
int _find_npc_by_vnum(lua_State* L) fonksiyonunu tanımlandıktan sonra bir fonksiyon tanımlıyoruz ekleyeceğimiz blok şu şekilde;
Eğer sizde ALUA(_find_npc_by_vnum) şeklinde gozukuyorsa şu şekil ekleyiniz;
Şimdi arkadaşlar burda bahsetmek istediğim bi şey var bu fonksiyon oyundaki character objelerini bu npc ya da oyuncu olabilir bizim verdiğimiz vnum değerinde olanları buluyor ve ilk bulduğunun id'sini srcnin başta aldığı o sabit değişkene atıyor mesala 1. köydeki market npcsi ile 2. köydeki market npcsi farklı objelerdir ve farklı idlere sahiplerdir aslında vnumları aynı olsa da bunu demek istiyordum
Quest fonksiyonu bu şekildeydi { "find_npc_by_vnum", _find_npc_by_vnum }, aratıp altına
{ "select_npc_by_vnum", _select_npc_by_vnum }, eklemeyi unutmayıni, şu şekilde olacak o kısım;
Olay bu kadardı aslında ha bir de şu noktayı söylemem lazm cube open komudunu çalıştırdığımızda Cube_open fonksiyonu işler cube.cpp içinde o fonksiyonun içinde şu kısım var;
Bu if blogu bizim npcye olan uzaklığımızı ölçüyor ve buna göre eğer npcden cok uzaktaysanız açmayı engelleyebilir, bence bu bloğu silin arkadaşlar sıkıntı çıkarmasın.
Sourceyle işimiz bitiyor,
Son olarak quest dizini içinde quest fonksiyonlarına ekleyin bu fonksiyonu olay tamamdır.Arkadaşlar şu kısmı atlamamak lazım biz fonksiyonu tanımlarken şunu kullandık;
if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(race, i))
Ben fonksiyonu select_npc_by_vnum(20017) şeklinde kullanırsam üstte belirttiğim satırda bana oyundaki tüm o Vnumdaki character objelerini listeliyor, demem o ki 20017 vnumundaki character objesinin (npcnin) oynun herhangi bir yerinde sabitlenmiş olması ya da gm tarafından çağırılması lazım ki fonksiyon onun üzerinden işlem yapabilsin yani oyunda var olması lazım o character objesinin (npcnin) fonksiyonun bulabilmesi için, normal olarak cube sistemini açmaya çalıştığımızda bir npc aracılığıyla yaparız dimi o npcye tıklarız vardır o npc yani
umarım anlatabilmişimdir.
Teşekkürler.
Metin2 özel sunucularında geliştirme yaparken, oyuncuların daha kolay ve organize bir şekilde item geliştirme (cube) işlemleri gerçekleştirmesini sağlamak oldukça önemlidir. Bu bağlamda, tek bir NPC üzerinden menü tabanlı cube sistemleri büyük kolaylık sağlar. Bu sistem sayesinde oyuncular, farklı cube türlerini tek bir menüden seçebilir ve işlemlerini hızlıca gerçekleştirebilir. Bu rehberde, quest üzerinden menülü cube sistemini nasıl kurabileceğinizi adım adım anlatacağız.
Cube Sistemi Nedir?
Cube sistemi, Metin2 oyununda oyuncuların belirli itemleri bir araya getirerek yeni, daha güçlü itemler elde etmesini sağlayan bir özelliktir. Genellikle gold, stone, scroll gibi materyallerle birlikte çalışır. Cube işlemleri genellikle refine NPC veya özel cube NPC'leri üzerinden yapılır. Ancak birçok özel sunucu sahibi, bu işlemleri menü şeklinde sunarak kullanıcı deneyimini artırmak istemektedir.
Neden Menü Tabanlı Cube Sistemi Kullanmalısınız?
Menü tabanlı cube sistemi, hem oyuncu dostu hem de yöneticiye kolaylık sağlar. Oyuncular, hangi işlemi yapmak istediklerini daha net görebilir. Aynı zamanda, sistem üzerinde yapılacak güncelleme ve düzenleme işlemleri de daha kolay hale gelir. Quest üzerinden yapılandırılan cube sistemleri, C++ server tarafına dokunmadan ayarlanabilir ve test edilebilir. Bu da geliştirme sürecini hızlandırır.
Quest Dosyası Hazırlığı
Cube sistemini quest üzerinden çalıştırmak için öncelikle bir quest dosyası oluşturmanız gerekir. Quest dosyası genellikle game server tarafında quest folder altında yer alır. Bu dosya, oyuncunun NPC ile etkileşimi sırasında menüyü gösterir ve seçilen işleme göre cube fonksiyonunu çağırır.
Örnek Quest Kod Parçası:
cube_menu.start:
when login:
set_skin(NOW_MOUSE_ONLY)
say_title(Cube Menüsü)
local c = select(Avancement +5, Avancement +6, Avancement +7, Çıkış)
if c == 1 then
say(5. seviye avansman cube işlemi başlatılıyor.)
cube_process(5)
elseif c == 2 then
say(6. seviye avansman cube işlemi başlatılıyor.)
cube_process(6)
elseif c == 3 then
say(7. seviye avansman cube işlemi başlatılıyor.)
cube_process(7)
end
Dikkat Edilmesi Gerekenler
Quest dosyasında dikkat etmeniz gereken bazı önemli noktalar vardır. Item kontrolü, gerekli materyallerin doğrulanması, hata mesajları gibi konular, kullanıcı deneyimini etkiler. Ayrıca, server-side cube fonksiyonları doğru şekilde tanımlanmalıdır. Aksi takdirde, oyuncular hatalı cube denemesi yapabilir veya sunucuda hata oluşabilir.
Py Root ve UIscript Entegrasyonu
Cube menüsünü daha estetik ve kullanışlı hale getirmek için Python GUI (py root) ve uiscript dosyaları kullanılabilir. Bu sayede oyunculara özel bir pencere açılabilir. Ancak bu işlem için client-side değişiklik gerekebilir. Eğer martysama veya başka bir client src kullanıyorsanız, bu dosyaları düzenlemek daha kolay olabilir.
Sonuç
Tek NPC üzerinden menü tabanlı cube sistemi, Metin2 özel sunucularında kullanıcı dostu bir geliştirme yöntemidir. Quest üzerinden yapılabilecek bu sistem, server src dokunmadan hızlıca entegre edilebilir. C++, Python, DB gibi teknolojilerle birlikte kullanıldığında, daha gelişmiş sistemler de geliştirilebilir. Bu rehber sayesinde, kendi özel cube menünüzü oluşturmak artık çok daha kolay! Daha fazla Metin2 geliştirme rehberi için Metin2Lobby ziyaret edin.
When developing on Metin2 private servers, it's important to allow players to perform item enhancement (cube) processes more easily and systematically. In this context, menu-based cube systems via a single NPC provide great convenience. With this system, players can select different cube types from one menu and complete their operations quickly. In this guide, we will explain step-by-step how to set up a menu-based cube system via quest.
What Is the Cube System?
The cube system allows players in Metin2 to combine certain items to create new, stronger items. It typically works with materials such as gold, stones, scrolls. Cube operations are usually done through refine NPCs or special cube NPCs. However, many private server owners prefer to present these processes in menu form to improve user experience.
Why Should You Use a Menu-Based Cube System?
A menu-based cube system is both player-friendly and provides ease for administrators. Players can clearly see which action they want to take. Additionally, updates and modifications on the system become easier. Cube systems configured via quests can be adjusted and tested without touching the C++ server side. This speeds up the development process.
Quest File Preparation
To run the cube system via quest, you first need to create a quest file. The quest file usually resides under the quest folder on the game server. This file displays the menu during player interaction with the NPC and calls the cube function according to the selected option.
Sample Quest Code Snippet:
cube_menu.start:
when login:
set_skin(NOW_MOUSE_ONLY)
say_title(Cube Menu)
local c = select(Advancement +5, Advancement +6, Advancement +7, Exit)
if c == 1 then
say(Cube process for level 5 advancement starting.)
cube_process(5)
elseif c == 2 then
say(Cube process for level 6 advancement starting.)
cube_process(6)
elseif c == 3 then
say(Cube process for level 7 advancement starting.)
cube_process(7)
end
Things to Consider
There are some key points to consider when working with a quest file. Matters like item checks, verification of required materials, error messages, affect the user experience. Moreover, server-side cube functions must be properly defined. Otherwise, players might attempt invalid cube processes or errors may occur on the server.
Py Root and UIscript Integration
To make the cube menu more aesthetic and user-friendly, Python GUI (py root) and uiscript files can be used. This way, a custom window can be opened for players. However, this requires modifications on the client-side. If you're using sources like martysama or another client src, modifying these files could be easier.
Conclusion
A menu-based cube system via a single NPC is a user-friendly development method for Metin2 private servers. This system, which can be implemented via quests, can be integrated quickly without touching the server src. When used together with technologies such as C++, Python, DB, more advanced systems can also be developed. Thanks to this guide, creating your own custom cube menu is now much easier! For more Metin2 development guides, visit Metin2Lobby.
Sistem bu;
Şimdi benim bulduğum çözüm yolu alternatif cube sistemi vs değil ufak bi yanıltma olcak yaptığım şu aslında, bir npcden bir quest fonksiyonu yardımıyla herhangi başka bir npcnın cubesine ulaşmayı göstericem bu sayede mesala bir npcye tıkladığınızda ilk seçenekten o npcnın kendi cubesini 2. secenekten baska bir npcnin cubesini 3. secenekten baska vs vs.
Jae-Seon Kim adlı npcden Yu-Hwanda'a tanımlı olan (cube.txt içinde Yu-Hwan'ın vnumunun kullanıldığı kısımlar) item listesini yani cube penceresini açıyorum burda;
Şimdi bu cube sisteminin olayı, quest içinde command("cube open") fonksiyonunu kullandığımız npcnin üzerinden geçiyor,
biz npcye tıkladığımız an game source icerisinde o npcyi bir obje olarak alıp vnumunu cube.txt içindeki vnumlarla karşılaştırıp sonradan kullanmak için itemleri listeliyor vs.
Npcye tıkladığımız andaki o npcnin id si game sourceye gidiyor ve bir sabit değişkene atanıyor
ben de bir quest fonksiyonu oluşturup bu game sourcedeki sabit değişkeni değiştiriyorum ve sanki farklı bir npcye tıklamışım gibi algılamasını istiyorum, yani olay şu;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ilk when bloğunda 20383 kodlu npc normal bir şekilde çalışıyor ama 2. when blokğunda 20383 kodlu npcye tıkladığımda ilk önce o npcnin idsi game sourceye gidiyor sonrasından kendi ürettiğim select_npc_by_vnum(int npcVnum) fonksiyonu ile başka bir npcnın idsini game sourceye yolluyorum yani farklı bir npcyi açmış gibi gosteriyorum ve o npcnin cubesini açıyor bana, yani bir npcde birden fazla npcnin cubesını kullanabıleceğim bir durum oluştu şuan
peki olayı anlattım devamı olan kodlar da şu şekilde
önce quest fonksiyonumuzu oluşturacağız;
questlua_global.cpp dosyasını açıyoruz;
int _find_npc_by_vnum(lua_State* L) fonksiyonunu tanımlandıktan sonra bir fonksiyon tanımlıyoruz ekleyeceğimiz blok şu şekilde;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Eğer sizde ALUA(_find_npc_by_vnum) şeklinde gozukuyorsa şu şekil ekleyiniz;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Şimdi arkadaşlar burda bahsetmek istediğim bi şey var bu fonksiyon oyundaki character objelerini bu npc ya da oyuncu olabilir bizim verdiğimiz vnum değerinde olanları buluyor ve ilk bulduğunun id'sini srcnin başta aldığı o sabit değişkene atıyor mesala 1. köydeki market npcsi ile 2. köydeki market npcsi farklı objelerdir ve farklı idlere sahiplerdir aslında vnumları aynı olsa da bunu demek istiyordum
Quest fonksiyonu bu şekildeydi { "find_npc_by_vnum", _find_npc_by_vnum }, aratıp altına
{ "select_npc_by_vnum", _select_npc_by_vnum }, eklemeyi unutmayıni, şu şekilde olacak o kısım;
Olay bu kadardı aslında ha bir de şu noktayı söylemem lazm cube open komudunu çalıştırdığımızda Cube_open fonksiyonu işler cube.cpp içinde o fonksiyonun içinde şu kısım var;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Bu if blogu bizim npcye olan uzaklığımızı ölçüyor ve buna göre eğer npcden cok uzaktaysanız açmayı engelleyebilir, bence bu bloğu silin arkadaşlar sıkıntı çıkarmasın.
Sourceyle işimiz bitiyor,
Son olarak quest dizini içinde quest fonksiyonlarına ekleyin bu fonksiyonu olay tamamdır.Arkadaşlar şu kısmı atlamamak lazım biz fonksiyonu tanımlarken şunu kullandık;
if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(race, i))
Ben fonksiyonu select_npc_by_vnum(20017) şeklinde kullanırsam üstte belirttiğim satırda bana oyundaki tüm o Vnumdaki character objelerini listeliyor, demem o ki 20017 vnumundaki character objesinin (npcnin) oynun herhangi bir yerinde sabitlenmiş olması ya da gm tarafından çağırılması lazım ki fonksiyon onun üzerinden işlem yapabilsin yani oyunda var olması lazım o character objesinin (npcnin) fonksiyonun bulabilmesi için, normal olarak cube sistemini açmaya çalıştığımızda bir npc aracılığıyla yaparız dimi o npcye tıklarız vardır o npc yani
Teşekkürler.
Tek NPC'den Menülü Cube Yapımı (Quest Üzerinden)
Metin2 özel sunucularında geliştirme yaparken, oyuncuların daha kolay ve organize bir şekilde item geliştirme (cube) işlemleri gerçekleştirmesini sağlamak oldukça önemlidir. Bu bağlamda, tek bir NPC üzerinden menü tabanlı cube sistemleri büyük kolaylık sağlar. Bu sistem sayesinde oyuncular, farklı cube türlerini tek bir menüden seçebilir ve işlemlerini hızlıca gerçekleştirebilir. Bu rehberde, quest üzerinden menülü cube sistemini nasıl kurabileceğinizi adım adım anlatacağız.
Cube Sistemi Nedir?
Cube sistemi, Metin2 oyununda oyuncuların belirli itemleri bir araya getirerek yeni, daha güçlü itemler elde etmesini sağlayan bir özelliktir. Genellikle gold, stone, scroll gibi materyallerle birlikte çalışır. Cube işlemleri genellikle refine NPC veya özel cube NPC'leri üzerinden yapılır. Ancak birçok özel sunucu sahibi, bu işlemleri menü şeklinde sunarak kullanıcı deneyimini artırmak istemektedir.
Neden Menü Tabanlı Cube Sistemi Kullanmalısınız?
Menü tabanlı cube sistemi, hem oyuncu dostu hem de yöneticiye kolaylık sağlar. Oyuncular, hangi işlemi yapmak istediklerini daha net görebilir. Aynı zamanda, sistem üzerinde yapılacak güncelleme ve düzenleme işlemleri de daha kolay hale gelir. Quest üzerinden yapılandırılan cube sistemleri, C++ server tarafına dokunmadan ayarlanabilir ve test edilebilir. Bu da geliştirme sürecini hızlandırır.
Quest Dosyası Hazırlığı
Cube sistemini quest üzerinden çalıştırmak için öncelikle bir quest dosyası oluşturmanız gerekir. Quest dosyası genellikle game server tarafında quest folder altında yer alır. Bu dosya, oyuncunun NPC ile etkileşimi sırasında menüyü gösterir ve seçilen işleme göre cube fonksiyonunu çağırır.
Örnek Quest Kod Parçası:
cube_menu.start:
when login:
set_skin(NOW_MOUSE_ONLY)
say_title(Cube Menüsü)
local c = select(Avancement +5, Avancement +6, Avancement +7, Çıkış)
if c == 1 then
say(5. seviye avansman cube işlemi başlatılıyor.)
cube_process(5)
elseif c == 2 then
say(6. seviye avansman cube işlemi başlatılıyor.)
cube_process(6)
elseif c == 3 then
say(7. seviye avansman cube işlemi başlatılıyor.)
cube_process(7)
end
Dikkat Edilmesi Gerekenler
Quest dosyasında dikkat etmeniz gereken bazı önemli noktalar vardır. Item kontrolü, gerekli materyallerin doğrulanması, hata mesajları gibi konular, kullanıcı deneyimini etkiler. Ayrıca, server-side cube fonksiyonları doğru şekilde tanımlanmalıdır. Aksi takdirde, oyuncular hatalı cube denemesi yapabilir veya sunucuda hata oluşabilir.
Py Root ve UIscript Entegrasyonu
Cube menüsünü daha estetik ve kullanışlı hale getirmek için Python GUI (py root) ve uiscript dosyaları kullanılabilir. Bu sayede oyunculara özel bir pencere açılabilir. Ancak bu işlem için client-side değişiklik gerekebilir. Eğer martysama veya başka bir client src kullanıyorsanız, bu dosyaları düzenlemek daha kolay olabilir.
Sonuç
Tek NPC üzerinden menü tabanlı cube sistemi, Metin2 özel sunucularında kullanıcı dostu bir geliştirme yöntemidir. Quest üzerinden yapılabilecek bu sistem, server src dokunmadan hızlıca entegre edilebilir. C++, Python, DB gibi teknolojilerle birlikte kullanıldığında, daha gelişmiş sistemler de geliştirilebilir. Bu rehber sayesinde, kendi özel cube menünüzü oluşturmak artık çok daha kolay! Daha fazla Metin2 geliştirme rehberi için Metin2Lobby ziyaret edin.
How to Create a Menu-Based Cube System from One NPC (Via Quest)
When developing on Metin2 private servers, it's important to allow players to perform item enhancement (cube) processes more easily and systematically. In this context, menu-based cube systems via a single NPC provide great convenience. With this system, players can select different cube types from one menu and complete their operations quickly. In this guide, we will explain step-by-step how to set up a menu-based cube system via quest.
What Is the Cube System?
The cube system allows players in Metin2 to combine certain items to create new, stronger items. It typically works with materials such as gold, stones, scrolls. Cube operations are usually done through refine NPCs or special cube NPCs. However, many private server owners prefer to present these processes in menu form to improve user experience.
Why Should You Use a Menu-Based Cube System?
A menu-based cube system is both player-friendly and provides ease for administrators. Players can clearly see which action they want to take. Additionally, updates and modifications on the system become easier. Cube systems configured via quests can be adjusted and tested without touching the C++ server side. This speeds up the development process.
Quest File Preparation
To run the cube system via quest, you first need to create a quest file. The quest file usually resides under the quest folder on the game server. This file displays the menu during player interaction with the NPC and calls the cube function according to the selected option.
Sample Quest Code Snippet:
cube_menu.start:
when login:
set_skin(NOW_MOUSE_ONLY)
say_title(Cube Menu)
local c = select(Advancement +5, Advancement +6, Advancement +7, Exit)
if c == 1 then
say(Cube process for level 5 advancement starting.)
cube_process(5)
elseif c == 2 then
say(Cube process for level 6 advancement starting.)
cube_process(6)
elseif c == 3 then
say(Cube process for level 7 advancement starting.)
cube_process(7)
end
Things to Consider
There are some key points to consider when working with a quest file. Matters like item checks, verification of required materials, error messages, affect the user experience. Moreover, server-side cube functions must be properly defined. Otherwise, players might attempt invalid cube processes or errors may occur on the server.
Py Root and UIscript Integration
To make the cube menu more aesthetic and user-friendly, Python GUI (py root) and uiscript files can be used. This way, a custom window can be opened for players. However, this requires modifications on the client-side. If you're using sources like martysama or another client src, modifying these files could be easier.
Conclusion
A menu-based cube system via a single NPC is a user-friendly development method for Metin2 private servers. This system, which can be implemented via quests, can be integrated quickly without touching the server src. When used together with technologies such as C++, Python, DB, more advanced systems can also be developed. Thanks to this guide, creating your own custom cube menu is now much easier! For more Metin2 development guides, visit Metin2Lobby.
