ich habe ein wenig rum probiert und diese Statistik quest entworfen:
Code:
quest kill begin
state start begin
when login begin
pc.setqf("pvm_kills", 0)
pc.setqf("Metin_kills", 0)
send_letter("Monster Statistik")
end
when kill begin
if npc.get_race() then
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
if npc.get_race() == 8001 or 8002 or 8003 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
end
end
end
when info or button begin
say_title("Statistik ab Login:")
say("Getötet Monster:")
say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
say_reward("Du hast bis jetzt "..pc.getqf("Metin_kills").." Metins zerstört.")
end
end
end
Die Quest soll folgendes machen:
Aufzählen wie viele Monster man getötet hat (funktioniert auch soweit)
und aufzählen wie viele Metins man zerstört hat. Das funktioniert irgendwie nicht. Manchmal wenn man einen Metin zerstört fügt er direkt 25 anstatt einen hinzu. Außerdem wäre schön wenn die Statistik irgendwie gespeichert wird und nicht wieder alles löscht wenn man aus logt ?
quest kill begin state start begin when login begin pc.setqf("pvm_kills", 0) pc.setqf("Metin_kills", 0) send_letter("Monster Statistik") end when kill begin if npc.get_race() then pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1) else npc.get_race() == 8001 or 8002 or 8003 then pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1) end end end when info or button begin say_title("Statistik ab Login:") say("Getötet Monster:") say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.") say_reward("Du hast bis jetzt "..pc.getqf("Metin_kills").." Metins zerstört.") end end end
Habe extra noch eine neue geschrieben, falls die von oben nicht geht.
PHP Code:
quest statistik begin state start begin when letter begin send_letter("Killstatistik") end when button or info begin say_title("Killstatistik") say("") say("Monster: "..(pc.getqf("Monster_Kills") or 0)) say("Metins: "..(pc.getquf("Metin_Kills") or 0)) say("") select("Ok") setskin(NOWINDOW) send_letter("Killstatistik") end when kill begin if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 then pc.setqf("Metin_Kills", pc.getqf("Metin_Kills")+1) else pc.setqf("Monster_Kills", pc.getqf("Monster_Kills")+1) end end end end
Fehler1:
Du hast bei einem Metin kill auch die Pvm-Kills hochgesetzt (wolltest du das?)
Fehler2:
Du kannst folgende Abfrage nicht machen:
Code:
if npc.get_race() == 8001 or 8002 or 8003 then
stattdessen müsstest du folgendes machen:
Code:
if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 then
Ich habe stattdessen die in_list() Funktion eingesetzt. Die findest du hier:
Das nächste mal bitte in diesem Thread posten:
Code:
quest kill begin
state start begin
when login begin
pc.setqf("pvm_kills", 0)
pc.setqf("metin_kills", 0)
send_letter("Monster Statistik")
end
when info or button begin
say_title("Statistik ab Login:")
say("Getötet Monster:")
say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
end
when kill with not npc.is_pc() begin
if in_list(npc.get_race(), {8001, 8002, 8003}) then
pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
return
end
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
end
end
end
leider sagt er bei deinem Script immer: Calls undeclared function!: in_list
Ich habe meinen Code noch ein wenig bearbeitet und das mit den Metins auch gelöst. (Zwar nicht so schön wie euers - aber es geht )
Code:
quest kill begin
state start begin
when login begin
pc.setqf("pvm_kills", 0)
pc.setqf("Metin_kills", 0)
send_letter("Monster Statistik")
end
when kill begin
if npc.get_race() then
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
if npc.get_race() == 8001 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8002 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8003 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8004 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8005 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8006 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8007 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8008 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8009 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8010 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8011 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8012 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8013 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8014 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8024 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8025 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8026 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8027 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
end
end
end
when info or button begin
say_title("Getötet Monster und zerstörte Metin Steine:")
say(" ")
say("Statistik ab Login:")
say_reward("Monster getötet: "..pc.getqf("pvm_kills").."")
say_reward("Metins zerstört: "..pc.getqf("Metin_kills").."")
end
end
end
Könnt ihr mir nur noch helfen wie ich es schaffe das er die Werte speichert ? So das sie auch noch nach einem Relog noch angezeigt werden ?
quest kill begin
state start begin
when login begin
pc.setqf("pvm_kills", 0)
pc.setqf("Metin_kills", 0)
send_letter("Monster Statistik")
end
when kill begin
if npc.get_race() then
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
if npc.get_race() == 8001 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8002 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8003 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8004 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8005 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8006 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8007 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8008 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8009 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8010 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8011 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8012 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8013 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8014 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8024 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8025 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8026 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
elseif npc.get_race() == 8027 then
pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
end
end
end
when info or button begin
say_title("Getötet Monster und zerstörte Metin Steine:")
say(" ")
say("Statistik ab Login:")
say_reward("Monster getötet: "..pc.getqf("pvm_kills").."")
say_reward("Metins zerstört: "..pc.getqf("Metin_kills").."")
end
end
end
Könnt ihr mir nur noch helfen wie ich es schaffe das er die Werte speichert ? So das sie auch noch nach einem Relog noch angezeigt werden ?
Wäre euch echt dankbar!
Gruß
Geneesys
Code:
quest kill begin
state start begin
when login begin
send_letter("Monster Statistik")
end
when info or button begin
say_title("Statistik:")
say("Getötet Monster und zerstörte Metin Steine")
say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
end
when kill with not npc.is_pc() begin
if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
return
end
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
end
end
end
die Questfunktion "in_list" findest du in dem Thread den ich oben verlinkt habe.
Nein, die in_list Funktion ist einfach zur Verkürzung der Abfrage ... :
ohne in_list:
Code:
if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 or npc.get_race() == 8004 then
mit in_list:
Code:
if in_list(npc.get_race(), {8001, 8002, 8003, 8004}) then
Zum Einbauen:
im Questordner ist eine Datei namens "questlib.lua", die musst du einmal runterziehen und ganz unten den Code von der in_list Funktion einfügen.
Dann gibt es im Questordner eine Datei names "quest_functions", die musst du auch einmal runterziehen und egal wo (Hauptsache in einer eigenen Zeile) schreibst du "in_list" rein.
Dann beides wieder hochladen und die Quest neu kompilieren
edit:
Quote:
Originally Posted by geneesys
EDIT;
Okey ich "war" dumm Wenn ich den Wert jedes mal beim Login auf 0 setzte kann er das auch nicht behalten D:
Vielen Dank
Das habe ich ja auch oben schon geschrieben ...
Ich hoffe die benutzt jetzt nicht deine Quest mit den tausenden Abfragen ...
Wenn ich nun noch eine Statistik einfügen möchte von aufgehobenen Gegenstände:
Wie genau stelle ich das an ?
Soweit meine Theorie o.o (nicht lachen)
Code:
quest kill begin
state start begin
when login begin
send_letter("Statistik")
end
when info or button begin
say_title("Getötet Monster und zerstörte Metin Steine:")
say(" ")
say(pc.get_name().." hat bereits folgendes erreicht:")
say(" ")
say_reward("Monster getötet: "..pc.getqf("pvm_kills").."")
say_reward("Metins zerstört: "..pc.getqf("metin_kills").."")
say_reward("Truhen gesammelt: "..pc.getqf("truhen_pick").."")
end
when kill with not npc.is_pc() begin
if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
return
end
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
end
when 50125.pick begin
pc.setqf("truhen_pick", pc.getqf("truhen_pick")+1)
end
end
end
quest kill begin
state start begin
when login begin
send_letter("Monster Statistik")
end
when info or button begin
say_title("Statistik:")
say("Getötet Monster und zerstörte Metin Steine")
say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
end
when kill with not npc.is_pc() begin
if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
return
end
pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
end
end
end
die Questfunktion "in_list" findest du in dem Thread den ich oben verlinkt habe.
Code:
local r = npc.get_race()
if r >= 8001 and r <= 8027 then
-- .....
end