[SERVICE] Die Questkontrolle

10/08/2010 22:59 '-SkyLiiNe-'#616
also muss ich denke ich mal einen counter setzten vielleicht setqf("kill",0) und dann setqf("kill",0)+1 ??? aber wo hin .....
10/08/2010 23:07 CoreDump#617
ok da ich sehe das du so verzweifelt bist...
mache ich es dir etwas einfacher.
aber einfügen musst du selber versuchen (NACHDENKEN!)

PHP Code:
.....
    
state...
        
when...
            
falls IF---
            
pc.setqf("state1", 0)
            
q.set_counter("mobname", anzahl)
            
end---if muss beendet werden
        end
    end
    state kill begin
        when mob
-ID.kill begin
            local count1
=pc.getqf("state1")+1
            
if count1<=anzahl then
                pc
.setqf("state1", count1)
                
q.set_counter("mobname", anzahl - count1)
            
end
            
if pc.getqf("state1")>=anzahl then
                set_state
("nächstes state")
            
end
        end
    end
    state 
"nächstes state" begin
        when npc
.chat."Auftrag abgeschlossen!" begin....... 
jetz hab ich zwar das meiste geschrieben aber den rest einfügen musst du selber versuchen

EIN TIPP: nicht 1:1 abschreiben. is dafür gedacht das du selber nachdenkst.
der best weg questen zu lernen ist wenn man sich die einzelnen quests aus dem quest ordner ansieht.
davon habe ich das questen gelernt und MEINE PERSÖNLICHE MOB-KILL QUEST geschrieben.

Diese Quest hat niemand ausser 3leute. und die sind aus unserem Server-Team
10/08/2010 23:14 '-SkyLiiNe-'#618
danke dir ich setz mich jetzt dran ;)
10/08/2010 23:44 .Flynn.#619
PHP Code:
quest event_map5 begin
    state start begin
        when login 
or levelup with pc.get_level() >90 begin
            set_state
(event_map5)
        
end
    end
        
    state event_map5 begin
        when 20087.chat
."BossMap" begin
            say
(""..mob_name(20087)..":")
            
say("Hallo mein Freund!")
            
say("Wir haben ein Gebiet entdeckt,")
            
say("das völlig ausgestorben ist so,")
            
say("wie unser Dorf. Doch auch dort")
            
say("sind schreckliche Monster!")
            
say("")
            
say("Möchtest du zur BossMap?")
            
say("")
                
            
local a= select("Teleportier mich!", "Nein ich bleib hier!")
            if 
1==a then
                say
(""..mob_name(20087)..":")
                
say("")
                
say("Ok")
                
say("Viel Glück")
                
wait()
                
pc.warp(28129200 , 28129200)
            elseif 
2==a then
                say
(""..mob_name(20087)..":")
                
say("")
                
say("Ok")
                
say("Eine Weise Entscheidung!")
            
end


        end
            

    end

end 
wo ist der fehler die quest funztz nur das ab Level 90 nich ^^ man kann scho vorher rein
10/09/2010 00:11 CoreDump#620
welche klasse bist du?
in mathe noch nie was mit >= zeichen gemacht?

PHP Code:
 if 1==a then 
bei sowas würd ich mir am liebsten die augen auskratzen xDD
is zwar kein fehler aber alles hat seine ordnung
PHP Code:
 if a==1 then 
10/09/2010 00:57 RootIt#621
PHP Code:
quest kristal begin
    state start begin
        when 30133.
use with pc.get_level() >= 50 begin

            
if pc.countitem("30133")>=1 then
                pc
.removeitem("30133", 1)
            
end

            say_title
("Magischer Kristall:")
            
say("Ich bringe dich nun in die mysterioesen, gefaehrlichen Ebenen -")
            
say("Dem sogenannten SpinnenDungeon3")
            
say("Er birgt viele Gefahren.")
            
say("Man sagt, dort befinden sich die legendaeren Zombie Monster!")
            
say("Soll ich dich dorthin bringen?")


            
local a= select("Teleportier mich!", "Nein ich bleib hier!")
            if 
1==a then
                say
("Magischer Kristall:")
                
say("")
                
say("Ok")
                
say("Viel Glück")
                
wait()
                
pc.warp(474700 , 484800)
            elseif 
2==a then
                say
("Magischer Kristall:")
                
say("")
                
say("Ok")
                
say("Eine Weise Entscheidung!")
            
end


        end
            

    end

end 
Wenn ich Rechtsklick auf das item 30133 mache (Per DB Type auf 18 gesetzt) passiert nichts -.-
10/09/2010 09:58 DerEgoist#622
Hey!
Kann mir einer sagen wo der Fehler ist?
Wollte nur einstellen das man sich in eine Map mehr porten kánn!

PHP Code:
say_title ( "Teleporter:" ) 
say ( "Dies ist eine faszinierende Gegend. Aber" ) 
say ( "passiert hier denn auch mal etwas" ) 
say ( "Außergewöhnliches? Eher wohl nicht. In anderen" ) 
say ( "Teilen des Landes sieht es mitunter ganz anders." ) 
say ( "aus! Es gibt daher sicher einen intressanten" ) 
say ( "Ort, an den ich dich teleportieren könnte. Da" ) 
say ( "jedoch die Kräfte des Bösen wieder stärker" ) 
say ( "geworden sind, wurden Raum und Zeit ins Chaos" ) 
say ( "gestürzt. Dadurch kann es passieren, dass deine" ) 
say ( "Rückkehr nicht immer augenblicklich funktioniert." ) 
say ( "Möchtest du dennoch teleportiert werden?" ) 
local main_set = select ( "Ja" , "Nein" ) 
if 
main_set == 2 then 
return 
end 
if pc . get_level ( ) <= 10 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 10 bist." ) 
return 
end 
local map 
= pc . get_map_index ( ) 
local empire = pc . get_empire ( ) 
local level = pc . get_level ( ) 
local cost = math . floor ( level / 5 ) * 1000 
if cost < 1000 then 
cost 
= 1000 
end 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
if 
map == 1 or map == 3 or map == 21 or map == 23 or map == 41 or map == 43 then 
local guild_map_names 
= { 
"Tempel 2" , 
"Tempel 2" , 
"Tempel 2" , 
} 
guild_map_name = guild_map_names [ empire ] 
local empire_castle = { 
"Burgschlacht" , 
"Burgschlacht" , 
"Burgschlacht" , 
} 
empire_castle = empire_castle [ empire ] 
local sub_set = 0 
if pc . count_item ( 30180 ) >= 1 then 
if level < 60 then 
sub_set 
= select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Drachengottamulett benutzen" , "Andere Gebiete" ) 
if 
sub_set == 6 then 
return 
end 
else 
sub_set = select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Andere Gebiete" ) 
if 
sub_set == 6 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( "Doyyumhwaji" , "Dämonenturm" , "Feuerland 2" , "Zurück" , "Abbrechen" ) + 6 
if sub_set == 10 then 
return 
end 
if sub_set == 9 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Andere Gebiete" ) 
if 
sub_set == 6 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( "Doyyumhwaji" , "Dämonenturm" , "Feuerland 2" , "Abbrechen" ) + 6 
if sub_set == 10 then 
return 
end 
end 
end 
end 
end 
if pc . gold < cost then 
say 
( "Du hast nicht genug Geld," ) 
say_title ( "Teleporter:" ) 
say ( "Ich würde dich auch kostenlos teleportieren," ) 
say ( "aber ich habe eine große Familie. Um sie zu" ) 
say ( "ernähren, muss ich Geld verdienen." ) 
say_reward ( string . format ( "Es kostet %d Yang." , cost ) ) 
return 
end 
pc 
. changegold ( - cost ) 
local warp = { 
{ 
{ 
153600 , 1049600 } , 
{ 
153600 , 1049600 } , 
{ 
153600 , 1049600 } , 
} , 
{ 
{ 
402100 , 673900 } , 
{ 
270400 , 739900 } , 
{ 
321300 , 808000 } , 
} , 
{ 
{ 
217800 , 627200 } , 
{ 
221900 , 502700 } , 
{ 
344000 , 502500 } , 
} , 
{ 
{ 
434200 , 290600 } , 
{ 
375200 , 174900 } , 
{ 
491800 , 173600 } , 
} , 
{ 
{ 
975200 , 133000 } , 
{ 
977200 , 185000 } , 
{ 
923900 , 183600 } , 
} , 
{ 
{ 
283600 , 808300 } , 
{ 
283600 , 808300 } , 
{ 
283600 , 808300 } , 
} , 
{ 
{ 
599400 , 756300 } , 
{ 
597800 , 622200 } , 
{ 
730700 , 689800 } , 
} , 
{ 
{ 
590500 , 110500 } , 
{ 
590500 , 110500 } , 
{ 
590500 , 110500 } , 
} , 
}
{ 
460800 , 1049600 } , 
{ 
460800 , 1049600 } , 
{ 
460800 , 1049600 } , 
} , 
}  
test_chat ( warp [ sub_set ] [ empire ] [ 1 ] .. warp [ sub_set ] [ empire ] [ 2 ] ) 
say_title ( "Teleporter:" ) 
say ( "Achtung, ich teleportiere dich jetzt. Du wirst" ) 
say ( "an einem gefährlichen Ort landen, also pass auf" ) 
say ( "dich auf. Viel Glück!" ) 
wait ( ) 
pc . warp ( warp [ sub_set ] [ empire ] [ 1 ] , warp [ sub_set ] [ empire ] [ 2 ] ) 
else 
if 
level < 60 then 
sub_set 
= select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Andere Gebiete" ) 
if 
sub_set == 6 then 
return 
end 
else 
sub_set = select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Andere Gebiete" ) 
if 
sub_set == 6 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( "Doyyumhwaji" , "Dämonenturm" , "Feuerland 2" , "Zurück" , "Abbrechen" ) + 5 
if sub_set == 10 then 
return 
end 
if sub_set == 9 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( guild_map_name , "Tal von Seungryong" , "Yongbi-Wüste" , "Berg Sohan" , empire_castle , "Andere Gebiete" ) 
if 
sub_set == 6 then 
say_title 
( "Teleporter:" ) 
say ( "Wohin möchtest du teleportiert werden?" ) 
say_reward ( string . format ( "Das kostet dich %d Yang." , cost ) ) 
sub_set = select ( "Doyyumhwaji" , "Dämonenturm" , "Feuerland 2" , "Abbrechen" ) + 5 
if sub_set == 9 then 
return 
end 
end 
end 
end 
end 
if pc . gold < cost then 
say 
( "Du hast nicht genug Geld," ) 
say_title ( "Teleporter:" ) 
say ( "Ich würde dich auch kostenlos teleportieren," ) 
say ( "aber ich habe eine große Familie. Um sie zu" ) 
say ( "ernähren, muss ich Geld verdienen." ) 
say_reward ( string . format ( "Es kostet %d Yang." , cost ) ) 
return 
end 
pc 
. changegold ( - cost ) 
local warp = { 
{ 
{ 
153600 , 1049600 } , 
{ 
153600 , 1049600 } , 
{ 
153600 , 1049600 } , 
} , 
{ 
{ 
402100 , 673900 } , 
{ 
270400 , 739900 } , 
{ 
321300 , 808000 } , 
} , 
{ 
{ 
217800 , 627200 } , 
{ 
221900 , 502700 } , 
{ 
344000 , 502500 } , 
} , 
{ 
{ 
434200 , 290600 } , 
{ 
375200 , 174900 } , 
{ 
491800 , 173600 } , 
} , 
{ 
{ 
975200 , 133000 } , 
{ 
977200 , 185000 } , 
{ 
923900 , 183600 } , 
} , 
{ 
{ 
599400 , 756300 } , 
{ 
597800 , 622200 } , 
{ 
730700 , 689800 } , 
} , 
{ 
{ 
590500 , 110500 } , 
{ 
590500 , 110500 } , 
{ 
590500 , 110500 } , 
} ,
{
{ 
460800 , 1049600 } , 
{ 
460800 , 1049600 } , 
{ 
460800 , 1049600 } , 
} , 
} 
test_chat ( warp [ sub_set ] [ empire ] [ 1 ] .. warp [ sub_set ] [ empire ] [ 2 ] ) 
say_title ( "Teleporter:" ) 
say ( "Achtung, ich teleportiere dich jetzt. Du wirst" ) 
say ( "an einem gefährlichen Ort landen, also pass auf" ) 
say ( "dich auf. Viel Glück!" ) 
wait ( ) 
pc . warp ( warp [ sub_set ] [ empire ] [ 1 ] , warp [ sub_set ] [ empire ] [ 2 ] ) 
end 
else 
local sub_set2 = 3 
if empire == 1 then 
sub_set2 
= select ( "Yongan" , "Jayang" , locale . cancel ) 
elseif 
empire == 2 then 
sub_set2 
= select ( "Joan" , "Bokjung" , locale . cancel ) 
elseif 
empire == 3 then 
sub_set2 
= select ( "Pyungmoo" , "Bakra" , locale . cancel ) 
end 
if sub_set2 ~= 3 then 
if pc . gold < cost then 
say_title 
( "Teleporter:" ) 
say ( "Ich würde dich auch umsonst teleportieren," ) 
say ( "aber ich habe eine große Familie. Um sie zu" ) 
say ( "ernähren, muss ich Geld verdienen." ) 
say_reward ( string . format ( "Es kostet %d Yang." , cost ) ) 
else 
if 
sub_set2 == 1 then 
say_title 
( "Teleporter:" ) 
say ( "Ich teleportiere dich dorthin." ) 
wait ( ) 
if 
empire == 1 then 
pc 
. warp ( 469300 , 964200 ) 
elseif 
empire == 2 then 
pc 
. warp ( 55700 , 157900 ) 
elseif 
empire == 3 then 
pc 
. warp ( 969600 , 278400 ) 
end 
elseif sub_set2 == 2 then 
say_title 
( "Teleporter:" ) 
say ( "Ich teleportiere dich dorthin." ) 
wait ( ) 
if 
empire == 1 then 
pc 
. warp ( 353100 , 882900 ) 
elseif 
empire == 2 then 
pc 
. warp ( 145500 , 240000 ) 
elseif 
empire == 3 then 
pc 
. warp ( 863900 , 246000 ) 
end 
end 
pc 
. changegold ( - cost ) 
end 
end 
end 
mfg
10/09/2010 12:29 .Flynn.#623
Quote:
Originally Posted by CoreDump View Post
welche klasse bist du?
in mathe noch nie was mit >= zeichen gemacht?

