Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- quest char_bonus begin
- state start begin
- function setting()
- return{
- ["chrTytul"] = "System Gniewu",
- ["chrOpis1"] = "System Gniewu uaktywnia się, gdy Twoja postać osiąga określony poziom.",
- ["chrOpis2"] = "Twoja postać raz na dwie godziny może otrzymać losowy bonus na określony przedział czasu.",
- --W tej tablicy trzymam ID bonusów, które ma dostać każda z klas
- ["chrJobBonusTable"] = {
- [0] = {3, 4}, --Wojownik
- [1] = {4, 5}, --Ninja
- [2] = {5, 6}, --Sura
- [3] = {6, 3}, --Szaman
- },
- --W tej tablicy trzymam czas trwania bonusu (w minutach)
- ["chrApplyDurationTable"] = {5, 10, 15, 30, 60},
- --W tych tablicach trzymam wartości bonusów:
- ["chrStatValueTable"] = {1, 2, 4, 8, 16,}, --statystyk
- ["chrPercValueTable"] = {2, 4, 6, 8, 10, 12, 15,}, --procentowych
- ["chrDefAttValueTable"] = {15, 30, 45, 60,}, --obrona, atak, unik, odbicie
- ["chrhValueTable"] = {500, 1200, 1500, 2000, 2500,}, --max pż i pe
- --W tych tablicach trzymam ID bonusów:
- ["chrPercBonusIDTable"] = {7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 59, 60, 61, 62, 63, 71, 72,}, --mających wartość wyrażaną w %
- ["chrStatIDTable"] = {3, 4, 5, 6,}, --statystyk
- ["chrDefAttIDTable"] = {53, 54,}, --obrony, ataku, uniku, odbicia
- ["chrhIDTable"] = {1, 2,}, --max pż i pe
- --Ta funkcja steruje sposobem nadawania wartości bonusu. Jeśli jest ustawiona na 1, wartość jest obliczana ze wzoru przechowywanego w stałej computeValueSyntax, zaś jeśli jest 0 - jest losowana z tablicy
- ["isComputeValueMode"] = 0,
- --Tutaj jest wzór na wartość bonusu jeśli isComputeValueMode jest równe 1
- ["ComputeValueSyntax"] = math.ceil((pc.get_level() * (1/3)) + 9.75),
- --Ta stała przechowuje czas po jakim znowu nadaje się bonusy
- ["chrNextBonusTime"] = 1*60*60*2,
- }
- end
- when login or letter or button or info or mount or unmount begin
- --[[ Tego używałem do debugowania
- test_chat(get_time().." != "..pc.getqf("next_bonus_time"))
- test_chat("następny bonus za "..pc.getqf("next_bonus_time")-get_time().."s") ]]--
- if get_time() >= pc.getqf("next_bonus_time") then --Jeśli można od nowa nadać bonus (dosł: czas serwera jest większy od wymaganego)
- local settings = char_bonus.setting()
- local bonus
- local wartosc
- local czas = settings.chrApplyDurationTable[number(1, table.getn(settings.chrApplyDurationTable))] * 60 --losuję sobie czas z tablicy i mnożę przez 60, czyli liczbę sekund w minucie
- for i = 1, table.getn(settings.chrJobBonusTable[pc.get_job()]) do --pętla nadaje dwa bonusy
- bonus = settings.chrJobBonusTable[pc.get_job()][i]
- if bonus == 0 then return end --jeśli wartość bonusu wynosi 0 to pętla wraca.
- if settings.isComputeValueMode == 0 then --jeśli tryb przeliczania wartości jest ustawiony na 0
- if table_is_in(settings.chrStatIDTable, bonus) then --jeśli w tablicy znajduje się bonus
- wartosc = settings.chrStatValueTable[number(1, table.getn(settings.chrStatValueTable))] --nadajemy wartość zgodną z typem bonusu
- end
- if table_is_in(settings.chrPercBonusIDTable, bonus) then --powtórka z rozrywki
- wartosc = settings.chrPercValueTable[number(1, table.getn(settings.chrPercValueTable))] --powtórka z rozrywki
- end
- if table_is_in(settings.chrDefAttIDTable, bonus) then --powtórka z rozrywki
- wartosc = settings.chrDefAttValueTable[number(1, table.getn(settings.chrDefAttValueTable))] --powtórka z rozrywki
- end
- if table_is_in(settings.chrhIDTable, bonus) then --powtórka z rozrywki
- wartosc = settings.chrhValueTable[number(1, table.getn(settings.chrhValueTable))] --powtórka z rozrywki
- end
- else --a jeśli jednak jest 1 to
- wartosc = settings.ComputeValueSyntax --liczymy wartość z odpowiedniego wzoru
- end
- affect.add_collect(tonumber(bonus), wartosc, czas) --nadajemy bonus
- syschat("Twoja postać otrzymała bonus: "..bonus.." o wartości "..wartosc.." na okres czasu "..czas.." sekund.")
- end
- pc.setqf("next_bonus_time", get_time() + settings.chrNextBonusTime) --ustawiamy czas następnego nadania bonusów
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment