Bitte melden Sie sich an, um diesen Link zu sehen.
PS: This law will valid in all EUROPE
Beiträge von Ira™
-
-
-
The archive contains only one header file(debug.hpp):
C: debug.hpp- #pragma once
- #define METIN2_DEBUG_TRACE_ENABLED
- #include <metin2/debug/config.hpp>
- #include <metin2/debug/printer.hpp>
- #include <metin2/debug/trace.hpp>
- /*
- METIN2_DEBUG_TRACE("CClientManager::~ClientManager");
- METIN2_DEBUG_TRACE_ARGS("CClientManager::SetPlayerIDStart", iIDStart);
- m_valueMap.insert(TValueMap::value_type(comment, szTmp));
- METIN2_DEBUG_SAY() << "inserting {"
- << std::quoted(comment)
- << ", " << std::quoted(szTmp)
- << " }";
- METIN2_DEBUG_SAY() << "mysql_query error: " << mysql_error(&m_hDB);
- */
So it's useless, and I didn't get the point why we need this.
Like remix said, do you heard about debug logging?
Just download the files again.
- You can see the backtrace Live( You can see when the function it's called)
- You can see real values of the function arguments/ it's much easy to debug
- You don't need format aguments
- Let's say you write a system, a complex system. You want to see when function X call function Y. See the real values send by packets.. You can add a DEBUG_TRACE print and evrything will be print intro putty console.
Just read again the topic. For me is very usefull when debugging and developing new feaures.
It's a live backtrace
Instead of setting breakoints you can use the DEBUG_TRACE, and see the way of all codes. Directly in putty.
PS:I have added a GIF. -
Hi, I was bored to always use sys_err when troubleshooting systems and problems.
So I decided to write a printerMETIN2_DEBUG_TRACE
When the Destroy function is called, DEBUG_TRACE will print that text intro the putty console.
In this way you can see if your function is really called and when is called.- Debug_Trace can't have arguments
METIN2_DEBUG_TRACE_ARGS
- It's same as DEBUG_TRACE but you can add arguments.
- This will print intro Putty console the CClientManager::SendShops and the pid number.
METIN2_DEBUG_SAY
- Say it's same as these two, but you can add it more times in a function body (debug_trace and debug_trace_args can be added just one in a function)
Bitte melden Sie sich an, um dieses Bild zu sehen.
Here i used to debug some login issues.Bitte melden Sie sich an, um diesen Link zu sehen.
Good luck with developing,.
For any issue message me. -
There are no such lines in the default source.
You do not even know what you post, in fact.
This crash is most likely in your source. Because of a particular system. -
Updated the Launcher seeling section.
- Added the price
- Added feature list
- Added more information
You can request any features for launcher when do you wish. I'll try to do as fast as possible.
Bitte melden Sie sich an, um diesen Link zu sehen.
-
In this update :
- Official root 2018 (I have removed all systems added, to make it clean and compatible with my sources)
- Added intro serverfiles official UI stuff( these icons for guild menu e.t.c)
- I started to rewrite the whole affect system. 40% done.. Many of you complained about lags. When affect system will be done, it will contain a README helping you to upgrade systems.. and so on
- I started to rewrite the whole DBManager class : Here you can download the inital commit, is not so much but you can make an ideea about the coding/skills/ Bitte melden Sie sich an, um diesen Link zu sehen.
Soon the price for source will increase. -
Apparently, you use my old source. My sincere advice is not to use that version. You will see when you open the server why I advised you that.
That version has a lot of crashes. And two critical bug
xD -
Don't forget. You can request a test client.
I'm working on method to block memory acces.And bump
-
Paste your whole GameType.h HERE Bitte melden Sie sich an, um diesen Link zu sehen.
The error means that variable is defined 2 times. -
Finde es witzig, dass du immer noch nicht versuchst ihm zu helfen. Stattdessen spamst du den Thread weiter voll.
Ok Erklärung im ganzen wie ich es bis jetzt nur erfassen konnte:
Unknown packet header: 243, last: 1 136Er hat diesen Fehler hier, also gehe ich nun in die Packet.h und such die Zahl 243.
Serverside sowie Clientside ich nehm mein Beispiel und gehe zur 147 das ist mein Pet-System. HEADER_CG_PetSetName = 147,
Suche nach PetName
Serverside:
#ifdef __NEWPET_SYSTEM__
typedef struct packet_RequestPetName
{
BYTE byHeader;
char petname[13];}TPacketCGRequestPetName;
#endifClientside
#ifdef NEW_PET_SYSTEM
typedef struct packet_RequestPetName
{
BYTE byHeader;
char petname[13];
} TPacketCGRequestPetName;
#endifjetzt bemerk ich z.B. das in meinem Beispiel:
BYTE index;
z.b. bei einer der beiden nur vorhanden ist.Also füge ich dieses BYTE index; einfach ein, wo es fehlt.
Packet Header Fehler: es wird ein Packet nicht gesendet weil es nicht Existiert oder ein Problem aufgetreten ist beim Senden.Bin mir nicht mehr ganz Sicher ob der Packet-Header Fehler auch kommt wenn z.B.
Serverside:
int damage;und Clientside
tinyint damage;wäre. Da kannst du ja einharken
Wenns noch mehr Möglichkeiten gibt eben so. Mir ist bis jetzt nur die hier untergekommen
Er ist ein Troll?
Du hast recht mit einigen Dingen.
Aber wie ich es dir schon gesagt habe. In der Standard-Metin2-Quelle gibt es kein Paket, das die Strukturen bearbeitet hat.
Das einzige Paket, das ich gefunden habe, ist View Equip. In dem Client war equips[16];, und auf dem Server war equips[WEAR_MAX_NUM]Das ist die einzige Struktur, die gefickt wird.
Auch alle Kopfzeilennummern sind korrekt.
Und wie ich Ihnen sagte, sind diese Fehler zufällig. Vertrau mir, es ist egal, ob du diesen Header gefunden hast. Ist wahrscheinlich ein falsches Ergebnis.
Wenn der Typ, der das Thema angefangen hat, ein Idiot ist und nicht weiß, wie man eine gute Frage stellt, ist das nicht unser Problem.
Wenn Sie eine gute Antwort bekommen wollen, dann stellen Sie eine gute Frage.Wenn er weiß, dass er Änderungen vorgenommen hat, sollte er nicht herkommen und fragen. Weil niemand ein Zauberer ist, um zu wissen, was er getan hat. Ich spreche über Themenstarter.
EDIT :
Es gibt 2 Arten von Paketen.
- Static sized
- Dynamic sizedInformieren Sie sich über statische und dynamische Pakete, bevor Sie sprechen.
-
packet.h clientside sowieso serverside
243
Nach der Zahl suchen.
Wenn es bei einem von beiden nicht existiert dann fügst du ihn ein
You have no idea, these errors are caused randomly. Maybe because of a poor user's network, or perhaps because the entire metin2 network is a shit.Some packets are not sent correctly, some of the packets are not checked correctly.
And I encountered this problem when I had an internet connection of 22kb / s. Whiteshark says the packets were sent late / were not sent completely / missing bits.
Of course, it can also be caused by a change made by the user. But this is not the case here.
-
I wrote these codes a long time ago. I have not used them since years.
C: EterPack.h- struct TeaKey
- {
- TeaKey(std::array<DWORD, 4>src): data_(src), copy(src) {}
- operator const std::uint8_t *()const
- {
- return reinterpret_cast<const std::uint8_t *>(data_.data());
- }
- operator const DWORD *()const
- {
- return data_.data();
- }
- operator DWORD *()const
- {
- return copy.data();
- }
- private:
- std::array<DWORD, 4>data_;
- mutable std::array<DWORD, 4>copy;
- };
C: EterPack.cpp- const TeaKey &s_adwEterPackKey()
- {
- static const TeaKey key
- {
- std::array < DWORD, 4 > {{
- 45129401UL,
- 92367215UL,
- 681285731UL,
- 1710201UL,
- }
- }
- };
- return key;
- }
- const TeaKey &s_adwEterPackSecurityKey()
- {
- static const TeaKey key
- {
- std::array < DWORD, 4 > {{
- 78952482UL,
- 527348324UL,
- 1632942UL,
- 486274726UL,
- }
- }
- };
- return key;
- }
Replace all :
withDo not expect to be a mega protection. Only so-called hackers will not be able to find the keys with the hexEditor.
As you can see in the topic title, just hide keys in hex. -
-
Bitte melden Sie sich an, um diesen Link zu sehen.
Bitte melden Sie sich an, um dieses Medienelement zu sehen.
Bitte melden Sie sich an, um diesen Link zu sehen.
-
New defines available
Code- #define ENABLE_GUILD_RANKING this define will enable a list in game with the guild rankings (require server define also)
- #define ENABLE_NEW_CURRENCY_WON
- this define will enable new curency won beside gold (equire server define also)
- #define DISABLE_COLLISION_IN_SAFEZONE this define let players walk through all players and shops when they are in safezone
- Refactor: I've rewritten the whole buffer system using boost::asio::streambuf, still in testings(Now the buffers are unlimited)
- I've removed all the DLL from client. Bitte melden Sie sich an, um diesen Link zu sehen.
- Refactor: Rewritten the BLEND_ITEM using modern coding. Only c++
- Refactor: I have replaced all primitive types int, unsinged int, char with new c++11 fixed types: int32_t, int64_t
- Source server cand be compiled on both amd64 and i386 directly. Without a jail etc
- Yang limit can easy be removed with just one line changing. In extern/include/typedef.h you will find this line using GoldType = int64_t
In the next update i will add:
- Soul bind system
- Guild safebox
- Advanced auction system.
Each system it's tested by 10 of my customers and works without any problem.
-
That's because one of the external libraries is compiled with an older version of the visual studio than the current one.
-
There is an incredible amount of boilerplate.
Bitte melden Sie sich an, um diesen Link zu sehen.with C++17 you can use fold expressions
If you want to be sure that an empty sum will also compile you can do this:
Also your code prevents a basic usage of max, for instance:
Will result inCode- error: non-const lvalue reference to type 'unsigned int' cannot bind to a value of unrelated type 'int' return (static_cast(first) > static_cast(second)) ? static_cast(first) : static_cast(second)
- note: in instantiation of function template specialization 'utils::Max' requested here std::cout << "max(" << u << ", " << i << ") = " << utils::Max(u, i);
- error: non-const lvalue reference to type 'unsigned int' cannot bind to a value of unrelated type 'int' return (static_cast(first) > static_cast(second)) ? static_cast(first) : static_cast(second)
You have many containers that don't have operator[] A std::list is out of scope your max function for a reason. The semnatics for a std::map can surprise too, since anyone with basic knoweldege of STL will cosidr const std::pair<key, T> TO BE the element type
-
"I have replaced mysql encryption, initially it was md5 now is aes. AES_ENCRYPT ("password", "secret key") // Even if they are able to steal the database, they won't be able to decrypt the passwords online without the secret key."
That sounds incredibly dumb. You're not supposed to encrypt the passwords, you're supposed to hash them.
If you want to replace MD5 with something better use bcrypt or argon or sha2 or whatever. But HASH them, don't encrypt them.This stuff I did about a couple of days after I recovered my data from a bad HDD, I had a damaged HDD for 8 months. I had all the data there, and I rushed.
At the time I used the resources available without much work. It's just a few changes to QUERY. Which can be done in about 10 seconds. I think it's better than nothing, for now.
As soon as I finish the requests made by my current clients, I will remove this shit and I will hash the password.
-
Update:
I have removed pack pack.Get
(PythonExtraction shouldn't be possible now) xD