hatte mir vorgenommen, die Automatische OX-Event Quest von ProfiFighter so umzuschreiben, dass ein Admin den Wettbewerb einmal startet und die Quest sich automatisch um eine bestimmte Uhrzeit jeden Tag wiederholt.
PHP Code:
----------------------------------------------------
--Created by ProfiFighter.
----------------------------------------------------
quest oxevent_manager begin
state start begin
when 20358.chat."Automatischer OX-Wettbewerb" with pc.is_gm() begin
say_title("Automatischer OX-Wettbewerb")
say("")
say("Willkommen, Andree.")
say("Möchtest du den Automatischen")
say("Wettbewerb starten?")
local s = select("Ja", "Nein")
if s == 2 then
return
elseif s == 1 then
local zeit = os.date("%H",os.time())
if zeit == "16" then
server_loop_timer("ox", 5)
game.set_event_flag("oxevent_running_status", 1)
game.set_event_flag("oxevent_maintenance5_status", 1)
wait()
notice_all("Der OX-Wettbewerb hat gerade angefangen!")
notice_all("Begebt euch zu Uriel, um am Wettbewerb")
notice_all("teilzunehmen!")
end
end
end
when ox.server_loop_timer begin
game.set_event_flag("oxevent_running_status", 1)
game.set_event_flag("oxevent_maintenance1_time", 5)
game.set_event_flag("oxevent_maintenance3_status", 1)
server_timer('oxevent4', 0, get_server_timer_arg())
server_timer('oxevent1', 60, get_server_timer_arg())
clear_server_loop_timer("ox")
if game.get_event_flag("oxevent_maintenance5_status") == 1 then
local stat = oxevent.get_status()
if stat == 0 then
return
elseif game.get_event_flag("oxevent_running_status") == 0 and game.get_event_flag("oxevent_maintenance1_time") == 0 and game.get_event_flag("oxevent_maintenance2_status") == 0 and game.get_event_flag("oxevent_maintenance3_status") == 0 and game.get_event_flag("oxevent_maintenance4_status") == 0 and game.get_event_flag("oxevent_maintenance5_status") == 0 then
game.set_event_flag("oxevent_running_status", 1)
game.set_event_flag("oxevent_maintenance5_status", 1)
server_timer("oxevent1", 5)
wait()
end
end
end
when oxevent1.server_timer begin
clear_server_timer('oxevent1', get_server_timer_arg())
if game.get_event_flag("oxevent_running_status") == 1 then
local stat = oxevent.get_status()
if stat == 1 then
local min_user_number = 150
if oxevent.get_attender() >= min_user_number or game.get_event_flag("oxevent_maintenance1_time") == 0 and oxevent.get_attender() > 1 then
game.set_event_flag("oxevent_maintenance1_time", 0)
oxevent.close()
local user_number = oxevent.get_attender()
notice_all("Es sind "..user_number.." Spieler da. Der Zugang zum OX-Wettbewerb wurde geschlossen!")
server_timer('oxevent2', 5, get_server_timer_arg())
else
local close_time = game.get_event_flag("oxevent_maintenance1_time")
local close_time_typ = 2
local close_time_typ_text = {"Sekunden", "Minuten", "Stunden", "Tage", "Monate", "Jahre"}
if close_time == 0 then
min_user_number = 2
elseif close_time == 1 then
close_time_typ_text = {"Sekunde", "Minute", "Stunde", "Tag", "Monat", "Jahr"}
end
local rest_user_number = min_user_number - oxevent.get_attender()
if close_time != 0 then
game.set_event_flag("oxevent_maintenance1_time", close_time-1)
notice_all("Noch "..rest_user_number.." Spieler oder "..close_time.." "..close_time_typ_text[close_time_typ]..", falls mindestens 2 Spieler anwesend sind,")
notice_all("dann wird der Zugang zum OX-Wettbewerb geschlossen!")
else
notice_all("Noch "..rest_user_number.." Spieler, dann wird der Zugang zum OX-Wettbewerb geschlossen!")
end
server_timer('oxevent1', 60, get_server_timer_arg())
end
end
end
when oxevent2.server_timer begin
clear_server_timer('oxevent2', get_server_timer_arg())
if game.get_event_flag("oxevent_running_status") == 1 then
local stat = oxevent.get_status()
if stat == 2 then
if oxevent.get_attender() > 1 then
local v = oxevent.quiz(1, 30)
if v == 0 then
if oxevent.open() == 1 then
game.set_event_flag("oxevent_maintenance1_time", 0)
server_timer('oxevent1', 5, get_server_timer_arg())
else
notice_all("Technicher Fehler. Ein Teammitglied soll")
notice_all("sich um den OX-Wettbewerb kümmern!")
notice_all("Line 592: An error has happend!")
end
elseif v == 1 then
server_timer('oxevent2', 40, get_server_timer_arg())
else
server_timer('oxevent2', 40, get_server_timer_arg())
end
elseif oxevent.get_attender() == 1 then
oxevent.give_item(1524, 1)
notice_all("Der OX-Wettbewerb wird in 5 Sekunden beendet. Der Gewinner erhält seinw")
notice_all("Belohnung umgehend.")
server_timer('oxevent3', 5, get_server_timer_arg())
elseif oxevent.get_attender() == 0 then
notice_all("Der OX-Wettbewerb hat gerade sein Ende gefunden,")
notice_all("weil kein Spieler gewonnen hat. Er wird nun")
notice_all("neugestartet.")
oxevent.end_event()
clear_server_timer('oxevent1', get_server_timer_arg())
clear_server_timer('oxevent2', get_server_timer_arg())
clear_server_timer('oxevent3', get_server_timer_arg())
clear_server_timer('oxevent4', get_server_timer_arg())
game.set_event_flag("oxevent_running_status", 0)
game.set_event_flag("oxevent_maintenance2_status", 1)
server_timer('oxevent3', 30, get_server_timer_arg())
end
elseif stat == 3 then
server_timer('oxevent2', 5, get_server_timer_arg())
else
notice_all("Technicher Fehler. Ein Teammitglied soll")
notice_all("sich um den OX-Wettbewerb kümmern!")
notice_all("Line 622: An error has happend!")
end
end
end
end
when login with pc.countitem("1524") == 1 begin
timer("oxevent_price", 0)
end
when oxevent_price.timer begin
local item_vnum = game.get_event_flag("oxevent_item_vnum")
local item_count = game.get_event_flag("oxevent_item_count")
local money_count = game.get_event_flag("oxevent_money_count")
if item_vnum <= 0 and money_count <= 0 then
local r = number(1, 10)
local vnum_list = {
{
{11296, 11496, 11696, 11896},
{146, 1106, 156, 7146},
},
{15227, 15207, 15187, 15127, 27987, 27992, 27993, 27994, 50070, 50073, 50074, 50076, 50077, 50078, 50079, 50081, 50082},
{
{50095, 10},
{27987, 5},
{27987, 10},
{50512, 1},
{50512, 2},
},
{20000000, 35000000, 50000000},
}
if 1 == r then
say_title(item_name(1524)..":")
say("Möchtest du die Auswahl nur für deine[ENTER]"..
"Charakterklasse haben?[ENTER]")
local s = select(locale.yes, locale.no)
say_title(item_name(1524)..":")
say("Bitte wähle das Item aus, was du[ENTER]"..
"am liebsten haben willst.[ENTER]")
if s == 1 then
local job = pc.job + 1
local s = select(item_name(vnum_list[1][1][job]), item_name(vnum_list[1][2][job]), "Zufall")
if 1 == s then
item_vnum = vnum_list[1][1][job]
elseif 2 == s then
item_vnum = vnum_list[1][2][job]
elseif 3 == s then
local r = number(1, 2)
if 1 == r then
item_vnum = vnum_list[1][1][job]
elseif 2 == r then
item_vnum = vnum_list[1][2][job]
end
end
elseif s == 2 then
local s = select(item_name(vnum_list[1][1][1]), item_name(vnum_list[1][2][1]), item_name(vnum_list[1][1][2]), item_name(vnum_list[1][2][2]), "Weiter")
if 1 == s then
item_vnum = vnum_list[1][1][1]
elseif 2 == s then
item_vnum = vnum_list[1][2][1]
elseif 3 == s then
item_vnum = vnum_list[1][1][2]
elseif 4 == s then
item_vnum = vnum_list[1][2][2]
elseif 5 == s then
say_title(item_name(1524)..":")
say("Bitte wähle das Item aus, was du[ENTER]"..
"am liebsten haben willst.[ENTER]")
local s = select(item_name(vnum_list[1][1][3]), item_name(vnum_list[1][2][3]), item_name(vnum_list[1][1][4]), item_name(vnum_list[1][2][4]), "Zufall")
if 1 == s then
item_vnum = vnum_list[1][1][3]
elseif 2 == s then
item_vnum = vnum_list[1][2][3]
elseif 3 == s then
item_vnum = vnum_list[1][1][4]
elseif 4 == s then
item_vnum = vnum_list[1][2][4]
elseif 5 == s then
local r = number(1, 8)
if 1 == r then
item_vnum = vnum_list[1][1][1]
elseif 2 == r then
item_vnum = vnum_list[1][2][1]
elseif 3 == r then
item_vnum = vnum_list[1][1][2]
elseif 4 == r then
item_vnum = vnum_list[1][2][2]
elseif 5 == r then
item_vnum = vnum_list[1][1][3]
elseif 6 == r then
item_vnum = vnum_list[1][2][3]
elseif 7 == r then
item_vnum = vnum_list[1][1][4]
elseif 8 == r then
item_vnum = vnum_list[1][2][4]
end
end
end
end
else
local r = number(1, 3)
if 1 == r then
local r = number(1, 17)
item_vnum = vnum_list[2][r]
elseif 2 == r then
local r = number(1, 5)
item_vnum = vnum_list[3][r][1]
item_count = vnum_list[3][r][2]
elseif 3 == r then
local r = number(1, 3)
money_count = vnum_list[4][r]
end
end
end
say_title(item_name(1524)..":")
say("Du hast erhalten:")
pc.remove_item(1524)
if item_vnum > 0 then
if item_count > 1 then
say_item(item_count.." mal "..item_name(item_vnum), item_vnum, "")
pc.give_item2(item_vnum, item_count)
say("")
notice_all("Der Gewinner des OX-Wettbewerbs(".. pc.get_name() ..") hat")
notice_all(item_count.." mal "..item_name(item_vnum).." gewonnen!")
else
say_item(item_name(item_vnum), item_vnum, "")
pc.give_item2(item_vnum)
say("")
notice_all("Der Gewinner des OX-Wettbewerbs(".. pc.get_name() ..") hat")
notice_all(item_name(item_vnum).." gewonnen!")
end
end
if money_count > 0 then
say_item(money_count.." "..item_name(1), 1, "")
pc.change_money(money_count)
say("")
notice_all("Der Gewinner des OX-Wettbewerbs(".. pc.get_name() ..") hat")
notice_all(money_count.." "..item_name(1).." gewonnen!")
end
end
when 20358.chat."GM: OX-Wettbewerb zurücksetzen" with pc.is_gm() begin
say_title(mob_name(20354)..":")
say("Soll der Abbruch des OX-Wettbewerbs wirklich[ENTER]"..
"erzwungen werden?[ENTER]")
local s = select(locale.yes, locale.no)
if s == 1 then
oxevent.end_event_force()
say_title(mob_name(20354)..":")
say("Der OX-Wettbewerb wurde abgebrochen.[ENTER]")
end
end
end
end