Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 03:30

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[SERVICE] Die Questkontrolle

Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old 01/26/2015, 22:27   #10891
 
./tkz's Avatar
 
elite*gold: 13
Join Date: Sep 2014
Posts: 166
Received Thanks: 55
1. Quest aus diesem Tutorial ->

2. Die Probleme: Er nimmt erfolgreich das Passwort und nimmt die Gewundenen Schlüssel. Man wird aber nicht geportet

2.1 Wenn man den NPC dann nochmal anklickt kann man das Passwort eingeben, dann sagt er zwar, dass es korrekt ist, aber im nächsten Schritt will er wieder die 3 Gew. Schlüssel. danach wird man auch nicht geportet.
Das kann man in Dauerschleife machen, bis sich irgendwann der Zugang schließt

Habe den Mapindex angepasst und eigentlich alles gemacht wie in dem vorran geposteten Tutorial, habe allerdings nicht die Clientdateien eingefügt, weil die schon in meinem Client drin sind (also sowieso die normalen grottendateien patch2)

Ich denke der Fehler liegt jetzt in der Quest, könnte mir die einer so anpassen, dass man die Schlüssel nicht immer wieder abgeben muss und man geportet wird, wenn man den Code korrekt eingegeben hat? VBox spuckt keine Fehler aus, habe die Questfunktionen bereits der quest_functions hinzugefügt.

./tkz is offline  
Old 01/27/2015, 16:19   #10892
 
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
Es kommt ein Error, wenn ich die Quest lade:

PHP Code:
quest kill90 begin
    state start begin
        when login 
or levelup with pc.level >= 90 begin
            set_state
(info)
        
end
    end
    state info begin
        when letter begin
            send_letter
("Dein Auftrag")
        
end
        when button 
or info begin
            say_title
("Dein Auftrag")
            
say("Hey DU, Ja, genau DU!")
            
say("Es wird Zeit, dass du nun eine vernünftige Rüstung und eine neue Waffe erhältst.
            Für diese sollst du nun nochmehr Kämpfen als vorher. Töte nun gleich die Anzahl der Monster,
            die du gleich erfahren wirst und du bekommst beim erfüllen dieser Aufgabe,
            je ein Upp-Item für deine neue Waffe und deine neue Rüstung."
)
            
say("Mach dich bereit und stelle dich den Kampf.")
            
say_reward("Töte 5 Eishexen")
            
set_state(killin)
        
end
    end
    state killin begin
        when letter 
or login begin
            send_letter
("Dein Auftrag")
        
end
        when button 
or info begin
            say_title
("Dein Auftrag")
            
say("Du musst noch ".. (pc.getf("kill90""killed")) .." Eishexen töten")
            
say()
            
wait()
            
send_letter("Dein Auftrag")
        
end
        when kill with not npc
.is_pc() and npc.get_race() == 1191 begin
            pc
.setf("kill90""killed"pc.getf("kill90""killed") + 1)
            if 
pc.getf("kill90""killed") == 5 then
                say
("Du hast alle Eishexen getötet")
                
say("Deine Belohnung: ".. item_name(19)) -- vnum anpassen
                pc
.give_item2(19) -- vnum anpassen
                set_state
(__COMPLETE__)
            
end
        end
    end
    state __COMPLETE__ begin
    end
end 
°Ace° is offline  
Old 01/27/2015, 17:02   #10893
 
DarkCry96's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 111
Received Thanks: 20
[SPOILER]
PHP Code:
quest kill90 begin
    state start begin
        when login 
or levelup with pc.level >= 90 begin
            set_state
(info)
        
end
    end
    state info begin
        when letter begin
            send_letter
("Dein Auftrag")
        
end
        when button 
or info begin
            say_title
("Dein Auftrag")
            
say("Hey DU, Ja, genau DU!")
            
say("Es wird Zeit, dass du nun eine vernünftige Rüstung und eine neue Waffe erhältst.
            Für diese sollst du nun nochmehr Kämpfen als vorher. Töte nun gleich die Anzahl der Monster,
            die du gleich erfahren wirst und du bekommst beim erfüllen dieser Aufgabe,
            je ein Upp-Item für deine neue Waffe und deine neue Rüstung."
)
            
say("Mach dich bereit und stelle dich den Kampf.")
            
say_reward("Töte 5 Eishexen")
            
set_state(killin)
        
end
    end
    state killin begin
        when letter 
or login begin
            send_letter
("Dein Auftrag")
        
end
        when button 
or info begin
            say_title
("Dein Auftrag")
            
say("Du musst noch ".. (pc.getf("kill90""killed")) .." Eishexen töten")
            
say()
            
wait()
            
send_letter("Dein Auftrag")
        
end
        when kill with not npc
.is_pc() and npc.get_race() == 1191 begin
            pc
.setf("kill90""killed"pc.getf("kill90""killed") + 1)
            if 
pc.getf("kill90""killed") == 5 then
                say
("Du hast alle Eishexen getötet")
                
say("Deine Belohnung: ".. item_name(19)) -- vnum anpassen
                pc
.give_item2(19) -- vnum anpassen
                set_state
