Register for your free account! | Forgot your password?

You last visited: Today at 03:31

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

Advertisement



[Smal-Release]File Check via bin

Discussion on [Smal-Release]File Check via bin within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
[Smal-Release]File Check via bin

Hallöchen Epvp,

Ich wollte euch mal Zeigen wie ihr eine Checklist macht. Sowas gibt es schon in Python aber das kann man umgehen.

Also Fangen wir mal an

Öffnet die UserInterface.cpp und geht unter "static const char * sc_apszPythonLibraryFilenames[] ="

nun erstellen wir ( als example ) für den Ordner Miles eine neue Liste, die schaut dann so aus:

Code:
static const char * MilesFileName[] =
{
	"mssa3d.m3d",
	"mssds3d.m3d",
	"mssdsp.flt",
	"mssdx7.m3d",
	"msseax.m3d",
	"mssmp3.asi",
	"mssrsx.m3d",
	"\n",
};
sollte so aussehen:


Nun gehen wir unter die Funktion "bool CheckPythonLibraryFilenames()" und fügen das hier ein:

Code:
bool MilesFileNameCheck()
{
	for (int i = 0; *MilesFileName[i] != '\n'; ++i)
	{
		std::string stFilename = "miles\\";
		stFilename += MilesFileName[i];

		if (_access(stFilename.c_str(), 0) != 0)
		{
			return false;
		}
		MoveFile(stFilename.c_str(), stFilename.c_str());
	}
	return true;
}
Sollte so aussehn:


Nun haben wir schonmal das auslesen, nun kommt die funktion dazu und dafür sucht ihr "if (!CheckPythonLibraryFilenames())"

Da fügt ihr das darunter:
Code:
if (!MilesFileNameCheck())
	{
		__ErrorMilesNoExist();
		goto Clean;
	}
Schaut dann so aus:


Nun suchen wir "void __ErrorPythonLibraryIsNotExist()" und fügen das darunter:
Code:
void __ErrorMilesNoExist()
{
	LogBoxf("FATAL ERROR!!");
}
Bild dazu:


Und schon haben wir es geschafft, es tut mir leid das ich die C++ fachkenntisse noch nicht habe um zu sagen was genau was ist aber man sollte es verstehen, desswegen auch mit bildern.
Dan kann man beliebig machen auch mit den PACK ordner und einzelnen Daten.


Ich hoffe ich konnte einigen helfen, wenn es schon bekannt ist werde ich es natürlich closen lassen. Und bitte haltet euch zurück ich weiß selber das es hier leute gibt die mit ihren Ober-Skills alles besser können aber jeder fängt mal klein an


.Kori
.K0rí is offline  
Thanks
12 Users
Old 05/19/2015, 10:11   #2


 
Ryme™'s Avatar
 
elite*gold: 0
The Black Market: 1443/0/0
Join Date: Apr 2014
Posts: 1,588
Received Thanks: 294
Schönes Ding Danke!
Ryme™ is offline  
Thanks
1 User
Old 05/19/2015, 10:18   #3


 
MrTherzon's Avatar
 
elite*gold: 170
The Black Market: 179/0/1
Join Date: Dec 2012
Posts: 9,372
Received Thanks: 2,726
Schönes ding Kori.

Haste wie immer Toll gemacht <3

Thx
MrTherzon is offline  
Thanks
1 User
Old 05/19/2015, 11:12   #4
 
Snal™'s Avatar
 
elite*gold: 10
Join Date: Dec 2014
Posts: 64
Received Thanks: 6
Danke Sehr nützlich
Snal™ is offline  
Thanks
1 User
Old 05/19/2015, 11:38   #5
 
fcsk_aim's Avatar
 
elite*gold: 100
Join Date: Dec 2014
Posts: 93
Received Thanks: 51
maybe you make a tutorial , how can I do to put all the DLLs into a special folder of client.
I mean to create a client folder and put them in there.
Should change the location of launcher source, but do not know where ...


