JachuPL

drop_event.quest

Nov 2nd, 2013
1,521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.94 KB | None | 0 0
  1. quest drop_event begin
  2.     state start begin
  3.         function setting()
  4.             return {
  5.                 ["deGMMinLevel"] = 3,   --minimalna ranga GM, od której można sterować questem
  6.                 ["deTytul"] = "Eventy Dropowe",
  7.                 ["deOpis1"] = "Witaj w konsoli sterowania eventami dropowymi.",
  8.                 ["deOpis2"] = "Wybierz opcję, która Ci odpowiada:",
  9.                 ["deListaTytul"] = "Lista aktywnych eventów dropowych:",
  10.                
  11.                 --[[W tej tablicy przechowywane są niektóre eventy dropowe, wraz z opisami i informacjami niezbędnymi do działania skryptu]]--
  12.                 ["deEventConfigTable"] = {
  13.                    
  14.                     --typy działania:
  15.                     --0 - brak znaczenia liczby
  16.                     --1 - im mniejszy tym rzadziej
  17.                     --2 - im większy tym rzadziej
  18.                     --3 - event nie działa lub jest zbugowany
  19.                    
  20.                     [1] = {["deName"] = "Refine Box Drop", ["deDesc1"] = "Według Legendy dropią szkatułki z itemami do ulepszania", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "refine_box_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 3},
  21.                     [2] = {["deName"] = "Skarpetki", ["deDesc1"] = "Skarpetki, które można zawiesić na Choince", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50010, ["deEventFlagName"] = "xmas_sock", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 0},
  22.                     [3] = {["deName"] = "Szkat. Blasku Księż.", ["deDesc1"] = "Szkatułki Blasku Księżyca", ["deDesc2"] = "Częściej wypadają z potworów o większym stopniu", ["deDesc3"] = "np. Cung-Mok > Dziki Pies", ["deItemVnum"] = 50011, ["deEventFlagName"] = "drop_moon", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 0},
  23.                     [4] = {["deName"] = "Kamień Glyph", ["deDesc1"] = "Według Legendy dropi kamień glyph", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 30178, ["deEventFlagName"] = "hc_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 0},
  24.                     [5] = {["deName"] = "Heksagonalna Szkatułka", ["deDesc1"] = "Z potworów wypada Heksagonalna Szkatułka", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "2006_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  25.                     [6] = {["deName"] = "Nie wiadomo co", ["deDesc1"] = "Według Legendy dropi chuj wie co", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50043, ["deEventFlagName"] = "2007_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 0},
  26.                     [7] = {["deName"] = "Chińska Ogn. Petarda", ["deDesc1"] = "Z potworów dropi Chińska Ognista Petarda", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50107, ["deEventFlagName"] = "newyear_fire", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  27.                     [8] = {["deName"] = "Słodkości", ["deDesc1"] = "Z potworów dropią: Słodki Ryż, Pasta Cukrowa, Pasta Owocowa, Pasta Fasolowa", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "newyear_moon", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  28.                     [9] = {["deName"] = "Walentynki", ["deDesc1"] = "Z potworów dropi Czerw. Róża i Czekolada", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "valentine_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  29.                     [10] = {["deName"] = "Lody", ["deDesc1"] = "Z potworów wypadają Lody", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50123, ["deEventFlagName"] = "icecream_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  30.                     [11] = {["deName"] = "Halloween", ["deDesc1"] = "Z potworów wypadają Upiorne Dynie", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 30321, ["deEventFlagName"] = "halloween_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  31.                     [12] = {["deName"] = "Rogaliki <Ramadan>", ["deDesc1"] = "Z potworów wypadają Rogaliki czy coś takiego", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 30315, ["deEventFlagName"] = "ramadan_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  32.                     [13] = {["deName"] = "Wielkanoc", ["deDesc1"] = "Z potworów wypadają Jajka Wielkanocne", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "easter_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  33.                     [14] = {["deName"] = "Piłka", ["deDesc1"] = "Z potworów wypadają Piłki nożne", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50096, ["deEventFlagName"] = "football_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  34.                     [15] = {["deName"] = "Whiteday", ["deDesc1"] = "Z potworów wypadają Żółte Róże i Cukierki", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "whiteday_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  35.                     [16] = {["deName"] = "Dzień Dziecka", ["deDesc1"] = "Z potworów dropią szkatułki z zagadką ", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50034, ["deEventFlagName"] = "kids_day_drop", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 100, ["deWorkType"] = 2},
  36.                     [17] = {["deName"] = "Three Skill Drop", ["deDesc1"] = "Podobno dropi Kamień Duchowy", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50513, ["deEventFlagName"] = "three_skill_item", ["deEventFlagMin"] = 1, ["deEventFlagMax"] = 1000, ["deWorkType"] = 3},
  37.                     [18] = {["deName"] = "Części Medalu Bohatera", ["deDesc1"] = "Według Legendy dropią części Medalu Bohatera", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 1, ["deEventFlagName"] = "refine_box_drop", ["deEventFlagMin"] = 50, ["deEventFlagMax"] = 100, ["deWorkType"] = 3},
  38.                     [19] = {["deName"] = "Dragon Boat", ["deDesc1"] = "z potworówy wypada Nasionko", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 50085, ["deEventFlagName"] = "dragon_boat_festival_drop", ["deEventFlagMin"] = 100, ["deEventFlagMax"] = 1000, ["deWorkType"] = 2},
  39.                     [20] = {["deName"] = "Mars Drop", ["deDesc1"] = "Według Legendy dropią magiczne rudy miedzi", ["deDesc2"] = "", ["deDesc3"] = "", ["deItemVnum"] = 70035, ["deEventFlagName"] = "mars_drop", ["deEventFlagMin"] = 1000, ["deEventFlagMax"] = 1500, ["deWorkType"] = 3},
  40.                 },
  41.                 ["deActivate"] = "Aktywować wydarzenie? ",
  42.                 ["deDeactivate"] = "Wyłączyć wydarzenie? ",
  43.                 ["deActivateSucc"] = "Wydarzenie zostało pomyślnie aktywowane!",
  44.                 ["deDeactivateSucc"] = "Wydarzenie zostało pomyślnie wyłączone!",
  45.                 ["deCannotEventBugged"] = "Nie możesz włączyć tego eventu, ponieważ został on oznaczony jako zbugowany.",
  46.                 ["deMoreIsBetter"] = "Im większa wartość tym większy drop",
  47.                 ["deValueCannotBeOverTheLimit"] = "Wartość nie może być poza limitem!",
  48.                 ["deEventIsActive"] = "Wydarzenie jest aktywne.",
  49.                 ["deEventIsNotActive"] = "Wydarzenie nie jest aktywne.",
  50.             }
  51.         end
  52.         function say_red(name) say(color256(255, 0, 0)..name..color256(196, 196, 196)) end
  53.  
  54.         function say_green(name) say(color256(0, 238, 0)..name..color256(196, 196, 196)) end
  55.        
  56.         function antibug(value) --Ta funkcja została napisana przez Nismo., jest to zabezpieczenie do inputa ;)
  57.             if value == "" or value == nil or string.find(value, "nan") then
  58.                 return false
  59.             else
  60.                 return true
  61.             end
  62.         end
  63.        
  64.         when 70021.use with pc.is_gm() and pc.get_gm_level() >= drop_event.setting().deGMMinLevel begin
  65.            
  66.             local settings = drop_event.setting()
  67.            
  68.             --[[ Deklaruję 5 pustych tablic, w których będę przechowywał wydarzenia ]]--
  69.             local table1_5 = {}
  70.             local table2_5 = {}
  71.             local table3_5 = {}
  72.             local table4_5 = {}
  73.             local table5_5 = {}
  74.            
  75.             --[[ Teksty z opisami ]]--
  76.             say_title(settings.deTytul)
  77.             say(settings.deOpis1)
  78.             say(settings.deOpis2)
  79.            
  80.             for i = 1, table.getn(settings.deEventConfigTable) do   --dzięki tej pętli wypełniam sobie tablice wydarzeniami. Żadne wydarzenie nie powtarza się w innej
  81.                 if i >= 1 and i <= 4 then
  82.                     table.insert(table1_5, settings.deEventConfigTable[i].deName)
  83.                 elseif i >= 5  and i <= 8 then
  84.                     table.insert(table2_5, settings.deEventConfigTable[i].deName)
  85.                 elseif i >= 9 and i <= 12 then
  86.                     table.insert(table3_5, settings.deEventConfigTable[i].deName)
  87.                 elseif i >= 13 and i <= 16 then
  88.                     table.insert(table4_5, settings.deEventConfigTable[i].deName)
  89.                 else
  90.                     table.insert(table5_5, settings.deEventConfigTable[i].deName)
  91.                 end
  92.             end
  93.            
  94.             local s=select("Część nr 1", "Część nr 2", "Część nr 3", "Część nr 4", "Część nr 5", "Anuluj")
  95.             if s == 6 then return end
  96.            
  97.             --[[tutaj będę sobie pobierał wydarzenia z każdej z tablic w zależności od wybranej "części"]]--
  98.             local s1   
  99.             if s == 1 then
  100.                 s1 = select_table(table1_5)
  101.             elseif s == 2 then
  102.                 s1 = select_table(table2_5)
  103.             elseif s == 3 then
  104.                 s1 = select_table(table3_5)
  105.             elseif s == 4 then
  106.                 s1 = select_table(table4_5)
  107.             elseif s == 5 then
  108.                 s1 = select_table(table5_5)
  109.             else return end
  110.            
  111.             if s1 == 6 then return end
  112.            
  113.             say_title(settings.deEventConfigTable[(s-1) * 4 + s1].deName)   --Pokazuję sobie nazwę eventu
  114.             --say(game.get_event_flag(settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagName))
  115.             if game.get_event_flag(settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagName) != 0 then   --jeśli wybrany event jest aktywny
  116.                 say()
  117.                 drop_event.say_green(settings.deEventIsActive)                                                          --informacja, że jest aktywny
  118.                 say(settings.deDeactivate)                                                                  --pytanie, czy wyłączyć
  119.                 local sel1=select(locale.yes, locale.no)                                                    --wybór tak nie
  120.                 if sel1==2 then return end                                                                  --jeśli nie, to wychodzi
  121.                 game.set_event_flag(settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagName, 0)         --w przeciwnym razie wyłącza event
  122.                 drop_event.say_green(settings.deDeactivateSucc)                                                     --i informuje o tym gm
  123.                 return                                                                                      --i wychodzi
  124.             end            
  125.            
  126.             --[[ Teraz zajmę się aktywowaniem eventu.
  127.                  Pokazuję sobie opisy wydarzenia]]--
  128.             say(settings.deEventConfigTable[(s-1) * 4 + s1].deDesc1)                                       
  129.             say(settings.deEventConfigTable[(s-1) * 4 + s1].deDesc2)
  130.             say(settings.deEventConfigTable[(s-1) * 4 + s1].deDesc3)
  131.            
  132.             if tonumber(settings.deEventConfigTable[(s-1) * 4 + s1].deItemVnum) != 1 then               --jeśli ID przedmiotu w tablicy z eventem jest różne od 1
  133.                 say_item_vnum(tonumber(settings.deEventConfigTable[(s-1) * 4 + s1].deItemVnum))         --pokazuje obrazek przedmiotu. Tam, gdzie jest 1 nie miałem przedmiotu na serwerze lub było ich wiele (np. Walentynki)
  134.             end
  135.            
  136.             if tonumber(settings.deEventConfigTable[(s-1) * 4 + s1].deWorkType) == 3 then               --Teraz zajmę się przetwarzaniem typów działania, bo to od nich zależy sposób uruchomienia wydarzenia
  137.                 drop_event.say_red(settings.deCannotEventBugged)                                                    --Jeśli typ jest 3, nie możemy odpalić wydarzenia bo nie działa lub jest zbugowane
  138.                 return
  139.             elseif tonumber(settings.deEventConfigTable[(s-1) * 4 + s1].deWorkType) == 2 then           --jeśli typ jest dwa, wyprowadzam na czacie informację, że im większa wartość, tym większy drop
  140.                 drop_event.say_green(settings.deMoreIsBetter)  
  141.             end
  142.             drop_event.say_red(settings.deEventIsNotActive)                                                     --informuję, że event nie jest aktywny (bo aktywność rozpatrywaliśmy wyżej)
  143.             say(settings.deActivate)                                                                    --pytanie o aktywowanie
  144.             local sel = select(locale.yes, locale.no)                                                   --wybór tak nie
  145.             if sel==2 then return end                                                                   --jeśli nie to zawraca
  146.            
  147.             say_title(settings.deEventConfigTable[(s-1) * 4 + s1].deName)
  148.             if tonumber(settings.deEventConfigTable[(s-1) * 4 + s1].deWorkType) != 0 then               --jeśli typ działania jest różny od 0
  149.                 say("Minimalna wartość dla tego eventu wynosi: "..settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagMin) --informacje o minimalnych i maksymalnych wartościach do inputa
  150.                 say("Maksymalna wartość dla tego eventu wynosi: "..settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagMax)
  151.            
  152.                 local i=tonumber(input())                                                               --wasz upragniony input
  153.                 if drop_event.antibug(i) == true then                                                   --antybug
  154.                     if settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagMin <= i and settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagMax >= i then --sprawdzanie, czy wartość zawiera się w "widełkach"
  155.                         game.set_event_flag(settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagName, i) --jeśli tak to włącza event
  156.                     else
  157.                         say(settings.deValueCannotBeOverTheLimit)                                       --a jeśli nie to informuje o nieprawidłowościach
  158.                         return                                                                          --i wraca
  159.                     end
  160.                 else                                                                                    --a jeśli jest zbugowane (jest nan, nil, pusty string itd) to wraca
  161.                     return 
  162.                 end
  163.             else
  164.                 game.set_event_flag(settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagName, settings.deEventConfigTable[(s-1) * 4 + s1].deEventFlagMax)    --jeśli jednak typ działania jest równy 0 to włącza wydarzenie z maksymalną wartością
  165.             end
  166.             drop_event.say_green(settings.deActivateSucc)
  167.         end
  168.     end
  169. end
Advertisement
Add Comment
Please, Sign In to add comment