Bu sistemle istediğin haritada orda olmasan bile mob spawn edebiliyorsun.
Kanıt:
Ben göstermek için aynı haritada bulundum. Denedim farklı haritada olsan bile mobu spawn ediyor.
NOT: Kordinatlar oyuncuya ışınlandığında çıkanlar.
MaviAyGames | [C++, LUA] Quest ile istediğin haritaya mob spawn etmek
Metin2 özel sunucu geliştirme dünyasında, oyuncuların eğlenceli ve dinamik bir deneyim yaşaması için harita üzerinde belirli zamanlarda veya belirli olaylarla mob spawn işlemleri oldukça önemlidir. Bu yazıda, MaviAyGames tarafından önerilen bir yöntemle quest üzerinden C++ ve LUA kullanarak belirlediğiniz bir haritada istenen mob'ları spawn etmeyi öğreneceksiniz.
Metin2 özel sunucularında quest sistemleri, sunucu yöneticilerinin oyun içi olayları kontrol etmesini sağlayan güçlü bir araçtır. Bu sistem sayesinde olaylar, görevler, özel efektler ve doğrudan NPC/Mob davranışları kontrol edilebilir. Bu rehberde, LUA quest fonksiyonlarını kullanarak, C++ tabanlı sunucuda istenen haritada istenen mobları spawn etme işlemini adım adım inceleyeceğiz.
İlk olarak, quest dosyasını oluşturmak gerekir. Quest dosyanızda, spawn_npc veya benzeri bir fonksiyon çağrısı gerçekleştireceğiz. Ancak doğrudan LUA içinde mob spawn işlemi yapılamaz. Bu nedenle C++ tarafında bir fonksiyon yazarak LUA tarafına entegre etmemiz gerekir.
C++ tarafında, örneğin game/src/char/char_manager.cpp dosyasında bir fonksiyon tanımlayabiliriz. Bu fonksiyon, LUA tarafından çağrıldığında belirtilen koordinatlarda belirtilen mob ID'sine sahip bir karakter yaratır. Bu işlem için CHAR_MANAGER::SpawnMob gibi bir fonksiyon kullanılabilir.
LUA tarafında ise, örnek bir quest şu şekilde olabilir:
quest custom_spawn begin
state start begin
when login begin
cmdchat('spawn_mob 123 500 600') -- 123 numaralı mobu 500, 600 koordinatlarına spawn et
end
end
end
cmdchat ile gönderilen komut, C++ tarafında yakalanarak ilgili spawn fonksiyonuna yönlendirilir. Bu sayede LUA'da yazılan quest sayesinde C++ ile entegre bir şekilde istenen haritada mob spawn edilebilir.
Avantajları:
- Olay bazlı spawn işlemleri yapılabilir.
- Quest sisteminden faydalanıldığı için kolayca otomatikleştirilebilir.
- Zamanlayıcılarla birlikte özel etkinlikler için idealdir.
Öneriler:
- Spawn edilen mob'ların patlama risklerini önlemek için max_count kontrolleri ekleyin.
- Spawn koordinatlarının doğru ayarlandığından emin olun.
- Hata ayıklama amacıyla loglama fonksiyonları kullanın.
Bu yöntemi kullanarak Metin2 özel sunucularınızda daha dinamik oyun mekanikleri geliştirebilir ve oyuncularınız için sürpriz etkinlikler planlayabilirsiniz. MaviAyGames yaklaşımı sayesinde, quest ve C++ arasındaki köprüyü kurarak sınırsız imkanlara sahip olursunuz.
Daha fazla Metin2 geliştirici rehberi için Metin2 Lobby adresini ziyaret edin.
MaviAyGames | [C++, LUA] Spawning mobs to any map with Quest
In the world of Metin2 private server development, dynamic and fun experiences for players require timed or event-triggered mob spawning on maps. In this article, we will learn how to spawn desired mobs onto specific maps using C++ and LUA through quests, as suggested by MaviAyGames.
In Metin2 private servers, the quest system allows server administrators to control in-game events. This system enables control over events, missions, special effects, and direct NPC/Mob behaviors. In this guide, we'll examine step-by-step how to use LUA quest functions to spawn mobs at specified locations on a map using a C++ based server.
Firstly, you need to create a quest file. Within your quest file, you will call functions such as spawn_npc. However, directly spawning mobs in LUA is not possible. Therefore, we must write a function in C++ and integrate it into the LUA side.
On the C++ side, for example in game/src/char/char_manager.cpp, you can define a function that creates a character with a given mob ID at specified coordinates when called from LUA. Functions like CHAR_MANAGER::SpawnMob can be used for this purpose.
On the LUA side, a sample quest could look like this:
quest custom_spawn begin
state start begin
when login begin
cmdchat('spawn_mob 123 500 600') -- Spawns mob ID 123 at coordinates 500, 600
end
end
end
The command sent via cmdchat is captured on the C++ side and redirected to the relevant spawn function. Thus, using the quest written in LUA, mobs can be spawned on the desired map in an integrated way with C++.
Benefits:
- Event-based spawn operations can be performed.
- Easily automatable thanks to the quest system.
- Ideal for timed special events.
Suggestions:
- Add max_count checks to prevent mob explosion risks.
- Ensure spawn coordinates are correctly set.
- Use logging functions for debugging purposes.
Using this method, you can develop more dynamic game mechanics in your Metin2 private servers and plan surprise events for your players. Thanks to the MaviAyGames approach, bridging between quests and C++ provides unlimited possibilities.
For more Metin2 developer guides, visit Metin2 Lobby.
Kanıt:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ben göstermek için aynı haritada bulundum. Denedim farklı haritada olsan bile mobu spawn ediyor.
Kod:
questlua_global.cpp void RegisterGlobalFunctionTable(lua_State* L) // ARAT ÜSTÜNE EKLE int mob_spawn_ext(lua_State* L) { if(false == lua_isnumber(L, 1) || false == lua_isnumber(L, 2) || false == lua_isnumber(L, 3) || false == lua_isnumber(L, 4) || false == lua_isnumber(L, 5) || false == lua_isboolean(L, 6) ) { lua_pushnumber(L, 0); return 0; } const DWORD mobVnum = static_cast<DWORD>(lua_tonumber(L, 1)); const long mapIndex = static_cast<long>(lua_tonumber(L, 2)); const int x = static_cast<int>(lua_tonumber(L, 3)); const int y = static_cast<int>(lua_tonumber(L, 4)); const size_t count = MINMAX(1, static_cast<size_t>(lua_tonumber(L, 5)), 10); const bool isAggresive = static_cast<bool>(lua_toboolean(L, 6)); size_t SpawnCount = 0; const CMob* pMonster = CMobManager::instance().Get( mobVnum ); if( NULL != pMonster ) { //const LPCHARACTER pChar = CQuestManager::instance().GetCurrentCharacterPtr(); for( size_t i=0 ; i < count ; ++i ) { const LPCHARACTER pSpawnMonster = CHARACTER_MANAGER::instance().SpawnMobRange( mobVnum, mapIndex, x - number(100, 200), y - number(100, 200), x + number(100, 200), y + number(100, 200), true, pMonster->m_table.bType == CHAR_TYPE_STONE, isAggresive ); if( NULL != pSpawnMonster ) { ++SpawnCount; } } sys_log(0, "QUEST Spawn Monstster: VNUM(%u) COUNT(%u) isAggresive(%b)", mobVnum, SpawnCount, isAggresive); } lua_pushnumber(L, SpawnCount); return 1; } //######################################################### { "spawn_mob", _spawn_mob }, // ARAT ALTINA EKLE { "spawn_mob_ext", mob_spawn_ext },
Kod:
// quest_functions ekle spawn_mob_ext
NOT: Kordinatlar oyuncuya ışınlandığında çıkanlar.
Kod:
quest mapengeli begin state start begin when login begin send_letter("Deneme") end-- when when info or button begin spawn_mob_ext(MOB_KODU,MAP_INDEX,KORDINAT_X,KORDINAT_Y,MOB_SAYISI,AGRASIFMI) spawn_mob_ext(101,43,873200,241800,1,false) -- notice("Hey") -- spawn_mob(104,5,true) send_letter("Deneme") end -- when end -- State end -- quest
MaviAyGames | [C++, LUA] Quest ile istediğin haritaya mob spawn etmek
Metin2 özel sunucu geliştirme dünyasında, oyuncuların eğlenceli ve dinamik bir deneyim yaşaması için harita üzerinde belirli zamanlarda veya belirli olaylarla mob spawn işlemleri oldukça önemlidir. Bu yazıda, MaviAyGames tarafından önerilen bir yöntemle quest üzerinden C++ ve LUA kullanarak belirlediğiniz bir haritada istenen mob'ları spawn etmeyi öğreneceksiniz.
Metin2 özel sunucularında quest sistemleri, sunucu yöneticilerinin oyun içi olayları kontrol etmesini sağlayan güçlü bir araçtır. Bu sistem sayesinde olaylar, görevler, özel efektler ve doğrudan NPC/Mob davranışları kontrol edilebilir. Bu rehberde, LUA quest fonksiyonlarını kullanarak, C++ tabanlı sunucuda istenen haritada istenen mobları spawn etme işlemini adım adım inceleyeceğiz.
İlk olarak, quest dosyasını oluşturmak gerekir. Quest dosyanızda, spawn_npc veya benzeri bir fonksiyon çağrısı gerçekleştireceğiz. Ancak doğrudan LUA içinde mob spawn işlemi yapılamaz. Bu nedenle C++ tarafında bir fonksiyon yazarak LUA tarafına entegre etmemiz gerekir.
C++ tarafında, örneğin game/src/char/char_manager.cpp dosyasında bir fonksiyon tanımlayabiliriz. Bu fonksiyon, LUA tarafından çağrıldığında belirtilen koordinatlarda belirtilen mob ID'sine sahip bir karakter yaratır. Bu işlem için CHAR_MANAGER::SpawnMob gibi bir fonksiyon kullanılabilir.
LUA tarafında ise, örnek bir quest şu şekilde olabilir:
quest custom_spawn begin
state start begin
when login begin
cmdchat('spawn_mob 123 500 600') -- 123 numaralı mobu 500, 600 koordinatlarına spawn et
end
end
end
cmdchat ile gönderilen komut, C++ tarafında yakalanarak ilgili spawn fonksiyonuna yönlendirilir. Bu sayede LUA'da yazılan quest sayesinde C++ ile entegre bir şekilde istenen haritada mob spawn edilebilir.
Avantajları:
- Olay bazlı spawn işlemleri yapılabilir.
- Quest sisteminden faydalanıldığı için kolayca otomatikleştirilebilir.
- Zamanlayıcılarla birlikte özel etkinlikler için idealdir.
Öneriler:
- Spawn edilen mob'ların patlama risklerini önlemek için max_count kontrolleri ekleyin.
- Spawn koordinatlarının doğru ayarlandığından emin olun.
- Hata ayıklama amacıyla loglama fonksiyonları kullanın.
Bu yöntemi kullanarak Metin2 özel sunucularınızda daha dinamik oyun mekanikleri geliştirebilir ve oyuncularınız için sürpriz etkinlikler planlayabilirsiniz. MaviAyGames yaklaşımı sayesinde, quest ve C++ arasındaki köprüyü kurarak sınırsız imkanlara sahip olursunuz.
Daha fazla Metin2 geliştirici rehberi için Metin2 Lobby adresini ziyaret edin.
MaviAyGames | [C++, LUA] Spawning mobs to any map with Quest
In the world of Metin2 private server development, dynamic and fun experiences for players require timed or event-triggered mob spawning on maps. In this article, we will learn how to spawn desired mobs onto specific maps using C++ and LUA through quests, as suggested by MaviAyGames.
In Metin2 private servers, the quest system allows server administrators to control in-game events. This system enables control over events, missions, special effects, and direct NPC/Mob behaviors. In this guide, we'll examine step-by-step how to use LUA quest functions to spawn mobs at specified locations on a map using a C++ based server.
Firstly, you need to create a quest file. Within your quest file, you will call functions such as spawn_npc. However, directly spawning mobs in LUA is not possible. Therefore, we must write a function in C++ and integrate it into the LUA side.
On the C++ side, for example in game/src/char/char_manager.cpp, you can define a function that creates a character with a given mob ID at specified coordinates when called from LUA. Functions like CHAR_MANAGER::SpawnMob can be used for this purpose.
On the LUA side, a sample quest could look like this:
quest custom_spawn begin
state start begin
when login begin
cmdchat('spawn_mob 123 500 600') -- Spawns mob ID 123 at coordinates 500, 600
end
end
end
The command sent via cmdchat is captured on the C++ side and redirected to the relevant spawn function. Thus, using the quest written in LUA, mobs can be spawned on the desired map in an integrated way with C++.
Benefits:
- Event-based spawn operations can be performed.
- Easily automatable thanks to the quest system.
- Ideal for timed special events.
Suggestions:
- Add max_count checks to prevent mob explosion risks.
- Ensure spawn coordinates are correctly set.
- Use logging functions for debugging purposes.
Using this method, you can develop more dynamic game mechanics in your Metin2 private servers and plan surprise events for your players. Thanks to the MaviAyGames approach, bridging between quests and C++ provides unlimited possibilities.
For more Metin2 developer guides, visit Metin2 Lobby.
