Merhaba Değerli Forum Üyeleri Forumda Yeniyim Elimde Olan Questleri Paylaşayım Dedim
Çalıştığına Dair Kanıt ;
Çalıştığına Dair Kanıt ;
Kod:
quest dragonlair begin state start begin when logout begin if pc.get_map_index() == 35 then pc.delqf("icerdesin1") pc.delqf("icerdesin2") pc.delqf("icerdesin3") pc.delqf("icerdesin4") end end when 30121.chat."Ejderhayı öldürmek istiyorum!" with pc.get_map_index() == 34 begin if pc.get_channel_id() == 1 or pc.get_channel_id() == 5 and pc.getqf("vip") == 1 or pc.is_gm() then if game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 2 and game.get_event_flag("time_1"..pc.get_channel_id().."") - get_time() > 0 then say_title("Sura Ruhu:") say("") say("Üzgünüm Ejderha Tapınağı şuan dolu.") say("Kalan süre: "..game.get_event_flag("time_1"..pc.get_channel_id().."") - get_time().." saniye") say("") return end if game.get_event_flag("time_1"..pc.get_channel_id().."") - get_time() < 0 and game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") >= 1 then game.set_event_flag("ejder_kullanimda"..pc.get_channel_id().."",0) kill_all_in_map(35) warp_all_to_village(35) setskin(NOWINDOW) return end if game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 0 and pc.count_item(30179) < 3 then say_title("Sura Ruhu:") say("Gerekli eşya 3x: "..item_name(30179)..":") say_item_vnum(30179) say("3 adet anahtara ihtiyacın var.") return end if game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 1 then say_title("Sura Ruhu:") pc.setqf("ejder_bug_engel2",get_time()+10) say("") say("Üzgünüm Ejderha Tapınağı şuan dolu.") say("Eğer şifreyi biliyorsan,") say("doğru bir şekilde yaz.") say("") local sifre = tonumber(input("")) if get_time() > pc.getqf("ejder_bug_engel2") then pc.setqf("ejder_bug_engel2",get_time()+0) return end if game.get_event_flag("ejder_sifresi"..pc.get_channel_id().."") == sifre then say_title("Sura Ruhu:") say("") if pc.count_item(30179) < 3 then say("Girmene izin veremem.") say("Gerekli eşya 3x: "..item_name(30179)..":") say_item_vnum(30179) say("3 tane anahtara sahip olduğunda tekrar gel.") return end pc.remove_item("30179",3) say("Şifre doğru tebrikler!") say("Seni içeri gönderiyorum. Onu yenmeden dönme!") pc.setqf("icerdesin"..pc.get_channel_id().."",1) wait() pc.warp(843600,1066900) elseif sifre != game.get_event_flag("ejder_sifresi"..pc.get_channel_id().."") then say_title("Sura Ruhu:") say("Üzgünüm şifreyi hatalı girdin.") return end end if game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 0 and pc.count_item(30179) >= 3 then say_title("Sura Ruhu:") say("Ejderha Tapınağı'na girmek isteyen ilk kişi") say("sensin. Yeterli sayıda Kıvrık Anahtara sahipsen") say("seni içeri bırakacağım. Ama ilk önce bir şifre") say("belirleyeceksin. Bu şifreyi, 5 dakika") say("içerisinde savaş arkadaşlarına verip onların") say("içeri girmesini sağlayabilirsin. Bu anahtarın") say("sadece 60 dakika tesir edeceğini unutma. O zamana") say("kadar ejderhayı öldürmüş olmanız gerekiyor!") say("") pc.setqf("ejder_bug_engel3",get_time()+10) local i = select("Hazırım!", "Vazgeç ") if get_time() > pc.getqf("ejder_bug_engel3") then pc.setqf("ejder_bug_engel3",get_time()+0) return end if 1 == i and game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 0 then pc.setqf("ejder_bug_engel2",get_time()+10) say_title("Sura Ruhu:") local pin1 = number(1000,99999) local pin2 = number(1000,99999) local pin3 = number(1000,99999) local pin4 = number(1000,99999) local pin5 = number(1000,99999) local pin6 = number(1000,99999) local gercek = number(2,7) local pin if gercek == 2 then pin = pin1 elseif gercek == 3 then pin = pin2 elseif gercek == 4 then pin = pin3 elseif gercek == 5 then pin = pin4 elseif gercek == 6 then pin = pin5 elseif gercek == 7 then pin = pin6 end say_reward("Seçmen gereken şifre : "..pin) say_reward("10 saniye süren var!") local sifre = select("Vazgeç ",pin1,pin2,pin3,pin4,pin5,pin6) if get_time() > pc.getqf("ejder_bug_engel2") then say_title("Sura Ruhu:") say("10 saniye doldu şansını tekrar dene.") pc.setqf("ejder_bug_engel2",get_time()+0) return end if sifre == gercek and pc.count_item(30179)>=3 then say_title("Sura Ruhu:") say("") say("Arzu edersen seni doğrudan Ejderha Mağarası'na") say("götürebilirim. Bana şimdi vermen gerekenler:") say("3x:") say_item_vnum(30179) pc.setqf("ejder_bug_engel3",get_time()+10) local zaxd = select("Al ve beni içeri bırak!","Vazgeç ") if get_time() > pc.getqf("ejder_bug_engel3") then pc.setqf("ejder_bug_engel3",get_time()+0) return end if zaxd == 2 then return elseif zaxd == 1 and game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") == 0 then if game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") != 0 then syschat("Ejderha odasına başka bir grup girdi.") return end pc.remove_item("30179",3) pc.setqf("icerdesin"..pc.get_channel_id().."",1) pc.setqf("lider",1) pc.setqf("ejder_sifre",pin) game.set_event_flag("ejder_kullanimda"..pc.get_channel_id().."",1) clear_server_timer("ejderi_kescen"..pc.get_channel_id().."",get_server_timer_arg()) clear_server_timer("disari_yolluyoz"..pc.get_channel_id().."",get_server_timer_arg()) game.set_event_flag("ejder_sifresi"..pc.get_channel_id().."",pin) game.set_event_flag("time_1"..pc.get_channel_id().."", get_time()+60*60*1) --timer("iceri_gir",3) pc.warp(843600, 1066900) elseif zaxd == 1 and game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") != 0 then say_title("Sura Ruhu:") say("") say("Birileri senden önce davrandı. Onların") say("odadan çıkmalarını bekle ya da parolayı ") say("biliyorsan söyle.") end else say_title("Sura Ruhu:") say("") say("Bir hata oluştu.") say("") end end end else say("Sadece CH1'den giriş yapabilirsin.") say_reward("VIP oyuncular VIP CH'sinden giriş yapabilir.") end end --when iceri_gir.timer begin --notice_all(""..pc.get_name().." grubu, Mavi Ejderha'yı öldürmeye çalışıyor!") --pc.warp(843600, 1066900) --cleartimer("iceri_gir") --end when login begin if pc.getqf("icerdesin"..pc.get_channel_id().."") == 1 then send_letter("Mavi Ejderha'yı mağlup edin") end if pc.is_gm() then chat("CH1 Ejder Odası Şifresi : "..game.get_event_flag("ejder_sifresi1")) chat("CH2 Ejder Odası Şifresi : "..game.get_event_flag("ejder_sifresi2")) chat("CH3 Ejder Odası Şifresi : "..game.get_event_flag("ejder_sifresi3")) chat("CH4 Ejder Odası Şifresi : "..game.get_event_flag("ejder_sifresi4")) chat("VIP Ejder Odası Şifresi : "..game.get_event_flag("ejder_sifresi5")) end end when button or info begin q.set_clock("Kalan süre:", game.get_event_flag("time_1"..pc.get_channel_id().."")-get_time()) dragonlair.ejder_odasi_kalansure() end when login with pc.get_map_index() == 35 and pc.getqf("icerdesin"..pc.get_channel_id().."") != 1 begin pc.warp(180100,1220400) end when login with pc.get_map_index() == 35 and pc.getqf("lider") == 1 begin kill_all_in_map(35) server_timer("sifre_kapat"..pc.get_channel_id().."", 300,pc.get_map_index()) server_timer("ejderi_kescen"..pc.get_channel_id().."", 3600,pc.get_map_index()) dragonlair.ejder_odasi_kalansure() pc.setqf("lider",2) pc.set_warp_location(34 , 1801, 12204) clear_server_timer("getir_ejderi",get_server_timer_arg()) notice_all("CH "..pc.get_channel_id()..": "..pc.get_name().." grubu, Mavi Ejderha'yı öldürmeye çalışıyor!") notice(""..pc.getqf("ejder_sifre").." numaralı şifreyi dağıtmaya 5 dakika zamanın var") notice("Uzaklardan ejderin sesleri duyulmaya başladı!") server_timer("getir_ejderi",3) end when getir_ejderi.server_timer begin regen_in_map(35,"data/dungeon/skia_deliboss.txt") end when login with pc.get_map_index() == 35 and pc.getqf("icerdesin"..pc.get_channel_id().."") == 1 and pc.getqf("lider") != 1 begin dragonlair.ejder_odasi_kalansure() pc.set_warp_location(34 , 1801, 12204) end when kill with npc.get_race() == 8031 or npc.get_race() == 8032 or npc.get_race()== 8033 or npc.get_race() == 8034 and pc.get_map_index() == 35 begin local n =game.get_event_flag("kesilen_metin"..pc.get_channel_id().."") + 1 game.set_event_flag("kesilen_metin"..pc.get_channel_id().."", n) if n > 3 then local t = number(1,4) if 1 == t then regen_in_map(35,"data/dungeon/skia_boss1.txt") elseif 2 == t then regen_in_map(35,"data/dungeon/skia_boss2.txt") elseif 3 == t then regen_in_map(35,"data/dungeon/skia_boss3.txt") else regen_in_map(35,"data/dungeon/skia_boss4.txt") end end end when kill with npc.get_race() == 2493 and pc.get_map_index() == 35 and game.get_event_flag("ejder_kullanimda"..pc.get_channel_id().."") >= 1 begin game.drop_item_with_ownership("71123",1) game.drop_item_with_ownership("71129",1) local drop_chance = number(1,10) if drop_chance == 5 then game.drop_item_with_ownership("71129",1) end notice_all("CH "..pc.get_channel_id()..": "..pc.get_name().." grubu, Mavi Ejderha'yı öldürdü!") game.set_event_flag("time_1"..pc.get_channel_id().."",get_time() + 5*60) clear_server_timer("ejderi_kescen"..pc.get_channel_id().."",get_server_timer_arg()) server_timer("disari_yolluyoz"..pc.get_channel_id().."",30, pc.get_map_index()) ---300 olcak forked.warp_all_in_map("35","34","180100","1220400",295) end when sifre_kapat1.server_timer begin game.set_event_flag("ejder_kullanimda1",2) end when disari_yolluyoz1.server_timer begin notice_all("CH 1: Mavi Ejderha geri döndü!") game.set_event_flag("kesilen_metin1",0) kill_all_in_map(35) warp_all_to_village(35) clear_server_timer("ejderi_kescen1",get_server_timer_arg()) game.set_event_flag("ejder_kullanimda1",0) forked.warp_all_in_map("35","34","180100","1220400",1) end when ejderi_kescen1.server_timer with game.get_event_flag("time_11") - get_time() <= 0 begin ---warp_all_in_map(35,180100,1220400) forked.warp_all_in_map("35","34","180100","1220400",1) notice_all("CH 1: Mavi Ejderha hâlâ yaşıyor!") kill_all_in_map(35) warp_all_to_village(35) game.set_event_flag("kesilen_metin1",0) game.set_event_flag("ejder_kullanimda1",0) end when sifre_kapat2.server_timer begin game.set_event_flag("ejder_kullanimda2",2) end when disari_yolluyoz2.server_timer begin notice_all("CH 2: Mavi Ejderha geri döndü!") game.set_event_flag("kesilen_metin2",0) kill_all_in_map(35) warp_all_to_village(35) clear_server_timer("ejderi_kescen2",get_server_timer_arg()) game.set_event_flag("ejder_kullanimda2",0) forked.warp_all_in_map("35","34","180100","1220400",1) end when ejderi_kescen2.server_timer with game.get_event_flag("time_12") - get_time() <= 0 begin ---warp_all_in_map(35,180100,1220400) forked.warp_all_in_map("35","34","180100","1220400",1) notice_all("CH 2: Mavi Ejderha hâlâ yaşıyor!") kill_all_in_map(35) warp_all_to_village(35) game.set_event_flag("kesilen_metin2",0) game.set_event_flag("ejder_kullanimda2",0) end when sifre_kapat3.server_timer begin game.set_event_flag("ejder_kullanimda3",2) end when disari_yolluyoz3.server_timer begin notice_all("CH 3: Mavi Ejderha geri döndü!") game.set_event_flag("kesilen_metin3",0) kill_all_in_map(35) warp_all_to_village(35) clear_server_timer("ejderi_kescen3",get_server_timer_arg()) game.set_event_flag("ejder_kullanimda3",0) forked.warp_all_in_map("35","34","180100","1220400",1) end when ejderi_kescen3.server_timer with game.get_event_flag("time_13") - get_time() <= 0 begin ---warp_all_in_map(35,180100,1220400) forked.warp_all_in_map("35","34","180100","1220400",1) notice_all("CH 3: Mavi Ejderha hâlâ yaşıyor!") kill_all_in_map(35) warp_all_to_village(35) game.set_event_flag("kesilen_metin3",0) game.set_event_flag("ejder_kullanimda3",0) end when sifre_kapat4.server_timer begin game.set_event_flag("ejder_kullanimda4",2) end when disari_yolluyoz4.server_timer begin notice_all("CH 4: Mavi Ejderha geri döndü!") game.set_event_flag("kesilen_metin4",0) kill_all_in_map(35) warp_all_to_village(35) clear_server_timer("ejderi_kescen4",get_server_timer_arg()) game.set_event_flag("ejder_kullanimda4",0) forked.warp_all_in_map("35","34","180100","1220400",1) end when ejderi_kescen4.server_timer with game.get_event_flag("time_14") - get_time() <= 0 begin ---warp_all_in_map(35,180100,1220400) forked.warp_all_in_map("35","34","180100","1220400",1) notice_all("CH 4: Mavi Ejderha hâlâ yaşıyor!") kill_all_in_map(35) warp_all_to_village(35) game.set_event_flag("kesilen_metin4",0) game.set_event_flag("ejder_kullanimda4",0) end when login with pc.get_map_index() != 35 begin if pc.getqf("icerdesin1") == 1 or pc.getqf("icerdesin2") == 1 or pc.getqf("icerdesin3") == 1 or pc.getqf("icerdesin4") == 1 then pc.delqf("icerdesin1") pc.delqf("icerdesin2") pc.delqf("icerdesin3") pc.delqf("icerdesin4") pc.delqf("ejder_sifre") pc.delqf("lider") end end function ejder_odasi_kalansure() local saniyekalan = (game.get_event_flag("time_1"..pc.get_channel_id().."") - get_time()) local dakikakalan = math.ceil(saniyekalan / 60) notice("Mavi Ejderha'yı öldürmeye "..dakikakalan.." dakikalık bir zaman") notice("kaldı!") end end end[/FONT]
Okuduğunuz İcin Tesekürler
Bi Tesekür Yeterli
İyi Forumlar
DisasterMan • 4 Ch Ejderha Giriş Quest: Metin2'de Görev Sisteminin Oluşturulması
Metin2 sunucularında quest sistemleri, oyuncuların oyun içindeki ilerlemesini yönlendiren ve deneyimi zenginleştiren temel yapı taşlarıdır. Bu yazıda, DisasterMan tarafından geliştirilen 4 Ch Ejderha Giriş Quest adlı özel quest sistemini detaylıca ele alacağız. Bu quest, oyuncuların 4. Karakter Seviyesi (4 Ch) ile Ejderha sınıfına giriş yapabilmeleri için tasarlanmış önemli bir görevdir. Quest sistemine dair teknik bilgiler, Lua script yapısı ve hata ayıklama süreçleri bu rehberde detaylı şekilde ele alınmaktadır.
Quest Nedir?
Quest, oyuncuların belirli görevleri yerine getirmesiyle gelişim gösterdiği, ödüller kazandığı ve oyun dünyasında ilerleme sağladığı sistemlerdir. Metin2 oyununda quest sistemleri genellikle Lua dilinde yazılır. Metin2 quest dosyaları, server_core tarafında çalıştırılır ve oyuncu ile etkileşim kurarak farklı durumlar yaratır. Quest sistemleri, trigger, timer, flag, state, begin ve end gibi birçok yapıyı içerir.
4 Ch Ejderha Giriş Quest Hakkında
Bu quest, oyuncuların 4. karakter seviyesine ulaştığında otomatik olarak başlatılan veya bir NPC üzerinden başlatılan bir görevdir. Ejderha sınıfına geçiş yapabilmek için gerekli koşulları yerine getirmeleri istenir. Bu süreçte oyunculara belirli mob türlerini öldürmeleri, eşya toplamaları veya belirli konumlara gitmeleri gibi görevler verilir. Quest tamamlandığında oyuncuya ödül olarak özel item'lar, EXP, gold veya sınıfa özel bonuslar verilir.
Quest Script Yapısı
Quest'ler genellikle lua formatında yazılır. Metin2 quest script dosyaları, quest_list.lua dosyasına eklenir ve sunucu yeniden başlatıldığında aktif hale gelir. DisasterMan’ın geliştirdiği 4 Ch Ejderha Giriş Quest dosyası da bu yapıya uygun şekilde hazırlanmıştır. Bu script, quest begin ile başlar ve quest end ile sona erer. İçerisinde condition, start, progress ve complete gibi bölümler barındırır.
Quest Hazırlama ve Test Süreci
Yeni bir custom quest oluştururken dikkat edilmesi gereken bazı önemli unsurlar vardır. Öncelikle quest dosyasının doğru bir şekilde lua syntax'ına uygun olması gerekir. Ayrıca quest içinde kullanılacak flag ve state değerleri dikkatli şekilde tanımlanmalıdır. Hatalar genellikle quest debug işlemleriyle tespit edilir. Metin2dev veya Martysama gibi topluluklar, quest geliştirme sürecinde büyük destek sağlar.
Quest Hata Ayıklama (Debug)
Quest geliştirirken karşılaşılan hatalar, oyun içinde beklentilerin dışına çıkmasına neden olabilir. Metin2 quest hata ayıklama, log dosyalarının incelenmesiyle yapılır. Lua kodlarında eksik parantez, yanlış değişken adı veya eksik fonksiyon tanımlaması gibi hatalar sıkça karşılaşılan sorunlardır. Quest debug araçları ve server_core logları yardımıyla bu hatalar kolayca tespit edilebilir.
Sonuç
DisasterMan tarafından hazırlanan 4 Ch Ejderha Giriş Quest, Metin2 özel sunucularında görev sistemlerinin nasıl geliştirileceğini gösteren harika bir örnektir. Quest geliştirme, hem teknik hem de yaratıcı yönüyle ilgi çekici bir alandır. Doğru yapılmış bir quest, oyuncuların oyun deneyimini ciddi anlamda artırabilir. Metin2lobby.com olarak, bu tür özgün içeriklerin paylaşılmasını teşvik ediyoruz.
DisasterMan • 4 Ch Dragon Entry Quest: Creating a Quest System in Metin2
Metin2 servers, quest systems are fundamental elements that guide player progression and enhance the gaming experience. In this article, we will examine in detail the special quest system titled 4 Ch Dragon Entry Quest developed by DisasterMan. This quest is designed for players to enter the Dragon class upon reaching 4th Character Level. Technical information about the quest system, its Lua script structure, and debugging processes are thoroughly covered in this guide.
What Is a Quest?
Quests are systems where players perform certain tasks to progress, earn rewards, and advance within the game world. In Metin2, quest systems are generally written in Lua language. Metin2 quest files run on the server_core and interact with the player to create various states. Quest systems include structures such as trigger, timer, flag, state, begin, and end.
About the 4 Ch Dragon Entry Quest
This quest is automatically initiated when players reach 4th character level or started through an NPC. Players must fulfill specific conditions to switch to the Dragon class. During this process, players may be tasked with killing certain mobs, collecting items, or traveling to specific locations. Upon completion of the quest, players receive rewards such as exclusive items, EXP, gold, or class-specific bonuses.
Quest Script Structure
Quests are usually written in Lua format. Metin2 quest script files are added to the quest_list.lua file and become active after restarting the server. The 4 Ch Dragon Entry Quest file created by DisasterMan is prepared accordingly. The script begins with quest begin and ends with quest end. It includes sections like condition, start, progress, and complete.
Quest Preparation and Testing Process
When creating a new custom quest, there are several important factors to consider. First, the quest file must comply with correct Lua syntax. Additionally, flag and state values used within the quest must be defined carefully. Errors are often detected through quest debug operations. Communities like Metin2dev or Martysama provide significant support during the quest development process.
Quest Debugging
Errors encountered during quest development can cause unexpected behaviors in-game. Metin2 quest errors are identified by examining log files. Missing parentheses, incorrect variable names, or missing function definitions in Lua codes are common issues. These errors can be easily detected with quest debug tools and server_core logs.
Conclusion
The 4 Ch Dragon Entry Quest prepared by DisasterMan is an excellent example demonstrating how quest systems can be developed in private Metin2 servers. Quest development is an interesting area both technically and creatively. A well-made quest can significantly enhance the player's gaming experience. As Metin2lobby.com, we encourage sharing of such original content.