Aniway, good job thanks
fcsk_aim is offline  
Old 05/19/2015, 15:06   #6
 
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
Niemals mit goto arbeiten.
i[Remix] is offline  
Thanks
1 User
Old 05/19/2015, 15:08   #7
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
Quote:
Originally Posted by i[Remix] View Post
Niemals mit goto arbeiten.
Danke für deinen Tipp, wie könnte oder sollte ich es sonst machen? Würde mich jezt Interessieren.

.Kori
.K0rí is offline  
Old 05/19/2015, 15:10   #8
 
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
Quote:
Originally Posted by .K0rí View Post
Danke für deinen Tipp, wie könnte oder sollte ich es sonst machen? Würde mich jezt Interessieren.

.Kori
Am einfachsten wäre es, den Part in eine Funktion zu packen.
i[Remix] is offline  
Thanks
1 User
Old 05/19/2015, 15:27   #9
 
kstmr's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 95
Received Thanks: 29
it is a small release indeed , kind of useless if you ask me. it just check if the files exist. same as ymirs , normaly you should make a src check and ....etc
kstmr is offline  
Thanks
1 User
Old 05/19/2015, 16:02   #10
 
elite*gold: 26
Join Date: Oct 2011
Posts: 1,262
Received Thanks: 1,064
Quote:
Originally Posted by i[Remix] View Post
Niemals mit goto arbeiten.
Hast zwar teilweise recht mit der Aussage, jedoch ist eine Begründung zu einer solchen Aussage immer etwas ganz tolles

Remix hat recht, dass man in diesem Fall kein 'goto' verwendet. Man produziert durch 'goto' einen sehr unübersichtlichen und schwer zu bearbeitenden Code.

Trotzdem ist das goto (wie Remix das behauptet) nicht vollkommen useless. Man nutzt gotos zum Beispiel um aus nem deeply-nested loop zu springen. Ist des öfteren sauberer als einzeln in jedem Level des Loops zu checken wie es um den Status der Bedingung steht.

bspw:
Code:
for(auto a : ab) {
	for(auto b: bc) {
		for(auto c: cd) {
			[...]
			if(bedingung)
				goto breakit_here;
			[...]
		}
	}
}
Danke für das Release!
Freut mich, dass du dich doch noch der C++ Gemeinde anschließt..
Falls du fragen hast, weißt du ja wie man mich erreicht!
He3o Crysis is offline  
Thanks
1 User
Old 05/19/2015, 16:47   #11
 
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
Quote:
Originally Posted by .He3o Crysis View Post
Trotzdem ist das goto (wie Remix das behauptet) nicht vollkommen useless. Man nutzt gotos zum Beispiel um aus nem deeply-nested loop zu springen. Ist des öfteren sauberer als einzeln in jedem Level des Loops zu checken wie es um den Status der Bedingung steht.

bspw:
Code:
for(auto a : ab) {
	for(auto b: bc) {
		for(auto c: cd) {
			[...]
			if(bedingung)
				goto breakit_here;
			[...]
		}
	}
}
Danke für das Release!
Freut mich, dass du dich doch noch der C++ Gemeinde anschließt..
Falls du fragen hast, weißt du ja wie man mich erreicht!
Wozu gibt es break und return?
i[Remix] is offline  
Thanks
1 User
Old 05/19/2015, 17:34   #12
 
elite*gold: 26
Join Date: Oct 2011
Posts: 1,262
Received Thanks: 1,064
Quote:
Originally Posted by i[Remix] View Post
Wozu gibt es break und return?
Wie gesagt, du hast schon teilweise Recht mit dem was du sagst, jedoch ist die Verwendung des 'goto' in einigen Situationen durchaus eine Überlegung wert.

Wenn der Code so aussieht (und ohne Workaround gearbeitet werden soll) ist das hier meiner Meinung nach die bessere Lösung.

Code:
#include <iostream>
#include <string>

