Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server > Metin2 PServer Guides & Strategies
You last visited: Today at 12:47

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

Advertisement



[C++] Clientside BugFix für Clientabstürze

Discussion on [C++] Clientside BugFix für Clientabstürze within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
[C++] Clientside BugFix für Clientabstürze

Ahoi Seemänner,
es ist unglaublich was für Ungetüme einem auf hoher See begegnen, jedoch ist das nichts im Vergleich dazu, was dir begegnet wenn du dich mal genauer im Source von unseren lieben Freunden YMIR umschaust. Ich hatte komischerweise öfter mal Clientabstürze und wollte dem auf dem Grund gehen, also habe ich gesucht.. gesucht.. und herausgefunden, dass der Client manchmal beim Laden meiner "fog.tga" abschmiert.

Sehr komisch, denn er läd sie beim ersten mal korrekt ein und beim zweiten mal hat er sie ja sogar noch an der gleichen Adresse im Ram mit der gleichen Größe... achja die Größe, darauf wird von YMIR nicht besonders viel Wert gelegt. Spielt ja auch nicht so die Rolle, wann ne Datei zu Ende ist - findet ihr nicht auch ? :3

Schaut euch mal die Funktion CDXTCImage::LoadHeaderFromMemory in der Datei EterImageLib/DXTCImage.cpp an. Ihr werdet feststellen, sie besitzt lediglich ein Argument:
Code:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap)
Diese Funktion soll überprüfen, ob es sich um eine DDS-Datei oder eine andere Datei handelt, es wird also auf einen DDS-Header geprüft. Vielleicht ist euch aufgefallen, eine Größe von c_pbMap wurde nicht übergeben Der DDS-Header besitzt eine Größe von 125 (Magic + DDSURFACEDESC2)... alles gut und schön, doch was wenn eure Datei keine 125 Bytes groß ist? Tjaaaa meine fog.tga war 74 Bytes groß - ich denke das reicht an Erläuterungen oder?^^

Für alle die nicht wissen was sie tun müssen (hier ist das eigentliche Release):
Code:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap)
mit
Code:
bool CDXTCImage::LoadHeaderFromMemory(const BYTE * c_pbMap, int iSize)
ersetzen.
Unter
Code:
DWORD dwMagic;
Folgendes einfügen:
Code:
if (iSize < sizeof(DWORD))
		return false;
Unter
Code:
dwMagic = *(DWORD *) c_pbMap;
	c_pbMap += sizeof(DWORD);
Folgendes einfügen:
Code:
iSize -= sizeof(DWORD);
Unter
Code:
DDSURFACEDESC2 ddsd; // read from dds file
Folgendes einfügen:
Code:
if (iSize < sizeof(DDSURFACEDESC2))
		return false;
Unter
Code:
memcpy(&ddsd, c_pbMap, sizeof(DDSURFACEDESC2));
	c_pbMap += sizeof(DDSURFACEDESC2);
Folgendes einfügen (JA das ist wichtig!):
Code:
iSize -= sizeof(DDSURFACEDESC2);
Nun drei Zeilen über diese Funktion gehen wo ihr Folgendes seht:
Code:
return LoadFromMemory((const BYTE*) pvMap);
Das mit Folgendem ersetzen:
Code:
return LoadFromMemory((const BYTE*) pvMap, mappedFile.Size());
Nun geht ihr drei Zeilen unter die Funktion wo steht:
Code:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap)
Das mit Folgendem ersetzen:
Code:
bool CDXTCImage::LoadFromMemory(const BYTE * c_pbMap, int iSize)
Dann zwei Zeilen runter wo steht:
Code:
if (!LoadHeaderFromMemory(c_pbMap))
Das ersetzt ihr mit:
Code:
if (!LoadHeaderFromMemory(c_pbMap, iSize))
Die Deklarationen müsste ihr auch noch anpassen (bei den beiden Funktionen jeweils ein "int iSize" ans Ende der Argumentenliste hinzufügen), aber ich bin sicher das schafft ihr ohne ausführliches Tutorial. Nun nur noch die EterLib/GrpImageTexture.cpp öffnen und suchen nach:
Code:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf))
ersetzen mit:
Code:
if (image.LoadHeaderFromMemory((const BYTE *) c_pvBuf, bufSize))
Just to remember: Das ist nicht der ultimative Fix der alle Clientabstürze verhindert..^^ Er fixxt lediglich eine Quelle der Abstürze - aber besser als nix oder ?

