Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 05:29

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

Advertisement



Eigene Quest "entbuggen"

Discussion on Eigene Quest "entbuggen" within the Metin2 Private Server forum part of the Metin2 category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
Eigene Quest "entbuggen"

Hallo Com,

ich habe ein wenig rum probiert und diese Statistik quest entworfen:

Code:
quest kill begin
    state start begin
        when login begin
            pc.setqf("pvm_kills", 0)
			pc.setqf("Metin_kills", 0)
            send_letter("Monster Statistik")
        end
        when kill begin
            if npc.get_race() then
                pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
				if npc.get_race() == 8001 or 8002 or 8003 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
                end
            end
        end
        when info or button begin
            say_title("Statistik ab Login:")
            say("Getötet Monster:")
            say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
			say_reward("Du hast bis jetzt "..pc.getqf("Metin_kills").." Metins zerstört.")
        end
    end
end
Die Quest soll folgendes machen:

Aufzählen wie viele Monster man getötet hat (funktioniert auch soweit)
und aufzählen wie viele Metins man zerstört hat. Das funktioniert irgendwie nicht. Manchmal wenn man einen Metin zerstört fügt er direkt 25 anstatt einen hinzu. Außerdem wäre schön wenn die Statistik irgendwie gespeichert wird und nicht wieder alles löscht wenn man aus logt ?

Kann mir wer hier helfen und den Code anpassen ?

Wäre euch sehr dankbar

Vielen Dank
Gruß
Geneesys
geneesys is offline  
Old 04/12/2015, 12:20   #2
 
#'.Rayzor™'s Avatar
 
elite*gold: 15
Join Date: Apr 2015
Posts: 135
Received Thanks: 97
PHP Code:
quest kill begin
    state start begin
        when login begin
            pc
.setqf("pvm_kills"0)
            
pc.setqf("Metin_kills"0)
            
send_letter("Monster Statistik")
        
end
        when kill begin
            
if npc.get_race() then
                pc
.setqf("pvm_kills"pc.getqf("pvm_kills")+1)
            else 
npc.get_race() == 8001 or 8002 or 8003 then
                pc
.setqf("Metin_kills"pc.getqf("Metin_kills")+1)
                
end
            end
        end
        when info 
or button begin
            say_title
("Statistik ab Login:")
            
say("Getötet Monster:")
            
say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
            
say_reward("Du hast bis jetzt "..pc.getqf("Metin_kills").." Metins zerstört.")
        
end
    end
end 
__________________________________________________ ____________________

Habe extra noch eine neue geschrieben, falls die von oben nicht geht.

PHP Code:
quest statistik begin
    state start begin
        when letter begin
            send_letter
("Killstatistik")
        
end
        when button 
or info begin
            say_title
("Killstatistik")
            
say("")
            
say("Monster: "..(pc.getqf("Monster_Kills") or 0))
            
say("Metins: "..(pc.getquf("Metin_Kills") or 0))
            
say("")
            
select("Ok")
            
setskin(NOWINDOW)
            
send_letter("Killstatistik")
        
end
        when kill begin
            
if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 then
                pc
.setqf("Metin_Kills"pc.getqf("Metin_Kills")+1)
            else
                
pc.setqf("Monster_Kills"pc.getqf("Monster_Kills")+1)
            
end
        end
    end
end 
#'.Rayzor™ is offline  
Thanks
1 User
Old 04/12/2015, 12:26   #3

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Fehler1:
Du hast bei einem Metin kill auch die Pvm-Kills hochgesetzt (wolltest du das?)

Fehler2:
Du kannst folgende Abfrage nicht machen:
Code:
if npc.get_race() == 8001 or 8002 or 8003 then
stattdessen müsstest du folgendes machen:
Code:
if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 then
Ich habe stattdessen die in_list() Funktion eingesetzt. Die findest du hier:


Das nächste mal bitte in diesem Thread posten:


Code:
quest kill begin
	state start begin
		when login begin
			pc.setqf("pvm_kills", 0)
			pc.setqf("metin_kills", 0)
			send_letter("Monster Statistik")
		end
		when info or button begin
			say_title("Statistik ab Login:")
			say("Getötet Monster:")
			say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
			say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
		end
		when kill with not npc.is_pc() begin
			if in_list(npc.get_race(), {8001, 8002, 8003}) then
				pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
				return
			end
			pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
		end
	end
end
rollback is offline  
Thanks
2 Users
Old 04/12/2015, 12:39   #4
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
Danke für die Antworten,

leider sagt er bei deinem Script immer: Calls undeclared function!: in_list

Ich habe meinen Code noch ein wenig bearbeitet und das mit den Metins auch gelöst. (Zwar nicht so schön wie euers - aber es geht )

Code:
quest kill begin
    state start begin
        when login begin
            pc.setqf("pvm_kills", 0)
			pc.setqf("Metin_kills", 0)
            send_letter("Monster Statistik")
        end
        when kill begin
            if npc.get_race() then
                pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
				if npc.get_race() == 8001 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8002 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8003 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8004 then
					pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8005 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8006 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8007 then
					pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8008 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8009 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8010 then
					pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8011 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8012 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8013 then
					pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8014 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8024 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8025 then
					pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8026 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
				elseif npc.get_race() == 8027 then
                    pc.setqf("Metin_kills", pc.getqf("Metin_kills")+1)
                end
            end
        end
        when info or button begin
            say_title("Getötet Monster und zerstörte Metin Steine:")
			say(" ")
            say("Statistik ab Login:")
            say_reward("Monster getötet: "..pc.getqf("pvm_kills").."")
			say_reward("Metins zerstört: "..pc.getqf("Metin_kills").."")
        end
    end
end
Könnt ihr mir nur noch helfen wie ich es schaffe das er die Werte speichert ? So das sie auch noch nach einem Relog noch angezeigt werden ?

Wäre euch echt dankbar!

Gruß
Geneesys
geneesys is offline  
Old 04/12/2015, 12:44   #5

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by geneesys View Post
Danke für die Antworten,

leider sagt er bei deinem Script immer: Calls undeclared function!: in_list

Ich habe meinen Code noch ein wenig bearbeitet und das mit den Metins auch gelöst. (Zwar nicht so schön wie euers - aber es geht )


Könnt ihr mir nur noch helfen wie ich es schaffe das er die Werte speichert ? So das sie auch noch nach einem Relog noch angezeigt werden ?

Wäre euch echt dankbar!

Gruß
Geneesys
Code:
quest kill begin
	state start begin
		when login begin
			send_letter("Monster Statistik")
		end
		when info or button begin
			say_title("Statistik:")
			say("Getötet Monster und zerstörte Metin Steine")
			say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
			say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
		end
		when kill with not npc.is_pc() begin
			if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
				pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
				return
			end
			pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
		end
	end
end
die Questfunktion "in_list" findest du in dem Thread den ich oben verlinkt habe.
rollback is offline  
Old 04/12/2015, 12:49   #6
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
HEy und danke für deine Antwort,

ich versteh nicht ganz was du mit in_list meinst o:

Auch das:

Code:
function in_list(compare, list)
	for i = 1, table.getn(list) do
		if compare == list[i] then return true end
	end
	return false
end
... hilft mir nicht so ganz weiter ? Muss ich das noch in mein Script einbauen ?

EDIT;
Okey ich "war" dumm Wenn ich den Wert jedes mal beim Login auf 0 setzte kann er das auch nicht behalten D:
Vielen Dank
geneesys is offline  
Old 04/12/2015, 12:53   #7
 
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
Quote:
Originally Posted by geneesys View Post
HEy und danke für deine Antwort,

ich versteh nicht ganz was du mit in_list meinst o:

Auch das:

Code:
function in_list(compare, list)
	for i = 1, table.getn(list) do
		if compare == list[i] then return true end
	end
	return false
end
... hilft mir nicht so ganz weiter ? Muss ich das noch in mein Script einbauen ? Ist die In_List Funktion die, die das ganze "speichert" ?

Vielen Dank
Du gehst in die Questlib. Fügst die Funktion da ein. Du kennst dann in die Quest_Functions list und fügst in_list ein.
KΛIƬӨ is offline  
Old 04/12/2015, 12:57   #8

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Nein, die in_list Funktion ist einfach zur Verkürzung der Abfrage ... :

ohne in_list:
Code:
if npc.get_race() == 8001 or npc.get_race() == 8002 or npc.get_race() == 8003 or npc.get_race() == 8004 then
mit in_list:
Code:
if in_list(npc.get_race(), {8001, 8002, 8003, 8004}) then


Zum Einbauen:

im Questordner ist eine Datei namens "questlib.lua", die musst du einmal runterziehen und ganz unten den Code von der in_list Funktion einfügen.

Dann gibt es im Questordner eine Datei names "quest_functions", die musst du auch einmal runterziehen und egal wo (Hauptsache in einer eigenen Zeile) schreibst du "in_list" rein.

Dann beides wieder hochladen und die Quest neu kompilieren



edit:
Quote:
Originally Posted by geneesys View Post
EDIT;
Okey ich "war" dumm Wenn ich den Wert jedes mal beim Login auf 0 setzte kann er das auch nicht behalten D:
Vielen Dank
Das habe ich ja auch oben schon geschrieben ...
Ich hoffe die benutzt jetzt nicht deine Quest mit den tausenden Abfragen ...
rollback is offline  
Thanks
1 User
Old 04/12/2015, 14:46   #9
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
Hat super funktioniert =) Danke dir!

Darf ich dich noch was fragen :P ?

Wenn ich nun noch eine Statistik einfügen möchte von aufgehobenen Gegenstände:

Wie genau stelle ich das an ?

Soweit meine Theorie o.o (nicht lachen)

Code:
quest kill begin
	state start begin
		when login begin
			send_letter("Statistik")
		end
		when info or button begin
			say_title("Getötet Monster und zerstörte Metin Steine:")
			say(" ")
            say(pc.get_name().." hat bereits folgendes erreicht:")
			say(" ")
            say_reward("Monster getötet: "..pc.getqf("pvm_kills").."")
			say_reward("Metins zerstört: "..pc.getqf("metin_kills").."")
			say_reward("Truhen gesammelt: "..pc.getqf("truhen_pick").."")
		end
		when kill with not npc.is_pc() begin
			if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
				pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
				return
			end
			pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
		end
		when 50125.pick begin
			pc.setqf("truhen_pick", pc.getqf("truhen_pick")+1)
		end
		
	end
end
Was läuft da falsch ._. ?
geneesys is offline  
Old 04/12/2015, 14:53   #10

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Den Trigger "pick" habe ich selbst noch nie benutzt, sollte aber laut Jayzon so funktionieren ... welchen Gamecore hast du?
rollback is offline  
Old 04/12/2015, 15:02   #11
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
Entschuldigung das ich immer neue fragen stellen muss.

Wo genau finde ich die Gamecore info ? Habe gerade mal unter CH-core1 in die Version.txt geschaut:

2089M

Hoffe das ist gemeint :P

Ansonsten:

Kann ich das auch ohne "pick" lösen ? Anmeckern tut mein Server das nicht aber er "counted" es auch nicht.

Gruß
Geneesys
geneesys is offline  
Old 04/12/2015, 15:16   #12

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Ne anders wüsste ich nicht ...
rollback is offline  
Thanks
1 User
Old 04/12/2015, 15:19   #13
 
elite*gold: 0
Join Date: Apr 2015
Posts: 22
Received Thanks: 2
Das ist schade o:

Trotzdem hast mir sehr geholfen!

Vielen Dank noch mal =)
geneesys is offline  
Old 04/12/2015, 15:20   #14
 
elite*gold: 0
Join Date: Apr 2015
Posts: 26
Received Thanks: 32
Quote:
Originally Posted by definitely not Sensenmann View Post
Code:
quest kill begin
	state start begin
		when login begin
			send_letter("Monster Statistik")
		end
		when info or button begin
			say_title("Statistik:")
			say("Getötet Monster und zerstörte Metin Steine")
			say_reward("Du hast bis jetzt "..pc.getqf("pvm_kills").." Monster getötet.")
			say_reward("Du hast bis jetzt "..pc.getqf("metin_kills").." Metins zerstört.")
		end
		when kill with not npc.is_pc() begin
			if in_list(npc.get_race(), {8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8024, 8025, 8026, 8027}) then
				pc.setqf("metin_kills", pc.getqf("metin_kills")+1)
				return
			end
			pc.setqf("pvm_kills", pc.getqf("pvm_kills")+1)
		end
	end
end
die Questfunktion "in_list" findest du in dem Thread den ich oben verlinkt habe.
Code:
local r = npc.get_race()
if r >= 8001 and r <= 8027 then
    -- .....
end
​Remix is offline  
Old 04/12/2015, 15:23   #15

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by ​Remix View Post
Code:
local r = npc.get_race()
if r >= 8001 and r <= 8027 then
    -- .....
end
er möchte nicht alle zwischen ..1 und ..27
rollback is offline  
Closed Thread




All times are GMT +2. The time now is 05:29.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.