Vorwort
Guten Abend,
ich habe vor ein paar Tagen eine Quest zu Übungszwecken geschrieben, allerdings mit dem Hintergedanken:
"Was würde ich mir als Spieler wünschen?"
Als Ergebnis habe ich eine Warpring-Quest mit einem Personal-Warp-System (PWS) geschrieben und ja, ich habe sie schon einmal in dem "kleinere Releases"-Beitrag gepostet, dort allerdings mangelhaft erklärt, was ich nun nachholen möchte.
Ich fordere alle auf, diesen Beitrag nicht zu liken, der andere ist einfach nur schon zu verhunzt, da fang ich lieber noch einmal von vorne an :>
Ich habe außerdem den anderen Beitrag gelöscht, falls trotzdem jemand meint, ich bin hier auf Likes aus ^^.
ich habe vor ein paar Tagen eine Quest zu Übungszwecken geschrieben, allerdings mit dem Hintergedanken:
"Was würde ich mir als Spieler wünschen?"
Als Ergebnis habe ich eine Warpring-Quest mit einem Personal-Warp-System (PWS) geschrieben und ja, ich habe sie schon einmal in dem "kleinere Releases"-Beitrag gepostet, dort allerdings mangelhaft erklärt, was ich nun nachholen möchte.
Ich fordere alle auf, diesen Beitrag nicht zu liken, der andere ist einfach nur schon zu verhunzt, da fang ich lieber noch einmal von vorne an :>
Ich habe außerdem den anderen Beitrag gelöscht, falls trotzdem jemand meint, ich bin hier auf Likes aus ^^.
------------------------------------------------------------------------------------------------------
Was ist das "PWS", wie funktioniert es?
Kommen wir zurück zum Thema, was stellte ich mir unter einem PWS vor?
Ganz einfach, jeder User kann sich damit, neben den Standartwarps, seine eigenen Warp-Punkte setzen und jederzeit dorthin reisen.
Falls ihr, als Owner, nicht wollt, das jeder User sich 100te Warps setzen kann, gibt es in der Quest einen Einstellungsbereich, der wie folgt aussieht:
Ihr könnt hier einstellen:
-Wie viele Warps jedem einzelnen Spieler maximal zustehen, ein bisschen laufen sollte schon noch zum Spiel gehören, ich fand 3 Warp-Punkte angemessen, da man sie später auch löschen kann, um Platz für Neue zu schaffen
-Wie viele Warps pro Map ein Spieler maximal haben darf, je nachdem, ob ihr Farmen unterstützen wollt oder nicht, meiner Meinung nach könnten 30 erlaubte Warps pro Farmmap durchaus auch zu Problemen führen.
-Auf welchen Map-Indexen das Erstellen von neuen Warp-Punkten nicht möglich ist, standartmässig ist die OX-Map, die Reichsschlacht-Map und ähnliche verboten.
-Ob GM's von den EInstellungen betroffen sein sollen oder nicht, bei "false" kann ein GM unabhängig von den obrigen Einstellungen auf beliebigen Maps, beliebeig viele Warp-Punkte erstellen, was das PWS auch zu einem möglichen, "ultimativen" Warpring macht.
Ganz einfach, jeder User kann sich damit, neben den Standartwarps, seine eigenen Warp-Punkte setzen und jederzeit dorthin reisen.
Falls ihr, als Owner, nicht wollt, das jeder User sich 100te Warps setzen kann, gibt es in der Quest einen Einstellungsbereich, der wie folgt aussieht:
PHP Code:
insg, promap, notallowed, gmtoo, warp, tab, reasons, reasonssay, pwarptab, pwarpshowtab, m_count, delsel, index, x, y, emp =
3, -- insg: Anzahl der maximalen Personalwarps
2, -- promap: Anzahl der maximalen Personalwarps pro Map
{64,69,70,71,81,112,113}, -- notallowed: Auf welchen Mapindexen man keine Personalwarps setzen darf
false, -- gmtoo: Ob GMs auch von den Einst. betroffen sind -> False = uneingeschränkte Anzahl Personalwarps
-Wie viele Warps jedem einzelnen Spieler maximal zustehen, ein bisschen laufen sollte schon noch zum Spiel gehören, ich fand 3 Warp-Punkte angemessen, da man sie später auch löschen kann, um Platz für Neue zu schaffen
-Wie viele Warps pro Map ein Spieler maximal haben darf, je nachdem, ob ihr Farmen unterstützen wollt oder nicht, meiner Meinung nach könnten 30 erlaubte Warps pro Farmmap durchaus auch zu Problemen führen.
-Auf welchen Map-Indexen das Erstellen von neuen Warp-Punkten nicht möglich ist, standartmässig ist die OX-Map, die Reichsschlacht-Map und ähnliche verboten.
-Ob GM's von den EInstellungen betroffen sein sollen oder nicht, bei "false" kann ein GM unabhängig von den obrigen Einstellungen auf beliebigen Maps, beliebeig viele Warp-Punkte erstellen, was das PWS auch zu einem möglichen, "ultimativen" Warpring macht.
------------------------------------------------------------------------------------------------------
Funktionen der Quest
Die Quest ist auf den normalen Warpring (70007) gelegt und bietet unter Anderem auch die Standartfunktionen:
-Map 1+2
-Standartwarp (Orktal etc.)
Daneben steht aber auch das PWS zur Verfügung, nach dem Auswählen, werden alle persönlichen Warps aufgelistet und darunter die zwei Buttons "Warp adden" und "Warp entfernen".
Warp adden:
-Man wird nun aufgefordert einen Namen für den Warp einzutragen, dieser wird dann in der persönlichen Warpliste angezeigt, außerdem wird der Warp auf den Koordinaten aufgestellt, auf dennen sich momentan der Charakter befindet.
Warp entfernen:
-Es werden alle Warps aufgelistet und durch einen schnellen Klick wird der Warp entfernt, danach steht direkt wieder die Liste zum Löschen zur Auswahl (bis man auf "Abbrechen" klickt)
-Map 1+2
-Standartwarp (Orktal etc.)
Daneben steht aber auch das PWS zur Verfügung, nach dem Auswählen, werden alle persönlichen Warps aufgelistet und darunter die zwei Buttons "Warp adden" und "Warp entfernen".
Warp adden:
-Man wird nun aufgefordert einen Namen für den Warp einzutragen, dieser wird dann in der persönlichen Warpliste angezeigt, außerdem wird der Warp auf den Koordinaten aufgestellt, auf dennen sich momentan der Charakter befindet.
Warp entfernen:
-Es werden alle Warps aufgelistet und durch einen schnellen Klick wird der Warp entfernt, danach steht direkt wieder die Liste zum Löschen zur Auswahl (bis man auf "Abbrechen" klickt)
------------------------------------------------------------------------------------------------------
Was wird benötigt?
Benötigt werden folgende Funktionen vom lieben Mijago, ihr werdet sie alle hier auf Epvp problemlos finden (ihr solltet sie eigendlich sowieso längst schon haben >.>), die da wären:
PHP Code:
split
select3
pc.setqfn
pc.getqfn
------------------------------------------------------------------------------------------------------
Einfügen weiterer "Standartwarps"
Ein Standartwarp sieht in der Quest wie folgt aus:
Kopiert euch solch einen Abschnitt, fügt ihn ein, wo ihr ihn in der Liste stehen haben wollt.
Den Namen einfach ersetzen und die zahl hinter dem namen ist die Zahl, ab welchem level der Warp mit in der Liste stehen soll, die zwei zahlen in den geschweiften Klammern durch die Koordinaten ersetzen (mit den "zwei 0ern" am Ende).
Achtet besonders darauf, keine gesetzten Klammern oder Kommata zu entfernen.
PHP Code:
{ -- 6
{{ 60000, 496000 }},
{ "Spinnendungeon", 36},
},
Den Namen einfach ersetzen und die zahl hinter dem namen ist die Zahl, ab welchem level der Warp mit in der Liste stehen soll, die zwei zahlen in den geschweiften Klammern durch die Koordinaten ersetzen (mit den "zwei 0ern" am Ende).
Achtet besonders darauf, keine gesetzten Klammern oder Kommata zu entfernen.
------------------------------------------------------------------------------------------------------
Die Quest
PHP Code:
quest personalwarps begin
state start begin
when login begin
tabinsert = {}
pc.setqfn("pwarptabf", tabinsert)
set_state( use )
end
end
state use begin
when 70007.use begin
insg, promap, notallowed, gmtoo, warp, tab, reasons, reasonssay, pwarptab, pwarpshowtab, m_count, delsel, index, x, y, emp =
3, -- insg: Anzahl der maximalen Personalwarps
2, -- promap: Anzahl der maximalen Personalwarps pro Map
{64,69,70,71,81,112,113}, -- notallowed: Auf welchen Mapindexen man keine Personalwarps setzen darf
false, -- gmtoo: Ob GMs auch von den Einst. betroffen sind -> False = uneingeschränkte Anzahl Personalwarps
-----------------------------------------------------------------------
-- Ab hier nurnoch Warps eintragen, ansonsten möglichst nichts ändern--
-----------------------------------------------------------------------
{
{
{ -- 1
{{ 474300, 954800 }},
{ "Map 1 Rot", 1},
},
{ -- 2
{{353100, 882900}},
{ "Map 2 Rot", 1},
},
{ -- 31
{{63800, 166400}},
{ "Map 1 Gelb", 1},
},
{ -- 4
{{145500, 240000}},
{ "Map 2 Gelb", 1},
},
{ -- 5
{{959900, 269200}},
{ "Map 1 Blau", 1},
},
{ -- 6
{{863900, 246000}},
{ "Map 2 Blau", 1},
},
},
{
{ -- 1
{{ 402100, 673900 }, { 270400, 739900 }, { 321300, 808000 }},
{ "Tal von Seungryong", 1},
},
{ -- 2
{{ 217800, 627200 }, { 221900, 502700 }, { 344000, 502500 }},
{ "Yongbi-Wüste", 1},
},
{ -- 3
{{ 434200, 290600 }, { 375200, 174900 }, { 491800, 173600 }},
{ "Berg Sohan", 1},
},
{ -- 4
{{ 599400, 757300 }, { 597300, 621800 }, { 730700, 689800 }},
{ "Feuerland", 1},
},
{ -- 5
{{ 590500, 110500 }},
{ "Dämonenturm", 30},
},
{ -- 6
{{ 60000, 496000 }},
{ "Spinnendungeon", 36},
},
{ -- 7
{{ 665600, 435200 }},
{ "Spinnendungeon 2", 45},
},
{ -- 8
{{ 290400, 5700 }},
{ "Geisterwald", 53},
},
{ -- 9
{{ 1119900, 70800 }},
{ "Roter Wald", 62},
},
{ -- 10
{{ 0, 1203200 }},
{ "Grotte der Verbannung", 73},
},
{ -- 11
{{ 241300, 1275400 }},
{ "Grotte der Verbannung 2", 78},
},
{ -- 12
{{ 171900, 1221300 }},
{ "Kammer des Wasserdrachen", 81},
},
},
}, {},
{"Maximale Anzahl P-Warps erreicht", "Die Map ist ein Dungeon", "Anzahl Warps/Map erreicht", "Verbotene Map"}, {},
pc.getqfn("pwarptabf"), {}, 0, 0, pc.get_map_index(), pc.get_x() * 100, pc.get_y() * 100, pc.get_empire()
say_size(350, 220)
say_title("Wohin soll's gehen?")
selmain = select("Map 1 + 2", "Standardwarps", "Personalwarps", "Abbruch")
if selmain == 4 then return end
if selmain != 3 then
table.foreach(warp[selmain],
function(i,p)
if pc.get_level() >= warp[selmain][i][2][2] then
table.insert(tab, warp[selmain][i][2][1])
end
end
)
seltab = select3(tab)
if table.getn(warp[selmain][seltab][1]) == 1 then emp = 1 end
pc.warp(warp[selmain][seltab][1][emp][1], warp[selmain][seltab][1][emp][2])
end
table.foreach(pwarptab,
function(i,p)
table.insert(pwarpshowtab, pwarptab[i][1])
if pwarptab[i][2] == index then m_count = m_count + 1 end
end
)
table.insert(pwarpshowtab, "Warp adden") table.insert(pwarpshowtab, "Warp löschen")
say_title("Was nun?")
local sel = select3(pwarpshowtab)
if sel == table.getn(pwarptab) + 1 then
if pc.is_gm() and gmtoo == false then
else
if table.getn(pwarptab) >= insg then table.insert(reasonssay, reasons[1]) end
if pc.in_dungeon() then table.insert(reasonssay, reasons[2]) end
if m_count >= promap then table.insert(reasonssay, reasons[3]) end
table.foreach(notallowed,
function(i,p)
if index == notallowed[i] then table.insert(reasonssay, reasons[4]) end
end
)
if table.getn(reasonssay) >= 1 then
say_title("Adden nicht möglich")
say("")
say("Das Adden ist auf folgenden Gründen nicht möglich:")
table.foreach(reasonssay,
function(i,p)
say("-"..reasonssay[i].."")
end
)
return
end
end
say_title("Adden eines Warpes:")
say("")
say("Wie soll der neue Warp heißen?")
say("Der P-Warp wird automatisch auf deinen")
say("aktuellen Koordinaten erstellt.")
say("")
pwname = input()
if pwname == '' or nil then return end
local newgetn = table.getn(pwarptab) + 1
table.insert(pwarptab, {}) table.insert(pwarptab[newgetn], pwname) table.insert(pwarptab[newgetn], index) table.insert(pwarptab[newgetn], x) table.insert(pwarptab[newgetn], y)
pc.setqfn("pwarptabf", pwarptab)
notice("Neuen Warp ("..pwname..") erfolgreich hinzugefügt")
elseif sel == table.getn(pwarptab) + 2 then
table.remove(pwarpshowtab, table.getn(pwarpshowtab)) table.remove(pwarpshowtab, table.getn(pwarpshowtab))
while delsel != -1 do
if table.getn(pwarpshowtab) <= 0 then
say_title("Entfernen nicht möglich:")
say("")
say("Es existieren derzeit keine Warps,")
say("die entfernt werden könnten.")
say("")
delsel = -1
else
say_title("Welcher P-Warp wird gelöscht?")
delsel = select3(pwarpshowtab)
if delsel != -1 then
table.remove(pwarptab, delsel)
table.remove(pwarpshowtab, delsel)
end
end
end
pc.setqfn("pwarptabf", pwarptab)
notice("Warp/s erfolgreich gelöscht")
else
pc.warp(pwarptab[sel][3], pwarptab[sel][4])
end
end
end
end
------------------------------------------------------------------------------------------------------
Ich hoffe ich konnte es verständlich erklären, wenn ihr Fragen zu der Quest habt, fragt :)