Register for your free account! | Forgot your password?

You last visited: Today at 21:53

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

Advertisement



[src] Drophack/Item-Stealer blockieren

Discussion on [src] Drophack/Item-Stealer blockieren within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
xVanilla94's Avatar
 
elite*gold: 0
Join Date: Jan 2014
Posts: 90
Received Thanks: 565
[src] Drophack/Item-Stealer blockieren

Da mein Projekt leider unerwartet gelöscht und entfernt wurde, habe ich nun beschlossen, euch einfach mal etwas da zu lassen. Es ist ein wichtiger Bestandteil der vanilla Core gewesen. Er sollte eigentlich überall vorhanden sein, darum werde euch hier die Source-Änderungen zeigen. Da es sich hierbei nicht um kompletten Source-Code handelt, sondern lediglich um eine Anleitung, wie man den Drophack (erklärung dazu ein bisschen weiter unten) im Source beheben kann, sollte dieser Release gegen keine Regeln verstoßen. Der Code wurde auch von mir geschrieben. Demnach dürfte das alles hier legitim sein. Wenn ich schon so nicht helfen kann, dann eben so

Wie funktioniert der Drophack?
Die Erklärung ist relativ simpel. Wenn man einen Gegenstand aufhebt, überprüft der Client, wann du das letzte Mal einen Gegenstand aufgehoben hast (der kleine Delay, der verhindert, dass man zig Items nacheinander in kurzer Zeit aufheben kann). Danach wird überprüft, ob das Item dem Spieler gehört. Mit der Überprüfung ist in so weit auch alles okay. Sie verhindert, dass selbst wenn man in Gruppen ist, das Item nicht aufheben kann. Danach erst wird der Pickup-Befehl an den Server gesendet.
Was tut nun der Server? Der Server reagiert daraufhin mit einer Überprüfung, ob das Item dem Spieler gehört - tut es nicht, geht der Server automatisch davon aus, dass der Spieler in einer Gruppe ist und das Item einem aus der Gruppe gehört. Warum? YMIR hat dort ehrlich gesagt etwas verpatzt, denn der Server verlässt sich in dem Moment darauf, dass die Überprüfung im Clienten sauber war. Schafft man es aber, die Überprüfung komplett abzuschalten, so sendet der Client den Pickup-Befehl obwohl das Item der Gruppe gar nicht gehört! Der Server hingegen geht davon aus, dass es einem aus der Gruppe gehört und sucht diesen Spieler. Findet er ihn nicht, geht er davon aus, dass es dem Spieler gehört und gibt ihm das Item. Folglich: Der Drophack funktioniert.

Was kann man nun tun?
Die Lösung befindet sich in der char_item.cpp
Dort wird das Aufheben von Items umgesetzt. Scrollen wir dazu einfach einmal weiter runter, bis wir bei
Code:
namespace NPartyPickupDistribute
ankommen. Obendrüber fügen wir dann einfach folgenden Code von mir ein:
Code:
namespace NPartyPickupPermission
{
	struct FCompareOwnership
	{
		LPITEM item;
		bool is_allowed = false;

		FCompareOwnership(LPITEM item) 
			: item(item)
		{
		}

		void operator () (LPCHARACTER ch)
		{
			if (item->IsOwnership(ch) == true)
				is_allowed = true;
		}
	};
}
Das hier wird und dann später noch helfen. In diesem Namespace werden wir die Überprüfung stattfinden lassen, ob das Item dem Spieler gehört. Nun werden wir einfach beim Aufheben jedes Gruppenmitglied kurz durchleuchten, ob er der Besitzer des Items ist. Erst wenn sich ein Besitzer finden lässt, wird der Wert von is_allowed auf true umgelegt und somit ist es klar: Es gibt einen Besitzer. Findet man keinen, bleibt es bei false und das Aufheben wird verweigert. Schauen wir mal in CHARACTER::PickupItem, denn dort werden wir die alte Überprüfung finden. Wie wir sehen können, finden wir nach der Überprüfung, ob der Spieler auch nah genug zum Item steht, die Ownership-Überprüfung. Hierbei ist der Haken, denn wenn der Spieler der Besitzer ist, ist es kein Problem. Ist er das aber nicht (wir springen hierbei zu dem elseif) finden wir kurz darauf lediglich über funcfindOwnership die Suche nach dem Spieler, dem das Item in der Gruppe gehört. Dabei wird nicht überprüft, ob es den überhaupt gibt, es wird einfach so angenommen. Wir fügen also einfach kurz nach dem else if-Statement folgendes ein:
Code:
			bool is_allowed = false;
			NPartyPickupPermission::FCompareOwnership funcCompareOwnership(item);
			GetParty()->ForEachOnlineMember(funcCompareOwnership);
			is_allowed = funcCompareOwnership.is_allowed;
			if(is_allowed == false)
			{
				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item is not yours!"));
				return false;
			}
Dieser Code wird das Problem beheben. Er setzt zuerst eine Variabel auf false. Danach wird für jedes Mitglied aus der Gruppe (über ForEachOnlineMember) die Funktion aus meinem neu erstellten Namespace aufgerufen. Sollte bei einem dieser Durchläufe ein Gruppenmitglied gefunden werden, dem das Item tatsächlich gehört, wird, wie wir bereits wissen, die Variable is_allowed auf true gelegt. Das ganze werden wir dan auch lokal noch einmal übernehmen. Man könnte es auch ohne lokale Variable machen, ich persönlich bevorzuge es aber lieber so.
Letztendlich findet dann die Überprüfung statt, ob is_allowed jetzt wahr (also jemand wurde gefunden, dem das Item gehört) oder falsch (keinem Gruppenmitglied gehört das Item) ist. Bei Falsch wird diesmal eine Chatnachricht ausgegeben und die Prozedur abgebrochen.

Das ist auch schon alles. Mit dieser Änderung habt ihr den Drophack behoben. Was ich mir davon wünsche ist lediglich, dass es mehr Server gibt, die sich einmal an den Source setzen und solche Dinge schaffen. Man kann so viel aus dem Quellcode nehmen, Dinge, die einfach schönere Spiele schaffen. Man muss nur den Mut haben, sich mal hinzusetzen und diese Dinge zu tun. Heraus kommt so etwas. Server, die solche "Hacks" behoben haben. Server, die sich mit den Bugs vom Spiel auseinandersetzen und diese beheben. Ich mache meine Arbeit für euch und ich erwarte nichts, weder Thanks noch sonst irgendetwas (mit denen kann ich ohnehin nichts anfangen^^). Ich erhoffe mir nur, dass die Community daraus Nutzen ziehen kann. Oder zumindest einige.

Vanilla,
a developer doing her job.
xVanilla94 is offline  
Thanks
61 Users
Old 07/29/2014, 17:53   #2
 
.Inya's Avatar
 
elite*gold: 50
Join Date: Mar 2013
Posts: 2,401
Received Thanks: 1,613
Danke

Wird direkt mal gefixt o.o
.Inya is offline  
Thanks
1 User
Old 07/29/2014, 18:36   #3
 
Fearn's Avatar
 
elite*gold: 108
Join Date: May 2013
Posts: 456
Received Thanks: 854
Sehr schöne Arbeit Vanilla!
Danke!
Fearn is offline  
Old 07/29/2014, 18:41   #4

 
IgorGlock's Avatar
 
elite*gold: 1862
Join Date: Jan 2009
Posts: 3,725
Received Thanks: 7,671
Wenn man ehrlich ist, gibt's viel mehr von solchen Fällen im Sourcecode, kann man schön auf'm Offi-Server missbrauchen
IgorGlock is offline  
Old 07/29/2014, 19:04   #5
 
elite*gold: 0
Join Date: Sep 2010
Posts: 73
Received Thanks: 31
Nice work vanilla !
galetlefrancais is offline  
Old 07/29/2014, 19:05   #6
 
.Keyto's Avatar
 
