|
You last visited: Today at 22:14
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
05/19/2015, 22:33
|
#11566
|
elite*gold: 0
Join Date: May 2015
Posts: 100
Received Thanks: 13
|
Quote:
Originally Posted by DYSKaito
hab mir zwar nicht alles durchgelesen aber regel es per db am besten.
|
und wie regelt man sowas per db? Einzige andere Möglichkeit, die mir bekannt ist, wäre die mob_drop_item?
Lasse mich gern eines besseren belehren
|
|
|
05/22/2015, 16:32
|
#11567
|
elite*gold: 0
Join Date: Apr 2015
Posts: 31
Received Thanks: 3
|
deleted
|
|
|
05/22/2015, 18:24
|
#11568
|
elite*gold: 0
Join Date: Feb 2015
Posts: 382
Received Thanks: 44
|
Heyjo habe momentan folgende Quest:
Code:
quest steinupp begin
state start begin
when 20364.take begin
local itemvnum = item.get_vnum()
local resultvnum = itemvnum+100
local uppchance = 25
if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then
return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...")
end
say("Möchtest du "..item_name(itemvnum).." wirklich zu")
say(item_name(resultvnum).." verbessern?")
say("")
say("Der Versuch kann fehlschlagen!")
if select("Fortfahren", "Abbrechen") == 2 then return end
pc.remove_item(itemvnum)
if steinupp.perc_chance(uppchance) then
pc.give_item2(resultvnum)
chat("Die Verbesserung war erfolgreich!")
else
chat("Dein Stein wurde bei der Verbesserung zerstört ...")
end
end
function in_list(compare, list)
for _,v in pairs(list) do
if compare == v then return true end
end
return false
end
function perc_chance(i)
return math.random() <= (i/100)
end
end
end
Die sieht InGame so aus:
ich möchte aber, dass dort statt nur Schrift auch das Icon des Items auftaucht wie hier beim Mülleimer:
Kann mir das jm in die Quest einfügen?
|
|
|
05/22/2015, 19:02
|
#11569
|
elite*gold: 0
Join Date: Apr 2015
Posts: 31
Received Thanks: 3
|
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..item_name(itemvnum).." wirklich zu") say(item_name(resultvnum).." verbessern?") say_item_vnum(28312) say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
Probier mal so
|
|
|
05/22/2015, 19:26
|
#11570
|
elite*gold: 0
Join Date: Feb 2015
Posts: 382
Received Thanks: 44
|
was is daran jetzt anders?^^
|
|
|
05/22/2015, 20:02
|
#11571
|
elite*gold: 0
Join Date: Apr 2015
Posts: 234
Received Thanks: 54
|
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..item_name(itemvnum).." wirklich zu") say(item_name(resultvnum).." verbessern?") say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
So funktioniert es hab es bei mir getestet
|
|
|
05/22/2015, 20:25
|
#11572
|
elite*gold: 0
Join Date: Feb 2015
Posts: 382
Received Thanks: 44
|
Quote:
Originally Posted by #.TwoFace.#
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..item_name(itemvnum).." wirklich zu") say(item_name(resultvnum).." verbessern?") say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
So funktioniert es hab es bei mir getestet
|
Es funktioniert bei mir auch, was ich will ist dass die Icons der beiden Items also des zu Uppenden und das was Rauskommt in der Quest angezeigt wird
|
|
|
05/22/2015, 20:25
|
#11573
|
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
|
Quote:
Originally Posted by Bullrihgter1
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..item_name(itemvnum).." wirklich zu") say(item_name(resultvnum).." verbessern?") say_item_vnum(28312) say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
Probier mal so
|
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..say_item_vnum(itemvnum).." wirklich zu") say(say_item_vnum(resultvnum).." verbessern?") say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
falsche stelle eingesetzt, so gehts.
|
|
|
05/22/2015, 20:27
|
#11574
|
elite*gold: 0
Join Date: Feb 2015
Posts: 382
Received Thanks: 44
|
Quote:
Originally Posted by DYSKaito
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..say_item_vnum(itemvnum).." wirklich zu") say(say_item_vnum(resultvnum).." verbessern?") say("") say("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
falsche stelle eingesetzt, so gehts.
|
So hab ichs auch schon probiert, das kommt dabei raus ..
|
|
|
05/22/2015, 20:31
|
#11575
|
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
|
Quote:
Originally Posted by Backxtar
So hab ichs auch schon probiert, das kommt dabei raus ..
|
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..say_item_vnum(itemvnum).." wirklich zu") wait() say(say_item_vnum(resultvnum).." verbessern?") wait() say_reward("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
probiers so, vielleicht buggen zwei say_item_vnum's
|
|
|
05/22/2015, 21:26
|
#11576
|
elite*gold: 0
Join Date: Feb 2015
Posts: 382
Received Thanks: 44
|
Quote:
Originally Posted by DYSKaito
PHP Code:
quest steinupp begin state start begin when 20364.take begin local itemvnum = item.get_vnum() local resultvnum = itemvnum+100 local uppchance = 25 if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...") end say("Möchtest du "..say_item_vnum(itemvnum).." wirklich zu") wait() say(say_item_vnum(resultvnum).." verbessern?") wait() say_reward("Der Versuch kann fehlschlagen!") if select("Fortfahren", "Abbrechen") == 2 then return end pc.remove_item(itemvnum) if steinupp.perc_chance(uppchance) then pc.give_item2(resultvnum) chat("Die Verbesserung war erfolgreich!") else chat("Dein Stein wurde bei der Verbesserung zerstört ...") end end function in_list(compare, list) for _,v in pairs(list) do if compare == v then return true end end return false end function perc_chance(i) return math.random() <= (i/100) end end end
probiers so, vielleicht buggen zwei say_item_vnum's
|
nope selbe problem immernoch..
|
|
|
05/22/2015, 22:10
|
#11577
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,258
|
Code:
quest steinupp begin
state start begin
when 20364.take begin
local itemvnum = item.get_vnum()
local resultvnum = itemvnum+100
local uppchance = 25
if not steinupp.in_list(itemvnum, {28312, 28330, 28331, 28332, 28333, 28334, 28335, 28336, 28337, 28338, 28339, 28340, 28341, 28342, 28343}) then
return chat("Ich kann leider nur Steine von +3 auf +4 verbessern ...")
end
say("Möchtest du")
say_item(item_name(itemvnum), itemvnum, "")
say("wirklich zu")
say_item(item_name(resultvnum), resultvnum, "")
say("verbessern?")
say("")
say("Der Versuch kann fehlschlagen!")
if select("Fortfahren", "Abbrechen") == 2 then return end
pc.remove_item(itemvnum)
if steinupp.perc_chance(uppchance) then
pc.give_item2(resultvnum)
chat("Die Verbesserung war erfolgreich!")
else
chat("Dein Stein wurde bei der Verbesserung zerstört ...")
end
end
function in_list(compare, list)
for _,v in pairs(list) do
if compare == v then return true end
end
return false
end
function perc_chance(i)
return math.random() <= (i/100)
end
end
end
|
|
|
05/23/2015, 12:16
|
#11578
|
elite*gold: 50
Join Date: Aug 2014
Posts: 508
Received Thanks: 201
|
PHP Code:
quest takuyarun begin state start begin function set_empire_locaction(empire) local op = { {1, 4693, 9642}, {21, 557, 1579}, {41, 9696, 2784} } pc.set_warp_location(op[empire][1], op[empire][2], op[empire][3]) end function is_dungeon_instanz_index(index) return (pc.get_map_index() >= index*10000 and pc.get_map_index() < (index+1)*10000 and pc.in_dungeon()) end when 8121.chat."Der Run xD" begin -- Npc ID anpassen say_title("Der Run xD") say("") say("Starten?") if select("Ja","Nein")==2 then return end if party.is_party() then if party.is_leader() then if party.get_near_count()>=3 then if pc.get_level()>=110 then -- Evtl. ne Level beschränkung? if pc.count_item(30145)>=1 then -- Hier das Item! pc.remove_item(30145, 1) -- remove item d.join(333) -- MapIndex -- Mob zum Starten des Runs. x y anpassen else say_title("der Run xD") say("") say("Du besitzt kein ITEM,") say("um den Run betreten zu können.") end else say_title("Mindestlevel!") say("") say("Alle Gruppenmitglieder müssen ein") say("Mindestlevel von 110 haben.") end else say_title("Gruppenmember") say("") say("Die Gruppe hat zu wenig") say("Teilnehmer um mit zumachen.") end else say_title("Gruppenleiter") say("") say("Nur der Gruppenleiter kann den Run") say("starten!") end else say_title("Gruppe") say("") say("Du musst in einer Gruppe sein, damit") say("du in den Run kannst!") end end when login with takuyarun.is_dungeon_instanz_index(333) begin -- MapIndex eintragen if pc.get_level()<110 then -- Mindestlevel d.notice("Einer eurer Mitglieder ist unter Level 110! Betrüger!") d.exit_all() end if d.getf("spawnit")==0 then d.setf("spawnit", 1) d.notice("Tötet den Metin") d.spawn_mob(8001, 5227,8903) end takuyarun.set_empire_locaction(pc.get_empire()) end when kill with npc.get_race()==8001 and takuyarun.is_dungeon_instanz_index(101) and d.getf("Etage")==0 begin d.setf("Etage", 1) d.notice("Okay, macht euch bereit, in 5 Sek. gehts los!") timer("five_seconds", 5) end -- Run when CheckIfMobsDead.timer begin if d.count_monster()==0 then if d.getf("Etage")>=10 then -- Hier die maximale Runde cleartimer("CheckIfMobsDead") d.notice("Win") d.setf("TalkToNpc", 1) d.spawn_mob(8121, pc.get_local_x(), pc.get_local_y()) -- NPC Anklick warp_all_to_village(pc.get_map_index(), 60*5) else d.setf("Etage", d.getf("Etage")+1) d.getf("Geschafft. Mobs kommen jetzt!") d.spawn_mob(101, 522700, 890300) --mobid, 5227,8903 d.spawn_mob(101, 522700, 890300)--mobid, 5227,8903 d.spawn_mob(101, 522700, 890300)--mobid, 5227,8903 -- Wenns bei 3 bleibt ok, aber sonst würde ich ne regen_file empfehlen. -- d.regen_file("data/dungeon/derRunName/Ebene"..d.getf("Etage")..".txt") end end end when five_seconds.timer begin loop_timer("CheckIfMobsDead", 1) d.spawn_mob(101, 522700, 890300)--mobid, x,y d.spawn_mob(101, 522700, 890300)--mobid, x,y d.spawn_mob(101, 522700, 890300)--mobid, x,y -- Wenns bei 3 bleibt ok, aber sonst würde ich ne regen_file empfehlen. -- d.regen_file("data/dungeon/derRunName/Ebene"..d.getf("Etage")..".txt") end -- Wenn RUN fertig kann man den Mob hier unter dem Text 1x anklicken when 8121.click with takuyarun.is_dungeon_instanz_index(101) and d.getf("TalkToNpc")==1 and d.getf(tostring(pc.get_vid()))==0 begin d.setf(tostring(pc.get_vid()), 1) d.getf(pc.get_name().." hat geklickt.") end end end
Kann jemand mal schauen was dort nicht stimmt?
1. alle von Map1 (wo der NPC) sich befindet werden mit geportet.
2. Der NPC zum Starten des Runs wird nicht mit auf die neue Map geportet..
Mfg
|
|
|
05/25/2015, 16:14
|
#11579
|
elite*gold: 0
Join Date: May 2010
Posts: 455
Received Thanks: 67
|
Hey wenn ich die Quest mein Pet gebe und den Rufe kriege ich zwar die Bonis, aber wenn ich den wegschicke zieht er diese nicht mehr ab.. so bekommt man bei Rufen und wegschicken mehrmals iwann 2 Mio TP..
Kann mir einer helfen?
Code:
quest azrael begin
state start begin
when 53006.use begin
pc.setqf("lol",({1,0})[pc.getqf("lol")+1])
if pc.getqf("lol") == 1 then
affect.add_collect(apply.ATT_BONUS_TO_MONSTER,35,60*60*24*365*60)
affect.add_collect(apply.MAX_HP,3500,60*60*24*365*60)
elseif pc.getqf("lol") == 0 then
affect.remove(apply.ATT_BONUS_TO_MONSTER)
affect.remove(apply.MAX_HP)
end
end
end
end
|
|
|
05/25/2015, 16:15
|
#11580
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Shimao
Hey wenn ich die Quest mein Pet gebe und den Rufe kriege ich zwar die Bonis, aber wenn ich den wegschicke zieht er diese nicht mehr ab.. so bekommt man bei Rufen und wegschicken mehrmals iwann 2 Mio TP..
Kann mir einer helfen?
Code:
quest azrael begin
state start begin
when 53006.use begin
pc.setqf("lol",({1,0})[pc.getqf("lol")+1])
if pc.getqf("lol") == 1 then
affect.add_collect(apply.ATT_BONUS_TO_MONSTER,35,60*60*24*365*60)
affect.add_collect(apply.MAX_HP,3500,60*60*24*365*60)
elseif pc.getqf("lol") == 0 then
affect.remove(apply.ATT_BONUS_TO_MONSTER)
affect.remove(apply.MAX_HP)
end
end
end
end
|
du musst auch angeben wie viel abgezogen werden soll
|
|
|
All times are GMT +2. The time now is 22:14.
|
|