(__COMPLETE__)
            
end
        end
    end
    state __COMPLETE__ begin
    end
end 
[/quote]



Du musst alles in say("") setzen, auch wenn du eine neue Zeile anfängst, drückst einfach enter, tabst ggf. damit es bündig ist und schreibst dann say("[Text]") (Habs jetzt hier im Textfeld bearbeitet, deswegen stimmen die Tabs nicht, musst du selbst machen)
DarkCry96 is offline  
Old 01/27/2015, 17:24   #10894
 
elite*gold: 0
Join Date: Nov 2014
Posts: 56
Received Thanks: 1
Ich hab mal so ne frage undzwar was bedeutet dieses pc.setqf oder pc.getqf? bzw wieso steht da z.B. pc.setqf(kill90) woher kommt diese kill90 in der klammer?
~YPG~ is offline  
Old 01/27/2015, 17:26   #10895
 
elite*gold: 0
Join Date: Jan 2015
Posts: 106
Received Thanks: 52
Quote:
Originally Posted by ~YPG~ View Post
Ich hab mal so ne frage undzwar was bedeutet dieses pc.setqf oder pc.getqf? bzw wieso steht da z.B. pc.setqf(kill90) woher kommt diese kill90 in der klammer?
Kann man frei wählen, wie man eine Flag nennt.
'Mahone is offline  
Thanks
1 User
Old 01/27/2015, 17:48   #10896
 
elite*gold: 0
Join Date: Nov 2014
Posts: 56
Received Thanks: 1
oke und dann noch ne frage
ja ich weiß ist nervig aber bin gerade am alles lernen
was ist eine questflag wird oft von gesprochen was bewirkt sie ?
oder besser gesagt was ist eine questflag
~YPG~ is offline  
Old 01/27/2015, 17:51   #10897
 
elite*gold: 0
Join Date: Jan 2015
Posts: 106
Received Thanks: 52
Quote:
Originally Posted by DarkCry96 View Post
Das ist eine Flag, also quasi wie ein Auslöser
(set_state [Flag])
(state [Flag] begin)
Ein state ist keine Flag.

Quote:
Originally Posted by ~YPG~ View Post
oke und dann noch ne frage
ja ich weiß ist nervig aber bin gerade am alles lernen
was ist eine questflag wird oft von gesprochen was bewirkt sie ?
oder besser gesagt was ist eine questflag
In einer Flag können Werte gespeichert werden und man kann sie auch in anderen Quests verwenden.
'Mahone is offline  
Thanks
1 User
Old 01/27/2015, 17:59   #10898
 
elite*gold: 0
Join Date: Nov 2014
Posts: 56
Received Thanks: 1
oke danke dir!
Es gibt ja eine When-Schleife.
Sprich wenn ich sage when .... levelup ....
und dann mit if anfange und sage
if ... = ... then
....
....
....
dann steht da bei manchen quests return.
was bewirkt dieses return also schließt es dann dieses questfenster oder kommt wieder zum anfang des questfensters?
danke euch
~YPG~ is offline  
Old 01/27/2015, 18:01   #10899
 
elite*gold: 0
Join Date: Jan 2015
Posts: 106
Received Thanks: 52
Quote:
Originally Posted by ~YPG~ View Post
oke danke dir!
Es gibt ja eine When-Schleife.
Sprich wenn ich sage when .... levelup ....
und dann mit if anfange und sage
if ... = ... then
....
....
....
dann steht da bei manchen quests return.
was bewirkt dieses return also schließt es dann dieses questfenster oder kommt wieder zum anfang des questfensters?
danke euch
Das return bewirkt normalerweise, dass der weitere Ablauf abgebrochen wird und ein Wert wiedergegeben wird. In manchen Sprachen (unter anderem Lua) kann man aber auch keinen Wert zurückgeben und trotzdem wird der Ablauf abgebrochen.
'Mahone is offline  
Thanks
1 User
Old 01/27/2015, 18:03   #10900
 
elite*gold: 0
Join Date: Nov 2014
Posts: 56
Received Thanks: 1
oke also muss ich dem return kein wert zuweisen.
sowie ich es jetzt verstanden habe wird das questfenster geschlossen?
Naja jetzt nerv ich mal nicht weiter und teste weiter aus
Trotzdem danke euch!
~YPG~ is offline  
Old 01/27/2015, 18:54   #10901

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Habe in den großen Weiten des Internets folgende LUA Funktion gefunden:

PHP Code:
function SecondsToClock(sSeconds)
    
local nSeconds String.ToNumber(sSeconds)
    if 
nSeconds == 0 then
        
return "00:00:00";
    else
        
nHours string.format("%02.f"Math.Floor(nSeconds/3600));
        
nMins string.format("%02.f"Math.Floor(nSeconds/60 - (nHours*60)));
        
nSecs string.format("%02.f"Math.Floor(nSeconds nHours*3600 nMins *60));
        return 
nHours.." Stunden "..nMins.." Minuten und "..nSecs.." Sekunden"
    
end
end 
und versuche gerade verzweifelt diese per Quest aufzurufen ... :

PHP Code:
say("Noch ".. SecondsToClock(11527) ..""
Klappt allerdings nicht (das Questfenster geht auf aber da, wo der Text stehen müsste kommt nichts weiter ...

Habe es dann nochmal so versucht:

PHP Code:
if SecondsToClock(11527) == "3 Stunden 12 Minuten und 7 Sekunden" then
                    say
("Jo isses")
                else
                    
say("nope")
                
end 
Kommt das gleiche ...
rollback is offline  
Old 01/27/2015, 19:15   #10902
 
DarkCry96's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 111
Received Thanks: 20


Würde gerne immernoch wissen, was an meiner Quest nicht stimmt.
Er zählt einfach die Kills nicht, also ich kann 200 Sensis killen ohne die Quest zu beenden..

Tymberks Frage wurde auch noch nicht geklärt (wir arbeiten am gleichen Server)
DarkCry96 is offline  
Old 01/27/2015, 19:30   #10903

 
.yorliK's Avatar
 
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
Quote:
Originally Posted by [Sensenmann] View Post
Habe in den großen Weiten des Internets folgende LUA Funktion gefunden:

und versuche gerade verzweifelt diese per Quest aufzurufen ... :

Klappt allerdings nicht (das Questfenster geht auf aber da, wo der Text stehen müsste kommt nichts weiter ...

Habe es dann nochmal so versucht:

PHP Code:
if SecondsToClock(11527) == "3 Stunden 12 Minuten und 7 Sekunden" then
                    say
("Jo isses")
                else
                    
say("nope")
                
end 
Kommt das gleiche ...
Bei dieser Funktion sollte es funktionieren:
Code:
function SecondsToClock(int)
	if tonumber(int) then 
		nHours = math.floor((int) / 60 / 60)
		nMins = math.floor(((int) / 60 ) - nHours * 60)
		nSecs = math.floor((int) - nHours * 60 * 60 - nMins * 60)
		return nHours.." Stunden "..nMins.." Minuten und "..nSecs.." Sekunden"
	else
		return "00:00:00"
	end
end
Quote:
Originally Posted by DarkCry96 View Post

Würde gerne immernoch wissen, was an meiner Quest nicht stimmt.
Er zählt einfach die Kills nicht, also ich kann 200 Sensis killen ohne die Quest zu beenden..

Tymberks Frage wurde auch noch nicht geklärt (wir arbeiten am gleichen Server)

Schau in anderen Quests mal ob dort irgendwo 1093.kill steht. Das könnte den Fehler auslösen. Das musst du in kill with npc.get_race()==1093 umschreiben.

Ich tippe mal auf die Dämonenturmquest^^
.yorliK is offline  
Thanks
1 User
Old 01/27/2015, 20:22   #10904

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Funktioniert!

Danke^^

EDIT:

Wollte das noch etwas erweitern ... du kannst das bestimmt noch viel einfacher lösen aber bei mir klappts überhaupt nicht :x

PHP Code:
function SecondsToClock(int)
    if 
tonumber(int) then 
        nHours 
math.floor((int) / 60 60)
        
nMins math.floor(((int) / 60 ) - nHours 60)
        
nSecs math.floor((int) - nHours 60 60 nMins 60)
        if 
nHours 1 then
            local txt_Hours 
nHours.." Stunden "
        
elseif nHours == 1 then
            local txt_Hours 
nHours.." Stunde "
        
elseif nHours == 0 then
            local txt_Hours 
""
        
end
        
if nMins 1 then
            local txt_Mins 
nMins.." Minuten "
        
elseif nMins == 1 then
            local txt_Mins 
nMins.." Minute "
        
elseif nMins == 0 then
            local txt_Mins 
""
        
end
        
if nSecs 1 then
            local txt_Secs 
nSecs.." Sekunden "
        
elseif nSecs == 1 then
            local txt_Secs 
nSecs.." Sekunde "
        
elseif nSecs == 0 then
            local txt_Secs 
""
        
end
        
return txt_Hours..txt_Mins..txt_Secs
    
else
        return 
"00:00:00"
    
end
end 
rollback is offline  
Old 01/27/2015, 22:02   #10905
 
.Xilent's Avatar
 
elite*gold: 12
Join Date: Jun 2012
Posts: 978
Received Thanks: 860
Quote:
Originally Posted by [Sensenmann] View Post
[..]

Code:
function SecondsToClock(int)
	if tonumber(int) then 
		nHours = math.floor((int) / 60 / 60)
		nMins = math.floor(((int) / 60 ) - nHours * 60)
		nSecs = math.floor((int) - nHours * 60 * 60 - nMins * 60)
		return (nHours > 0 and (nHours..({" Stunde ","Stunden "})[nHours == 1 and 1 or 2]) or "")..(nMins > 0 and (nMins..({" Minute "," Minuten "})[nMins == 1 and 1 or 2]) or "")..(nSecs > 0 and (nSecs..({" Sekunde"," Sekunden"})[nSecs == 1 and 1 or 2]) or "")
	else
		return "00:00:00"
	end
end
.Xilent is offline  
Thanks
1 User
Reply




All times are GMT +1. The time now is 03:32.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.