Advertisement
Guest User

Quest

a guest
Apr 17th, 2019
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.92 KB | None | 0 0
  1. quest dragon_lair_access begin
  2.     state start begin
  3.         function get_settings()
  4.             local settings = {}
  5.             settings.cooldown_time = 2700
  6.             settings.group_time = 300
  7.             settings.access_item = 30179
  8.             settings.dragon_vnum = 2430
  9.  
  10.             settings.spawn = {}
  11.             settings.spawn.x = 181
  12.             settings.spawn.y = 173
  13.  
  14.             settings.warp_in = {}
  15.             settings.warp_in.first = {}
  16.             settings.warp_in.last = {}
  17.             settings.warp_in.first.x = 843677
  18.             settings.warp_in.first.y = 1066206
  19.             settings.warp_in.last.x = 844027
  20.             settings.warp_in.last.y = 1067599
  21.  
  22.             settings.warp_out = {}
  23.             settings.warp_out.first = {}
  24.             settings.warp_out.last = {}
  25.             settings.warp_out.first.x = 182400
  26.             settings.warp_out.first.y = 1220600
  27.             settings.warp_out.last.x = 182400
  28.             settings.warp_out.last.y = 1220600
  29.  
  30.             settings.room_area = {}
  31.             settings.room_area.first = {}
  32.             settings.room_area.last = {}
  33.             settings.room_area.first.x = 833000
  34.             settings.room_area.first.y = 1062500
  35.             settings.room_area.last.x = 844100
  36.             settings.room_area.last.y = 1071500
  37.  
  38.             settings.access_item_amount = 3
  39.             return settings
  40.         end
  41.  
  42.         function get_random_point(area_coordinates)
  43.             return math.random(area_coordinates.first.x, area_coordinates.last.x), math.random(area_coordinates.first.y, area_coordinates.last.y)
  44.         end
  45.  
  46.         function warp_to_lair()
  47.             local settings = dragon_lair_access.get_settings()
  48.             local x, y = dragon_lair_access.get_random_point(settings.warp_in)
  49.             pc.warp(x,y)
  50.         end
  51.  
  52.         function warp_from_lair()
  53.             local settings = dragon_lair_access.get_settings()
  54.             local x, y = dragon_lair_access.get_random_point(settings.warp_out)
  55.             pc.warp(x,y)
  56.         end
  57.  
  58.         function warp_all_from_lair()
  59.             local settings = dragon_lair_access.get_settings()
  60.             warp_all_in_area_to_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y, settings.warp_out.first.x, settings.warp_out.first.y, settings.warp_out.last.x, settings.warp_out.last.y)
  61.             game.set_event_flag("dragon_lair_alive", 0)
  62.         end
  63.  
  64.         function get_time_remaining()
  65.             local settings = dragon_lair_access.get_settings()
  66.             return (game.get_event_flag("dragon_lair_time") + settings.cooldown_time - get_global_time())
  67.         end
  68.  
  69.         function give_item_to_ghost()
  70.             local settings = dragon_lair_access.get_settings()
  71.             say_title("Sura szellem:")
  72.             say("Ha szeretnéd betudlak vinni, közvetlen a")
  73.             say("Sárkány templomába. Viszont semmi sincs ingyen!")
  74.             say("Épp ezért szükségem lesz az alábbi tárgyra:")
  75.             say_item_vnum(30179)
  76.             say_reward("A belépéshez "..settings.access_item_amount.." darab Csavart kulcs szükséges!")
  77.             say("")
  78.             local give_item = select("Vedd el és vigyél be!", "Mégse")
  79.             if give_item == 1 then
  80.                 pc.remove_item(settings.access_item, settings.access_item_amount)
  81.                 return true
  82.             else
  83.                 return false
  84.             end
  85.         end
  86.  
  87.         function show_time_remaining(time_remaining)
  88.             q.set_title("Öld meg a Kék Sárkányt")
  89.             send_letter("Öld meg a Kék Sárkányt")
  90.             q.set_clock("Hátralevő idő: "..time_remaining)
  91.             timer("dragon_lair_timer", time_remaining)
  92.             if not party.is_party() then
  93.                 notice("A Sárkány megölésére összesen "..time_remaining / 60 .." Perced van!")
  94.             elseif party.is_party() then
  95.                 notice("A Sárkány megölésére összesen "..time_remaining / 60 .." Percetek van!")
  96.             end
  97.             q.start()
  98.         end
  99.  
  100.         when enter or login begin
  101.             pc.setqf("is_leader", 0)
  102.             q.done()
  103.             if pc.get_map_index() == 79 then
  104.                 dragon_lair_access.warp_from_lair()
  105.             end
  106.         end
  107.  
  108.         when blue_dragon_timer.server_timer begin
  109.             game.set_event_flag("dragon_lair_timer_used", 0)
  110.             if game.get_event_flag("dragon_lair_alive") == 1 then
  111.                 notice_all("A Kék Sárkány még él!")
  112.             else
  113.                 notice_all("A Kék Sárkány visszatért!")
  114.             end
  115.             dragon_lair_access.warp_all_from_lair()
  116.         end
  117.  
  118.         when 30121.chat."Megakarom ölni a Sárkányt" with pc.get_map_index() == 73 begin
  119.             local starttime = game.get_event_flag("dragon_lair_time")
  120.             local current_time = get_global_time()
  121.             local settings = dragon_lair_access.get_settings()
  122.             local time_remaining = dragon_lair_access.get_time_remaining()
  123.             local can_enter_now = 0
  124.             if pc.getqf("next_time") == 0 then
  125.                 can_enter_now = 1
  126.             else
  127.                 can_enter_now = get_global_time() > pc.getqf("next_time")
  128.             end
  129.  
  130.             if !can_enter_now then
  131.                 say_title("Sura szellem:")
  132.                 say(string.format("%d Perc múlva újra beléphetsz a Sárkány templomába.", tonumber((pc.getqf("next_time") - get_global_time()) / 60)))
  133.                 say("")
  134.                 return
  135.             end
  136.  
  137.             if pc.count_item(settings.access_item) >= settings.access_item_amount then
  138.                 if starttime + settings.group_time >= current_time then
  139.                     local password_input;
  140.                     repeat
  141.                         say_title("Sura szellem:")
  142.                         say("Sajnos már vannak a Sárkány templomában.")
  143.                         say("Viszont ha tudod a helyes kódot, akkor még van")
  144.                         say("esélyed hogy te is bejuss a Sárkány templomba.")
  145.                         say("")
  146.                         say_reward("A belépéshez "..settings.access_item_amount.." darab Csavart kulcs szükséges!")
  147.                         say("")
  148.                         password_input = tonumber(input())
  149.                         if password_input != game.get_event_flag("dragon_lair_password") then
  150.                             say_title("Sura szellem:")
  151.                             say("Sajnos az általad megadott biztonsági kód hibás.")
  152.                             say("Ha szeretnéd megpróbálhatod újra, hátha most majd")
  153.                             say("sikeresen megtudod adni a helyes biztonsági kódot.")
  154.                             say("")
  155.                             say_reward("A biztonsági kód csak is számjegyekből állhat!")
  156.                             say("")
  157.                             local again = select("Újra megpróbálom!", "Mégse")
  158.                             if again == 2 then
  159.                                 return
  160.                             end
  161.                         end
  162.                     until password_input == game.get_event_flag("dragon_lair_password")
  163.  
  164.                     if not dragon_lair_access.give_item_to_ghost() then
  165.                         return
  166.                     end
  167.  
  168.                     pc.setqf("time", starttime)
  169.                     dragon_lair_access.warp_to_lair()
  170.                     set_state(kill_dragon)
  171.                 elseif time_remaining < 0 and npc.lock() then
  172.                     say_title("Sura szellem:")
  173.                     say("Te vagy az első aki beszeretne lépni a Sárkány")
  174.                     say("templomába. Beviszlek én téged, de cserébe szükségem")
  175.                     say("lesz "..settings.access_item_amount.." darab Csavart kulcsra. A belépés előtt meg kell")
  176.                     say("adnod egy biztonsági jelszót, amely segítségével a")
  177.                     say("társad/társaid csatlakozhatnak hozzád.")
  178.                     say("")
  179.                     say_reward("A belépéshez "..settings.access_item_amount.." darab Csavart kulcs szükséges!")
  180.                     say_reward("A biztonsági kód csak is számjegyekből állhat!")
  181.                     say("")
  182.                     local abort = select("Készen állok!", "Mégse")
  183.                     if abort == 2 then
  184.                         npc.unlock()
  185.                         return
  186.                     end
  187.  
  188.                     local password_number;
  189.                     repeat
  190.                         say_title("Sura szellem:")
  191.                         say("Adj meg egy biztonsági kódot, amellyel a")
  192.                         say("társaid csatlakozhatnak majd hozzád.")
  193.                         say("")
  194.                         password_number = tonumber(input())
  195.                         local again;
  196.                         if type(password_number) != 'number' then
  197.                             say_title("Sura szellem:")
  198.                             say_reward("A kódnak számokból kell állnia!")
  199.                             say("")
  200.                             again = select("Újra megpróbálom!", "Mégse")
  201.                             if again == 2 then
  202.                                 npc.unlock()
  203.                                 return
  204.                             end
  205.                         end
  206.                     until type(password_number) == 'number'
  207.  
  208.                     if not dragon_lair_access.give_item_to_ghost() then
  209.                         npc.unlock()
  210.                         return
  211.                     end
  212.  
  213.                     if dragon_lair_access.get_time_remaining() > 0 then
  214.                         npc.unlock()
  215.                         say_title("Sura szellem:")
  216.                         say("Már egy másik csapat próbálja megölni a Sárkányt.")
  217.                         say("Várnod kell egy kicsit, mielőtt újra be tudsz")
  218.                         say("lépni a Sárkány templomába.")
  219.                         say("")
  220.                         return
  221.                     end
  222.                     pc.setqf("password", password_number)
  223.                     timer("dragon_lair_warptimer", pc.get_channel_id()*2)
  224.                     npc.unlock()
  225.                 else
  226.                     say_title("Sura szellem:")
  227.                     say("Már egy másik csapat próbálja megölni a Sárkányt.")
  228.                     say("Várnod kell egy kicsit, mielőtt újra be tudsz")
  229.                     say("lépni a Sárkány templomába.")
  230.                     say("")
  231.                     return
  232.                 end
  233.             else
  234.                 say_title("Sura szellem:")
  235.                 say("Neked jelenleg "..pc.count_item(30179).." Csavart kulcsod van.")
  236.                 say_item_vnum(30179)
  237.                 say_reward("A belépéshez "..settings.access_item_amount.." darab Csavart kulcs szükséges!")
  238.                 say("")
  239.                 say_reward("Csavart kulcsot az alábbi szörnytől szerezhetsz:")
  240.                 say_reward("Yonghan Tábornok")
  241.                 say("")
  242.                 return
  243.             end
  244.         end
  245.  
  246.         when dragon_lair_warptimer.timer begin
  247.             local settings = dragon_lair_access.get_settings()
  248.             if dragon_lair_access.get_time_remaining() < 0 then
  249.                 local starttime = get_global_time()
  250.                 game.set_event_flag("dragon_lair_time", starttime)
  251.                 pc.setqf("time", starttime)
  252.                 pc.setqf("is_leader", 1)
  253.                 game.set_event_flag("dragon_lair_password", pc.getqf("password"))
  254.                 server_timer("blue_dragon_timer", settings.cooldown_time)
  255.                 dragon_lair_access.warp_to_lair()
  256.                 set_state(spawn_dragon)
  257.             else
  258.                 say_title("Sura szellem:")
  259.                 say("Már egy másik csapat próbálja megölni a Sárkányt.")
  260.                 say("Várnod kell egy kicsit, mielőtt újra be tudsz")
  261.                 say("lépni a Sárkány templomába.")
  262.                 say("")
  263.             end
  264.             pc.setqf("password", 0)
  265.         end
  266.     end
  267.  
  268.     state spawn_dragon begin
  269.         when login begin
  270.             local settings = dragon_lair_access.get_settings()
  271.             purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y)
  272.             regen_in_map(79, "locale/hungary/map/metin2_map_skipia_dungeon_boss/regen.txt")
  273.             mob.spawn(8036,166,156,1)
  274.             game.set_event_flag("dragon_lair_alive", 1)
  275.  
  276.             if party.is_party() then
  277.                 notice_all(pc.get_name().." és csapata megpróbálja megölni a Kék Sárkányt!")
  278.                 notice("A megadott biztonsági kód: "..game.get_event_flag("dragon_lair_password"))
  279.                 notice("5 Perced van arra hogy tovább add a kódot a társaidnak!")
  280.                 dragon_lair_access.show_time_remaining(settings.cooldown_time)
  281.                 notice("Pusztítsátok el az Árulás Metinkövet, hogy előcsalhassátok a Kék Sárkányt!")
  282.             elseif not party.is_party() then
  283.                 notice_all(pc.get_name().." megpróbálja megölni a Kék Sárkányt!")
  284.                 notice("A megadott biztonsági kód: "..game.get_event_flag("dragon_lair_password"))
  285.                 dragon_lair_access.show_time_remaining(settings.cooldown_time)
  286.                 notice("Pusztítsd el az Árulás Metinkövet, hogy előcsalhasd a Kék Sárkányt!")
  287.             end
  288.         end
  289.  
  290.         when 8036.kill with pc.get_map_index() == 79 begin
  291.             local settings = dragon_lair_access.get_settings()
  292.             if game.get_event_flag("dragon_lair_alive") == 1 then
  293.                 mob.spawn_group(settings.dragon_vnum, settings.spawn.x, settings.spawn.y, 1, 1, 1)
  294.                 set_state(kill_dragon)
  295.             else
  296.                 return
  297.             end
  298.         end
  299.     end
  300.  
  301.     state kill_dragon begin
  302.         when dragon_lair_timer.timer begin
  303.             set_state(start)
  304.         end
  305.  
  306.         when login begin
  307.             if pc.getqf("time") != game.get_event_flag("dragon_lair_time") or dragon_lair_access.get_time_remaining() <= 0 then
  308.                 set_state(start)
  309.             else
  310.                 dragon_lair_access.show_time_remaining(dragon_lair_access.get_time_remaining())
  311.             end
  312.         end
  313.  
  314.         when button or info begin
  315.             if party.is_party() then
  316.                 notice(string.format("Még %d Percetek van megölni a Kék Sárkányt!", dragon_lair_access.get_time_remaining() / 60))
  317.                 local settings = dragon_lair_access.get_settings()
  318.                 if (pc.getqf("is_leader") == 1 and settings.cooldown_time-dragon_lair_access.get_time_remaining() < settings.group_time) then
  319.                     notice("A kód: "..game.get_event_flag("dragon_lair_password"))
  320.                     notice("5 Perced van arra hogy tovább add a kódot a társaidnak!")
  321.                 end
  322.             elseif not party.is_party() then
  323.                 notice(string.format("Még %d Perced van megölni a Kék Sárkányt!", dragon_lair_access.get_time_remaining() / 60))
  324.             end
  325.         end
  326.  
  327.         when 30121.chat."Ki akarok menni!" with pc.get_map_index() == 79 begin
  328.             say_title("Sura szellem:")
  329.             say("Jól gondolt át, hogy döntesz.")
  330.             say("")
  331.             say_reward("Biztosan ki szeretnél menni?")
  332.             local warp = select("Igen, kimegyek!", "Még maradok!")
  333.             if warp == 1 then
  334.                 dragon_lair_access.warp_from_lair()
  335.                 set_state(start)
  336.             end
  337.         end
  338.  
  339.         when 2493.kill with pc.get_map_index() == 79 begin
  340.             game.set_event_flag("dragon_lair_alive", 0)
  341.             local settings = dragon_lair_access.get_settings()
  342.             if not party.is_party() then
  343.                 notice("Ha kiszeretnél menni, menj a Sura szellemhez!")
  344.                 notice_all(pc.get_name().." sikeresen megölte a Kék Sárkányt!")
  345.                 purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y)
  346.             elseif party.is_party() then
  347.                 party.chat("Ha kiszeretnétek menni, menjetek a Sura szellemhez!")
  348.                 notice_all(pc.get_name().." és csapata sikeresen megölte a Kék Sárkányt!")
  349.                 purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y)
  350.             end
  351.         end
  352.     end
  353. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement