Başlıkta belirttiğim gibi ücretli arayanlar vardı, bir de ayaz sütunu mu ne var ninja ve şamanlar vurabiliyor sadece onun olayı ne bilmiyorum ama tahminimce navicat üzerinden kılıç savınmaları vs. fullenmiştir diye düşünüyorum.
[NEW] Ninja ve Şamansız Nemere Questi
Metin2 Lobby olarak, oyuncularımıza en kaliteli.quest deneyimini sunabilmek adına sürekli olarak yenilikler üretiyor ve mevcut sistemleri geliştiriyoruz. Bu bağlamda, Ninja ve Şaman sınıflarının bulunmadığı Nemere sunucuları için özelleştirilmiş bir.quest sistemi olan '[NEW] Ninja ve Şamansız Nemere Questi'ni duyurmaktan memnuniyet duyuyoruz. Bu.quest, özellikle Ninja ve Şaman sınıflarının olmaması sebebiyle bazı görevlerden mahrum kalan oyuncular için alternatif ödüller ve görev akışları sunmaktadır.
Questin Genel Yapısı
Quest, Metin2'nin orijinal.quest yapısına sadık kalınarak Lua dilinde yazılmıştır..quest dosyası, Metin2 Quest Sistemi kurallarına uygun şekilde tasarlanmıştır..quest akışı, oyuncuların seviyesine göre otomatik olarak yönlendirilir ve görevler, karakter sınıfına göre dinamik olarak ayarlanır. Ninja ve Şaman sınıfları olmayan Nemere sunucularda, bu sınıflarla ilişkili görevler yerine alternatif görevler sunulur. Bu sayede tüm sınıflar eşit şekilde.quest sisteminden faydalanabilir.
Questin Özellikleri
- Tüm sınıflar için dengeli.quest akışı.
- Ninja ve Şaman sınıflarına özel görevlerin yerine geçen alternatif görevler.
-.quest.reward sistemi ile yüksek seviye item ve 경험 puanları.
-.quest.timer ve.quest.trigger sistemleri ile otomatik görev takibi.
-.quest.debug ve.quest.state kontrolü ile kolay hata ayıklama imkanı.
-.quest.chain sistemi ile görev zincirleri.
-.quest.begin ve.quest.end işlemleri ile görev başlatma ve bitirme.
Quest Script Detayları
.quest script dosyası, Metin2 Lua dilinde yazılmıştır..quest dosyası, Metin2 Quest Edit sistemleri ile kolayca düzenlenebilir..quest.trigger mekanizması ile oyuncu hareketlerine göre.quest başlatılır..quest.flag sistemi ile.quest durumları takip edilir..quest.timer sayesinde zaman bazlı görevler sorunsuz çalışır..quest.state değişkenleri ile.quest aşamaları yönetilir..quest.reward bölümünde ise oyuncuya verilecek ödüller tanımlanır..quest.mob ve.quest.npc sistemleri ile görevde kullanılacak düşmanlar ve görev verici karakterler belirlenir.
Quest Hataları ve Çözüm Yolları
Bazı.quest dosyalarında hata oluşabilir..quest.hata durumlarında.quest.debug işlemi ile hata ayıklama yapılabilir..quest.server sistemlerinde karşılaşılan sorunlar için.script kontrolü önemlidir..quest.item ve.quest.mob sistemlerinde meydana gelen aksaklıklar için.test sunucusunda deneme yapılması önerilir..quest.chain sisteminde görev zincirlerinin doğru çalışması için.quest.begin ve.quest.end süreçlerinin dikkatle kodlanması gerekir.
Quest Ödülleri
.quest.reward sistemi, oyuncuların.quest tamamladıklarında alacakları ödülleri içerir..quest.item olarak yüksek değerli ekipmanlar,.EXP bonusu, altın veya özel efekt item'leri verilebilir..quest.daily gibi günlük görevler ile oyunculara sürekli ilham veren ödüller sunulabilir..quest.server üzerinde farklı ödül sistemleri entegre edilebilir..quest.npc aracılığıyla ödüller doğrudan verilebilir veya.quest.reward menüsü üzerinden seçimli ödül sistemi uygulanabilir.
Metin2 Lobby'de.quest Geliştirme
Metin2 Lobby olarak,.quest development konusunda uzman ekip ile çalışıyoruz..quest development sürecinde hem orijinal.quest yapısına sadık kalınıyor hem de kullanıcı dostu yeni sistemler geliştiriliyor..quest.lua formatında yazılmış bu.quest, Martysama Quest ve diğer.quest.dev sistemleri ile uyumlu çalışmaktadır..quest.edit işlemleri için gerekli tüm araçlar Metin2 Lobby kullanıcılarına ücretsiz sunulmaktadır.
[NEW] Ninja and Shamanless Nemere Quest
As Metin2 Lobby, we constantly create innovations and improve existing systems to provide our players with the highest quality quest experience. In this context, we are pleased to announce '[NEW] Ninja and Shamanless Nemere Quest', a customized quest system designed specifically for servers where the Ninja and Shaman classes are not available. This quest provides alternative rewards and task flows for players who might otherwise miss out on certain quests due to the absence of these classes.
General Structure of the Quest
The quest is written in the Lua language while adhering to Metin2's original quest structure. The quest file has been designed in accordance with the Metin2 Quest System rules. The quest flow is automatically directed based on the player's level, and tasks are dynamically adjusted according to the character class. On Nemere servers where Ninja and Shaman classes do not exist, alternative tasks replace those associated with these classes, allowing all classes to benefit equally from the quest system.
Features of the Quest
- Balanced quest flow for all classes.
- Alternative tasks replacing Ninja and Shaman-specific quests.
- High-level item and EXP point rewards through the quest reward system.
- Automatic quest tracking via quest timer and trigger systems.
- Easy debugging capabilities through quest debug and state checks.
- Quest chains for linked missions.
- Quest start and end processes managed by quest begin and end functions.
Quest Script Details
The quest script file is written in Metin2 Lua. The quest file can be easily edited using Metin2 Quest Edit tools. The quest trigger mechanism initiates quests based on player actions. The quest flag system tracks quest states. The quest timer ensures time-based tasks run smoothly. Quest state variables manage quest stages. The quest reward section defines the rewards given to the player. Quest mob and npc systems determine enemies and NPCs involved in the quest.
Quest Errors and Solutions
Errors may occur in some quest files. During quest error situations, debugging can be done via the quest debug process. For issues encountered in quest server systems, script checks are important. Testing on a test server is recommended for glitches in quest item and mob systems. Correct coding of quest begin and end processes is necessary to ensure proper functioning of quest chains.
Quest Rewards
The quest reward system includes the rewards players receive upon completing a quest. As quest items, high-value equipment, EXP bonuses, gold, or special effect items can be awarded. Daily quests like quest daily offer continuous rewarding incentives. Different reward systems can be integrated into the quest server. Rewards can be directly given via quest NPCs or offered through a selection-based reward menu.
Quest Development at Metin2 Lobby
At Metin2 Lobby, we work with an expert team on quest development. During the quest development process, we remain faithful to the original quest structure while also developing new user-friendly systems. This quest, written in quest.lua format, is compatible with Martysama Quest and other quest.dev systems. Tools required for quest edit operations are provided free of charge to Metin2 Lobby users.
Kod:
quest snow_dungeon begin state start begin function get_settings() local snow_dungeon_settings = {} snow_dungeon_settings.map_index = 240 --Map�ndex snow_dungeon_settings.base_cord = {5120, 1536 } --�lk I��nlanacak Kordinat snow_dungeon_settings.outside_entry_pos = {61,4327,1668} --S�re doldu�unda ataca�� kordinat ve map snow_dungeon_settings.need_level = 100 --Giri� i�in istenilen seviye 1 snow_dungeon_settings.need_level_group = 100 --Giri� i�in istenilen seviye 2 snow_dungeon_settings.WaitBeforOutAllOnExit = 60 --Wartezeit bevor alle alle herausteleportiert werden bei einem erfolgreichen Run. (Empfohlen 60) snow_dungeon_settings.NextJumpTime = 5 --5 Saniye içinde kat atlanıcak snow_dungeon_settings.DurationLoopTimer = 15 --Welchen intervall die Level und Missionen gepr�ft werden sollen. (Empfohlen 45) snow_dungeon_settings.wait_duration = 60*60*4 --Parti liderinin tekrar kuleye giri� ba�vurusu i�in istenilen s�re snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1 --Kule i�in toplam s�re snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5 --Kuleden at�ld�ktan sonra 5 dk i�inde tekrar giri� s�resi snow_dungeon_settings.key_level_2 = 30331 --Buz Anahtar� snow_dungeon_settings.NpcVnum_level_5 = 20398 --Arktos K�p� snow_dungeon_settings.StoneCount_level_5 = 6 --6 adet Ayaz Kristali snow_dungeon_settings.Key_on_level_5 = 30332 --Kuzey Y�ld�z� snow_dungeon_settings.StoneCords_level_5 = { {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}, {462,450},{458,428},{446,439},{431,431},{415,416},{402,427}, {397,438},{375,434},{374,456},{390,468},{385,492},{402,505}, {404,489},{386,482} } --Positionen von W�rfel des Arktos snow_dungeon_settings.MobVnum_level_6 = 8058 --MobVnum von 6.Ebene --Metin der K�lte snow_dungeon_settings.MobVnum_level_7 = 6151 --MobVnum von 7.Ebene --Szel snow_dungeon_settings.SzelCords_level_7 = { {752,499},{758,479},{772,452},{763,444},{750,451},{728,441}, {726,455},{718,482},{715,491},{731,473},{748,429} } --Positionen von Szel snow_dungeon_settings.Key_on_level_8 = 30333 --KeyVnum von 8.Ebene --Eisblumenschl�ssel snow_dungeon_settings.NpcVnum_level_9 = 20399 --MobVnum von 9.Ebene --S�ule des Norddrachen snow_dungeon_settings.BossVnumGroup = 6062 --GroupMobVnum vom Boss --(Group.txt) snow_dungeon_settings.BossVnum = 6191 --MobVnum von 10.Ebene --Nemere(6191) snow_dungeon_settings.Position_level_1 = { 171,271 } --Position ebene 1 --Startposition --T�te alle Monster auf dieser Ebene. snow_dungeon_settings.Position_level_2 = { 761,270 } --Position ebene 2 --Finde den richtigen Frostschl�ssel, nur ein Schamane kann ihn benutzen. snow_dungeon_settings.Position_level_3 = { 187,491 } --Position ebene 3 --T�te alle Monster auf dieser Ebene. snow_dungeon_settings.Position_level_4 = { 421,259 } --Position ebene 4 --T�te alle Monster auf dieser Ebene. snow_dungeon_settings.Position_level_5 = { 419,530 } --Position ebene 5 --�ffnet die Siegel an den W�rfel des Arktos in der richtigen Reihenfolge. (Zieht Nordstern auf die W�rfel) snow_dungeon_settings.Position_level_6 = { 571,706 } --Position ebene 6 --T�te alle Monster auf dieser Ebene. Danach Zers�re den Metin der K�lte (Nur ein Schamane kann ihn Schaden) snow_dungeon_settings.Position_level_7 = { 746,534 } --Position ebene 7 --T�te alle Monster auf dieser Ebene und Szel snow_dungeon_settings.Position_level_8 = { 303,710 } --Position ebene 8 --Der Eisblumenschl�ssel muss gedroppt werden, jedoch kann dieser nur von Schamanen und Ninja benutzt werden. snow_dungeon_settings.Position_level_9 = { 848,693 } --Position ebene 9 --Zerst�rt die S�ule des Norddrachen. Nur Ninjas und Schamanen k�nnen ihm Schaden zuf�gen. snow_dungeon_settings.Position_level_10 = { 927,391 } --Position ebene 10 (BossZone) --Besiege Nemere, den K�nig �ber Frost und Eis. snow_dungeon_settings.Enable_TestServerMode = false --Ob TestServer mode aktiviert ist. Wenn ja werden die Aufgaben schneller beendet. snow_dungeon_settings.IsNewga_me_re_vi_sion = true --Need ga_me_re_vi_sion 40301 return snow_dungeon_settings end function is_TestServerMode() local set = snow_dungeon.get_settings() return set.Enable_TestServerMode end function is_nemeres_dungeon() local set = snow_dungeon.get_settings() local map = pc.get_map_index() if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then return true else return false end end when 20395.chat."GM: Nemere Kulesi" with pc.is_gm() begin local s = select("Nemere Kulesi A�/Kapat","Hi�bir �ey") if s == 1 then if game.get_event_flag("nemere_on") == 0 then say("Nemere Kulesi �u anda kapal�.") say("Aktif etmek istiyor musun?") if select("Evet","Hay�r") == 2 then return end game.set_event_flag("nemere_on",1) return else say("Nemere Kulesi �u anda a��k.") say("Kapatmak istiyor musun?") if select("Evet","Hay�r") == 2 then return end game.set_event_flag("nemere_on",0) return end elseif s == 2 then return end end when 20395.chat."Gruba tekrar kat�l" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) and game.get_event_flag("nemere_on") == 1 begin local set = snow_dungeon.get_settings() local n = party.getf("ice_dungeon_map_index") local cord = set.base_cord local level = d.getf_from_map_index("level", n) if level == 0 then say("Grubun zaten Nemere'yi yendi.") return end if pc.getqf("out_party_time") < get_global_time() then say("G�zetleme kulesinden "..math.ceil(set.DurationMaxOnReJoinGroup /60) .." dakika �nce �km��s�n.") say("Art�k i�eriye giremezsin.") return end if n == 0 then setskin(NOWINDOW) return else say_title(mob_name(npc.get_race())) say("") say("Tekrar grubuna kat�lmak istiyor musun?") if select("Evet","Hay�r") == 1 then local warp_to_level = set.Position_level_1 local level = d.getf_from_map_index("level", n) if level >= 1 and level <= 10 then if level == 1 then warp_to_level = set.Position_level_1 elseif level == 2 then warp_to_level = set.Position_level_2 elseif level == 3 then warp_to_level = set.Position_level_3 elseif level == 4 then warp_to_level = set.Position_level_4 elseif level == 5 then warp_to_level = set.Position_level_5 elseif level == 6 then warp_to_level = set.Position_level_6 elseif level == 7 then warp_to_level = set.Position_level_7 elseif level == 8 then warp_to_level = set.Position_level_8 elseif level == 9 then warp_to_level = set.Position_level_9 elseif level == 10 then warp_to_level = set.Position_level_10 end pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n) else return end end end end when 20395.chat."Nemere'nin G�zetleme Kulesi" with game.get_event_flag("nemere_on") == 1 begin local set = snow_dungeon.get_settings() local need_level = 100 say("Nemere'nin G�zetleme Kulesi'nde tek ba��na") say("hayatta kalamazs�n. Seninle beraber gelecek") say("bir arkada��na daha ihtiyac�n var.") say("Nemere'nin G�zetleme Kulesi'ne girmek") say("istiyor musun?") if select("Gir","Girme") == 2 then return end if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then say("Game Master; s�reyi s�f�rlamak m� istiyorsun?") if select("Evet","Hay�r") == 1 then pc.setf("snow_dungeon","duration",0) return end end if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then say("Test server modu etkinle�tirildi.") say(" �imdi ���nlanacaks�n�z.") timer("make_dungeon",3) return end if not party.is_leader() then say("Cesaretini takdir ediyorum ama") say("yaln�zca grup lideri giri� talebi yapabilir.") return end if pc.get_level() < need_level then say("Kuleye girebilmek i�in en az "..need_level..".") say("seviyede olmal�s�n.") return end if pc.getf("snow_dungeon","duration") >= get_global_time() then say_title(mob_name(npc.get_race())) say("Nemere'nin G�zetleme Kulesi'ne yeniden giri� ") say("i�in bekleme s�resi hen�z dolmam��.") say("Kalan saniye: "..pc.getf("snow_dungeon","duration") - get_global_time().."") return end if snow_dungeon._CheckMembersLevel() == false then return else timer("make_dungeon",2) end end when 20397.chat."Nemere'nin G�zetleme Kulesi" with d.getf("level") == 0 begin --Eisiger L�we if not party.is_leader() then say("Grup lideri de�ilsin.") return end say("Nemere'nin G�zetleme kulesine girdin. Burada") say("en fazla bir saat bulunabilirsin. Kuleden") say("��kt���nda d�rt saat bekledikten sonra tekrar") say("girebilirsin.") wait() local set = snow_dungeon.get_settings() local loop_durr = set.DurationLoopTimer local wait_durations = set.wait_duration local t = get_global_time() d.setf("LastTimeGetOutPut",0) server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index()) d.regen_file("data/dungeon/ice_dungeon/zone_1.txt") d.setf("Start_Time",t + set.maxlife_time_on_dungeon) server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) - t,d.get_map_index()) d.setqf2("snow_dungeon","duration",t + wait_durations) d.setf("level",1) d.notice("B�t�n d��manlar� ma�lup edin!") npc.purge() snow_dungeon._GetLastTime() setskin(NOWINDOW) end when 20397.chat."Nemere Taht Salonu" with d.getf("level") == 9 begin local set = snow_dungeon.get_settings() local next_jump_time = set.NextJumpTime local level = d.getf("level") local stone_level_6 = set.MobVnum_level_6 local stone_level_9 = set.NpcVnum_level_9 local boss_vnum = set.BossVnum local wait_time = set.WaitBeforOutAllOnExit local mobvnum = npc.get_race() if not party.is_leader() then say("Grup lideri de�ilsin.") return end say("Nemere Taht Salonu'na girmek istiyor musun?") local s = select("Gir","Belki sonra") if s == 2 then return end server_timer("Jp_Boss",next_jump_time,d.get_map_index()) local v = set.BossVnumGroup d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt") d.spawn_group(v, 928, 335, 5 ,1, 1) npc.purge() setskin(NOWINDOW) end when make_dungeon.timer begin local pids = {party.get_member_pids()} local ticketGroup = {71130, 1} local set = snow_dungeon.get_settings() local cord = set.base_cord local start_pos = set.Position_level_1 local t = get_global_time() for i, pid in next, pids, nil do q.begin_other_pc_block(pid) for idx=1, table.getn(ticketGroup),2 do if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then pc.remove_item(ticketGroup[idx], ticketGroup[idx+1]) break end end q.end_other_pc_block() end d.new_jump_party(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2])) snow_dungeon._ClearAlls() d.setf("party_leader_pid",party.get_leader_pid()) party.setf("ice_dungeon_map_index",d.get_map_index()) d.spawn_mob_dir(20397, 173,262,1) end function _ClearAlls() local d_index = d.get_map_index() clear_server_timer("CheckLevelAndCountKillOnMobs",d_index) clear_server_timer("Jp_1",d_index) clear_server_timer("Jp_2",d_index) clear_server_timer("Jp_3",d_index) clear_server_timer("Jp_4",d_index) clear_server_timer("Jp_5",d_index) clear_server_timer("Jp_6",d_index) clear_server_timer("Jp_7",d_index) clear_server_timer("Jp_8",d_index) clear_server_timer("Jp_9",d_index) clear_server_timer("Jp_10",d_index) clear_server_timer("Jp_OutAll",d_index) clear_server_timer("Jp_OutAllFail",d_index) clear_server_timer("Jp_OutAllFailNotice",d_index) d.setf("level",0) d.setf("party_leader_pid",0) d.setf("Start_Time",0) d.setf("LastTimeGetOutPut",0) d.setf("Stone_5_count",0) d.setf("Stone_5_item_fail",0) d.clear_regen() d.kill_all() end function _CheckMembersLevel() local set = snow_dungeon.get_settings() local user_fail_level = {} local user_bilet= {} local pids = {party.get_member_pids()} local need_level = set.need_level_group for i = 1, table.getn(pids), 1 do q.begin_other_pc_block(pids[i]) if pc.get_level() < need_level then table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name()) end q.end_other_pc_block() end for i = 1, table.getn(pids), 1 do q.begin_other_pc_block(pids[i]) if pc.count_item(71130) < 1 then table.insert(user_bilet, table.getn(user_bilet) +1, pc.get_name()) end q.end_other_pc_block() end if table.getn(user_fail_level) >= 1 then say_title(mob_name(npc.get_race())) say("") say("Grubun ba�z� �yeleri") say("hen�z "..need_level..". seviyeye ula�mam��:") for x = 1, table.getn(user_fail_level), 1 do say(color(1,1,0), " "..user_fail_level[x]) end return false end if table.getn(user_bilet) >= 1 then say_title(mob_name(npc.get_race())) say("") say("Nemere Kulesine girebilmek i�in,[ENTER]b�t�n grup �yelerinin[ENTER]ge�i� biletine sahip olmas� gereklidir.[ENTER]Ge�i� izni olmayan �yeler:") for x = 1, table.getn(user_bilet), 1 do say(color(1,1,0), " "..user_bilet[x]) end return false end if table.getn(user_fail_level) == 0 and table.getn(user_bilet) == 0 then return true end end when logout begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup) end end when login begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local backk = set.outside_entry_pos pc.set_warp_location(backk[1], backk[2],backk[3]) if d.getf("party_leader_pid") != party.get_leader_pid() then chat("nemeres_wait_dungeon #RAUS:# Sizin grubunuz i�eride de�il.") chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."") d.exit() return end if pc.get_level() < set.need_level_group then chat("nemeres_wait_dungeon #RAUS:# Benim seviyem d���k.") d.exit() return end end end function _GetLastTime() local c = get_global_time() local t = d.getf("Start_Time") - c local o = d.getf("LastTimeGetOutPut") if c >= o then if t >= 60 then d.notice("Nemere G�zlemevi'ndeki kalan s�re: "..math.ceil(t / 60).." dakika") d.notice("S�re bitiminde g�zlemevinden d��ar�, giri�e ���nlanacaks�n�z.") else d.notice("Nemere G�zlemevi'ndeki kalan s�re: "..t.." saniye") d.notice("S�re bitiminde g�zlemevinden d��ar�, giri�e ���nlanacaks�n�z.") end if t >= (60*10) then d.setf("LastTimeGetOutPut",c + 60*5) elseif t >= (60*5) then d.setf("LastTimeGetOutPut",c + 60*2) else d.setf("LastTimeGetOutPut",c + 10) end end end when Jp_OutAllFailNotice.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Zaman doldu.") server_timer("Jp_OutAll",1,d.get_map_index()) end end when CheckLevelAndCountKillOnMobs.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = d.getf("level") local mob_count = d.count_monster() local next_jump_time = set.NextJumpTime if level == 1 and mob_count <= 0 then d.notice("Az sonra ikinci kata ���nlanacaks�n�z.") server_timer("Jp_2",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt") elseif level == 3 and mob_count <= 0 then d.notice("Az sonra d�rd�nc� kata ���nlanacaks�n�z.") server_timer("Jp_4",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_4.txt") elseif level == 4 and mob_count <= 0 then d.notice("Az sonra be�inci kata ���nlanacaks�n�z.") server_timer("Jp_5",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt") elseif level == 6 and mob_count <= 0 then local MobStonelvl6 = set.MobVnum_level_6 d.notice("Ayaz Metini belirdi!") d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_6.txt") d.spawn_mob(MobStonelvl6,570,649) end snow_dungeon._GetLastTime() end end when Jp_2.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.key_level_2 d.setf("level",2) local cord = set.base_cord local pos = set.Position_level_2 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("Baz� canavarlar�n �zerinde buz anahtar� var.") d.notice("Buz anahtarlar� ellerinden al�n ve uyan anahtar� bulun! Fakat anahtar� sadece bir �aman kullanabilir.") end end when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin -- Buz Anahtar� �aman a�abilir 3/1 �ans local set = snow_dungeon.get_settings() local next_jump_time = set.NextJumpTime local job = pc.get_job() local level = d.getf("level") if level == 2 then if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then job = 3 end if job == 3 -- Schamane weiblich or job == 7 --Schamane m�nnlich then if number(1,3) == 1 then d.notice("Az sonra ���nc� kata ���nlanacaks�n�z.") server_timer("Jp_3",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_3.txt") if item.get_vnum() == 30331 then item.remove() end else d.notice("Do�ru anahtar� aramaya devam edin.") if item.get_vnum() == 30331 then item.remove() end end else say("Anahtar� sadece �amanlar kullanabilir.") return end end end when Jp_3.server_timer begin --Jump Level 3 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() d.setf("level",3) local cord_MQ = set.base_cord local pos = set.Position_level_3 d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2])) d.notice("B�t�n d��manlar� ma�lup edin!") end end when Jp_4.server_timer begin --Jump Level 4 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() d.setf("level",4) local cord = set.base_cord local pos = set.Position_level_4 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("B�t�n d��manlar� ma�lup edin! Kutsama size ikinci ak�nda g�� kazand�racak.") end end when Jp_5.server_timer begin --Jump Level 5 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.NpcVnum_level_5 d.setf("level",5) local cord = set.base_cord local pos = set.Position_level_5 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("Bir sonraki kata ge�mek i�in Arktos K�pleri'ndeki m�h�rleri s�ras�yla k�r�n.") d.notice("Buz canavarlar�n� ma�lup edin ve ellerinden kuzey y�ld�zlar�n� al�p m�h�rleri k�r�n!") snow_dungeon._Create_Stones_level5() end end function _DropKeyOnLevel5() if number(1,1000) >= 900 then --Abbruch der weiteren funtion -> Damit es spannend bleibt bei den w�rfeln... :P return end local set = snow_dungeon.get_settings() local count = set.StoneCount_level_5 local vnum = set.Key_on_level_5 local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."") local fail_count = d.getf("Stone_5_item_fail") +1 local search = d.getf("Stone_5_count") local search2 = d.get_unique_vid("stone5_"..search.."") if search2 != get_random_unique then d.setf("Stone_5_item_fail",fail_count) end game.drop_item_and_select(vnum,1) if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then item.set_socket(1,search2) d.setf("Stone_5_item_fail",0) elseif fail_count > 6 then item.set_socket(1,search2) d.setf("Stone_5_item_fail",0) else item.set_socket(1,get_random_unique) end end function _Create_Stones_level5() local set = snow_dungeon.get_settings() local stone_level5_count_MQ = set.StoneCount_level_5 local c = set.StoneCords_level_5 --{ {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}} local v = set.NpcVnum_level_5 for i = 1, stone_level5_count_MQ, 1 do local n = number(1,table.getn(c)) d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2])) table.remove(c,n) if i == 1 then d.setf("Stone_5_count",1) d.setf("Stone_5_item_fail",0) end end end when 20398.take begin --NpcVnum_level_5 if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local stone_level5_count = set.StoneCount_level_5 local next_jump_time = set.NextJumpTime if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then d.notice("TESTSERVERMODE, Biraz sonra ���nlanacaks�n�z.") npc.purge() if item.get_vnum() == 30332 then item.remove() end server_timer("Jp_6",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_6.txt") return end if item.get_vnum() == 30332 then local npc_vid = npc.get_vid() local search = d.getf("Stone_5_count") local search2 = d.get_unique_vid("stone5_"..search.."") if npc_vid == search2 then if item.get_socket(1) == npc.get_vid() then local new = search +1 if new > stone_level5_count then d.notice("Az sonra alt�nc� kata ���nlanacaks�n�z.") npc.purge() if item.get_vnum() == 30332 then item.remove() end server_timer("Jp_6",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_6.txt") else if new == 2 then say("Ba�ard�n�z! �imdi ikinci m�hr� a��n.") elseif new == 3 then say("Ba�ard�n�z! �imdi ���nc� m�hr� a��n.") elseif new == 4 then say("Ba�ard�n�z! �imdi d�rd�nc� m�hr� a��n.") elseif new == 5 then say("Ba�ard�n�z! �imdi be�inci m�hr� a��n.") elseif new == 6 then say("Ba�ard�n�z! �imdi alt�nc� m�hr� a��n.") end npc.purge() if item.get_vnum() == 30332 then item.remove() end end d.setf("Stone_5_count",new) else say("S�ralama do�ru! Fakat anahtar yanl��. Ba�ka") say("bir anahtar� deneyin.") if item.get_vnum() == 30332 then item.remove() end end else say("S�ralaman�n do�ru olmas�na dikkat edin! Ba�ka bir") say("k�p� deneyin.") if item.get_vnum() == 30332 then item.remove() end end end end end when Jp_6.server_timer begin --Jump Level 6 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.MobVnum_level_6 d.setf("level",6) local cord = set.base_cord local pos = set.Position_level_6 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("B�t�n buz canavarlar�n� ma�lup edin ve ard�ndan") d.notice("Ayaz Metini'ni yok edin. Ayaz Metini'ne sadece �amanlar hasar verebilir.") end end when Jp_7.server_timer begin --Jump Level 7 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.MobVnum_level_7 d.setf("level",7) local cord = set.base_cord local pos = set.Position_level_7 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("Ayaz�n ve buzun efendisi Szel'i bulun ve yok edin.") d.notice("Bunun �stesinden ancak ejderhan�n deste�iyle gelinebilir.") end end when Jp_8.server_timer begin --Jump Level 8 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.Key_on_level_8 d.setf("level",8) local cord = set.base_cord local pos = set.Position_level_8 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("B�t�n buz canavarlar�n� ma�lup edin ve buz�i�e�i") d.notice("anahtar�n� bulun. Anahtar� sadece Ninjalar ve �amanlar kullanabilir.") end end when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin local set = snow_dungeon.get_settings() local next_jump_time = set.NextJumpTime local level = d.getf("level") local job = pc.get_job() if level == 8 then if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then job = 3 end if number(1,3) == 1 then d.notice("Az sonra dokuzunca kata ���nlanacaks�n�z.") server_timer("Jp_9",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_9.txt") if item.get_vnum() == 30333 then item.remove() end else say("Yanl�� anahtard�. Do�ru anahtar� bulun!") if item.get_vnum() == 30333 then item.remove() end end end end when Jp_9.server_timer begin --Jump Level 9 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.NpcVnum_level_9 d.setf("level",9) local cord = set.base_cord local pos = set.Position_level_9 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("Kuzeyli Ejderha S�tunu'nu yok edin.") d.notice("Kuzeyli Ejderha S�tunu'na sadece �amanlar ve Ninjalar hasar verebilir.") d.spawn_mob(v,849,655) end end when Jp_Boss.server_timer begin --Jump Level BossZone if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.BossVnum d.setf("level",10) local cord = set.base_cord local pos = set.Position_level_10 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) d.notice("Ayaz�n ve buzun kral� Nemere'yi ma�lup edin.") end end when kill begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local next_jump_time = set.NextJumpTime local level = d.getf("level") local stone_level_6 = set.MobVnum_level_6 local stone_level_7 = set.MobVnum_level_7 local stone_level_9 = set.NpcVnum_level_9 local boss_vnum = set.BossVnum local wait_time = set.WaitBeforOutAllOnExit local mobvnum = npc.get_race() if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,50) then local v = set.key_level_2 game.drop_item(v,1) elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,20) then snow_dungeon._DropKeyOnLevel5() elseif level == 6 and mobvnum == stone_level_6 then d.notice("Az sonra yedinci kata ���nlanacaks�n�z.") server_timer("Jp_7",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel local v_MQv = set.MobVnum_level_7 local c = set.SzelCords_level_7 local n = number(1,table.getn(c)) d.spawn_mob(v_MQv, c[n][1], c[n][2]) elseif level == 7 and mobvnum == stone_level_7 then d.notice("Az sonra sekizinci kata ���nlanacaks�n�z.") server_timer("Jp_8",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt") elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,50) then local v = set.Key_on_level_8 game.drop_item(v,1) elseif level == 9 and mobvnum == stone_level_9 then d.clear_regen() d.kill_all() d.spawn_mob_dir(20397, 849,670,1) elseif level == 10 and mobvnum == boss_vnum then d.clear_regen() d.kill_all() notice_all("Nemere "..pc.get_name().." ve grubu taraf�ndan yok edildi.") d.notice("Nemere ma�lup edildi!") d.notice("Bir dakika i�erisinde Nemere G�zlemevi'nden d��ar� ���nlanacaks�n�z.") server_timer("Jp_OutAll",wait_time,d.get_map_index()) end end end when Jp_OutAll.server_timer begin --Jump Out Bye bye ;D if d.select(get_server_timer_arg()) then snow_dungeon._ExitAll() end end function _ExitAll() d.exit_all() end end end
[NEW] Ninja ve Şamansız Nemere Questi
Metin2 Lobby olarak, oyuncularımıza en kaliteli.quest deneyimini sunabilmek adına sürekli olarak yenilikler üretiyor ve mevcut sistemleri geliştiriyoruz. Bu bağlamda, Ninja ve Şaman sınıflarının bulunmadığı Nemere sunucuları için özelleştirilmiş bir.quest sistemi olan '[NEW] Ninja ve Şamansız Nemere Questi'ni duyurmaktan memnuniyet duyuyoruz. Bu.quest, özellikle Ninja ve Şaman sınıflarının olmaması sebebiyle bazı görevlerden mahrum kalan oyuncular için alternatif ödüller ve görev akışları sunmaktadır.
Questin Genel Yapısı
Quest, Metin2'nin orijinal.quest yapısına sadık kalınarak Lua dilinde yazılmıştır..quest dosyası, Metin2 Quest Sistemi kurallarına uygun şekilde tasarlanmıştır..quest akışı, oyuncuların seviyesine göre otomatik olarak yönlendirilir ve görevler, karakter sınıfına göre dinamik olarak ayarlanır. Ninja ve Şaman sınıfları olmayan Nemere sunucularda, bu sınıflarla ilişkili görevler yerine alternatif görevler sunulur. Bu sayede tüm sınıflar eşit şekilde.quest sisteminden faydalanabilir.
Questin Özellikleri
- Tüm sınıflar için dengeli.quest akışı.
- Ninja ve Şaman sınıflarına özel görevlerin yerine geçen alternatif görevler.
-.quest.reward sistemi ile yüksek seviye item ve 경험 puanları.
-.quest.timer ve.quest.trigger sistemleri ile otomatik görev takibi.
-.quest.debug ve.quest.state kontrolü ile kolay hata ayıklama imkanı.
-.quest.chain sistemi ile görev zincirleri.
-.quest.begin ve.quest.end işlemleri ile görev başlatma ve bitirme.
Quest Script Detayları
.quest script dosyası, Metin2 Lua dilinde yazılmıştır..quest dosyası, Metin2 Quest Edit sistemleri ile kolayca düzenlenebilir..quest.trigger mekanizması ile oyuncu hareketlerine göre.quest başlatılır..quest.flag sistemi ile.quest durumları takip edilir..quest.timer sayesinde zaman bazlı görevler sorunsuz çalışır..quest.state değişkenleri ile.quest aşamaları yönetilir..quest.reward bölümünde ise oyuncuya verilecek ödüller tanımlanır..quest.mob ve.quest.npc sistemleri ile görevde kullanılacak düşmanlar ve görev verici karakterler belirlenir.
Quest Hataları ve Çözüm Yolları
Bazı.quest dosyalarında hata oluşabilir..quest.hata durumlarında.quest.debug işlemi ile hata ayıklama yapılabilir..quest.server sistemlerinde karşılaşılan sorunlar için.script kontrolü önemlidir..quest.item ve.quest.mob sistemlerinde meydana gelen aksaklıklar için.test sunucusunda deneme yapılması önerilir..quest.chain sisteminde görev zincirlerinin doğru çalışması için.quest.begin ve.quest.end süreçlerinin dikkatle kodlanması gerekir.
Quest Ödülleri
.quest.reward sistemi, oyuncuların.quest tamamladıklarında alacakları ödülleri içerir..quest.item olarak yüksek değerli ekipmanlar,.EXP bonusu, altın veya özel efekt item'leri verilebilir..quest.daily gibi günlük görevler ile oyunculara sürekli ilham veren ödüller sunulabilir..quest.server üzerinde farklı ödül sistemleri entegre edilebilir..quest.npc aracılığıyla ödüller doğrudan verilebilir veya.quest.reward menüsü üzerinden seçimli ödül sistemi uygulanabilir.
Metin2 Lobby'de.quest Geliştirme
Metin2 Lobby olarak,.quest development konusunda uzman ekip ile çalışıyoruz..quest development sürecinde hem orijinal.quest yapısına sadık kalınıyor hem de kullanıcı dostu yeni sistemler geliştiriliyor..quest.lua formatında yazılmış bu.quest, Martysama Quest ve diğer.quest.dev sistemleri ile uyumlu çalışmaktadır..quest.edit işlemleri için gerekli tüm araçlar Metin2 Lobby kullanıcılarına ücretsiz sunulmaktadır.
[NEW] Ninja and Shamanless Nemere Quest
As Metin2 Lobby, we constantly create innovations and improve existing systems to provide our players with the highest quality quest experience. In this context, we are pleased to announce '[NEW] Ninja and Shamanless Nemere Quest', a customized quest system designed specifically for servers where the Ninja and Shaman classes are not available. This quest provides alternative rewards and task flows for players who might otherwise miss out on certain quests due to the absence of these classes.
General Structure of the Quest
The quest is written in the Lua language while adhering to Metin2's original quest structure. The quest file has been designed in accordance with the Metin2 Quest System rules. The quest flow is automatically directed based on the player's level, and tasks are dynamically adjusted according to the character class. On Nemere servers where Ninja and Shaman classes do not exist, alternative tasks replace those associated with these classes, allowing all classes to benefit equally from the quest system.
Features of the Quest
- Balanced quest flow for all classes.
- Alternative tasks replacing Ninja and Shaman-specific quests.
- High-level item and EXP point rewards through the quest reward system.
- Automatic quest tracking via quest timer and trigger systems.
- Easy debugging capabilities through quest debug and state checks.
- Quest chains for linked missions.
- Quest start and end processes managed by quest begin and end functions.
Quest Script Details
The quest script file is written in Metin2 Lua. The quest file can be easily edited using Metin2 Quest Edit tools. The quest trigger mechanism initiates quests based on player actions. The quest flag system tracks quest states. The quest timer ensures time-based tasks run smoothly. Quest state variables manage quest stages. The quest reward section defines the rewards given to the player. Quest mob and npc systems determine enemies and NPCs involved in the quest.
Quest Errors and Solutions
Errors may occur in some quest files. During quest error situations, debugging can be done via the quest debug process. For issues encountered in quest server systems, script checks are important. Testing on a test server is recommended for glitches in quest item and mob systems. Correct coding of quest begin and end processes is necessary to ensure proper functioning of quest chains.
Quest Rewards
The quest reward system includes the rewards players receive upon completing a quest. As quest items, high-value equipment, EXP bonuses, gold, or special effect items can be awarded. Daily quests like quest daily offer continuous rewarding incentives. Different reward systems can be integrated into the quest server. Rewards can be directly given via quest NPCs or offered through a selection-based reward menu.
Quest Development at Metin2 Lobby
At Metin2 Lobby, we work with an expert team on quest development. During the quest development process, we remain faithful to the original quest structure while also developing new user-friendly systems. This quest, written in quest.lua format, is compatible with Martysama Quest and other quest.dev systems. Tools required for quest edit operations are provided free of charge to Metin2 Lobby users.
