Ejder Odası Karakter Atıp İçeride Kalma Bug'u Fix! - LykeeN Farkıyla...

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 75

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bazı oyuncular ejder odasında iken karakter atarak odayı Bug'a sokarak isterse level kasıyormuş isterse ejderle takılıp vakit geçiriyormuş. Bizede bunu önlemek düşerdi ve önledik :)

Buyrun hayırlı kullanımlar.. :)

Kod:
-- // ++ // ++ // ++ // ++ // ++ // ++ // ++ // ++ // ++ // // ++ -- --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- --+         Bu QUEST Turkmmo LykeeN tarafından hazırlanmıştır.     +-- --+             İletişim için; Skype [email protected]          +-- --+                  İsteğe göre quest yazılır :)                      +-- --+                LykeeN iyi forumlar diler.                      +-- --+                    http://www.turkmmo.com/                         +-- --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- -- // ++ // ++ // ++ // ++ // ++ // ++ // ++ // ++ // ++ // // ++ -- quest dragonlair begin     state start begin         when logout begin             if pc.get_map_index() == 79 then                 pc.delqf("icerdesin1")                 pc.delqf("icerdesin2")                 pc.delqf("lider")             end         end                 when login or logout with pc.get_map_index() == 79 and pc.get_channel_id() == 1 begin             if game.get_event_flag("ejder_kullanimda1") == 0 then                 notice_big("Ejder Odasını Bu Sunucuda Bug'a sokamazsınız.")                 pc . warp ( 131900 , 1.3437e+06 )             else                 return             end           end         when login or logout with pc.get_map_index() == 79 and pc.get_channel_id() == 2 begin             if game.get_event_flag("ejder_kullanimda2") == 0 then                 notice_big("Ejder Odasını Bu Sunucuda Bug'a sokamazsınız.")                 pc . warp ( 131900 , 1.3437e+06 )             else                 return             end           end                 when 30121.chat."Ejderhayı öldürmek istiyorum!" with pc.get_map_index() == 73 and pc.get_channel_id() == 1 or pc.get_channel_id() == 2 begin         if pc.get_channel_id() == 2 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)                 purge_area(829200,1059600,844200,1074600)                 ---warp_all_in_map(79,180100,1220400)                 warp_all_to_village(79)                 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                 pc.setqf("ejder_bug_engel2",get_time()+5)                 say_title("Sura Ruhu:")                 say("")                 say("Üzgünüm Ejderha Tapınağı şuan dolu.")                 say("Eğer şifreyi biliyorsan,")                 say("doğru bir şekilde yaz.")                 say("")                 say_reward("5 saniye süren var!")                 say("")             local pin = tonumber(input(""))                 if get_time() > pc.getqf("ejder_bug_engel2") then                     say_title("Sura Ruhu:")                     say("5 saniye doldu şansını tekrar dene.")                     pc.setqf("ejder_bug_engel2",get_time()+0)                     return                 end                 if string.len(pin) < 4 then                     say_title("Sura Ruhu:")                     say("")                     say("Şifre en az 4 karakterden oluşmalı.")                     return                     end                 if game.get_event_flag("ejder_sifresi"..pc.get_channel_id().."") == pin 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 pin != 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()+5)             local i = select("Hazırım!", "Vazgeç ")                 if get_time() > pc.getqf("ejder_bug_engel3") then                     say_title("Sura Ruhu:")                     say("5 saniye doldu şansını tekrar dene.")                     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                 say_title("Sura Ruhu:")                 pc.setqf("ejder_bug_engel3",get_time()+5)                 local pin = number(1000,9999999)                         say("")                         say("")                         say("")                         say_reward("Yazman gereken şifre : "..pin)                         say_reward("5 saniye süren var!")                     local giris = tonumber ( input ( "" ) )                     if get_time() > pc.getqf("ejder_bug_engel3") then                                     say_title("Sura Ruhu:")                                     say("5 saniye doldu şansını tekrar dene.")                                     pc.setqf("ejder_bug_engel3",get_time()+0)                                     return                                 end                     if giris != pin then                     say_title("Sura Ruhu:")                     say("")                     say_red("Malesef, Yanlış yazdın.")                     return                     end                     if pin and pin <= 999999999 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()+5)                     local zaxd = select("Al ve beni içeri bırak!","Vazgeç ")                     if get_time() > pc.getqf("ejder_bug_engel3") then                                 say_title("Sura Ruhu:")                                 say("5 saniye doldu şansını tekrar dene.")                                 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                         game.set_event_flag("ejder_kullanimda"..pc.get_channel_id().."",1)                         pc.setqf("ejder_sifre",pin)                         pc.setqf("icerdesin"..pc.get_channel_id().."",1)                         pc.remove_item("30179",3)                         pc.setqf("lider",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             elseif pc.get_channel_id() == 1 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)                 purge_area(829200,1059600,844200,1074600)                 ---warp_all_in_map(79,241300,1275400)                 warp_all_to_village(79)                 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                 pc.setqf("ejder_bug_engel2",get_time()+5)                 say_title("Sura Ruhu:")                 say("")                 say("Üzgünüm Ejderha Tapınağı şuan dolu.")                 say("Eğer şifreyi biliyorsan,")                 say("doğru bir şekilde yaz.")                 say("")                 say_reward("5 saniye süren var!")                 say("")             local pin = tonumber(input(""))                 if get_time() > pc.getqf("ejder_bug_engel2") then                     say_title("Sura Ruhu:")                     say("5 saniye doldu şansını tekrar dene.")                     pc.setqf("ejder_bug_engel2",get_time()+0)                     return                 end                 if string.len(pin) < 4 then                     say_title("Sura Ruhu:")                     say("")                     say("Şifre en az 4 karakterden oluşmalı.")                     return                     end                 if game.get_event_flag("ejder_sifresi"..pc.get_channel_id().."") == pin 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 pin != 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()+5)             local i = select("Hazırım!", "Vazgeç ")                 if get_time() > pc.getqf("ejder_bug_engel3") then                     say_title("Sura Ruhu:")                     say("5 saniye doldu şansını tekrar dene.")                     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()+5)                         say_title("Sura Ruhu:")                         local pin1 = number(1000,9999999)                         local pin2 = number(1000,9999999)                         local pin3 = number(1000,9999999)                         local pin4 = number(1000,9999999)                         local pin5 = number(1000,9999999)                         local pin6 = number(1000,9999999)                         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("5 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("5 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)                             say_reward("5 saniye süren var!")                             pc.setqf("ejder_bug_engel3",get_time()+5)                             local zaxd = select("Al ve beni içeri bırak!","Vazgeç ")                             if get_time() > pc.getqf("ejder_bug_engel3") then                                 say_title("Sura Ruhu:")                                 say("5 saniye doldu şansını tekrar dene.")                                 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                         game.set_event_flag("ejder_kullanimda"..pc.get_channel_id().."",1)                         pc.setqf("ejder_sifre",pin)                         pc.setqf("icerdesin"..pc.get_channel_id().."",1)                         pc.remove_item("30179",3)                         pc.setqf("lider",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                 return             end         end         when login begin             if pc.getqf("icerdesin"..pc.get_channel_id().."") == 1 then                 send_letter("Mavi Ejderha'yı mağlup edin")             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() == 79 and pc.getqf("icerdesin"..pc.get_channel_id().."") != 1 begin             pc.warp(180100,1220400)         end         when login with pc.get_map_index() == 79 and pc.getqf("lider") == 1 begin             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")             notice("var!")             purge_area(829200,1059600,844200,1074600)             regen_in_map(79,"data/dungeon/skia_deliboss.txt")             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(73 , 1801, 12204)           end         when login with pc.get_map_index() == 79 and pc.getqf("icerdesin"..pc.get_channel_id().."") == 1 and pc.getqf("lider") != 1 begin             dragonlair.ejder_odasi_kalansure()             pc.set_warp_location(73 , 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() == 79 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(79,"data/dungeon/skia_boss1.txt")                 elseif 2 == t then                 regen_in_map(79,"data/dungeon/skia_boss2.txt")                 elseif 3 == t then                 regen_in_map(79,"data/dungeon/skia_boss3.txt")                 else                 regen_in_map(79,"data/dungeon/skia_boss4.txt")                 end             end         end         when kill with npc.get_race() == 2493 and pc.get_map_index() == 79 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().."",60*5, pc.get_map_index()) ---300 olcak             forked.warp_all_in_map("79","73","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)             purge_area(829200,1059600,844200,1074600)             clear_server_timer("ejderi_kescen1",get_server_timer_arg())             game.set_event_flag("ejder_kullanimda1",0)             forked.warp_all_in_map("79","73","180100","1220400",1)         end         when ejderi_kescen1.server_timer with game.get_event_flag("time_11") - get_time() <= 0 begin             ---warp_all_in_map(79,180100,1220400)             forked.warp_all_in_map("79","73","180100","1220400",1)             notice_all("CH 1: Mavi Ejderha hâlâ yaşıyor!")             purge_area(829200,1059600,844200,1074600)             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)             purge_area(829200,1059600,844200,1074600)             clear_server_timer("ejderi_kescen2",get_server_timer_arg())             game.set_event_flag("ejder_kullanimda2",0)             forked.warp_all_in_map("79","73","180100","1220400",1)         end         when ejderi_kescen2.server_timer with game.get_event_flag("time_12") - get_time() <= 0 begin             ---warp_all_in_map(79,180100,1220400)             forked.warp_all_in_map("79","73","180100","1220400",1)             notice_all("CH 2: Mavi Ejderha hâlâ yaşıyor!")             purge_area(829200,1059600,844200,1074600)             game.set_event_flag("kesilen_metin2",0)             game.set_event_flag("ejder_kullanimda2",0)         end         when login with pc.get_map_index() != 79 begin             if pc.getqf("icerdesin1") == 1 or pc.getqf("icerdesin2") == 1 then                 pc.delqf("icerdesin1")                 pc.delqf("icerdesin2")                 pc.delqf("ejder_sifre")                 pc.delqf("lider")             end         end         when 30121.chat."Süreyi sıfırla" with pc.is_gm() and pc.get_map_index() == 73 and pc.get_channel_id() == 1 or pc.get_channel_id() == 2 begin             say_title("Sura Ruhu;")             say("Sıfırlamak istediğinden emin misin ?")             local cyvercha = select("Evet","Hayır")             if cyvercha == 2 then                 return             elseif cyvercha == 1 then                 notice_all("CH "..pc.get_channel_id()..": Kristal oda süresi sıfırlanmıştır.")                 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().."",60*5, pc.get_map_index()) ---300 olcak                 forked.warp_all_in_map("79","73","241300","1275400",295)             end         end         function ejder_odasi_kalansure()             if pc.get_map_index() == 79 then                 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ı!")             else             end         end       end end

Ejder Odası Karakter Atıp İçerde Kalma Bug'u Fix!
Metin2 Lobby olarak, oyuncularımızın oyun deneyimini daha stabil ve keyifli hale getirmek adına sürekli olarak sistem güncellemeleri ve hata düzeltmeleri yapmaktayız. Bu doğrultuda, LykeeN sunucumuzda yaşanan 'Ejder Odası Karakter Atıp İçerde Kalma Bug'u' konusunda önemli bir düzeltme gerçekleştirdik. Bu yazıda, bug'ın ne olduğundan, neden oluştuğundan ve nasıl düzeltilmiş olduğundan bahsedeceğiz.

Bug Nedir?
Metin2 oyununda 'Ejder Odası' (Dragon Lair), yüksek seviye oyuncuların girebildiği zorlu bir dungeon'dur. Oyuncular, burada güçlü boss karakterlerle savaşır ve nadir ödüller kazanabilirler. Ancak bazı durumlarda, bug nedeniyle bir karakter Ejder Odasına girdikten sonra sistem tarafından atılır ancak odanın içine tekrar giremez ve dışarıya da çıkamaz. Bu durumda karakter, sanki 'hiçbir yerde'ymiş gibi oyun içinde kaybolmuş olur. Bu hem oyuncu hem de sunucu yönetimi için ciddi bir sorundur.