int main() {
	// your code goes here
	for(int i = 0; i < 20; i++) {
		for(int j = 0; j < 10; j++) {
			for(int k = 0; k < 5; k++) {
				for(int l = 0; l < 5; l++) {
					if(i == 2)
						goto break_it;
					std::cout << "cout l" << std::to_string(l) << " :<" << std::endl;
				}
				//dostuff here
				std::cout << "cout k" << std::to_string(k) << " :<" << std::endl;
			}
			std::cout << "cout j" << std::to_string(j) << " :<" << std::endl;
			//dostuff here
		}
		std::cout << "cout i" << std::to_string(i) << " :<" << std::endl;
		//dostuff here
	}
	std::cout << "doing normal stuff here. :<" << std::endl;
	//dostuff here
	
	break_it:
		std::cout << "jumped out.. easy fast and clean. :>";
	return 0;
}
He3o Crysis is offline  
Old 05/19/2015, 20:19   #13
 
xCPx's Avatar
 
elite*gold: 20
Join Date: Jun 2011
Posts: 2,897
Received Thanks: 3,336
Quote:
Originally Posted by i[Remix] View Post
Wozu gibt es break und return?
Dir ist bewusst, dass ein C++ goto als asm jump verarbeitet wird.
Was übrigens ein break auch macht

Mit Goto zu arbeiten ist eventuell ein wenig unübersichtlich für Leute die von Assembler keine Ahnung haben, allerdings in sachen Performance ner Funktion deutlich voraus, da bei der Umwandlung der aus bsp
Code:
break_it:
     i++

goto break_it
lediglich der jump zum Offset gesetzt wird.
für den fall dass break_it an offset 0x81312 ist:

Code:
jmp 0x81312
bei einer funktion werden automatisch register reserviert etc.
xCPx is offline  
Old 05/19/2015, 22:22   #14
 
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
Quote:
Originally Posted by xCPx View Post
Dir ist bewusst, dass ein C++ goto als asm jump verarbeitet wird.
Was übrigens ein break auch macht

Mit Goto zu arbeiten ist eventuell ein wenig unübersichtlich für Leute die von Assembler keine Ahnung haben, allerdings in sachen Performance ner Funktion deutlich voraus, da bei der Umwandlung der aus bsp
Code:
break_it:
     i++

goto break_it
lediglich der jump zum Offset gesetzt wird.
für den fall dass break_it an offset 0x81312 ist:

Code:
jmp 0x81312
bei einer funktion werden automatisch register reserviert etc.
Wenn man immer mit goto arbeitet, wird es früher oder später so wie so unübersichtlich.
i[Remix] is offline  
Thanks
1 User
Old 05/20/2015, 15:42   #15
 
Fydes's Avatar
 
elite*gold: 534
Join Date: Mar 2014
Posts: 1,614
Received Thanks: 983
Schaut gut aus!
Danke
Fydes is offline  
Reply


Similar Threads Similar Threads
[Smal-Release[C++]]Full EQ+Bonis(mit gm command)
04/04/2015 - Metin2 PServer Guides & Strategies - 14 Replies
Hallo Epvp, Ich weß nicht wie man es nennen sollte also es geht mehr um 2 Chat commands die ich gestern gefunden habe im Source. hier mal die standart codes: item_full_set = ( Gibt rassenabhängig EQ ) attr_full_set = ( Gibt auf alles was man anhatt Bonis ) Diese findet ihr in der cmd.cpp
[Smal-Release]Alt+F4 Funktion
03/10/2015 - Metin2 PServer Guides & Strategies - 11 Replies
Guten Abend Elitepvpers, Ich wollte wieder mal was Releasen ;) Zum Release: Ihr Öffnet die game.py und sucht nach:
File Check was ist DAs??
05/21/2011 - WarRock - 5 Replies
#Closed
please check this file
07/26/2009 - Dekaron - 7 Replies
i dont know if its a keylogger, legit, or something else, how can we tell where it send info or connects to? removed as had a complaint.



All times are GMT +2. The time now is 03:31.


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.