Guest User

[Poprawa] Lotto

a guest
Jan 26th, 2013
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.48 KB | None | 0 0
  1. quest lotto begin
  2.     state KONFIGURACJA begin
  3.         -- Ilosc losowanych liczb
  4.         function IloscLiczb() return 6 end
  5.        
  6.         -- Maksymalna liczba jaka mozna wytypowac
  7.         function MaxLiczba() return 49 end
  8.        
  9.         -- Koszt jednego zakladu
  10.         function KosztZakladu() return 500000 end
  11.        
  12.         -- Dodatek do puli nagrod
  13.         function DodatekDoPuli() return 10000000 end
  14.        
  15.         -- Minimalny czas trwania jednego losowania i typowania liczb (w godzinach)
  16.         function CzasLosowania() return 24 end
  17.     end
  18.    
  19.     state start begin
  20.         when login with game.get_event_flag("lotto_Losowanie") == 1 and pc.getqf("lotto_LiczbaNr"..lotto.ilosc_liczb()) != 0 begin
  21.             local pula = game.get_event_flag("lotto_PulaNagrod")
  22.             notice("Maszyna losujaca wybrala juz liczby...")
  23.             if pula != 0 then
  24.                 notice("Dzisiejsza pula nagrod to "..pula.." Yang!")
  25.             else
  26.                 notice("Pula nagrod niestety zostala juz zdobyta przez innego gracza.")
  27.                 notice("Niemniej jednak nadal mozesz wygrac az "..lotto.DodatekDoPuli().." Yang!")
  28.             end
  29.         end
  30.        
  31.         when 20094.chat."GM: Zakoncz rozdawanie nagrod" with pc.is_gm() and game.get_event_flag("lotto_Losowanie") == 1 begin
  32.             local old_time = game.get_event_flag("lotto_CzasTrwania")
  33.             local new_time = get_time()
  34.             if old_time > new_time then
  35.                 say("Musisz poczekac jeszcze "..math.ceil((old_time-new_time)/3600).."h by moc zakonczyc ")
  36.                 say("odbieranie nagrod przez graczy.")
  37.                 say()
  38.                 return
  39.             end
  40.             say("Na pewno wylaczyc rozdawanie nagrod?")
  41.             if select("Tak", "Nie") == 1 then
  42.                 game.set_event_flag("lotto_CzasTrwania", get_time()+lotto.CzasLosowania()*60*60)
  43.                 game.set_event_flag("lotto_Losowanie", 0)
  44.                 for i = 1, 6 do
  45.                     game.set_event_flag("lotto_LiczbaNr"..i, 0)
  46.                 end
  47.             end
  48.         end
  49.        
  50.         when 20094.chat."GM: Wylosuj liczby" with pc.is_gm() and game.get_event_flag("lotto_Losowanie") == 0  begin
  51.             local old_time = game.get_event_flag("lotto_CzasTrwania")
  52.             local new_time = get_time()
  53.             if old_time > new_time then
  54.                 say("Musisz poczekac jeszcze "..math.ceil((old_time-new_time)/3600).."h by moc zakonczyc ")
  55.                 say("typowanie liczb przez graczy.")
  56.                 say()
  57.                 return
  58.             end
  59.             local max = lotto.MaxLiczba()
  60.             local ilosc = lotto.IloscLiczb()
  61.             say("Na pewno wylosowac liczby?")
  62.             local liczby
  63.             local tab = {}
  64.             local zakres = {}
  65.             if select("Tak", "Anuluj") == 1 then
  66.                 for i = 1, max do
  67.                     table.insert(zakres, i)
  68.                 end
  69.                 for i = 1, ilosc do
  70.                     for j = 1, max do
  71.                         if tab[i-1] == j then
  72.                             table.remove(zakres, j)
  73.                             table.insert(zakres, j, 0)
  74.                         end
  75.                     end
  76.                     local a = zakres[number(1, table.getn(zakres))]
  77.                     while a == 0 do
  78.                         a = zakres[number(1, table.getn(zakres))]
  79.                     end
  80.                     if table.getn(tab) == 0 then
  81.                         liczby = tostring(a)
  82.                     else
  83.                         liczby = liczby..", "..tostring(a)
  84.                     end
  85.                     table.insert(tab, a)
  86.                     game.set_event_flag("lotto_LiczbaNr"..i, a)
  87.                 end
  88.                 local pula = game.get_event_flag("lotto_PulaNagrod")+lotto.DodatekDoPuli()
  89.                 say("Wylosowane liczby to "..liczby)
  90.                 game.set_event_flag("lotto_PulaNagrod", pula)
  91.                 game.set_event_flag("lotto_Losowanie", 1)
  92.                 game.set_event_flag("lotto_CzasTrwania", get_time()+lotto.CzasLosowania()*60*60)
  93.                 notice_all("Maszyna losujaca zaczyna wybieranie liczb...")
  94.                 notice_all("Dzisiejsza pula nagrod to "..pula.." Yang!")
  95.             end
  96.         end
  97.        
  98.         when 20094.chat."Typowanie liczb" with game.get_event_flag("lotto_Losowanie") == 0 begin
  99.             local max = lotto.MaxLiczba()
  100.             local ilosc = lotto.IloscLiczb()
  101.             local koszt = lotto.KosztZakladu()
  102.             say_title(delay(8).."Loteria")
  103.             if pc.getqf("lotto_LiczbaNr"..ilosc) != 0 then
  104.                 say("Posiadasz juz wytypowane liczby. Sa to:")
  105.                 say(color256(0,255,0)..pc.getqf("lotto_LiczbaNr1")..", "..pc.getqf("lotto_LiczbaNr2")..", "..pc.getqf("lotto_LiczbaNr3")..", "..pc.getqf("lotto_LiczbaNr4")..", "..pc.getqf("lotto_LiczbaNr5")..", "..pc.getqf("lotto_LiczbaNr6")..color256(196, 196, 196))
  106.                 say("Aby moc wytypowac nowe musisz poczekac ")
  107.                 say("do nastepnego losowania.")
  108.                 say()
  109.                 return
  110.             elseif pc.get_gold() < koszt then
  111.                 say("Aby moc wziac udzial w losowaniu nalezy zaplacic ")
  112.                 say(koszt.." Yang, ktore powedruja do puli nagrod.")
  113.                 say("Niestety nie posiadasz tyle pieniedzy.")
  114.                 say()
  115.                 return
  116.             end
  117.             say("Witaj w loterii serwera Metin2")
  118.             say("Za chwile zostaniesz poproszony o podanie szesciu")
  119.             say("liczb. Liczby te beda braly udzial w losowaniu.")
  120.             say("Oto cztery najwazniejsze zasady:")
  121.             say("* Mistrz Gry nie wybiera liczb, sa one losowe")
  122.             say("* Mozna tylko raz typowac liczby w danym losowaniu")
  123.             say("* Liczby nie moga sie powtarzac ")
  124.             say("* Koszt jednorazowego typowania to "..koszt.." Yang")
  125.             say()
  126.             say("Chcesz wziac udzial w typowaniu liczb?")
  127.             say()
  128.             if select("Tak", "Anuluj") == 1 then
  129.                 pc.change_gold(-koszt)
  130.                 game.set_event_flag("lotto_PulaNagrod", game.get_event_flag("lotto_PulaNagrod")+koszt)
  131.                 local tab = {}
  132.                 local liczby
  133.                 for i=1, ilosc do
  134.                     local a = 0
  135.                     while not tonumber(a) or a < 1 or a > max or a == "" do
  136.                         say_title("Loteria")
  137.                         local dlugosc = table.getn(tab)
  138.                         if dlugosc == 0 then
  139.                             say("Jeszcze nie wprowadzono zadnej liczby.")
  140.                         else
  141.                             say("Do tej pory wprowadzono nastepujace liczby:")
  142.                             say(color256(0,255,0)..liczby..color256(196, 196, 196))
  143.                         end
  144.                         say("Podaj liczbe nr "..i..":")
  145.                         say_reward("Zakres to 1-"..max)
  146.                         a = tonumber(input())
  147.                         if not tonumber(a) or a == "" then
  148.                             say_title("Loteria")
  149.                             say("Podany zostal niewlasciwy znak. Sprobuj ponownie.")
  150.                             say()
  151.                             wait()
  152.                         elseif a < 1 or a > max then
  153.                             say_title("Loteria")
  154.                             say("Liczba musi byc z zakresu 1-"..max..". Sprobuj ponownie.")
  155.                             say()
  156.                             wait()
  157.                         else
  158.                             for j=1, dlugosc do
  159.                                 if a == tab[j] then
  160.                                     a = 0
  161.                                     say_title("Loteria")
  162.                                     say("Ta liczba zostala juz podana. Sprobuj ponownie.")
  163.                                     say()
  164.                                     wait()
  165.                                 end
  166.                             end
  167.                             if a != 0 then
  168.                                 table.insert(tab, a)
  169.                                 pc.setqf("lotto_LiczbaNr"..i, a)
  170.                                 if i == 1 then
  171.                                     liczby = tostring(a)
  172.                                 else
  173.                                     liczby = liczby..", "..tostring(a)
  174.                                 end
  175.                             end
  176.                         end
  177.                     end
  178.                 end
  179.                 say_title("Loteria")
  180.                 say("Oto podane przez Ciebie liczby")
  181.                 say()
  182.                 say(color256(0,255,0)..liczby..color256(196, 196, 196))
  183.                 say()
  184.                 say("Aby poznac wynik typowania zglos sie do mnie gdy")
  185.                 say("Mistrz Gry uruchomi maszyne losujaca.")
  186.                 say()
  187.             end
  188.         end
  189.        
  190.         when 20094.chat."Sprawdz moje liczby" with game.get_event_flag("lotto_Losowanie") == 1 begin
  191.             local ilosc = lotto.IloscLiczb()
  192.             local koszt = lotto.KosztZakladu()
  193.             local glowna = lotto.DodatekDoPuli()
  194.             local pula = game.get_event_flag("lotto_PulaNagrod")
  195.             say_title("Loteria")
  196.             if pc.getqf("lotto_LiczbaNr6") == 0 then
  197.                 say("Przykro mi, nie masz wytypowanych liczb.")
  198.                 say("Moze nastepnym razem Ci sie uda!")
  199.                 say()
  200.                 return
  201.             elseif pula == 0 then
  202.                 say("Dzis juz ktos trafil szostke! Szansa na wygranie")
  203.                 say("glownej nagrody przepadla. Mozesz jednak wygrac ")
  204.                 say("nagrode pocieszenia w wysokosci "..glowna.." Yang!")
  205.             else
  206.                 say("Pula dzisiejszego losowania wynosi "..pula.." Yang.")
  207.             end
  208.             say("Czas sprawdzic Twoje liczby.")
  209.             say()
  210.             wait()
  211.             pc.setqf("lotto_LiczbaNr3", game.get_event_flag("lotto_LiczbaNr3"))
  212.             say_title("Loteria")
  213.             local trafione = {}
  214.             local ilosc_trafionych = 0
  215.             for i = 1, ilosc do
  216.                 table.insert(trafione, 0)
  217.             end
  218.             for i = 1, ilosc do
  219.                 local liczba = pc.getqf("lotto_LiczbaNr"..i)
  220.                 for j = 1, ilosc do
  221.                     if liczba == game.get_event_flag("lotto_LiczbaNr"..j) then
  222.                         table.remove(trafione, i)
  223.                         table.insert(trafione, i, 1)
  224.                     end
  225.                 end
  226.                 if trafione[i] == 1 then
  227.                     say(color256(0,255,0).."Liczba "..liczba..": trafiona!"..color256(196, 196, 196))
  228.                     ilosc_trafionych = ilosc_trafionych+1
  229.                 else
  230.                     say(color256(255,0,0).."Liczba "..liczba..": chybiona."..color256(196, 196, 196))
  231.                 end
  232.             end
  233.             say()
  234.             say()
  235.             local gold = pc.get_gold()
  236.             local glowna = lotto.DodatekDoPuli()
  237.             local nagrody = {koszt, math.floor(glowna/20), math.floor(glowna/10), math.floor(glowna/4), math.floor(glowna/2), glowna}
  238.             if ilosc_trafionych == 0 then
  239.                 say("Przykro nam, dzisiaj Ci sie nie powiodlo.")
  240.                 say("Nie zalamuj sie, moze nastepnym razem sie uda!")
  241.             elseif ilosc_trafionych == 6 and pula != 0 then
  242.                 say(color256(0,255,0).."Trafiles szostke! Wygrywasz "..pula.." Yang!"..color256(196, 196, 196))
  243.                 notice_all("Gracz "..pc.get_name().." trafil szostke! Dzieki temu wygral "..pula.." Yang. Gratulujemy!")
  244.                 if gold + pula > 2000000000 then
  245.                     say()
  246.                     say_reward("Po wyplaceniu pieniedzy Twoje kont moze ulec")
  247.                     say_reward("zbugowaniu. Aby otrzymac kwote wroc do mnie")
  248.                     say_reward("gdy bedziesz posiadac mniej Yang.")
  249.                     pc.setqf("lotto_Wyplata", pula)
  250.                 else
  251.                     pc.change_gold(pula)
  252.                 end
  253.                 game.set_event_flag("lotto_PulaNagrod", 0)
  254.             else
  255.                 local liczb = "liczby."
  256.                 if ilosc_trafionych == 1 then
  257.                     liczb = "liczbe."
  258.                 elseif ilosc_trafionych >= 5 then
  259.                     liczb = "liczb."
  260.                 end
  261.                 local nagroda = nagrody[ilosc_trafionych]
  262.                 say("Udalo Ci sie trafic "..ilosc_trafionych.." "..liczb)
  263.                 say("W nagrode otrzymujesz "..nagroda.." Yang. Gratulujemy!")
  264.                 if ilosc_trafionych == 6 then
  265.                     say("Niestety ktos ubiegl Cie i zgarnal glowna nagrode.")
  266.                     say("Nie martw sie, nastepnym razem Ty rozbijesz bank!")
  267.                 end
  268.                 if nagroda + gold > 2000000000 then
  269.                     say()
  270.                     say_reward("Po wyplaceniu pieniedzy Twoje kont moze ulec")
  271.                     say_reward("zbugowaniu. Aby otrzymac kwote wroc do mnie")
  272.                     say_reward("gdy bedziesz posiadac mniej Yang.")
  273.                     pc.setqf("lotto_Wyplata", nagroda)
  274.                 else
  275.                     pc.change_gold(nagroda)
  276.                 end
  277.             end
  278.             say()
  279.             for i = 1, 6 do
  280.                 pc.setqf("lotto_LiczbaNr"..i, 0)
  281.             end
  282.         end
  283.        
  284.         when 20094.chat."Wyplata pieniedzy" with pc.getqf("lotto_Wyplata") != 0 begin
  285.             local wyplata = pc.getqf("lotto_Wyplata")
  286.             local gold = pc.get_gold()
  287.             say_title("Loteria")
  288.             if wyplata + gold > 2000000000 then
  289.                 say("Nadaj posiadasz za duzo pieniedzy. Mozesz posiadac ")
  290.                 say("maksymalnie "..2000000000-gold.." Yang a posiadasz "..gold..".")
  291.                 say("Wroc do mnie, gdy bedzie mozliwa wyplata.")
  292.             else
  293.                 say("Prosze, oto Twoje "..wyplata.." Yang.")
  294.                 pc.change_gold(wyplata)
  295.                 pc.setqf("lotto_Wyplata", 0)
  296.             end
  297.         end
  298.     end
  299. end
Advertisement
Add Comment
Please, Sign In to add comment