Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 06/01/21 in all areas

  1. M2 Download Center Download Here ( Internal ) Mega
    3 points
  2. M2 Download Center Download Here ( Internal ) Hi I'd like to release my small project of hairs [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 46kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 47kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 48kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]]
    1 point
  3. Welcome hopeless developers, in an attempt to reduce some random questions, and considering I haven't found anything about this there, I'll share this small method to fix the packet errors, which requires thinking. There's no copy/paste here as it requires you to think of what you modified. This tutorial is, of course, indented for new people not for the rest. If you are interested in how to make a new packet, head here: What is it and how metin2 implementes it? Keeping things simple and understandable, a packet is an information exchanged between the Client or the Server. For example, when you press the button Space (to attack), the client will send an information (which is a packet), which will tell the server that we attacking the player Shiba324. Read this if you are more interested: [Hidden Content] Each packet needs to be identified in an unique way between client and server otherwise the client or server won't understand which thing you are sending, that's why each packet of Metin2 starts with "BYTE bId". We see this numbers inside an enum block (like PACKET_CG_LOGIN2 which identifies the login packet), while it's content is defined inside a struct block (like TPacketGCLogin2). The files which this packets are defines are Packet.h inside UserInterface and game/src. There are two packet types, dynamic and static, the static ones have a fixed length (the structure size), the dynamic have an extra data called (length, usually WORD), which tells the game the size of it. All the packets have a nomenclature, which I'll explain here: CG -> Client to Game (sent by the client) GC -> Game to Client (sent by the server) GG -> Game to Game (used by P2P packets for communicating two cores with eachother) Before seeing how to fix the errors, there's another thing that I will explain called Sequence system. What is the sequence system? It's a system introduced in newer clients (like 34k). It's basically a check which the client will send an extra data after a packet, and the server will verify if it's correct, in case it's not it will kick the player out of the server. The verision system works by sending a different number each time a packet is sent or received to the server, the client can send up to 32768 unique numbers before resetting itself to 0 (it's stored in a big array). Error type 1: Unknown packet header: XXX, last: YYY ZZZ Number explanations: XXX is the packet that the game/client cannot handle YYY and ZZZ are the last two packets sent before this error (usefull for investigating what packet caused this error) This error can happen before of the following issues: You modified the source and you haven't added inside PythonNetworkPhaseGame.cpp or packet_map.cpp the packet You have a packet which size mismatches between client and server Error type 2: SEQUENCE XXXXXXX mismatch 0xYY != 0xZZ header KK This error could happen for some reasons: You specified a packet which uses the sequence in packet_info (last value true/false) and in the client you forgot to add "SendSequence()" or viceversa You have a packet which size mismatches between client and server (the server is thinking a packet data is a sequence data) Error type 3: We don't really have syserrs here but we can see the client fuzzying around or doing wacky things (even crash at some point!) or the server/client fails to process all the data sent. This error could happen for some reasons: You have a packet which size mismatches between client and serve You forgot to add a Send() or forgot to Recv() the data inside the client tl;dr: always check for the following things if you are unsure: Check if you have added SendSequence and modified the true/false in packet_info (if you use sequence system) ALWAYS CHECK if Packet.h has the same ID and structures Check what action causes the issue so you can track down the code Always check the last headers sent, most of the time is just a byte not sent at the end Always check your implementation of input_main (Server) and PythonNetworkPhaseGamexxxxxxx (Client) Pro hack tip: __PACKETDUMP__ and ENABLE_SEQUENCE_SYSTEM are cool bois. Good luck.
    1 point
  4. Addition of a new forum: Web Development & Scripts / Systems
    1 point
  5. constinfo.py ACCESSORY_MATERIAL_LIST and JewelAccessoryInfos
    1 point
  6. Hello, i share my little fix (call it system is impossible ) to add automatically 4 bonus to all weapons and armor subtypes... i'm just bored to see "Reinforce Item" on sale from NPCs. Of course you can extend to add 5 bonus, in my case i prefer add only 4 bonus and to leave "Blessing Marble" dropped from mob. Work with items dropped from mob, items bought from NPCs, items created with /i command. In common/CommonDefine.h add In game/item.cpp In game/item_manager.cpp In game/questlua_game.cpp In game/shop.cpp A good combination is to implement also this:
    1 point
  7. You put the folder "christmas_2016_mammoth" in wrong place (npc or npc2 folder inside ymir work).
    1 point
  8. GF v21.1.3.0 patch (Metin2 Download) Contents: root-meta, dumped binary, protos New chat filter GUI resources New pet, new costume(Ramadan) + Hairstyle All files unpacked in a folder Soon comes the Looting System resources. Well.. They are so geniuses.
    1 point
  9. good luck with it it costed me an about 35-40 euros to get these back so good luck with it hairdyes [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 46kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 47kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] 48kid [hide][Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content]] PS: yes i made these for dany but somehow he didn't really wanted to make a server with wolfman.
    1 point
  10. Client give you some error on syserr?
    1 point
  11. Why do you want to add c ++ code if this option is already present? When a player chooses the skills then you take the skills to the level you want (M or G or P) whit "pc.set_skill_level".
    1 point
  12. @server/game/char.cpp Find: void CHARACTER::PointsPacket() Check if you added in this function pack.points[POINT_GEM] = GetGem();
    1 point
  13. What u mean with "not work" ? Compiling error or what?
    1 point
  14. @Mei Just for have shared this AMAZING work with us you deserve a BIG BIG thank you!
    1 point
  15. VNUM_STONE_AGAINST_WARRIOR is declared somewhere?
    1 point
  16. Someone can make/have txt from item and mob proto from official locale?
    1 point
  17. You miss to refresh gold in uiinventory
    1 point
  18. Query? For tooltip? It's db killer...if i move mouse in-out the slot 20times for second...db do 20query! 10player do this and you have 200query... Edit:better solution is to read new attr direct on boot (so you need to change sql select on db and add new values in items structure in client/server)...now you can read all informations from cache
    1 point
  19. As i know, player not receive atk when level up but just HP.
    1 point
  20. First point: yes, protect your eix/epk is important...you can "integrate" in client exe all eix files but can be a possibility that people extract eix from exe Second point: as i know (maybe) M2Bob need to start himself a client exe but if you find a way to start client ONLY with patcher you block it
    1 point
  21. In mob proto, atm dont remember what colum (is where you find NO_MOVE), add CRUSHER
    1 point
  22. Technically, this is a work-around, because the previous "ghost interface" is still there, but it remains just hidden (undeleted). You get such bug due to a python's garbage collector "issue/condition" when destroying the relative class: Since, in your case, the class' object count is higher than 1, when deleting self, the object count is decreased by 1, but since it doesn't still become 0, self doesn't get destroyed at all. (and del self.wndInventory wouldn't trigger def __del__ either) Normally, the object count for gui instances should remain as 1, but (mostly in every case) if someone during a .SetEvent (or similar) passed the self parameter without proxing it (proxy=creating a weak uncounted instance of self), it will lead to create 2 self instances in two different modules (interfaceModule and ui in this case), which means the object count will be >=2, and then you'll get a "ghost interface" when rewarping. Even so, considering everything beside self gets still deleted (i mean, its internal elements get deleted except the methods; that's why ESC still works), putting a .Hide() in there is still safe. (the memory leak would still remain unfixed though; maybe after retriggering the bug the "ghost interface" gets deleted, but a new one would still be generated to replace it)
    1 point
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.