|
You last visited: Today at 19:39
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
11/12/2015, 13:11
|
#11971
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by .Kibito
Regenbogen (ka ob es so funzt hab lange keine quest mehr geschrieben):
Code:
quest regenbogenstein begin
state start begin
when 50512.use begin
local jobs = {
[0] = {"Körper","Mental",1,2},
[1] = {"Nahkampf","Bogen",3,4},
[2] = {"Magie","Waffen",5,6},
[3] = {"Heil","Drachen",7,8},
}
say_title("Regenbogenstein:")
say("Du möchtest also deine Skills auf")
say("Perfekter-Meister setzen?")
local r = select("Ja","Nein")
if r == 1 then
say("Bitte wähle nun deine Klasse aus:")
local s = select(jobs[pc.get_job()][1],jobs[pc.get_job()][2],"Abbrechen")
if s == 3 then return end
pc.set_skill_group(jobs[pc.get_job()][s+2])
local result = regenbogenstein.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())
local vnum_list = result[1]
for v in pairs(vnum_list) do
pc.set_skill_level(v ,59)
end
say("Deine Skills sind auf Perfekter Meister")
end
end
function BuildGrandMasterSkillList(job, group)
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
table.foreach(skill_list,
function(i, skill_vnum)
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end)
return {ret_vnum_list, ret_name_list}
end
end
end
|
Sind ein paar Fehler drin, habs auch nochmal geschrieben:
Code:
quest regenbogenstein begin
state start begin
when 50512.use begin
local jobs = ({
[0] = {"Körper", "Mental"},
[1] = {"Nahkampf", "Bogen"},
[2] = {"Magie", "Waffen"},
[3] = {"Heil", "Drachen"},
})[pc.get_job()]
table.insert(jobs, "Abbrechen")
say_title("Regenbogenstein:")
say("Du möchtest also deine Skills auf")
say("Perfekter-Meister setzen?")
if select("Ja","Nein") == 2 then return end
local skillGroup = ({1, 2})[select_table(jobs)] or false
if not skillGroup then return end
pc.set_skill_group(skillGroup)
for _,vnum in ipairs(regenbogenstein.BuildSkillList()) do
pc.set_skill_level(vnum, 40)
end
say("Deine Skills sind auf Perfekter Meister")
end
function BuildSkillList()
local skillGroup = pc.get_skill_group()
if skillGroup == 0 then return {} end
local skillVnumList = {}
for _,vnum in ipairs(special.active_skill_list[pc.get_job() + 1][skillGroup]) do
table.insert(skillVnumList, vnum)
end
return skillVnumList
end
end
end
|
|
|
11/12/2015, 13:25
|
#11972
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by .Kibito
Regenbogen (ka ob es so funzt hab lange keine quest mehr geschrieben):
Code:
quest regenbogenstein begin
state start begin
when 50512.use begin
local jobs = {
[0] = {"Körper","Mental",1,2},
[1] = {"Nahkampf","Bogen",3,4},
[2] = {"Magie","Waffen",5,6},
[3] = {"Heil","Drachen",7,8},
}
say_title("Regenbogenstein:")
say("Du möchtest also deine Skills auf")
say("Perfekter-Meister setzen?")
local r = select("Ja","Nein")
if r == 1 then
say("Bitte wähle nun deine Klasse aus:")
local s = select(jobs[pc.get_job()][1],jobs[pc.get_job()][2],"Abbrechen")
if s == 3 then return end
pc.set_skill_group(jobs[pc.get_job()][s+2])
local result = regenbogenstein.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group())
local vnum_list = result[1]
for v in pairs(vnum_list) do
pc.set_skill_level(v ,59)
end
say("Deine Skills sind auf Perfekter Meister")
end
end
function BuildGrandMasterSkillList(job, group)
local skill_list = special.active_skill_list[job+1][group]
local ret_vnum_list = {}
local ret_name_list = {}
table.foreach(skill_list,
function(i, skill_vnum)
table.insert(ret_vnum_list, skill_vnum)
local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
if name == nil then name=skill_vnum end
table.insert(ret_name_list, name)
end)
return {ret_vnum_list, ret_name_list}
end
end
end
|
Regenbogenstein geht jetzt
Nur der Warpring mag noch nicht
|
|
|
11/12/2015, 13:45
|
#11973
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by DasPrinzip.
Regenbogenstein geht jetzt
Nur der Warpring mag noch nicht 
|
Hast du sie auch getestet oder nur compilen lassen? Die von Kibito dürfte nämlich eigentlich nicht funktionieren.
|
|
|
11/12/2015, 14:17
|
#11974
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by Seחsi
Hast du sie auch getestet oder nur compilen lassen? Die von Kibito dürfte nämlich eigentlich nicht funktionieren.
|
Hab Sie grad auch ingame getestet, klappt alles ..
|
|
|
11/12/2015, 14:29
|
#11975
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by DasPrinzip.
Hab Sie grad auch ingame getestet, klappt alles ..
|
Auch bei Schami etc? 
Dürfte aktuell nur bei Körper Krieger funktionieren. Und auch das nicht wirklich gut, weil in seiner Schleife der key als vnum genutzt wird.
|
|
|
11/21/2015, 05:08
|
#11976
|
elite*gold: 50
Join Date: Nov 2015
Posts: 8
Received Thanks: 1
|
Guten Morgen/Nacht Epvp.
Ich habe mich mal selbst bersucht eine Quest zu schreiben.
Jedoch bekomme ich einen Fehler in Putty: "Error occured on compile userpanel.quest"
Hier die Quest
PHP Code:
quest userpanel begin
state start begin
when 40002.use begin
say("Userpanel:")
local head = select("Teleport", "Lager", "Informationscenter", "Abbrechen")
if head == 1 then
say("Teleportpanel")
local on = select (" Normale Maps", "Levelmaps", "Farmmaps", "Runs", "Zurück")
if on == 1 then
local maps = select ("Map1", "Map2", "Orktal", "Wüste", "Zurück")
if maps == 1 then
say("Wähle deine Map1 aus")
local map1 = select ("Rotes Reich", "Gelbes Reich", "Blaues Reich", Zurück")
if map1 == 1 then
pc.warp(474462, 954500)
end
if map1 == 2 then
pc.warp(959913, 269179)
end
if map1 == 3 then
pc.warp(63369, 166149)
end
if map1 == 4 then
return
end
if maps == 2 then
say("Wähle deine Map2 aus")
local map2 = select ("Rotes Reich", "Gelbes Reich", "Blaues Reich", "Zurück")
if map2 == 1 then
pc.warp(352967, 882032)
end
if map2 == 2 then
pc.warp(145310, 240385)
end
if map2 == 3 then
pc.warp(863763, 245995)
end
if map2 == 4 then
return
end
if maps == 3 then
say("Wähle aus!")
local ot = select ("Anfang", "Mitte", "Zurück")
if ot == 1 then
pc.warp(321021, 808291)
end
if ot == 2 then
pc.warp(332909, 746464)
end
if ot == 3 then
return
end
if maps == 4 then
say("Wähle aus!")
local desert = select("Anfang", "Mitte", "Zurück")
if desert == 1 then
pc.warp(343785, 501175)
end
if desert == 2 then
pc.warp(296767, 548004)
end
if desert == 3 then
return
end
if maps == 5 then
return
end
if on == 2 then
say("Wähle aus!")
local levelmaps = select ("Spinnendungeon 2", "Grotte der Verbannung", "Levelmap1", "Levelmap2", "Zurück")
if levelmaps == 1 then
pc.warp(919, 5254)
end
if levelmaps == 2 then
pc.warp(2417, 12204)
end
if levelmaps == 3 then
pc.warp(10240, 16640)
minlevel = 105
maxlevel = 125
end
if levelmaps == 4 then
pc.warp(11264, 15104)
minlevel = 125
maxlevel = 150
end
if levelmaps == 5 then
return
end
if on == 3 then
say("Wähle aus!")
local farmmaps = select ("Farmmap1", "Farmmap2", "Farmmap3", "Farmmap4", "Zurück")
if farmmaps == 1 then
pc.warp(11776, 1664)
minlevel = 195
maxlevel = 104
end
if farmmaps == 2 then
pc.warp(11776,1664)
minlevel = 105
maxlevel = 124
end
if farmmaps == 3 then
pc.warp(11776, 1664)
minlevel = 125
maxlevel = 149
end
if farmmaps == 4 then
pc.warp(11776, 1664)
minlevel = 150
maxlevel = 150
end
if farmmaps == 5 then
return
end
if on == 4 then
say("Wähle aus!")
local runs = select ("Dämonenturm", "Azrael", "Nemere", "Zurück")
if runs == 1 then
pc.warp(5904, 1105)
end
if runs == 2 then
pc.warp(11776, 1664)
minlevel = 125
minlevel = 150
end
if runs == 3 then
pc.warp(11776, 1664)
minlevel = 150
maxlevel = 150
end
if runs == 4 then
return
end
if on == 5 then
return
if head == 2 then
say("Wähle aus!")
local lager = select ("Lager", "Itemshop-Lager", "Zurück")
if lager == 1 then
game.open_safebox()
setskin(NOWINDOW)
end
if lager == 2 then
game.open_mall()
setskin(NOWINDOW)
end
if lager == 3 then
return
end
if head == 3 then
say("Wähle in den Kategorien!")
local info = select ("Events", "Reboots", "Zurück")
if info == 1 then
say("Event 1")
say("Event 2")
say("Event 3")
say("Event 4")
say("Event 5")
end
if info == 2 then
say("Reboot 1")
say("Reboot 2")
say("Reboot 3")
say("Reboot 4")
say("Reboot 5")
end
if info == 3 then
return
end
end
function warp(tbl)
local level = pc.get_level()
if tbl.minlevel and level < tbl.minlevel then
say("Dein Level ist zu niedrig, um diese Map zu betreten.")
say("Minimal Level: "..tbl.minlevel)
select("Abbrechen")
return
elseif tbl.maxlevel and level > tbl.maxlevel then
say("Dein Level ist zu hoch, um diese Map zu betreten.")
say("Maximal Level: "..tbl.maxlevel)
select("Abbrechen")
return
end
while not pc.can_warp() do
say("Du kannst dich noch nicht teleportieren, da du in")
say("den letzten 10 Sekunden gehandelt hast.")
if select("Erneut versuchen", "Abbrechen") == 2 then return end
end
local warpneedstrings = warpring.get_warpneedstrings(tbl)
if table.getn(warpneedstrings) > 0 then
say("Um diese Map zu betreten benötigst du folgende")
say("Dinge:")
for _,v in ipairs(warpneedstrings) do
say(v)
end
say("")
say("Möchtest du trotzdem fortfahren?")
if select("Teleportieren", "Abbrechen") == 2 then return end
end
if not warpring.check_and_remove_warpneeds(tbl) then
say("Dir fehlt mindestens eins der benötigten Dinge.")
select("Abbrechen")
return
end
pc.warp(tbl.koord[1], tbl.koord[2])
end
function get_warpneedstrings(tbl)
local warpneeds = {}
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
table.insert(warpneeds, "- "..v[2].."x "..item_name(v[1]))
end
end
if tbl.goldneed and tbl.goldneed > 0 then
table.insert(warpneeds, "- "..tbl.goldneed.." Yang")
end
return warpneeds
end
function check_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
if pc.count_item(v[1]) < v[2] then
return false
end
end
end
if tbl.goldneed and tbl.goldneed > 0 then
if pc.get_gold() < tbl.goldneed then
return false
end
end
return true
end
function remove_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
pc.remove_item(v[1], v[2])
end
end
if tbl.goldneed and tbl.goldneed > 0 then
pc.change_gold(-tbl.goldneed)
end
end
function check_and_remove_warpneeds(tbl)
if not warpring.check_warpneeds(tbl) then
return false
end
warpring.remove_warpneeds(tbl)
return true
end
function get_warpnames(tbl)
local level = pc.get_level()
local names = {}
for _,v in ipairs(tbl) do
if v.minlevel and level < v.minlevel then
v.name = v.name.." (ab Lv. "..v.minlevel..")"
elseif v.maxlevel and level > v.maxlevel then
v.name = v.name.." (bis Lv. "..v.maxlevel..")"
end
table.insert(names, v.name)
end
return names
end
function showwarps(tbl)
local warpnames = warpring.get_warpnames(tbl)
local s = tbl[select3(warpnames)] or false
if not s then return end
if s.koord then
warpring.warp(s)
return
end
warpring.showwarps(s)
end
end
end
Bitte eine dummen kommentare, war meine erste selbst geschriebene Quest.
|
|
|
11/21/2015, 07:08
|
#11977
|
elite*gold: 0
Join Date: Dec 2012
Posts: 9,395
Received Thanks: 2,738
|
Guten Morgen/Tag/Abend liebe Questkontrolle.
Habe derzeit ein Problem mit ein paar Quest zb. die Starter Quest.
Der User erstellt sich einen Char Logt ein und dann erscheind dies nachdem man die Quest am Anfang geschlossen hat:
GIF:
Die Quest dazu findet ihr nur hier:
PHP Code:
quest starter_quest begin
state start begin
when login begin
local racename = ({"Krieger", "Ninja", "Sura", "Schamane"})[pc.get_job()+1]
local items_all = {
{72723, 1},
{72727, 1},
{27105, 200},
{27112, 200},
{72702, 1},
{50053, 1},
{70007, 1},
{70038, 200}
}
local items_race = ({
["Krieger"] = {
{19, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11209, 1},
{13009, 1},
{12209, 1}
},
["Ninja"] = {
{1009, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11409, 1},
{13009, 1},
{12349, 1}
},
["Sura"] = {
{19, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11609, 1},
{13009, 1},
{12489, 1}
},
["Schamane"] = {
{7009, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11809, 1},
{13009, 1},
{12629, 1}
}
})[racename]
starter_quest.giveAllItems(items_all)
starter_quest.giveAllItems(items_race)
horse.set_level(21)
horse.ride(10)
say_title("Willkommen")
say("Willkommen auf Servername.")
say("Wir hoffen das du gefallen")
say("an unseren Server findest")
say("und wir dich mit einem")
say("guten Support und Unterhaltung")
say("dir Servername präsentieren können.")
say("Das gesamte Servername-Team wünscht")
say("dir Viel Spaß auf Servername")
say("")
say("")
say("")
say("")
say_reward("Du erhielst das Set für "..racename.."!")
set_state("COMPLETE")
end
end
function giveAllItems(tbl)
for _,item in ipairs(tbl) do
pc.give_item2(item[1], item[2])
end
end
state COMPLETE begin
end
end
|
|
|
11/21/2015, 12:49
|
#11978
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by MrTherzon
Guten Morgen/Tag/Abend liebe Questkontrolle.
Habe derzeit ein Problem mit ein paar Quest zb. die Starter Quest.
Der User erstellt sich einen Char Logt ein und dann erscheind dies nachdem man die Quest am Anfang geschlossen hat:
GIF:
Die Quest dazu findet ihr nur hier:
PHP Code:
quest starter_quest begin
state start begin
when login begin
local racename = ({"Krieger", "Ninja", "Sura", "Schamane"})[pc.get_job()+1]
local items_all = {
{72723, 1},
{72727, 1},
{27105, 200},
{27112, 200},
{72702, 1},
{50053, 1},
{70007, 1},
{70038, 200}
}
local items_race = ({
["Krieger"] = {
{19, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11209, 1},
{13009, 1},
{12209, 1}
},
["Ninja"] = {
{1009, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11409, 1},
{13009, 1},
{12349, 1}
},
["Sura"] = {
{19, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11609, 1},
{13009, 1},
{12489, 1}
},
["Schamane"] = {
{7009, 1},
{14009, 1},
{17009, 1},
{16009, 1},
{15009, 1},
{11809, 1},
{13009, 1},
{12629, 1}
}
})[racename]
starter_quest.giveAllItems(items_all)
starter_quest.giveAllItems(items_race)
horse.set_level(21)
horse.ride(10)
say_title("Willkommen")
say("Willkommen auf Servername.")
say("Wir hoffen das du gefallen")
say("an unseren Server findest")
say("und wir dich mit einem")
say("guten Support und Unterhaltung")
say("dir Servername präsentieren können.")
say("Das gesamte Servername-Team wünscht")
say("dir Viel Spaß auf Servername")
say("")
say("")
say("")
say("")
say_reward("Du erhielst das Set für "..racename.."!")
set_state("COMPLETE")
end
end
function giveAllItems(tbl)
for _,item in ipairs(tbl) do
pc.give_item2(item[1], item[2])
end
end
state COMPLETE begin
end
end
|
Das ist ein bekannter Bug bei den kori files, liegt nicht an der quest
Quote:
Originally Posted by .Kyon
Guten Morgen/Nacht Epvp.
Ich habe mich mal selbst bersucht eine Quest zu schreiben.
Jedoch bekomme ich einen Fehler in Putty: "Error occured on compile userpanel.quest"
Hier die Quest
PHP Code:
quest userpanel begin
state start begin
when 40002.use begin
say("Userpanel:")
local head = select("Teleport", "Lager", "Informationscenter", "Abbrechen")
if head == 1 then
say("Teleportpanel")
local on = select (" Normale Maps", "Levelmaps", "Farmmaps", "Runs", "Zurück")
if on == 1 then
local maps = select ("Map1", "Map2", "Orktal", "Wüste", "Zurück")
if maps == 1 then
say("Wähle deine Map1 aus")
local map1 = select ("Rotes Reich", "Gelbes Reich", "Blaues Reich", Zurück")
if map1 == 1 then
pc.warp(474462, 954500)
end
if map1 == 2 then
pc.warp(959913, 269179)
end
if map1 == 3 then
pc.warp(63369, 166149)
end
if map1 == 4 then
return
end
if maps == 2 then
say("Wähle deine Map2 aus")
local map2 = select ("Rotes Reich", "Gelbes Reich", "Blaues Reich", "Zurück")
if map2 == 1 then
pc.warp(352967, 882032)
end
if map2 == 2 then
pc.warp(145310, 240385)
end
if map2 == 3 then
pc.warp(863763, 245995)
end
if map2 == 4 then
return
end
if maps == 3 then
say("Wähle aus!")
local ot = select ("Anfang", "Mitte", "Zurück")
if ot == 1 then
pc.warp(321021, 808291)
end
if ot == 2 then
pc.warp(332909, 746464)
end
if ot == 3 then
return
end
if maps == 4 then
say("Wähle aus!")
local desert = select("Anfang", "Mitte", "Zurück")
if desert == 1 then
pc.warp(343785, 501175)
end
if desert == 2 then
pc.warp(296767, 548004)
end
if desert == 3 then
return
end
if maps == 5 then
return
end
if on == 2 then
say("Wähle aus!")
local levelmaps = select ("Spinnendungeon 2", "Grotte der Verbannung", "Levelmap1", "Levelmap2", "Zurück")
if levelmaps == 1 then
pc.warp(919, 5254)
end
if levelmaps == 2 then
pc.warp(2417, 12204)
end
if levelmaps == 3 then
pc.warp(10240, 16640)
minlevel = 105
maxlevel = 125
end
if levelmaps == 4 then
pc.warp(11264, 15104)
minlevel = 125
maxlevel = 150
end
if levelmaps == 5 then
return
end
if on == 3 then
say("Wähle aus!")
local farmmaps = select ("Farmmap1", "Farmmap2", "Farmmap3", "Farmmap4", "Zurück")
if farmmaps == 1 then
pc.warp(11776, 1664)
minlevel = 195
maxlevel = 104
end
if farmmaps == 2 then
pc.warp(11776,1664)
minlevel = 105
maxlevel = 124
end
if farmmaps == 3 then
pc.warp(11776, 1664)
minlevel = 125
maxlevel = 149
end
if farmmaps == 4 then
pc.warp(11776, 1664)
minlevel = 150
maxlevel = 150
end
if farmmaps == 5 then
return
end
if on == 4 then
say("Wähle aus!")
local runs = select ("Dämonenturm", "Azrael", "Nemere", "Zurück")
if runs == 1 then
pc.warp(5904, 1105)
end
if runs == 2 then
pc.warp(11776, 1664)
minlevel = 125
minlevel = 150
end
if runs == 3 then
pc.warp(11776, 1664)
minlevel = 150
maxlevel = 150
end
if runs == 4 then
return
end
if on == 5 then
return
if head == 2 then
say("Wähle aus!")
local lager = select ("Lager", "Itemshop-Lager", "Zurück")
if lager == 1 then
game.open_safebox()
setskin(NOWINDOW)
end
if lager == 2 then
game.open_mall()
setskin(NOWINDOW)
end
if lager == 3 then
return
end
if head == 3 then
say("Wähle in den Kategorien!")
local info = select ("Events", "Reboots", "Zurück")
if info == 1 then
say("Event 1")
say("Event 2")
say("Event 3")
say("Event 4")
say("Event 5")
end
if info == 2 then
say("Reboot 1")
say("Reboot 2")
say("Reboot 3")
say("Reboot 4")
say("Reboot 5")
end
if info == 3 then
return
end
end
function warp(tbl)
local level = pc.get_level()
if tbl.minlevel and level < tbl.minlevel then
say("Dein Level ist zu niedrig, um diese Map zu betreten.")
say("Minimal Level: "..tbl.minlevel)
select("Abbrechen")
return
elseif tbl.maxlevel and level > tbl.maxlevel then
say("Dein Level ist zu hoch, um diese Map zu betreten.")
say("Maximal Level: "..tbl.maxlevel)
select("Abbrechen")
return
end
while not pc.can_warp() do
say("Du kannst dich noch nicht teleportieren, da du in")
say("den letzten 10 Sekunden gehandelt hast.")
if select("Erneut versuchen", "Abbrechen") == 2 then return end
end
local warpneedstrings = warpring.get_warpneedstrings(tbl)
if table.getn(warpneedstrings) > 0 then
say("Um diese Map zu betreten benötigst du folgende")
say("Dinge:")
for _,v in ipairs(warpneedstrings) do
say(v)
end
say("")
say("Möchtest du trotzdem fortfahren?")
if select("Teleportieren", "Abbrechen") == 2 then return end
end
if not warpring.check_and_remove_warpneeds(tbl) then
say("Dir fehlt mindestens eins der benötigten Dinge.")
select("Abbrechen")
return
end
pc.warp(tbl.koord[1], tbl.koord[2])
end
function get_warpneedstrings(tbl)
local warpneeds = {}
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
table.insert(warpneeds, "- "..v[2].."x "..item_name(v[1]))
end
end
if tbl.goldneed and tbl.goldneed > 0 then
table.insert(warpneeds, "- "..tbl.goldneed.." Yang")
end
return warpneeds
end
function check_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
if pc.count_item(v[1]) < v[2] then
return false
end
end
end
if tbl.goldneed and tbl.goldneed > 0 then
if pc.get_gold() < tbl.goldneed then
return false
end
end
return true
end
function remove_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
pc.remove_item(v[1], v[2])
end
end
if tbl.goldneed and tbl.goldneed > 0 then
pc.change_gold(-tbl.goldneed)
end
end
function check_and_remove_warpneeds(tbl)
if not warpring.check_warpneeds(tbl) then
return false
end
warpring.remove_warpneeds(tbl)
return true
end
function get_warpnames(tbl)
local level = pc.get_level()
local names = {}
for _,v in ipairs(tbl) do
if v.minlevel and level < v.minlevel then
v.name = v.name.." (ab Lv. "..v.minlevel..")"
elseif v.maxlevel and level > v.maxlevel then
v.name = v.name.." (bis Lv. "..v.maxlevel..")"
end
table.insert(names, v.name)
end
return names
end
function showwarps(tbl)
local warpnames = warpring.get_warpnames(tbl)
local s = tbl[select3(warpnames)] or false
if not s then return end
if s.koord then
warpring.warp(s)
return
end
warpring.showwarps(s)
end
end
end
Bitte eine dummen kommentare, war meine erste selbst geschriebene Quest.
|
Wieso hast du sie ganzen Funktionen von meiner warpquest drin gelassen?
|
|
|
11/22/2015, 20:56
|
#11979
|
elite*gold: 0
Join Date: Nov 2015
Posts: 11
Received Thanks: 0
|
Guten tag liebe Questkontrolle
Ich brauche eure Hilfe ich bekomme das nicht auf der kette da ich schon mein index alles geändert habe will er trotzdem nicht mit mir sprechen geschweige den überhaupt einen Ablauf.
PHP Code:
quest blazingpurgatory begin state start begin when 20394.chat."Die Pforten zur Hölle" with pc.get_map_index() == 260 begin say_title("Wächter der Hölle") say("Der Gott aller Dämonen, Sung Mahi, ist erwacht,") say("das Ende der Menschheit naht! Noch ist seine") say("zerstörerische Kraft geschwächt, der Blick") say("seiner allsehenden Augen getrübt. Doch seine") say("Untertanen werden nicht eher ruhen, bis ihr") say("Meister sich in voller Größe gegen diese") say("Welt erheben wird!") say("") wait() say_title("Wächter der Hölle") say("Seinen getreuen Anhänger Razador,") say("Herrscher des Feuers, obliegt die Aufgabe,") say("den legendären Rotdrachen aus seinem Verlies") say("zu befreien, Sollte ihm das gelingen wird") say("es seinem Gott den Weg zur Macht weiter ebnen.") say("") wait() say_title("Wächter der Hölle") if pc.get_level() >= 100 or pc.is_gm() then if party.is_party() or pc.is_gm() then if party.is_leader() or pc.is_gm() then if pc.count_item(30189) > 0 or pc.is_gm() then say_reward("Willst du mit deiner Gruppe Razador herausfordern?") if select("Ja, auf in die Schlacht!","Nein") == 1 then pc.remove_item(30189,1) d.join(260) end else say_reward("Du benötigst einen Höllenstein!") say_item_vnum(30189) end else say_reward("Du musst Anführer einer Gruppe sein!") end else say_reward("Du musst einer Gruppe angehören!") end else say_reward("Du musst lv.100 erreicht haben!") end end
when login with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin say("Begib dich zum Altar und bestehe die") say("sechs Aufgaben der Hölle!") say("") if party.is_party() then if party.is_leader() then blazingpurgatory.start() end else if pc.is_gm() then blazingpurgatory.start() end end end function start() d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt") d.setf("purgatory_gate_sequence",number(1,7)) local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}} for i = 1, 6 do d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt") end d.setf("acutal_round",0) d.setf("time", get_time()+60*60*1) server_timer("purgatorytime",3600,pc.get_map_index()) server_loop_timer("purgatorytimenotice",300,pc.get_map_index()) blazingpurgatory.NoticeTime() end when purgatorytimenotice.server_timer begin if d.select(get_server_timer_arg()) then blazingpurgatory.NoticeTime() end end
when purgatorytime.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Die Zeit ist abgelaufen!") d.exit_all() end end when 20385.click with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 and d.getf("block_altar") == 0 begin if d.getf("purgatory_level") == 7 then d.setf("block_altar",1) d.setf("actual_round",7) d.notice("Ihr habt alle aufgaben der Hölle gemeistert,") d.notice("nun werdet ihr Razador gegenüber treten!") timer("warp_to_boss",5) else d.setf("purgatory_level",d.getf("purgatory_level")+1) blazingpurgatory.purge() blazingpurgatory.LoadStage() d.setf("block_altar",1) blazingpurgatory.NoticeTime() d.notice("Eine Kammer wurde geöffnet!") end end
when warp_to_boss.timer begin d.jump_all(8111,6864) d.notice("Razador") d.notice("Wiederstand ist Zwecklos! Sung Mahi wird wieder auferstehen!") d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_7.txt") blazingpurgatory.NoticeTime() end when kill with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin if d.getf("actual_round") == 1 or d.getf("actual_round") == 3 then d.setf("kill_count_bp1",d.getf("kill_count_bp1") +1) if d.getf("kill_count_bp1") == d.getf("bp_kill_to_next") then d.notice("Kehrt zum Altar zurück!") blazingpurgatory.purge() end elseif d.getf("actual_round") == 2 or d.getf("actual_round") == 5 then d.setf("kill_count_bp",d.getf("kill_count_bp") +1) if d.getf("kill_count_bp") == d.getf("kill_to_drop_key") then game.drop_item_with_ownership(50084,1) d.setf("kill_count_bp",0) end elseif d.getf("actual_round") == 4 and npc.get_race() == 6009 then if number(1,5) == 1 then d.notice("Kehrt zum Altar zurück!") blazingpurgatory.purge() end elseif d.getf("actual_round") == 6 and npc.get_race() == 8034 then d.notice("Kehrt zum Altar zurück!") blazingpurgatory.purge() elseif d.getf("actual_round") == 7 and npc.get_race() == 6091 then d.notice("Razador ist gefallen!") d.clear_regen() d.kill_all() end end
when 20081.take with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin if item.get_vnum() == 50084 then if d.getf("actual_round") == 2 then pc.remove_item(item.get_vnum(),1) if number(1,8) == 1 then npc.purge() d.notice("Kehrt zum Altar zurück!") blazingpurgatory.purge() else syschat("Dies war ein Falscher Schlüsselstein!") end elseif d.getf("actual_round") == 5 then local sequence = {{1,2,3,4,5,5},{4,3,2,1,5,5},{4,5,3,1,2,2},{5,3,4,2,1,1},{5,1,3,4,2,2}} if blazingpurgatory.GetPillarID() == sequence[d.getf("sequence")][d.getf("pillarcount")] then pc.remove_item(item.get_vnum(),1) npc.purge() d.setf("pillarcount", d.getf("pillarcount")+1) if d.getf("pillarcount") == 6 then d.notice("Kehrt zum Altar zurück!") blazingpurgatory.purge() else d.notice("Ihr müsst noch weitere "..6-d.getf("pillarcount").." Siegel öffnen!") end elseif blazingpurgatory.GetPillarID() == false then syschat("Begib dich näher an das Siegel heran!") elseif blazingpurgatory.GetPillarID() != sequence[d.getf("sequence")][d.getf("pillarcount")] then pc.remove_item(item.get_vnum(),1) syschat("Dies ist nicht das richtige Siegel!") end end end end function LoadStage() if d.getf("actual_round") == 1 then -- Alle Monster tötenw d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_1.txt") d.setf("bp_kill_to_next",241) d.setf("kill_count_bp1",0) elseif d.getf("actual_round") == 2 then d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_2.txt") d.setf("kill_to_drop_key",50) d.spawn_mob(20081,195,352) elseif d.getf("actual_round") == 3 then d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_3.txt") d.setf("bp_kill_to_next",240) d.setf("kill_count_bp1",0) elseif d.getf("actual_round") == 4 then d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_4.txt") elseif d.getf("actual_round") == 5 then d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_5.txt") local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}} local n = number(1,5) local coords = {{502,354},{517,354},{487,354},{502,339},{502,369}} for i = 1, 5 do d.spawn_mob(20081, coords[i][1],coords[i][2]) end d.setf("pillarcount", 1) d.setf("sequence",n) d.setf("kill_to_drop_key",100) elseif d.getf("actual_round") == 6 then d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_6.txt") d.spawn_mob(8034,507,489) end end
function purge() d.setf("block_altar",0) d.clear_regen() d.kill_all() blazingpurgatory.LoadGates() d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt") if d.getf("purgatory_level") == 6 then d.setf("purgatory_level",7) end end
function LoadGates() local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}} for i = 1, 6-d.getf("purgatory_level") do d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt") end d.setf("actual_round",sequence[d.getf("purgatory_gate_sequence")][7-d.getf("purgatory_level")]) end function NoticeTime() local secondsLeft = (d.getf("time") - get_time()) local minutesLeft = math.ceil(secondsLeft / 60) d.notice("Verbleibende Zeit: "..minutesLeft.." Minuten!") end
function GetPillarID() if pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then return 1 elseif pc.get_local_x() >= 517 - 5 and pc.get_local_x() <= 517 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then return 2 elseif pc.get_local_x() >= 487 - 5 and pc.get_local_x() <= 487 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then return 3 elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 339 - 5 and pc.get_local_y() <= 339 + 5 then return 4 elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 369 - 5 and pc.get_local_y() <= 369 + 5 then return 5 else return false end end end
|
|
|
11/22/2015, 23:45
|
#11980
|
elite*gold: 0
Join Date: Oct 2015
Posts: 36
Received Thanks: 3
|
Suche eine Regenbogenstein Quest, die aus einem M Skill einen P Skill macht.
Nicht alles soll P sondern nur das was M ist soll auswählbar sein, damit es P wird.
Dann suche ich noch eine PvP Quest, man sollte Bonis bekommen für bestimmte Kills.
- 25 Kills = 1000 TP
- 50 Kills = 10 Halbmenschen
- 75 Kills = 15% Schaden
Diese Quest sollte jedoch nicht angezeigt werden, sie sollte nur beim Erreichen der Kills in den Chat des Spielers posten "Du hast soeben das Achievment Tod für Javura freigeschaltet, du erhälst folgenden Boni : "
|
|
|
11/24/2015, 14:08
|
#11981
|
elite*gold: 0
Join Date: May 2012
Posts: 300
Received Thanks: 34
|
Ja meine lieben Lua experten
ich bin selber ein ziemlicher noob im punkto lua und hab hier eine kleine quest
beim einfügen von der quest kommt dieser fehler
QUEST : questquest
questquest.quest:1:quest doesn't have begin-end clause. (-)
Error occured on compile questquest.quest
nu frage ich mich was das soll D:
bitte nicht einfach verbessern sondern den fehler sagen 
und dann wie ich den verbessere muss es ja lernen.
hier die quest
Code:
quest questquest begin
state start begin
when login or levelup with pc.level >= 1 begin
set_state(information)
end
end
state information begin
when 20355.chat."Test" begin
say_title("Test")
say("")
say("")
say("")
say_reward("Töte Wildhunde!")
say_reward("")
say_reward("jo belohnung klar ne")
say_reward("")
say_reward("")
say("")
pc.setqf("state", 50)
q.set_counter("Wildhund", 50)
end
when kill with npc.get_race() == 101 begin
local count = pc.getqf("state") - 50
if count <= 50 then
pc.setqf("state", count)
q.set_counter("Wildhund", count)
end
if count == 0 then
say_title("Test")
say("")
say("")
say("")
say("")
say_reward("da nimm das")
pc.give_item2("19", 1)
pc.get_money(2000000)
clear_letter()
set_state(__COMPLETE__)
end
end
end
end
end
state __COMPLETE__ begin
end
end
|
|
|
11/24/2015, 15:10
|
#11982
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by abcdosentee
Ja meine lieben Lua experten
ich bin selber ein ziemlicher noob im punkto lua und hab hier eine kleine quest
beim einfügen von der quest kommt dieser fehler
QUEST : questquest
questquest.quest:1:quest doesn't have begin-end clause. (-)
Error occured on compile questquest.quest
nu frage ich mich was das soll D:
bitte nicht einfach verbessern sondern den fehler sagen 
und dann wie ich den verbessere muss es ja lernen.
hier die quest
Code:
quest questquest begin
state start begin
when login or levelup with pc.level >= 1 begin
set_state(information)
end
end
state information begin
when 20355.chat."Test" begin
say_title("Test")
say("")
say("")
say("")
say_reward("Töte Wildhunde!")
say_reward("")
say_reward("jo belohnung klar ne")
say_reward("")
say_reward("")
say("")
pc.setqf("state", 50)
q.set_counter("Wildhund", 50)
end
when kill with npc.get_race() == 101 begin
local count = pc.getqf("state") - 50
if count <= 50 then
pc.setqf("state", count)
q.set_counter("Wildhund", count)
end
if count == 0 then
say_title("Test")
say("")
say("")
say("")
say("")
say_reward("da nimm das")
pc.give_item2("19", 1)
pc.get_money(2000000)
clear_letter()
set_state(__COMPLETE__)
end
end
end
end
end
state __COMPLETE__ begin
end
end
|
Ich glaube da sind 2 "end" zu viel
|
|
|
11/24/2015, 16:39
|
#11983
|
elite*gold: 0
Join Date: May 2012
Posts: 300
Received Thanks: 34
|
Quote:
Originally Posted by DasPrinzip.
Ich glaube da sind 2 "end" zu viel
|
Danke für die anwort weißt du den auch wo genau?
|
|
|
11/24/2015, 17:06
|
#11984
|
elite*gold: 727
Join Date: Feb 2012
Posts: 1,206
Received Thanks: 303
|
Quote:
Originally Posted by abcdosentee
Danke für die anwort weißt du den auch wo genau?
|
Ich denke die 2 vor dem "state __COMPLETE__ begin"
|
|
|
11/24/2015, 17:08
|
#11985
|
elite*gold: 537
Join Date: Mar 2015
Posts: 1,041
Received Thanks: 126
|
Hallo!
Habe den folgenden quest
Code:
quest test_quest begin
state start begin
when login with pc.getqf("dialog_erou")==1 begin
end
when 31260.use with pc.getqf("dialog_erou")==0 begin
say_title("TEXT")
say("TEXT") --// Pui tu aici textul tau ;)
say("TEXT")
say("TEXT")
say("TEXT")
local alege = select("TEXT", "TEXT")
if alege == 2 then
return
elseif alege == 1 then
say_title("TEXT")
local hero_name = input()
if string.len(hero_name) < 4 then
say_title("TEXT")
say("TEXT")
say("TEXT")
return
elseif string.len(hero_name) > 12 then
say_title("TEXT")
say("TEXT")
say("TEXT")
return
end
when 31260.use with pc.getqf("dialog_erou")==1 begin
say_title("TEXT")
say("TEXT")
return
end
end
Fehler: qc in malloc()
|
|
|
All times are GMT +1. The time now is 19:39.
|
|