PHP Code:
 if 1==a then 
bei sowas würd ich mir am liebsten die augen auskratzen xDD
is zwar kein fehler aber alles hat seine ordnung
PHP Code:
 if a==1 then 
schön und gut aber wie lösen wir jetzt das problem das man erst ab 90 darein kann?
10/09/2010 12:43 CoreDump#624
@RootIt er war erster:
PHP Code:
quest kristal begin
    state start begin
        when 30133.
use with pc.get_level() >= 50 begin

            say_title
("Magischer Kristall:")
            
say("Ich bringe dich nun in die mysterioesen, gefaehrlichen Ebenen -")
            
say("Dem sogenannten SpinnenDungeon3")
            
say("Er birgt viele Gefahren.")
            
say("Man sagt, dort befinden sich die legendaeren Zombie Monster!")
            
say("Soll ich dich dorthin bringen?")


            
local a= select("Teleportier mich!", "Nein ich bleib hier!")
            if 
1==a then
                say
("Magischer Kristall:")
                
say("")
                
say("Ok")
                
say("Viel Glück")
                
wait()
                
pc.warp(474700 , 484800)
                
pc.remove_item(30133,1)
            elseif 
2==a then
                say
("Magischer Kristall:")
                
say("")
                
say("Ok")
                
say("Eine Weise Entscheidung!")
            
end


        end
            

    end

end 
also deine lehrstunde:
Code:
when 30133.use with pc.get_level() >= 50 begin
wenn du das schreibst musst du das item besitzen.(muss vorhanden sein)
also brauchst du das nicht schreiben. und wenn der spieler doch nicht porten will, verliert er nur das item. also lhabe ich die abfrage weggelöscht und durch das hier ersetzt
Code:
pc.remove_item(30133,1)
(der kristall wird einmal entfernt)
Und das wichtigste ist in der Datenbank auf type 18 setzen
und wenn das alles nicht geht dann schau dir die fehlermeldung in VPC an

-------------------------------------------------------------------------
@Shadow329
die lösung steht im 2ten satz den ich geschrieben habe. >= verwenden!
denk mal mit und nicht fragen

-------------------------------------------------------------------------
@LoLIsBack
ich schau mir das teleporter-scrip sicher nicht an.
es gibt genau fertige die funzen. wozu noch selber schreiben? und mit einer fehlermeldung würd ich gezielt suchen.
10/09/2010 13:23 iYoshix3#625
@ CoreDump, die quest für RootIt ist immer noch falsch, da man sie auch nutzen kann, wenn man das item nicht hat hier die quest
@ RootIt



Mfg, Yoshix3
10/09/2010 14:03 RootIt#626
Ich muss leider sagen, dass keine der beiden Varianten funktioniert. Beim Item 30133 habe ich "Type" auf 18 gesetzt , krital.quest (ich weiß, dass kristall mit doppel "l" geschrieben wird, ist nur aufgund von Zeiteinsparung so gelaufen :D ) in die hongkong_list eingetragen und die kristal.quest datei in den quest ordner hochgeladen. Dann ingame quests reloaded, doch bei rechtsklick aufs item tut sich gar nichts >.<'
Jedoch schonmal Danke für die bisherige Hilfe
10/09/2010 15:00 CoreDump#627
LOL
wie kann man dieses item anklicken wenn man es nicht hat????
brain.exe vergessen oder was? xD
PHP Code:
when 30133.use with pc.get_level() >= 50 begin 
wie kann man dieses item benutzen ohne das man es besitzt?

Normalerweise wenn das item in der DB auf type 18 ist sollte es funktionieren
meine haben bis jetzt gefunzt
10/09/2010 15:18 RootIt#628
ich muss dir sagen, ich hab keine ahnung wovon du redest. Ich habe noch nie ne Quest geschrieben und ich weiß nicht, was mit " Wie kann man dieses item benutzen ohne das man es besitzt" und der darüberstehenden questzeile auf sich hat.
Klär mich auf.
Ich verstehs nicht.
10/09/2010 15:19 syηтaχ#629
Was ist an dieser Quest falsch?
Die Quest funktioniert nicht wenn ich den NPC (Kriegergeist) anspreche.
Tal von Ascaria ist auch entbuggt.
Der quest 777 Rechte gegeben und den anderen Dateien auch.
Sh make auch ausgeführt.

Kriegergeist Query:


Quest:


€: Gelöst

MfG Eazy
10/09/2010 15:29 CoreDump#630
PHP Code:
when 30133.use with pc.get_level() >= 50 begin 
bedeutet:
wenn(when) du den kristall(30133) mit level >=50 (pc.get_level()>=50)verwendetst(.use) ...dann fängt das quest an(begin)
englisch ist gefragt. wers nicht kann solls lernen
also wenn man den kristall mit lvl>=50 verwendet/anklickt -> begin
ich seh da nichts schweres daran.

also klartext: das is logischer menschenverstand. wenn man dieses item nicht hat dann kommt auch nix.
wie sollte das sonst funktionieren?