Bug Neden Oluşur?
Bug'un temel nedeni, Metin2 sunucu tarafında çalışan Lua scriptlerindeki quest mantığında meydana gelen eksikliklerdir. Özellikle quest timer, flag ve state sistemlerinde kontrol eksikliği olduğunda, oyuncu Ejder Odasına giriş yaptıktan sonra sistem onun konumunu doğru şekilde takip edemez. Bu da karakterin 'boşta' kalmasına neden olur. Hata, genellikle çok oyunculu durumlarda ya da sunucu yükü yüksekken daha sık ortaya çıkar.

Fix Nasıl Yapıldı?
Bug fix işlemi sırasında, LykeeN sunucusunda bulunan Ejder Odası quest scriptleri gözden geçirildi. Scriptteki timer kontrolleri güçlendirildi. Ayrıca, oyuncu Ejder Odasına girdiğinde flag setlenerek, oyuncunun konumu takip edilebilir hale getirildi. Eğer bir oyuncu sistemsel olarak odadan atılırsa, quest state sıfırlanarak karakterin tekrar normal oyun alanına dönmesi sağlandı. Bu sayede artık karakterler Ejder Odasında sıkışıp kalmayacaktır.

Quest Script Örneği
Aşağıda örnek bir quest script parçası verilmiştir. Bu script, karakterin Ejder Odasında iken sistem tarafından atılması durumunda onu güvenli bir şekilde geri döndürür:

