Register for your free account! | Forgot your password?

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

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

Advertisement



[quest]partyquests; when party_kill

Discussion on [quest]partyquests; when party_kill within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
[quest]partyquests; when party_kill

Hello there,

Versuche grade 'ne Spambare allgemein-Quest zu machen, welche als Gruppe funktionieren soll, bei der die Gruppenspieler x Monster töten, und bei jedem Kill des bestimmten Monsters bekommt jeder Spieler der Gruppe: x - 1.

Aus alten Quests, die ich von vor Jahren bei der Questerstellung in Auftrag gab', hab' ich das when-event "when party_kill begin".

Leider musste ich eben feststellen, dass bei diesem Event nur der Partyleader die noch-zu-tötenden mobs gesenkt bekommt.

Quest:

Dazu meine Frage:

ich wollte das ganze jetzt via party.setf("Variable", Zahl) regeln, aber hierbei öffnet sich ein Bug - wenn der Spieler die Gruppe verlässt ist party.getf automatisch auf 0.

Das ganze f u c k t mich schonwieder so dermaßen ab, die Dungeon- und Party-Befehle bieten 0 Oberfläche für ein Vorteilhaftes Zusammenspielen der Spieler, daher ->

Wie würdet ihr das ganze realisieren?
Das ganze soll möglichst mobil funktionieren - dass man ohne Party an der selben stelle weitermachen kann wie mit party, beim Gruppen-verlassen sollte sich nichts ändern, blablabla ...
Dyshaxo is offline  
Old 11/17/2014, 20:25   #2
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Du kannst es per normale QuestFlag machen & beim "kill"-Trigger abfragen ob man in der Party ist & falls ja: gebe allen Spielern in der Gruppe +1.
Beispiel:
Code:
when kill begin
	local c = pc.getqf("kill") + 1
	pc.setqf("kill", c)
	
	if party.is_party() then
		local vid = pc.get_vid()
		
		local pids = {party.get_member_pids()}
		for i = 1, table.getn(pids) do
			if pc.select(pids[i]) != 0 then
				local oc = pc.getf("MEIN_QUEST_NAME", "kill") + 1
				pc.setf("MEIN_QUEST_NAME", "kill", oc)
			end
		end
		
		pc.select(vid)
	end
end
Alternativ im Source den "party"-Trigger umschreiben, aber das wäre die aufwendigere Variante

€dit: PS: Du musst bei der Selektierung von anderen PC's darauf achten, dass du "pc.setf" und nicht "pc.setqf" nimmst (und dabei eben deinen Questnamen angibst), da beim anderen Spieler die Quest gerade nicht aktiv ist.

Kind Regards
Lefloyd is offline  
Thanks
1 User
Old 11/17/2014, 20:33   #3
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Quote:
Originally Posted by Lefloyd View Post
Du kannst es per normale QuestFlag machen & beim "kill"-Trigger abfragen ob man in der Party ist & falls ja: gebe allen Spielern in der Gruppe +1.
Beispiel:
Alternativ im Source den "party"-Trigger umschreiben, aber das wäre die aufwendigere Variante

€dit: PS: Du musst bei der Selektierung von anderen PC's darauf achten, dass du "pc.setf" und nicht "pc.setqf" nimmst (und dabei eben deinen Questnamen angibst), da beim anderen Spieler die Quest gerade nicht aktiv ist.

Kind Regards
Jetzt hab' ich nur noch mehr Fragen
Was sind die Rückgabewerte von:
pc.get_vid()
party.get_member_pids()
pc.select()

? Also wofür genau sind die?

dann ->
Zu "getqf"/"getf"/"setqf"/"setf" hätte ich noch 'ne Frage:

Worin genau liegt der unterschied dabei?
die "setf/getf" scheinen je nach party/pc unabhängig voneinander zu sein,
während "setqf/getqf" egal ob mit party. oder pc. davor - auf den selben Wert zugreiffen.
___________________________
Ich bin jetzt soweit - dass kills für Partymember gezählt werden, mittels party.setqf() und pc.getqf() außerdem - man kann beim verlassen der Gruppe weitermachen, aber -> beim Joinen einer Gruppe wird pc.getqf() auf den niedrigsten vorhandenen Wert innerhalb der Gruppe bzw. auf den Wert des Gruppenleaders gesetzt (hab' beim experimentieren nicht genau aufgepasst), und ich könnte mir immernoch vorstellen, dass die Spieler sich 'nen Chara machen, den sie bis z.B. 5 kills runterkloppen, und dann immer mit einem Chara joinen, leaven, 4 oger töten, joinen, leaven, 3 oger töten, blablabla, um damit ihre Quests schneller zu haben.
Dyshaxo is offline  
Old 11/17/2014, 20:47   #4


 
Benhero's Avatar
 
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
pc.get_vid() -> Virtuele Spieler ID ausgeben (z.B. "30042" Diese wird zufällig erstellt beim einlogen.)
party.get_member_pids() -> Viruele Spieler IDs der Gruppe. Dies dient damit man die Spieler einer Gruppe durchlaufen kann.
pc.select() -> damit kann man andere spieler auswählen und aktionen ausführen. z.B. das Spieler Teleportiert werden. Sie Items erhalten. Quest Flags zu setzen. Etc etc.

Grüße Benhero
Benhero is offline  
Thanks
1 User
Old 11/17/2014, 20:47   #5
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Ehhm, was genau ging bei der Quest die ich geschickt habe nicht? Kann schwer ein Problem lösen, wenn ich den Source dazu nicht habe (die Quest)^^

Zu deinen Fragen:
pc.get_vid: Gibt die "virtuelle ID" des Spielers aus, diese wird beim Einloggen generiert & beim Ausloggen "zerstört" -> ist einzigartig solang der Spieler online ist, daher auch quasi ein Zeiger auf den Spieler
party.get_memper_pids: gibt alle Spieler-IDs in der Gruppe zurück, das sind nicht die virtuellen IDs sondern die IDs, die auch in der player-Tabelle stehen
pc.select: selektiert eine "virtuelle ID" (so dass sich alle Befehle wie "pc.get_name()" etc. auf diesen Spieler auswirken)

-> Dabei merke ich, ich habe einen bzw. zwei Fehler in der Schnelle gemacht. Es muss folgendermaßen sein:
Code:
when kill begin
	local c = pc.getqf("kill") + 1
	pc.setqf("kill", c)
	
	if party.is_party() then
		local vid = pc.get_vid()
		
		local pids = {party.get_member_pids()}
		for i = 1, table.getn(pids) do
			if pc.select_pid(pids[i]) != 0 then
				if pc.get_vid() != vid then
					local oc = pc.getf("MEIN_QUEST_NAME", "kill") + 1
					pc.setf("MEIN_QUEST_NAME", "kill", oc)
				end
			end
		end
		
		pc.select(vid)
	end
end
Da sonst a) die falsche "Art" von ID selektiert wird und b) der Spieler die Tötung doppelt gezählt bekommen würde.

Hierbei steht "pc.select_pid" für "selektiere ID" (das gleiche wie pc.select nur dass es die reale ID (von der player-Tabelle) und nicht die "virtuelle ID" selektiert).

€dit: Ach ja, der Unterschied zwischen pc.setqf bzw. pc.setf. Hierbei steht dieser Command quasi für "pc.set_quest_flag" bzw. "pc.set_flag" -> beim ersten wählt er automatisch die aktuell laufende Quest aus um die jeweilige Flag zu setzen & beim 2. kann man selbst die Quest angeben, für die er es setzen soll. Da bei anderen Spielern keine Quest gesetzt ist, würde pc.setqf fehlschlagen.

Kind Regards
Lefloyd is offline  
Thanks
2 Users
Old 11/17/2014, 20:53   #6
 
Dyshaxo's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
Quote:
Originally Posted by Lefloyd View Post
Ehhm, was genau ging bei der Quest die ich geschickt habe nicht? Kann schwer ein Problem lösen, wenn ich den Source dazu nicht habe (die Quest)^^

Kind Regards
Ich bin mir fast sicher, dass deine Quest funktioniert, bloß will ich kein Script verwenden, welches ich selbst nicht verstehe :P

Jedenfalls - vielen dank für die Antworten, damit kann ich wirklich verdammt viel anfangen, und damit lassen sich viele meiner Ideen einfacher realisieren
Dyshaxo is offline  
Reply


Similar Threads Similar Threads
[ClownSro] Cap 110 |New System| New Quest| Free 1 Million silk |New Title Quest|
11/01/2014 - SRO PServer Advertising - 6 Replies
http://www11.0zz0.com/2014/07/13/02/812260850.png | Welcome to CLownSro • Pve Server • Fair Gameplay | Opening: 13-07-2014 Time: 18:00 ~ 20:00 +1 GMT CLown Website Facebook Page http://www13.0zz0.com/2014/07/13/02/148368929.png Server Features
[SPECIAL TEAM_WARP QUEST]'nd Metin2 Sweet Time Quest's Icons and News
01/27/2013 - Metin2 PServer Guides & Strategies - 22 Replies
deleted!
Compile all quest without quest's files list // Kompilieren Sie alle Quest ohne Quest
07/17/2011 - Metin2 PServer Guides & Strategies - 3 Replies
ENGLISH Hello dear community, this is a very simple guide but at the same time useful. How to compile ALL quest in the folder "quest" without the files list in the file "locale_list"? Easy! Open the file "make" and replace the content of the file with this: for f in *.quest; do ./qc $f; done Oki. Now set the 0777 permission to the file. Finally open a SSH client and sign in. Write the command: cd /game_file_folder



All times are GMT +2. The time now is 01: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.