Das Fußballevent kann man jederzeit als GM starten.
Ist es einmal gestartet, können Spieler so lange beitreteten,
bis beide Teams voll sind.
Sie werden allerdings nicht automatisch einem Team zugewiesen.
Sobald alles bereit ist, kann ein GM sich auf der Fußballeventmap
"als Ball markieren". Tut er dieses, gilt es ab sofort so,
dass wenn der GM eine gewisse Linie (Torlinie) überschreitet,
dann bekommt die jeweils gegnerische Mannschaft ein Tor zugeschrieben.
Dies geht so lange, bis die festgelegte Anzahl von Toren
erreicht ist, oder ein GM das Event vorzeitig beendet.
Belohnungen können dann von Hand ausgegeben werden.
Nun fragt man sich sicher: "festgelegt"?
Das Event bietet vollständige Administration.
Man kann beispielsweise einstellen, wie groß die Mannschaften werden
& wie viele Tore zum Sieg geschossen werden müssen.
Das Script ist ungetestet, sollte jedoch funktionieren.
Ihr dürft die Torlinie selbstverständlich auch anpassen.
Natürlich braucht ihr dafür eine geeignete Map, es wurde mal
eine Fußballmap veröffentlicht, einfach SuFu benutzen.
Das war´s erstmal von mir für Heute. Ich hoffe, dass einige
eine Verwendung dafür finden werden.
Ja klingt lustig aber Fußball + Metin? FTW Bald haben die keine Schwerter mehr in der Hand sondern Panzerfäuste oder sonstiges..
Also mir Gefälls zwar aber ich finde Fußball + Metin naja...
Kriegst trz. ein Thx fürs Sharing und fürs schreiben wenn du es warst.
Mfg
Ja klingt lustig aber Fußball + Metin? FTW Bald haben die keine Schwerter mehr in der Hand sondern Panzerfäuste oder sonstiges..
Also mir Gefälls zwar aber ich finde Fußball + Metin naja...
Kriegst trz. ein Thx fürs Sharing und fürs schreiben wenn du es warst.
Mfg
Die halten ja keinen Ball in der Hand, kann man zum Beispiel bei einer EM oder WM benutzen, die Idee kam ja durch den Offiserver und dem Fußball und der Fußballmap etc.
Jo aber trz. Metin + Fußball xD Naja die GF bringt bestimmt bald nen Patch raus mit fliegenden Mounts usw. da denkt mann sich nur Metin wo bist du. Nagut Metin.de ist eh schon ausgenudelt.
Mfg
Die Quest funktioniert so noch nicht ganz, habe es mir mal erlaubt diese zu "fixxen" (wobei einfach nur in 2 if-Abfragen die "then"'s gefehlt haben.
PHP Code:
quest fussball begin state start begin --Funktionen für den Verlauf des Events-- function clear_event() game.set_event_flag("fb_active", 0) game.set_event_flag("fb_begin", 0) game.set_event_flag("fb_m1", 0) game.set_event_flag("fb_m2", 0) game.set_event_flag("fb_trueuser", 0) end function get_winner() if game.get_event_flag("fb_m1tor") > game.get_event_flag("fb_m2tor") then return 1 elseif game.get_event_flag("fb_m1tor") < game.get_event_flag("fb_m2tor") then return 2 end return 3 end
----------------------------------------- --Fußballspiel aktivieren und administrieren-- when 20092.chat."Fußballspiel - aktivieren" with pc.is_gm() and game.get_event_flag("fb_active") == 0 begin say_title("Fußballspiel - aktivieren") say("Du möchtest das Fußballspielevent aktivieren?") local a = select("Aktivieren", "Abbrechen") if a == 2 then return end say_title("Fußballspiel - aktivieren") say("Fußballspielvent wird aktiviert!") notice_all("Das Fußballspielevent ist aktiviert!") notice_all("Ihr könnt nun daran teilnehmen!") game.set_event_flag("fb_active", 1) game.set_event_flag("fb_begin", 0) game.set_event_flag("fb_m1", 0) game.set_event_flag("fb_m2", 0) game.set_event_flag("fb_m1tor", 0) game.set_event_flag("fb_m2tor", 0) game.set_event_flag("fb_trueuser", 0) d.new_jump(MAPINDEX, MAPX, MAPY) send_letter("Fußballspiel - Ball werden") end when 20092.chat."Fußballspiel - Einstellungen" with pc.is_gm() and game.get_event_flag("fb_active") == 1 begin say_title("Fußballspiel - Einstellungen") say("Hier kannst du nun Einstellungen vornehmen!") local a = select("Spieldauer", "Tore", "Größe", "Abbrechen") if a == 4 then return end if a == 3 then say_title("Fußballspiel - Einstellungen -> Größe") say("Wie viele Spieler sollen pro Mannschaft") say("an dem Event teilnehmen können?") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Größe") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Größe") say("Die Größe wurde übernommen.") game.set_event_flag("fb_usercount", b) end if a == 2 then say_title("Fußballspiel - Einstellungen -> Tore") say("Wie viele Tore sollen zum Sieg führen?") say("Sobald die Anzahl erreicht wurde, wird") say("das Event sich selbst beenden.") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Tore") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Tore") say("Die Toranzahl wurde übernommen.") game.set_event_flag("fb_torcount", b) end if a == 1 then say_title("Fußballspiel - Einstellungen -> Dauer") say("Wie lange soll ein Spiel maximal dauern?") say("Sobald die Zeit erreicht ist, wird") say("das Team mit den meisten Toren gewinnen.") say_reward("Bitte in Sekunden!") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Dauer") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Dauer") say("Die Spieldauer wurde übernommen.") game.set_event_flag("fb_spieldauer", b) end end ----------------------------------------------
--GM kann hier zum Ball werden; stößt das Spiel an-- when login or letter or levelup with pc.in_dungeon() and pc.get_map_index() == MAPINDEX and pc.is_gm() and game.get_event_flag("fb_active") > 0 begin if game.get_event_flag("fb_active") == 1 or game.get_event_flag("fb_active") == 5 then send_letter("Fußballspiel - Ball werden") elseif game.get_event_flag("fb_active") == 2 then send_letter("Spiel Managen") end end when button or info with pc.in_dungeon() and pc.get_map_index() == MAPINDEX and pc.is_gm() and game.get_event_flag("fb_active") > 0 begin if game.get_event_flag("fb_active") == 1 or game.get_event_flag("fb_active") == 5 then say_title("Ball werden") say("Wenn du zum Ball wirst, geht es los!") if game.get_event_flag("fb_m1") != game.get_event_flag("fb_m2") then say_reward("Achtung! Teams unausgeglichen!") end local a = select("Ball werden!", "Abbrechen") if a == 2 then return end clear_letter() loop_timer("checktimer1", 0.2) game.set_event_flag("fb_begin", get_time()) game.set_event_flag("fb_active", 2) send_letter("Spiel Managen") else clear_letter() setskin(NOWINDOW) end end when button or info with pc.in_dungeon() and pc.get_map_index() == MAPINDEX and pc.is_gm() and game.get_event_flag("fb_active") == 2 begin say_title("Fußballspiel - Einstellungen") say("Hier kannst du nun Einstellungen vornehmen!") local a = select("Spieldauer", "Tore", "Größe", "Belohnungen", "Beenden", "Abbrechen") if a == 6 then return end if a == 5 then say_title("Spiel abbrechen") say("Möchtest du die Runde beenden?") local a2 = select("Beenden!", "Abbrechen") if a2 == 2 then return end d.notice("Das Spiel ist vorbei!") local winner = fussball.get_winner() if winner == 1 then d.notice("Mannschaft A hat gewonnen!") elseif winner == 2 then d.notice("Mannschaft B hat gewonnen!") else d.notice("Es ist ein Unentschieden!") end d.notice("Ihr werdet gleich vom Spielfeld entfernt!") d.notice("Belohnungen erhaltet Ihr dann beim Austreten!") timer("endtimer", 10) end if a == 4 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Was soll ausgegeben werden?") local a2 = select("Yang", "Erfahrung", "Items", "Nichts", "Abbrechen") if a2 == 5 then return end if a2 == 4 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Es wird nun nichts mehr vergeben.") game.set_event_flag("fb_belohnung", 0) end if a2 == 3 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Was soll vergeben werden?") say_reward("Bitte die ID eingeben") local a3 = tonumber(input("")) if a3 <= 0 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Fehlerhafte ID!") return end say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Wie häufig soll das Item vergeben werden?") local a4 = tonumber(input("")) if a4 <= 0 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Fehlerhafte Anzahl!") return end say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Das Item "..a3.." wird nun "..a4.."x vergeben.") say("Korrekt?") local a5 = select("Richtig!", "Falsch!") if a5 == 2 then return end say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Die Änderungen wurden übernommen.") game.set_event_flag("fb_belohnung", 3) game.set_event_flag("fb_item", a3) game.set_event_flag("fb_itemc", a4) end if a2 == 2 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Wie viel Erfahrung soll vergeben werden?") local a3 = input("") if a3 == "LEVELUP" then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Belohnung wurde übernommen.") game.set_event_flag("fb_belohnung", 2) game.set_event_flag("fb_erfahrung", 0) return end if a3 < 0 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Fehlerhafte Anzahl!") return end say("Die Belohnung wurde festgelegt.") game.set_event_flag("fb_belohnung", 2) game.set_event_flag("fb_erfahrung", a3) end if a2 == 1 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Wie viel Yang soll ausgegeben werden?") local a3 = tonumber(input("")) if a3 <= 0 then say_title("Fußballspiel - Einstellungen -> Belohnungen") say("Fehlerhafte Anzahl!") return end say("Die Belohngun wurde festgelegt.") game.set_event_flag("fb_belohnung", 1) game.set_event_flag("fb_yang", a3) end end if a == 3 then say_title("Fußballspiel - Einstellungen -> Größe") say("Wie viele Spieler sollen pro Mannschaft") say("an dem Event teilnehmen können?") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Größe") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Größe") say("Die Größe wurde übernommen.") game.set_event_flag("fb_usercount", b) end if a == 2 then say_title("Fußballspiel - Einstellungen -> Tore") say("Wie viele Tore sollen zum Sieg führen?") say("Sobald die Anzahl erreicht wurde, wird") say("das Event sich selbst beenden.") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Tore") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Tore") say("Die Toranzahl wurde übernommen.") game.set_event_flag("fb_torcount", b) end if a == 1 then say_title("Fußballspiel - Einstellungen -> Dauer") say("Wie lange soll ein Spiel maximal dauern?") say("Sobald die Zeit erreicht ist, wird") say("das Team mit den meisten Toren gewinnen.") say_reward("Bitte in Sekunden!") local b = tonumber(input("12345")) if b <= 0 or b > 999999 then say_title("Fußballspiel - Einstellungen -> Dauer") say("Diese Zahl ist ungültig!") return end say_title("Fußballspiel - Einstellungen -> Dauer") say("Die Spieldauer wurde übernommen.") game.set_event_flag("fb_spieldauer", b) end end when "checktimer1".timer begin if game.get_event_flag("fb_active") == 0 then cleartimer("checktimer1") return end local gametime = game.get_event_flag("fb_spieldauer") if pc.get_local_x() < 100 then d.notice("TOR!") timer("delaytimer", 30) cleartimer("checktimer1") game.set_event_flag("fb_m2tor", game.get_event_flag("fb_m2tor")+1) d.notice(game.get_event_flag("fb_m1tor").." - "..game.get_event_flag("fb_m2tor")) d.notice("Mannschaft B hat ein Tor geschossen!") elseif pc.get_local_x() > 500 then d.notice("TOR!") timer("delaytimer", 30) cleartimer("checktimer1") game.set_event_flag("fb_m1tor", game.get_event_flag("fb_m1tor")+1) d.notice(game.get_event_flag("fb_m1tor").." - "..game.get_event_flag("fb_m2tor")) d.notice("Mannschaft A hat ein Tor geschossen!") end if game.get_event_flag("fb_spieldauer") != 0 then if game.get_event_flag("fb_begin") > get_time()-game.get_event_flag("fb_spieldauer") then d.notice("Die Zeit ist um!") local winner = fussball.get_winner() if winner == 1 then d.notice("Mannschaft A hat gewonnen!") elseif winner == 2 then d.notice("Mannschaft B hat gewonnen!") else d.notice("Es ist ein Unentschieden!") end d.notice("Ihr werdet gleich vom Spielfeld entfernt!") d.notice("Belohnungen erhaltet Ihr dann beim Austreten!") timer("endtimer", 10) end end end when "delaytimer".timer begin if game.get_event_flag("fb_active") == 0 then cleartimer("delaytimer") return end syschat("Das Spiel kann weitergehen!") loop_timer("checktimer1", 0.2) cleartimer("delaytimer") end when "endtimer".timer begin fussball.clear_event() end
--Überprüft auf Bugfreiheit + Austritt-- when "checktimer2".timer begin if pc.is_mount() then pc.unmount() end horse.unsummon() if game.get_event_flag("fb_active") == 0 then if fussball.get_winner() == pc.getqf("fb_mannschaft") then local bid = game.get_event_flag("fb_belohnung") if bid == 3 then pc.give_item(game.get_event_flag("fb_item"), game.get_event_flag("fb_itemc")) elseif bid == 2 then if game.get_event_flag("fb_erfahrung") == 0 then pc.give_exp(pc.get_next_exp()) else pc.give_exp(game.get_event_flag("fb_erfahrung")) end elseif bid == 1 then pc.give_gold(game.get_event_flag("fb_yang")) end end d.exit() pc.warp(MAPX2, MAPY2) end end ----------------------------------------
--Damit können User dem Event beitreten when 20092.chat."Fußballspiel - Beitreten" with game.get_event_flag("fb_active") == 1 begin say_title("Fußballspiel - Beitreten") if game.get_event_flag("fb_trueuser") == game.get_event_flag("fb_usercount")*2 then say("Tut mir Leid, aber die Mannschaften") say("sind voll. Du kannst noch versuchen,") say("abzuwarten, bis vielleicht jemand das") say("Spiel verlässt.") return end say("Du möchtest also dem Fußballspiel beitreten?") say("Du kannst nun hinein!") say("Dir wird automatisch eine Mannschaft zugewiesen!") local a = select("Beitreten", "Abbrechen") if a == 2 then return end say_title("Fußballspiel - Beitreten") say("Super! Dann geht es nun los!") --Hilft, um Bugs zu vermeiden-- if game.get_event_flag("fb_trueuser") == game.get_event_flag("fb_usercount")*2 then say("Tut mir Leid, aber die Mannschaften") say("sind voll. Du kannst noch versuchen,") say("abzuwarten, bis vielleicht jemand das") say("Spiel verlässt.") return end ------------------------------- if game.get_event_flag("fb_m1") > game.get_event_flag("fb_m2") then game.set_event_flag("fb_m2", game.get_event_flag("fb_m2")+1) pc.setqf("fb_mannschaft", 2) else game.set_event_flag("fb_m1", game.get_event_flag("fb_m1")+1) pc.setqf("fb_mannschaft", 1) end game.set_event_flag("fb_trueuser", game.get_event_flag("fb_trueuser")+1) if game.get_event_flag("fb_trueuser") == game.get_event_flag("fb_usercount")*2 then notice_all("Das Fußballevent ist belegt!") notice_all("Der Ball wird jeden Moment überreicht!") game.set_event_flag("fb_active", 5) end d.join(MAPINDEX, MAPX, MAPY) end end end