elite*gold: 1250
Join Date: Oct 2010
Posts: 3,599
Received Thanks: 5,526
Sehr schön erklärt, danke.

Quote:
Originally Posted by IgorGlock View Post
Wenn man ehrlich ist, gibt's viel mehr von solchen Fällen im Sourcecode, kann man schön auf'm Offi-Server missbrauchen
Die meisten verstehen davon sowieso 0, aber ja es stimmt man kann damit vieles anfangen.
.Keyto is offline  
Old 07/29/2014, 19:12   #7
 
elite*gold: 110
Join Date: Oct 2009
Posts: 134
Received Thanks: 96
Can u make a diff or something? Thank you in advance!
[TM]SixSense is offline  
Old 07/29/2014, 19:39   #8
 
lollo_9_1's Avatar
 
elite*gold: 100
Join Date: Jun 2009
Posts: 168
Received Thanks: 711
tl;dr (I'll re-explain it in English)
So, as far as I understood, we only need to check whether or not owner is NULL. Nothing else.
The default code runs only if the player is in a group w/o checking whether the owner is in there or not. If the owner is not in your party, you'll become the new owner and be able to retrieve the item lied on the ground.

After this, only a real member of the real owner`s party can retrieve the item on the ground and only if the owner`s inventory is full (otherwise, it'll be given to the owner).
lollo_9_1 is offline  
Thanks
7 Users
Old 07/29/2014, 20:02   #9
 
[uLow]Beni's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 1,781
Received Thanks: 618
Wie konnte Ymir so lange brauchen?
Man wusste ja schon vor 3Jahren, dass man ItemStealen kann.
[uLow]Beni is offline  
Old 07/29/2014, 20:08   #10
 
elite*gold: 266
Join Date: May 2010
Posts: 4,650
Received Thanks: 5,612
Quote:
Originally Posted by [uLow]Beni View Post
Wie konnte Ymir so lange brauchen?
Man wusste ja schon vor 3Jahren, dass man ItemStealen kann.
Denen wars egal, Kohle kriegen sie so oder so auch.
.Raizel# is offline  
Old 07/30/2014, 00:25   #11
 
elite*gold: 0
Join Date: Jul 2014
Posts: 305
Received Thanks: 95
Geil : D
Erstmal fixxen danke
.Err0xR` is offline  
Old 07/30/2014, 01:49   #12
 
kstmr's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 95
Received Thanks: 29
great release vanilla
kstmr is offline  
Old 08/28/2014, 12:39   #13
 
elite*gold: 0
Join Date: Jun 2013
Posts: 19
Received Thanks: 2
Someone can translate it to English?

thanks a lot X.x
_BubbleGum is offline  
Old 08/28/2014, 13:11   #14
 
kstmr's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 95
Received Thanks: 29
Quote:
Originally Posted by _BubbleGum View Post
Someone can translate it to English?

thanks a lot X.x
google translator will do jsut fine
i dont know how she does this but its alwase perfect
kstmr is offline  
Old 08/28/2014, 14:16   #15
 
elite*gold: 0
Join Date: Jun 2013
Posts: 19
Received Thanks: 2
google translate?

i tried, but.. u know. f*ck this translator.

so, push my reply.


my bad. good translation this time.
_BubbleGum is offline  
Reply


Similar Threads Similar Threads
item stealer help plz
07/10/2012 - Metin2 - 2 Replies
hi guys yesterday i was on m2bob when i start to pick up all items on gorund even if they are not mind :) i like it :mofo: is there any one know an item stealer hack work in metin2.ae ??!!!
Item Stealer
04/11/2012 - Metin2 Private Server - 3 Replies
Hallo e*pvp, suche einen Itemstealer + Ghostmode, hoffe jemand kennt einen. Gruß .Delian
[HELP] Item Stealer
04/05/2012 - Metin2 Private Server - 0 Replies
Hello, Can anyone give me the link to download an item stealer for PSERVERS? It can be an old version of Unpublisheds Ultimate Tool. Thanks



All times are GMT +2. The time now is 21:53.


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.