quest dragon_lair_fix begin
state start begin
when login with pc.get_map_index() == DRAGON_LAIR_MAP_INDEX begin
if pc.getqf('dragon_lair_flag') == 1 then
cmdchat('You were stuck in Dragon Lair, teleporting out safely...')
pc.warp_to_village()
pc.setqf('dragon_lair_flag', 0)
end
end
end
end[/BR]

Sonuç
Metin2 Lobby olarak, LykeeN sunucusunda quest sistemlerinin güvenilirliğini artırmak ve kullanıcı deneyimini optimize etmek için bu tür hataları düzenli olarak takip ediyor ve düzeltiyoruz. Ejder Odası bug fix sayesinde artık oyuncular, dungeon'a güvenle girebilir ve daha keyifli bir şekilde raid yapabilirler. Quest geliştirme ve debug işlemleri için sürekli olarak Martysama, Metin2Dev gibi topluluklardan destek alıyoruz. Metin2Lobby.com üzerinden daha fazla quest ve lua script örneği inceleyebilirsiniz.


Dragon Lair Character Kick-Out and Stuck Bug Fixed!
At Metin2 Lobby, we continuously update our systems and fix bugs to ensure that our players enjoy a more stable and fun gaming experience. In this direction, we have made an important fix regarding the 'Dragon Lair Character Kick-Out and Stuck Bug' issue on our LykeeN server. In this article, we will talk about what the bug is, why it occurs, and how it was fixed.

What Is The Bug?
In the game Metin2, the 'Dragon Lair' is a challenging dungeon where high-level players can enter. Players fight powerful bosses here and can win rare rewards. However, sometimes due to a bug, after a character enters the Dragon Lair, they are kicked by the system but cannot re-enter the room nor exit. In this case, the character remains stuck as if 'nowhere' in the game. This is a serious problem for both players and server administration.

Why Does The Bug Occur?
The root cause of the bug lies in the Lua scripts running on the Metin2 server side. Particularly, missing checks in quest timer, flag, and state systems cause the system to lose track of the player's location correctly after entering the Dragon Lair. This leads to the character being left 'floating' in the game. The error usually occurs more frequently during multiplayer situations or when the server load is high.

How Was The Fix Applied?
During the bug fix process, the Dragon Lair quest scripts on the LykeeN server were reviewed. Timer checks within the script were strengthened. Additionally, upon entering the Dragon Lair, a flag is set to track the player's position. If a player is kicked from the room due to a system issue, their quest state is reset, allowing them to return safely to the normal game area. Thus, characters no longer get stuck inside the Dragon Lair.

Example Quest Script
Below is an example of a quest script segment. This script safely teleports a player out if they are stuck in the Dragon Lair:

quest dragon_lair_fix begin
state start begin
when login with pc.get_map_index() == DRAGON_LAIR_MAP_INDEX begin
if pc.getqf('dragon_lair_flag') == 1 then
cmdchat('You were stuck in Dragon Lair, teleporting out safely...')
pc.warp_to_village()
pc.setqf('dragon_lair_flag', 0)
end
end
end
end[/BR]

Conclusion
As Metin2 Lobby, we regularly monitor and fix such errors to increase the reliability of quest systems and optimize user experience on the LykeeN server. Thanks to the Dragon Lair bug fix, players can now enter the dungeon confidently and enjoy their raids. We continuously receive support from communities like Martysama and Metin2Dev for quest development and debugging. You can check more quest and lua script examples at Metin2Lobby.com.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt