|
You last visited: Today at 14:01
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
03/17/2012, 01:28
|
#5161
|
elite*gold: 0
Join Date: Dec 2011
Posts: 130
Received Thanks: 24
|
es sollte eigentlich eine einfache quest werden.
wenn man sich zum ersten mal einloggt soll amn ne quest bekommen "verdien dir dein eq"
dann wenn man sie annimmt soll man für
30 Wüstenwüchse Rüstung+9 bekommen
30 Keiler Helm+9 bekommen
30 Wildhunde Schild+9 bekommen
15 Grauwölfe Schuhe+9 bekommen
15 Bären Armband+9 bekommen
hier der anfang der quest aber nach dem ersten teil(erstmal nur die rüstung) kam schon core dumpedschon core dumped
PHP Code:
quest eq begin state start begin when login or levelup with pc.get_level() == 1 begin set_state(eqverdienen) end end state eqverdienen begin say_title("Hallo!") say("Hallo ".. pc.get_name() ..".") say("Wie du vielleicht gemerkt hast,") say("hast du bereits ein Schwert+9 bekommen.") say("Um weiteres Equipment zu bekommen,") say("Musst du mir bei 7.Aufgaben") say("helfen.Diese Wären:") say("Töte 30 Wüstenwüchse für Rüstung+9") say("Töte 30 Keiler für Helm+9") say("Töte 30 Wildhunde für Schild+9") say("Töte 15 Grauwölfe für Schuhe+9") say("Töte 15 Bären für Armband+9") say("Töte 15 Tiger für Ohrringe+9") state Rüstung+9 begin when letter begin send_letter("Rüstung+9") end when button or info begin say("Rüstung+9") say("") say("Du musst noch "..pc.getqf("state").." von 30 Wüstenwüchse töten!") end when 2101.kill begin local count = pc.getqf("state") - 1 if count <= 30 then pc.setqf("state", count) q.set_counter("Wüstenfuchs", count) end if count == 0 then say_title("Rüstung+9") say("Du hast die Quest erfolgreich abgeschlossen!") say("Du erhälst:") say_reward("Deine Rüstung+9") if pc.job == 0 then pc.give_item2(11209,1 ) elseif pc.job == 1 then pc.give_item2(11409,1 ) elseif pc.job == 2 then pc.give_item2(11609,1 ) elseif pc.job == 3 then pc.give_item2(11809,1 ) end end end state __COMPLETE__ begin end end
|
|
|
03/17/2012, 08:36
|
#5162
|
elite*gold: 60
Join Date: Jul 2010
Posts: 771
Received Thanks: 439
|
Tag auch,
Ich habe ein eigenen dt2 quest geschrieben.
Aber leider kann ich ab schluss nicht uppen, ich weiß nicht woran das liegt.
Hier der teil der quest, der die schmiede ruft:
HTML Code:
when dt2_can_upping.timer begin
d.spawn_mob(20074, 619, 188)
d.spawn_mob(20075, 612, 175)
d.spawn_mob(20076, 626, 177)
d.setf("dpbelohnung", 0)
d.setqf("deviltower_zone", "refineing", 1)
server_timer("dt2_52", 2*60, get_server_timer_arg())
end
Wär nett wen ihr mir sagen könnt, wo das problem liegt 
MfG
Kriegergeist^^
|
|
|
03/17/2012, 09:04
|
#5163
|
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
|
Quote:
Originally Posted by Kriegergeist^^
Tag auch,
Ich habe ein eigenen dt2 quest geschrieben.
Aber leider kann ich ab schluss nicht uppen, ich weiß nicht woran das liegt.
Hier der teil der quest, der die schmiede ruft:
HTML Code:
when dt2_can_upping.timer begin
d.spawn_mob(20074, 619, 188)
d.spawn_mob(20075, 612, 175)
d.spawn_mob(20076, 626, 177)
d.setf("dpbelohnung", 0)
d.setqf("deviltower_zone", "refineing", 1)
server_timer("dt2_52", 2*60, get_server_timer_arg())
end
Wär nett wen ihr mir sagen könnt, wo das problem liegt 
MfG
Kriegergeist^^
|
Heißt es nicht:
PHP Code:
d.setqf("can_refine", 1)
|
|
|
03/17/2012, 09:26
|
#5164
|
elite*gold: 60
Join Date: Jul 2010
Posts: 771
Received Thanks: 439
|
#DasKuchen
Das hatte ich vorher auch, aber das ging auch nicht.
Dan habe ich  gefunden.
Da wurde es so gemacht, da habe ich es auch mal einfach probiert, aber leider ohne erfolg
MfG
Kriegergeist^^
|
|
|
03/17/2012, 09:50
|
#5165
|
elite*gold: 15
Join Date: Sep 2010
Posts: 844
Received Thanks: 975
|
@Black:
PHP Code:
quest eq begin state start begin when login or levelup with pc.get_level() >= 1 begin set_state(eqverdienen) end end state eqverdienen begin function monster() local tier = { {11209,11409,11609,11809,2101,30}, {12209,12349,12489,12629,108, 30}, {13009,13009,13009,13009,101, 30}, {15009,15009,15009,15009,106, 15}, {14009,14009,14009,14009,110, 15}, {17009,17009,17009,17009,114, 15}, } return tier end when letter begin send_letter("Anfangs Equipment") end when button or info begin local mob = eq.monster() say_title("Hallo!") say('Hallo '..pc.get_name()) for i = 1,table.getn(mob), 1 do say('Töte '..mob[i][6]..' '..mob_name(mob[i][5])..' für '..item_name(mob[i][pc.job+1])) pc.setqf(mob_name(mob[i][5]), mob[i][6]) end end when kill begin local mob = eq.monster() for i = 1,table.getn(mob), 1 do if npc.get_race() == mob[i][5] then pc.setqf(mob_name(mob[i][5]), mob_name(mob[i][5])-1) if pc.getqf(mob_name(mob[i][5])) == 0 then say('Töte '..mob[i][6]..' '..mob_name(mob[i][5])..' erfolgreich abgeschossen!') pc.give_item2(mob[i][pc.job+1], 1) end end end end end end
|
|
|
03/17/2012, 10:15
|
#5166
|
elite*gold: 0
Join Date: Dec 2011
Posts: 130
Received Thanks: 24
|
coll danke bekommst ein thx wenns klappt hast mir schonmal bei ner quest geholfen...
hasts echt drauf!!!
lg Black
|
|
|
03/17/2012, 10:22
|
#5167
|
elite*gold: 0
Join Date: Oct 2009
Posts: 382
Received Thanks: 161
|
Quote:
Originally Posted by Mijago
1paket
lua does not allow numbers to start variables!
use name packet1
and look for end's.. 
|
Thank you now it's work
|
|
|
03/17/2012, 12:12
|
#5168
|
elite*gold: 0
Join Date: Dec 2011
Posts: 130
Received Thanks: 24
|
@Sp0ngeb0b ist cool
er nimmt die Quest an, ich kann sie auch anklicken und es steht auch da du musst das und das töten für das und das...
aber wenn ich zb 50 wildhunde getötet hab und ich brauch ja nur 30 dann bekommt man keie belohnung.
und es fehlten die ohrringe die hab ich einfach so eingefügt.
Code:
{16009,16009,16009,16009,102, 15},
kannst du mir weiterhelfen??
|
|
|
03/17/2012, 12:31
|
#5169
|
elite*gold: 10
Join Date: Feb 2012
Posts: 1,097
Received Thanks: 574
|
Quote:
Originally Posted by i.Quin
PHP Code:
quest achievement begin
state start begin
when login begin
local actual_achievement_points = pc.getqf("achievement_points")
if pc.getqf("firstlogin") != 1 then
local Reward = 1
pc.setqf("firstlogin", 1)
pc.setqf("achievement_points", actual_achievement_points + Reward)
cmdchat("achievement Dein_erster_Login%".. actual_achievement_points + Reward .."")
else
cmdchat("achievementpoints ".. pc.getqf("achievement_points"))
end
# end´ #

|
jetzt bekomm ich den error :
PHP Code:
syntax error: [string "start"]:10: `=' expected near `when'
achievment.quest:1261:Errot occured on compile achievement.quest
|
|
|
03/17/2012, 16:43
|
#5170
|
elite*gold: 5
Join Date: Apr 2011
Posts: 1,960
Received Thanks: 1,483
|
Ey^^ Brauche Hilfe bei dir Quest. Ich will, dass man nach dem Start wenn man einen neuen Char erstellt hat sofort in die Wüste teleportiert werden soll!
Quest Give_weapon:
Code:
quest give_basic_weapon begin
state start begin
when login begin
if pc.getqf("basic_weapon") == 0 then
pc.setqf("basic_weapon", 1)
local item = 10
if pc.job == 1 then
item = 1009
elseif pc.job == 3 then
item = 7009
end
if pc.countitem(item) == 0 and pc.weapon != item then
pc.give_item2(item)
pc.give_item2(27001,5 )
-- pc.give_item2(22000, 5)
end
end
end
end
end
Danke im Vorraus!
|
|
|
03/17/2012, 23:29
|
#5171
|
elite*gold: 5
Join Date: Aug 2011
Posts: 1,592
Received Thanks: 192
|
Quote:
Originally Posted by Doctor KampfSessel
Ey^^ Brauche Hilfe bei dir Quest. Ich will, dass man nach dem Start wenn man einen neuen Char erstellt hat sofort in die Wüste teleportiert werden soll!
Quest Give_weapon:
Code:
quest give_basic_weapon begin
state start begin
when login begin
if pc.getqf("basic_weapon") == 0 then
pc.setqf("basic_weapon", 1)
local item = 10
if pc.job == 1 then
item = 1009
elseif pc.job == 3 then
item = 7009
end
if pc.countitem(item) == 0 and pc.weapon != item then
pc.give_item2(item)
pc.give_item2(27001,5 )
-- pc.give_item2(22000, 5)
end
end
end
end
end
Danke im Vorraus!
|
Äner doch einfach den Spawnpunkt des Chars??
|
|
|
03/18/2012, 02:15
|
#5172
|
elite*gold: 2
Join Date: Jun 2009
Posts: 2,731
Received Thanks: 728
|
Ich hab versucht ein kleines Angelevent zuscripten
Code:
quest angelevent begin
state start begin
when login begin
when 9004.chat."Angeleventverwaltung" with pc.is_gm() begin
local s = select("Angelevent starten" , "Angelevent beenden", "Zurück" )
if s==1 then
game.set_event_flag("angelevent",1)
notice_all("Das Angelevent wurde gestartet")
end
if s==2
game.set_event_flag("angelevent",0)
notice_all("Das Angelevent wurde beendet")
end
if s==3
return
end
end
when 9004.chat."Angelevent" begin
if game.get_event_flag("angelevent")==0 then
say_title("Angelevent")
say("Das Angelevent ist nicht gestartet.")
say("Du wirst darüber informiert wenn es gestartet wird.")
return
end
if game.get_event_flag("angelevent")==1 then
say_title("Angelevent")
say("Welchen Fisch möchtest du entpacken?")
local x = select("Zander" , "Katzenfisch", "Aal", "Barsch", "Zurück" )
if x==1
if pc.count_item(27803)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27803,15)
end
if pc.count_item(27803)<15 then
say("Du hast nicht genügend Zander dabei")
say("Kom wieder wenn du 15 hast")
end
end
if x==2
if pc.count_item(27816)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27816,15)
end
if pc.count_item(27816)<15 then
say("Du hast nicht genügend Katzenfische dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==3
if pc.count_item(27810)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27810,15)
end
if pc.count_item(27810)<15 then
say("Du hast nicht genügend Aale dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==4
if pc.count_item(27814)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27814,15)
end
if pc.count_item(27814)<15 then
say("Du hast nicht genügend Bärsche dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==5
return
end
end
end
end
end
end
|
|
|
03/18/2012, 10:27
|
#5173
|
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
|
Quote:
Originally Posted by .Junior
Ich hab versucht ein kleines Angelevent zuscripten
Code:
quest angelevent begin
state start begin
when login begin
when 9004.chat."Angeleventverwaltung" with pc.is_gm() begin
local s = select("Angelevent starten" , "Angelevent beenden", "Zurück" )
if s==1 then
game.set_event_flag("angelevent",1)
notice_all("Das Angelevent wurde gestartet")
end
if s==2
game.set_event_flag("angelevent",0)
notice_all("Das Angelevent wurde beendet")
end
if s==3
return
end
end
when 9004.chat."Angelevent" begin
if game.get_event_flag("angelevent")==0 then
say_title("Angelevent")
say("Das Angelevent ist nicht gestartet.")
say("Du wirst darüber informiert wenn es gestartet wird.")
return
end
if game.get_event_flag("angelevent")==1 then
say_title("Angelevent")
say("Welchen Fisch möchtest du entpacken?")
local x = select("Zander" , "Katzenfisch", "Aal", "Barsch", "Zurück" )
if x==1
if pc.count_item(27803)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27803,15)
end
if pc.count_item(27803)<15 then
say("Du hast nicht genügend Zander dabei")
say("Kom wieder wenn du 15 hast")
end
end
if x==2
if pc.count_item(27816)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27816,15)
end
if pc.count_item(27816)<15 then
say("Du hast nicht genügend Katzenfische dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==3
if pc.count_item(27810)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27810,15)
end
if pc.count_item(27810)<15 then
say("Du hast nicht genügend Aale dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==4
if pc.count_item(27814)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27814,15)
end
if pc.count_item(27814)<15 then
say("Du hast nicht genügend Bärsche dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==5
return
end
end
end
end
end
end
|
Probier es mal so:
PHP Code:
quest angelevent begin
state start begin
when 9004.chat."Angeleventverwaltung" with pc.is_gm() begin
local s = select("Angelevent starten" , "Angelevent beenden", "Zurück" )
if s==1 then
game.set_event_flag("angelevent",1)
notice_all("Das Angelevent wurde gestartet")
end
if s==2
game.set_event_flag("angelevent",0)
notice_all("Das Angelevent wurde beendet")
end
if s==3
return
end
end
when 9004.chat."Angelevent" begin
if game.get_event_flag("angelevent")==0 then
say_title("Angelevent")
say("Das Angelevent ist nicht gestartet.")
say("Du wirst darüber informiert wenn es gestartet wird.")
return
end
if game.get_event_flag("angelevent")==1 then
say_title("Angelevent")
say("Welchen Fisch möchtest du entpacken?")
local x = select("Zander" , "Katzenfisch", "Aal", "Barsch", "Zurück" )
if x==1
if pc.count_item(27803)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27803,15)
end
if pc.count_item(27803)<15 then
say("Du hast nicht genügend Zander dabei")
say("Kom wieder wenn du 15 hast")
end
end
if x==2
if pc.count_item(27816)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27816,15)
end
if pc.count_item(27816)<15 then
say("Du hast nicht genügend Katzenfische dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==3
if pc.count_item(27810)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27810,15)
end
if pc.count_item(27810)<15 then
say("Du hast nicht genügend Aale dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==4
if pc.count_item(27814)>15 then
say("Du hast eine neue Muschel erhalten")
pc.get_item(xy)
pc.remove_item(27814,15)
end
if pc.count_item(27814)<15 then
say("Du hast nicht genügend Bärsche dabei")
say("Kom wieder wenn du 15 hast")
return
end
end
if x==5
return
end
end
end
end
end
|
|
|
03/18/2012, 11:46
|
#5174
|
elite*gold: 0
Join Date: Mar 2011
Posts: 246
Received Thanks: 17
|
PHP Code:
quest dragontemple begin
state start begin
when logout with pc.get_map_index() >= (82*10000) begin
pc.setqf("punishment", 1)
end
when login with pc.get_map_index() >= (82*10000) and pc.getqf("punishment") == 1 begin
pc.setqf("punishment", 0)
warp_to_village()
end
when 30121.chat."Ich will den Drachen töten" with pc.get_map_index() == 73 and game.get_event_flag("dragontemple_open") == 1 begin
pc.setqf("punishment", 0)
if game.get_event_flag("dragontemple_used") == 1 then
if game.get_event_flag("dragontemple_block") == 1 then
say_title(mob_name(30121))
say("")
say("Der Raum ist gesperrt, versuch es später noch ein mal.")
return;
end
say_title(mob_name(30121))
say("")
say("Tut mir Leid, der Raum ist reseviert.")
say("Wenn du ein Passwort hast für den Zugang")
say("gebe es jetzt bitte ein.")
local password = input()
if game.get_event_flag("dragontemple_password") == tonumber(password) then
say_title(""..mob_name(30121).."")
say("")
say("Das Passwort stimmt überein.")
say("Ich bringe dich in die Kammer")
wait()
say_title(""..mob_name(30121).."")
say("")
say("Wenn du willst kann ich dich sofort,")
say("in den Drachnraum bringen.")
say("Gib mir einfach 3x")
say("")
say_item_vnum(30179)
local s = select("Hier, nimm sie und bring mich rein", "Abbrechen")
if s == 1 then
if pc.count_item(30179) >= 3 then
pc.remove_item(30179,3)
pc.warp(843600, 1066900,(82*10000))
--dragonlair.startRaid(82)
else
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
say("")
say_item_vnum(30179)
end
else
return
end
else
say_title(""..mob_name(30121).."")
say("")
say("Das Passwort stimmt nicht überein.")
return
end
elseif pc.has_guild() and game.get_event_flag("dragontemple_used") == 0 then
say_title(""..mob_name(30121).."")
say("")
say("Du willst also den Drachen bekämpfen?")
say("Dann gib bitte erst ein Passwort(nur Zahlen) ein")
say("um den Raum zu schützen. Geb das Passwort")
say("einfach deinen Gruppenmitgliedern und sie")
say("können mit in den Raum")
say("Gib es bitte jetzt ein.")
local password = tonumber(input(""))
game.set_event_flag("dragontemple_password",password)
say_title(""..mob_name(30121).."")
say("")
say("Wenn du willst kann ich dich sofort,")
say("in den Drachnraum bringen.")
say("Gib mir einfach 3x")
say("")
say_item_vnum(30179)
say("")
local s = select("Hier, nimm sie und bring mich rein", "Abbrechen")
if s == 1 then
if pc.count_item(30179) >= 3 then
pc.remove_item(30179,3)
dragonlair.startRaid(82)
game.set_event_flag("dragontemple_used",1)
timer("blockentry",5*60)
else
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
say("")
say_item_vnum(30179)
say("")
return
end
elseif s==2 then
return
end
elseif not pc.has_guild() then
say_title(""..mob_name(30121).."")
say("")
say("Du benötigst eine starke Gilde")
say("um gegen den Drachen zu kämpfen.")
end
end
when 2493.kill with pc.get_map_index() >= (82*10000) begin
timer("set_unused",30)
d.notice("Ihr habt erfolgreich den Drachen getötet!")
d.notice("In 15 Sekunden werdet ihr in die Stadt teleportiert!")
timer("warp",15)
end
when warp.timer begin
warp_to_village()
end
when set_unused.timer begin
game.set_event_flag("dragontemple_used",0)
game.set_event_flag("dragontemple_block",0)
end
when blockentry.timer begin
game.set_event_flag("dragontemple_block",1)
end
end
end
Wenn man den Drachen tötet passiert nix ...
|
|
|
03/18/2012, 16:48
|
#5175
|
elite*gold: 0
Join Date: Oct 2009
Posts: 454
Received Thanks: 69
|
Reichsport mit mapauswahl funktion (map1 / map2)
quest reichsport begin
state start begin
when 9012.chat."Möchtest du reisen?" begin
say_title("Reichs-Teleporter:")
say("Du möchtest also in ein anderes Reich?")
local main_set = select("Ja","Nein")
if main_set == 2 then
return
end
if pc.get_level() <= 50 then
say_title("Teleporter:")
say("Hm… Mit deinem derzeitigen Level bist du noch")
say("zu schwach für die Reise durch Zeit und Raum.")
say("Komm wieder, wenn du höher als Level 50 erreicht hast.")
return
end
say_title("Teleporter:")
say("In welches Reich möchtest du teleportiert werden?")
local s=select("Blau","Gelb","Rot","Schließen")
if 1==s then
say_title("Wähle deine Map")
local s=select("Map 1","Map 2","Schließen")
if 1==s then
pc.warp(921600,204800)
elseif 2==s then
pc.warp(819200,204800)
end
if 2==s then
say_title("Wähle deine Map")
local s=select("Map 1","Map 2","Schließen")
if 1==s then
pc.warp(55700,157900)
elseif 2==s then
pc.warp(138500,234900)
end
if 3==s then
say_title("Wähle deine Map")
local s=select("Map 1","Map 2","Schließen")
if 1==s then
pc.warp(469300,964200)
elseif 2==s then
pc.warp(363000,875200)
end
end
end
end
aber da stimmt was nicht^^
Funktions erklärung:
Ich möchte dass man egal wo man ist die auswahl hat in welches reich man geportet wird (Blau,Rot,Gelb) und dann nochmla eine anfrage kommt in welcher map (Map1 / Map2 des jeweiligen reiches was man zuvor ausgefählt hat)
Liebe Grüße
|
|
|
All times are GMT +1. The time now is 14:01.
|
|