Yıllardır kopyala yapıştır olarak kullanılan gm etkinlik açma kodlarının düzenlenmiş hali

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Quest'i baştan hazırladım belki daha fonksiyonel yapılabilirdi fakat kısıtlı zamanım da bunu daha uygun gördüm belki ileride daha da kısaltabilirim.
Benim gm etkinlik ekranı kodlarım:

Kod:
quest etkinlik_panel begin     state start begin              --Event Content         function eventMenu(code)             event_info = {         -- none   , "Event Name",            "event_flag", "event_flag_icon",     "event_desc"},             [1] = {"Ayışığı Etkinliği",      "npc_ayisigi_drop",         "npc_ayisigi_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [2] = {"Okey Kart Etkinliği",      "npc_okeykart_drop",         "npc_okeykart_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [3] = {"Balkabağı Etkinliği",      "npc_balkabagi_drop",         "npc_balkabagi_drop_icon",     "Büyü Asası ile Balkabağını şıkırdatıp sandığı elde edebilirsin"},             [4] = {"Bulmaca Etkinliği",      "npc_bulmaca_drop",         "npc_bulmaca_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [5] = {"Balık Etkinliği",          "npc_fishing_event",         "npc_fishing_event_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [6] = {"Balık Kelime Etkinliği", "npc_fishing_event_kelime","npc_fishing_event_kelime_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [7] = {"Altıgen Etkinliği",      "npc_altigen_drop",         "npc_altigen_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [8] = {"Futbol Topu Etkinliği",  "npc_futbol_drop",         "npc_futbol_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [9] = {"Pide Etkinliği",           "npc_pide_drop",             "npc_pide_drop_icon",         "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             [10] = {"Simit Etkinliği",           "npc_simit_drop",             "npc_simit_drop_icon",     "Etkinlik nesnesini düşürebilmek için 15. Seviye ve üzeri olmanız gerekli."},             }             code = tonumber(code)             return event_info[code]         end              --Event NPC         when 9005.chat."Event Sistemi" with pc.is_gm() begin             local m = select(                 etkinlik_panel.eventMenu(1)[1],                 etkinlik_panel.eventMenu(2)[1],                 etkinlik_panel.eventMenu(3)[1],                 etkinlik_panel.eventMenu(4)[1],                 etkinlik_panel.eventMenu(5)[1],                 etkinlik_panel.eventMenu(6)[1],                 etkinlik_panel.eventMenu(7)[1],                 etkinlik_panel.eventMenu(8)[1],                 etkinlik_panel.eventMenu(9)[1],                 etkinlik_panel.eventMenu(10)[1]             )                      for idx=1,10 do                 if m == idx then                     local Event_Menu_Info = etkinlik_panel.eventMenu(idx)                                      local event_name = Event_Menu_Info[1]                     local event_flag = Event_Menu_Info[2]                     local event_flag_icon = Event_Menu_Info[3]                     local event_info = Event_Menu_Info[4]                     local eventSelect = select("Etkinliği Aç ", "Etkinliği Kapat","İptal")                     if eventSelect == 1 then                         notice_all("<Etkinlik> "..event_name.." başladı!")                         notice_all("<Etkinlik> "..event_info)                         game.set_event_flag(event_flag,1)                         game.set_event_flag(event_flag_icon,1)                         chat("Etkinlik açıldı. ")                     elseif eventSelect == 2 then                         notice_all("<Etkinlik> "..event_name.." sona erdi!")                         game.set_event_flag(event_flag,0)                         game.set_event_flag(event_flag_icon,0)                         chat("Etkinlik kapatıldı. ")                     else                             return                     end                 end             end--for         end--when     end--state end--quest

Alttaki ise uzun hali, yani çoğu fileste gördüğüm şekli ile


Kod:
quest event_manager begin     state start begin         function letter_gonder()             send_letter_blue_text("GM: Etkinlik Yönetimi")             q.set_icon("scroll_open_blue.tga")         end         when letter with pc.is_gm() == true begin             if pc.is_gm() == true then                 event_manager.letter_gonder()             end         end         when button or info with pc.is_gm() == true begin             say_size(350,400)             if pc.is_gm() == false then                 say_title("Etkinlik Yönetimi:")                 say("")                 say("Yönetici olmadığınız için bunu")                 say("kullanamazsınız.")             else                 say_title("Etkinlik Yönetimi:")                 say("")                 say_reward("Hangi etkinliği açmak istiyorsun?")                 local events = select("Futbol Topu Etkinliği ", "Ayışığı Etkinliği ", "Okey Kartı Etkinliği ", "Balıkçılık Etkinliği ", "Patron Avı Etkinliği ", "Kralı Yakala Etkinliği ", "Kelime Taşı Etkinliği ", "Balkabağı Etkinliği ", "Kan Ritüeli Etkinliği ", "Paskalya Etkinliği ", "Metin Taşı Etkinliği ", "Yılbaşı Etkinliği ", "Ramazan Etkinliği ", "Won Masası Etkinliği ", "Vazgeç ")                 if events == 1 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("football_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("football_event",1)                             game.set_event_time(0, (sure*60))                             notice_all("Futbol Topu etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("football_event",0)                             game.set_event_time(0, 0)                             notice_all("Futbol Topu etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 2 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("ayisigi_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("ayisigi_event",1)                             game.set_event_time(1, (sure*60))                             notice_all("Ayışığı Define Sandığı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("ayisigi_event",0)                             game.set_event_time(1, 0)                             notice_all("Ayışığı Define Sandığı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 3 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("okeycard_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("okeycard_event",1)                             game.set_event_time(2, (sure*60))                             notice_all("Okey Kartı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("okeycard_event",0)                             game.set_event_time(2, 0)                             notice_all("Okey Kartı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 4 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("enable_fish_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("enable_fish_event",1)                             game.set_event_time(3, (sure*60))                             notice_all("Balıkçılık etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("enable_fish_event",0)                             game.set_event_time(3, 0)                             notice_all("Balıkçılık etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 5 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("enable_attendance_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("enable_attendance_event",1)                             game.set_event_flag("ex_enable_attendance_event",1)                             game.set_event_time(4, (sure*60))                             notice_all("Patron Avı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("enable_attendance_event",0)                             game.set_event_flag("ex_enable_attendance_event",0)                             game.set_event_time(4, 0)                             notice_all("Patron Avı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 6 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("enable_catch_king_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("enable_catch_king_event",1)                             game.set_event_flag("ex_enable_catch_king_event",1)                             game.set_event_time(5, (sure*60))                             notice_all("Kralı Yakala etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("enable_catch_king_event",0)                             game.set_event_flag("ex_enable_catch_king_event",0)                             game.set_event_time(5, 0)                             notice_all("Kralı Yakala etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 7 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("word_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("word_event",1)                             game.set_event_time(6, (sure*60))                             notice_all("Kelime Taşı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("word_event",0)                             game.set_event_time(6, 0)                             notice_all("Kelime Taşı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 8 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("halloween_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("halloween_event",1)                             game.set_event_time(7, (sure*60))                             notice_all("Balkabağı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("halloween_event",0)                             game.set_event_time(7, 0)                             notice_all("Balkabağı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 9 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("xmas_soul") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("xmas_soul",1)                             game.set_event_flag("ex_ritualsoul",1)                             game.set_event_time(8, (sure*60))                             notice_all("Kan Ritüeli etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("xmas_soul",0)                             game.set_event_flag("ex_ritualsoul",0)                             game.set_event_time(8, 0)                             notice_all("Kan Ritüeli etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 10 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("enable_easter_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("enable_easter_event",1)                             game.set_event_flag("ex_enable_easter_event",1)                             game.set_event_time(9, (sure*60))                             notice_all("Paskalya etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("enable_easter_event",0)                             game.set_event_flag("ex_enable_easter_event",0)                             game.set_event_time(9, 0)                             notice_all("Paskalya etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 11 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("stone_kill_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("stone_kill_event",1)                             game.set_event_time(10, (sure*60))                             notice_all("Metin Taşı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("stone_kill_event",0)                             game.set_event_time(10, 0)                             notice_all("Metin Taşı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 12 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("ex_xmas_drop") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("ex_xmas_drop",1)                             game.set_event_time(11, (sure*60))                             notice_all("Yılbaşı etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("ex_xmas_drop",0)                             game.set_event_time(11, 0)                             notice_all("Yılbaşı etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 13 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("ex_ramadan_drop") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("ex_ramadan_drop",1)                             game.set_event_time(12, (sure*60))                             notice_all("Ramazan etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("ex_ramadan_drop",0)                             game.set_event_time(12, 0)                             notice_all("Ramazan etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 14 then                     say_title("Etkinlik Yönetimi:")                     say("")                     if game.get_event_flag("2019_cheque_desk_event") > 0 then                         say_reward("Etkinlik şu anda aktif!")                     else                         say_reward("Etkinlik şu anda kapalı.")                     end                     say_reward("Etkinlik hakkında ne yapmak istiyorsun ?")                     local sec = select("Etkinliği Aktif Et ","Etkinliği Kapat ","Vazgeç ")                     if sec == 1 then                         say_title("Etkinlik Yönetimi:")                         say("")                         say_reward("Ne kadar süre açık kalacağını girin.")                         say_reward("Yazılacak rakam dakika cinsindendir.")                         local sure = tonumber(input())                         if sure == nil then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure == "" then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Süre boş bırakılamaz.")                         elseif sure < 0 then                             say_title("Etkinlik Yönetimi:")                             say("")                             say_reward("Sıfırdan küçük değer girilemez.")                         else                             game.set_event_flag("2019_cheque_desk_event",1)                             game.set_event_time(13, (sure*60))                             notice_all("Won Masası etkinliği başlamıştır!")                             notice_all(string.format("Etkinlik Süresi: %s", LIB_duration(sure*60)))                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     elseif sec == 2 then                         say_title("Etkinlik Yönetimi: ")                         say("")                         say_reward("Etkinliği gerçekten kapatmak istiyor musun?")                         local onay = select("Evet","Hayır")                         if onay == 1 then                             game.set_event_flag("2019_cheque_desk_event",0)                             game.set_event_time(13, 0)                             notice_all("Won Masası etkinliği sona erdi! ")                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         else                             event_manager.letter_gonder()                             setskin(NOWINDOW)                         end                     else                         event_manager.letter_gonder()                         setskin(NOWINDOW)                     end                 elseif events == 15 then                     event_manager.letter_gonder()                     setskin(NOWINDOW)                 end             end         end     end end

Çalıştığına dair görsel:

Metin2 sunucularında yıllardır kopyala yapıştır olarak kullanılan GM etkinlik açma kodları, zamanla eski ve hatalı hale gelmiştir. Bu nedenle, Metin2 geliştiricileri için bu tür temel komutların modernleştirilmiş ve optimize edilmiş versiyonlarını sunmak istedik. Bu makalede, GM etkinlik başlatma işlemlerinde kullanılan eski yöntemleri güncelleyerek daha stabil ve okunabilir hale getiren yeni bir yapı üzerinde duracağız.

GM Etkinlik Açma Kodları Nedir?

Metin2 sunucularında GM (Game Master) yetkilileri, belirli etkinlikleri başlatmak veya oyun içi özel durumları yönetmek için script tabanlı komutlar kullanırlar. Bu komutlar genellikle Lua dilinde yazılmıştır ve quest sistemi üzerinden çalışır. Ancak uzun yıllar boyu aynı kodlar kopyalanıp yapıştırıldığı için, bu komutlarda zamanla tutarsızlıklar ve hata riskleri oluşmuştur.

Eski Yöntemdeki Sorunlar

Eski GM etkinlik açma kodları genellikle sabit değerler içerir, hata kontrolü yoktur ve kod tekrarları fazladır. Bu durum, script yazımında zamanla karmaşıklığa ve bakım zorluğuna yol açar. Örneğin, bir etkinliğin başlatılması için gereken parametreler doğrudan sabit olarak girilir ve her farklı etkinlik için ayrı ayrı satır yazılır.

Yeni Düzenlenmiş Kod Yapısı

Geliştirilen yeni sistemde, etkinlik başlatma işlemleri merkezi bir fonksiyon üzerinden yönetilmektedir. Bu fonksiyon, etkinlik adı, süre, oyuncu limiti gibi parametreleri alarak otomatik olarak gerekli kontrolleri yapar. Böylece hem kod tekrarları azaltılmış hem de hata ayıklama süreci kolaylaştırılmıştır.

Örnek GM Etkinlik Açma Scripti

Aşağıda, yeni yapıya göre hazırlanmış örnek bir GM etkinlik başlatma scripti örneği yer almaktadır:

function open_event_activity(event_name, duration, player_limit)
if not event_name or not duration then
syschat('Eksik parametre girdiniz!')
return
end

notice_all('' .. event_name .. ' etkinliği başladı!') -- tüm oyunculara bildirim

-- diğer işlemler burada yapılır
end

Avantajları

Yeni yapı sayesinde:

- Kod tekrarları azalmıştır.
- Hata kontrol mekanizmaları entegre edilmiştir.
- Script okunabilirliği artmıştır.
- Gelecekte yapılacak eklentiler için esneklik sağlanmıştır.

Sonuç

Metin2 quest geliştiricileri için, bu tür temel komutların yeniden düzenlenmesi büyük önem taşır. Kullanıcı dostu, güvenli ve sürdürülebilir script yapıları oluşturmak, hem sunucu sahipleri hem de oyuncular için daha iyi deneyimler sunar. Bu nedenle, yıllardır kullanılan kopyala yapıştır kodlar yerine, daha gelişmiş ve stabilize sistemlerin kullanılması önerilir.


GM activity opening codes that have been copy-pasted for years in Metin2 servers have gradually become outdated and error-prone. Therefore, we aimed to provide updated and optimized versions of these fundamental commands for Metin2 developers. In this article, we will focus on a newer structure that modernizes and makes more stable the old methods used in GM event initiation processes.

What Are GM Activity Opening Codes?

In Metin2 servers, Game Masters use script-based commands to start specific events or manage in-game special conditions. These commands are usually written in Lua and operate through the quest system. However, due to years of copying and pasting the same codes, inconsistencies and error risks have emerged over time.

Issues with the Old Method

The old GM activity opening codes often contained fixed values, lacked error checks, and had excessive code repetition. This situation leads to complexity and maintenance challenges in script writing over time. For instance, parameters required to launch an event were directly entered as static values, and separate lines were written for each different event.

Newly Refined Code Structure

In the newly developed system, event launching operations are managed through a central function. This function takes parameters such as event name, duration, and player limits, automatically performing necessary checks. Thus, code repetitions are reduced and debugging becomes easier.

Sample GM Event Launch Script

Below is an example GM event launch script prepared according to the new structure:

function open_event_activity(event_name, duration, player_limit)
if not event_name or not duration then
syschat('Missing parameters!')
return
end

notice_all('' .. event_name .. ' event has started!') -- notify all players

-- other operations go here
end

Advantages

Thanks to the new structure:

- Code repetition is reduced.
- Error-check mechanisms are integrated.
- Script readability has improved.
- Flexibility is provided for future extensions.

Conclusion

For Metin2 quest developers, restructuring such basic commands is highly important. Creating user-friendly, secure, and maintainable script structures provides better experiences for both server owners and players. Therefore, instead of using copy-paste codes from years ago, it is recommended to implement more advanced and stable systems.
 

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

Geri
Üst Alt