€dit: Short english explanation: There was a missing file size check in the function where the image files are checked on their format (dds or not dds) - and if the dds header was checked and the file was smaller than the dds header size (125mb) it could happen that the client aborted because he thought it was a dds file and tried to read farther than the file reaches. Well, bad english and I didn't really tried hard but I hope you're able to understand :3

Ihr habts geschafft :3

Lefloyd ^_^
Lefloyd is offline  
Thanks
25 Users
Old 10/11/2015, 20:11   #2
 
QuickFlameZ's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 646
Received Thanks: 696
Bist schon so ein Noob nh!

Nettes Release :*
QuickFlameZ is offline  
Old 10/11/2015, 20:30   #3
 
.T4Ump's Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 115
Received Thanks: 193
Please, english? I dont know what it does But thanks ^^
.T4Ump is offline  
Old 10/11/2015, 20:36   #4
 
TiRez's Avatar
 
elite*gold: 125
Join Date: Aug 2012
Posts: 641
Received Thanks: 2,461
Ouh ja... Wer kennt nicht diese Problematik, mit der man konfrontiert wird, wenn man mal den Source betrachtet.

[20:14:58] Kirito Dragneel: YMIR IST SO UNFÄHIG
[20:15:00] Kirito Dragneel: ICH VERSTEH SIE NICHT
[20:15:03] Kirito Dragneel: KÖNNEN DIE NICHT EINMAL
[20:15:06] Kirito Dragneel: BISSCHEN SAFE CODEN
[20:15:06] Kirito Dragneel: ALTEr

Danke für das Release <3
TiRez is offline  
Thanks
1 User
Old 10/11/2015, 20:39   #5
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Short english explanation added.

Jaaaa der Fehler hat mich schon bissl geraged xD ne scheiß Stunde verschwendet damit ._.
Lefloyd is offline  
Old 10/11/2015, 21:06   #6
 
.NennoX's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 795
Received Thanks: 693
Aus Prinzip Like da gelassen.

Weiter so! Kann zwar damit nichts anfangen, aber who cares.
.NennoX is offline  
Old 10/12/2015, 12:06   #7
 
elite*gold: 0
Join Date: Jan 2011
Posts: 54
Received Thanks: 2
How to add or change this function "int iSize"?


worldend is offline  
Old 10/12/2015, 12:32   #8
 
elite*gold: 0
Join Date: Aug 2012
Posts: 974
Received Thanks: 89
Das bringt jetzt waaaas
thespeedyy is offline  
Old 10/12/2015, 12:42   #9
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
Quote:
Originally Posted by thespeedyy View Post
Das bringt jetzt waaaas
Lesen bildet..?
Mi4uric3 is offline  
Thanks
1 User
Old 10/12/2015, 15:18   #10
 
elite*gold: 0
Join Date: Oct 2015
Posts: 67
Received Thanks: 13
Quote:
Originally Posted by TiRez View Post
Ouh ja... Wer kennt nicht diese Problematik, mit der man konfrontiert wird, wenn man mal den Source betrachtet.

[20:14:58] Kirito Dragneel: YMIR IST SO UNFÄHIG
[20:15:00] Kirito Dragneel: ICH VERSTEH SIE NICHT
[20:15:03] Kirito Dragneel: KÖNNEN DIE NICHT EINMAL
[20:15:06] Kirito Dragneel: BISSCHEN SAFE CODEN
[20:15:06] Kirito Dragneel: ALTEr

Danke für das Release <3
Du weißt aber schon dass der Code 2004 angefangen wurde zu coden oder ?
Und dass es schlitz Augen gecoded haben

Kirito Dragneel
[Flash] is offline  
Old 10/12/2015, 15:33   #11
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
Quote:
Originally Posted by [Flash] View Post
Du weißt aber schon dass der Code 2004 angefangen wurde zu coden oder ?
Und dass es schlitz Augen gecoded haben

Kirito Dragneel
Was haben diese rassistischen Aussagen mit TiRez Nachricht zu tun?

@TiRez: Ich hab mich das auch immer gefragt, aber man muss halt auch (leider) die Realität sehen. Wenn du in Asien als Spiele-Entwickler arbeitest, wird dir meist leider nicht die Sicherheit, sondern die Geschwindigkeit als oberste Priorität gesetzt. Wär ja ansich kein Problem da ein Security-Auditing drüber laufen zu lassen, zahlt nur keiner. Wenn der Kunde Probleme mit Sicherheitslücken hat, werden die halt anschließend per Change-Request gefixt.
Mi4uric3 is offline  
Old 10/13/2015, 21:43   #12
 
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
Kann mir einer behilflich sein, habe 34 Errors.. ?
°Ace° is offline  
Old 10/13/2015, 21:53   #13
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
Danke dir ich habe es mal geadded in :
.K0rí is offline  
Old 10/14/2015, 18:55   #14
 
TiRez's Avatar
 
elite*gold: 125
Join Date: Aug 2012
Posts: 641
Received Thanks: 2,461
Quote:
Originally Posted by Mi4uric3 View Post
Was haben diese rassistischen Aussagen mit TiRez Nachricht zu tun?

@TiRez: Ich hab mich das auch immer gefragt, aber man muss halt auch (leider) die Realität sehen. Wenn du in Asien als Spiele-Entwickler arbeitest, wird dir meist leider nicht die Sicherheit, sondern die Geschwindigkeit als oberste Priorität gesetzt. Wär ja ansich kein Problem da ein Security-Auditing drüber laufen zu lassen, zahlt nur keiner. Wenn der Kunde Probleme mit Sicherheitslücken hat, werden die halt anschließend per Change-Request gefixt.
Huuuu,

mein Beitrag war eher ein Insider ^^ Klar ist mir das bewusst. Auch ist mir bewusst dass der Code 10+ Jahre her ist und die damals bestimmt net die größten Möglichkeiten hatten. Und auch ist mir bewusst, dass die wahrscheinlich nicht damit gerechnet hatten den Source public zu sehen.

Nichts desto trotz danken wir ymir für ihre Arbeit, was für uns zum Hobby wurde.
TiRez is offline  
Old 10/15/2015, 00:57   #15
 
elite*gold: 0
Join Date: Jan 2011
Posts: 54
Received Thanks: 2
Quote:
Originally Posted by worldend View Post
How to add or change this function "int iSize"?


!! Refresh !! How to add this declaration. Any one please?
worldend is offline  
Reply


Similar Threads Similar Threads
3.3.5a Mangos BugFix
01/07/2013 - WoW Private Server - 6 Replies
Hallo, Mir sind heute auf meinem Server drei Bugs aufgefallen einmal am Luftschift in der ICC stehen keine NPCS der globlin für die rakete und der andere dass es losfährt. Dann konnte mit meinem Pala keine Plattenrüsstung in Dala kaufen es wurde zwar Platte angezeigt aber ich konnte sie net tragen... Und dann auf der GM Insel waren keinerlei NPC`s Wie behebt man den solche Bugs wo genau muss man da suchen ?
Bugfix für den Relogbug
12/23/2012 - 4Story - 7 Replies
Moin ich wollt mal fragen ob einer von euch den Fix für den "items sind nach relog weg bug" kennt und ihn verrät da es echt nervt wenn man normal spielen möchte mfg ;D
[Clientside]Clientside Hack!
12/25/2011 - Nostale - 13 Replies
Abend zusammen. Hier mal ein Clientside hack mit aktuellen pointern http://img6.imagebanana.com/img/rqorhed3/Clientsi de.JPG Aussehen: Ändert das aussehen vom Equip. zB. das Act5 Teil2 Equip



All times are GMT +1. The time now is 12:47.


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.