Popular Content

Showing content with the highest reputation since 03/20/2019 in all areas

  1. 16 points
    Showing a message by specific error type when a item failed into refine. GitHub repository
  2. 16 points
    @martysama0134 @VegaS™ sorry dudes, I... I just had to! Ahah
  3. 9 points
    This is an archiver I've created, and it looks quite stable so far. The PackMakerLite (PML) supports type0-1-2-3-4-5 (type4-5 only pack, not unpack). As a summarize, the metin2 types are handled like this: Type 0 - only storage (no encryption/compression; it can be read fully from the .epk) Type 1 - compressed - lzo(file) Type 2 - compressed and encrypted - xtea(lzo(file)) Type 3 - encrypted with Panama - you must save an .iv key server-side in the panama/ folder. (content readable only after auth phase) The official used it only for patch2. Type 4 - encrypted with a mix of ciphers (cshybridcrypt) - you must save a .dat key server-side in the package/ folder. (content readable only after auth phase) Practically all the metin2_patch files. Type 5 - like type 4, but a server-side map/<map_name> is also provided. (content readable only after accessing the <map_name> map as a player) The official used it only for the catacomb data. Usage: Its settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json: You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files. Remove "--nolog" from the .bat files if you want to see the logs again. Last but not least: since the client handles all the filenames in lowercase, this tools automatically converts them as well. http://www.mediafire.com/folder/lwhcn5xyb53yq/PML
  4. 8 points
    The title says it all. - Programming meme - Metin2 meme Please, no memes with people with disabilities. Please use also the spoiler function. I'll start: @martysama0134
  5. 8 points
  6. 8 points
    There's just a smart python module which i did for fun, for a friend, no support for implementation. Enjoy. Github repository: https://github.com/Vegas007/Metin2-Events-Calendar-Test
  7. 8 points
    Hello everyone! I finally finished an easter stuff so i want to show it to you! Videos:
  8. 7 points
    There are a lot of people which had problem with localeInfo because korean-characters and bad encoding, there's a clean file with refactored code. Removed all the code which isn't used like korean characters < bad encoding(editors problem) and more checks. Removed over 500 lines unused. Removed function mapping(**kwargs) and use constructor of dict > dict(**kwarg) which is same (**kwarg let you take arbitrary number of keyword arguments). Removed function CutMoneyString because is used just when locale is HongKong, CIBN. Removed check IsYMIR from function LoadLocaleData which load locale as locale/ymir or locale/we_korea. Removed GUILD_MARK_NOT_ENOUGH_LEVEL, GUILD_HEADQUARTER, GUILD_FACILITY, GUILD_OBJECT, MAP_TRENT02, MAP_WL, MAP_NUSLUCK, MAP_TREE2, LOGIN_FAILURE_WEB_BLOCK, LOGIN_FAILURE_BLOCK_LOGIN, CHANNEL_NOTIFY_FULL, now they're readed directly from locale_game.txt. Removed declared global variables. Removed checks for declaring LOCALE_FILE_NAME, FN_GM_MARK and use current path. Removed korean functions/lists/dictionaries/characters GetAuxiliaryWordType, JOBINFO_DATA_LIST, dictSingleWord, dictDoubleWord, etc. Removed unused things: locale mapping, 'all' list etc. Removed IN_GAME_SHOP_ENABLE declaration, should be declared inside of constInfo directly. Removed checks (locale path) - 949, 932 == app.GetDefaultCodePage(), IsHONGKONG, IsNEWCIBN() or IsCIBN10() from declaration of functions like (NumberToMoneyString, NumberToSecondaryCoinString, ...),now they're declared directly from old style (IsEUROPE() and not IsWE_KOREA() and not IsYMIR()). Added custom string format(format_string, *args, **kwargs) instead of %. (old-style). Added new checks inside of LoadLocaleFile for security: Check if token3 (token1=original_string, token2=return-string, token3=function) function name exist in our types (SA, SNA, SAA, SAN) then try to call it. Check if string line have no tabs. Diff-checker: (856 Removals + 301 Additions) https://www.diffchecker.com/v1Nwk2r0 Download link
  9. 7 points
  10. 7 points
  11. 6 points
    Dungeon.cpp: We are looking for : deadEvent = event_create (dungeon_dead_event, info, PASSES_PER_SEC (10)); PASSES_PER_SEC (10)); // 10 seconds PASSES_PER_SEC (300)); // 5 minutes Will be like: deadEvent = event_create (dungeon_dead_event, info, PASSES_PER_SEC (300)); The session will be destroyed in 5 minutes. Into quest from the respective dungeon you have to save logout and login, you can use questFlag.
  12. 6 points
  13. 6 points
  14. 6 points
    Quest part: function GetPartyMapIndex() return party.getf("dungeon_index"); end -- function function HasDungeon() return d.find(quest.GetPartyMapIndex()); end -- function function GetPartyFloor() return d.getf_from_map_index("floor", quest.GetPartyMapIndex()); end -- function function IsSameLeaderDungeon() return d.getf_from_map_index("party_leader_pid", quest.GetPartyMapIndex()) == party.get_leader_pid(); end -- function when NPC.chat."I want to go back into the dungeon" with party.is_party() and quest.HasDungeon() and quest.IsSameLeaderDungeon() begin local floor = quest.GetPartyFloor(); local spawn_coordinates = Dungeon.GetData()[floor]; pc.warp(spawn_coordinates["x"] * 100, spawn_coordinates["y"] * 100, quest.GetPartyMapIndex()); --[[ my settings use coordinates based on floors and keys. Like this function GetData() local array = { [1] = {["x"] = 19850, ["y"] = 98254}, -- Floor 1 spawn coordinates. [2] = {["x"] = 19850, ["y"] = 98254}, -- Floor 2 spawn coordinates. ..etc. }; return array; end -- function ]] end -- when That's how I do in my quests, please refrain from C/Pasting without minimal Lua knowledge. His code is useless, cpp part is not necessary. Because if a group is still inside the dungeon the instance doesn't get destroyed, thus you can go back. Useful functions: function SetPartyMapIndex(index) party.setf("dungeon_index", index); -- Call quest.SetPartyMapIndex(d.get_map_index()) upon entering the dungeon with the party leader. (Doing it once is enough). end -- function function IncreaseFloor() d.setf("floor", d.getf("floor")+1); -- Call it everytime the group gets to a new floor of the dungeon. end -- function function SetLeaderPid() d.setf("party_leader_pid", party.get_leader_pid()); -- Call it upon entering the dungeon with the party leader. end -- function
  15. 5 points
  16. 5 points
  17. 5 points
  18. 5 points
  19. 5 points
    Not everything should be written in source, but here's a method. (2 years ago - i posted it in another forum) //@Src/Server/game/src/input_login.cpp // Add to the beginning of the file: inline bool AllowedToWarp(const DWORD dwMapIndex, const DWORD dwLevel) { struct set_struct { const unsigned short map_index; const unsigned short minimum_level; } set_fields[] = { { 91, 75 }, // Grotto of Exile 1st Floor { 82, 75 }, // Grotto of Exile 2nd Floor { 216, 75 }, // Devils Catacomb { 218, 90 }, // Cape Dragon Head { 219, 90 }, // Dawn Mist Wood { 220, 90 }, // Mount Thunder { 221, 90 } // Bay Black Sand }; for (unsigned short i = 0; i < _countof(set_fields); ++i) { if (dwMapIndex == set_fields[i].map_index && dwLevel < set_fields[i].minimum_level) return false; } return true; } //1.) Search for: ch->SendGreetMessage(); //2.) Add after: if (!AllowedToWarp(ch->GetMapIndex(), ch->GetLevel())) ch->GoHome();
  20. 4 points
    Hello guys Today i'm gonna release new design for wedding costumes i know its not my best but i'm tried with many style but i think white design is good i will share more soon for diffrent design for wedding and more so wait me i hope you like them :) screens banner test Download: Click here if you like it just say thanks if you found any problem just reply me i will try to fix it regards, Dane
  21. 4 points
    If you've interest about reverse engineering, you can check out this tool. (I can't say it's better than IDA). It's just made by NSA. Here is the link for ya. The tool was written in Java. (To provide cross-platform support). https://ghidra-sre.org/ Installation guide is here too: https://ghidra-sre.org/InstallationGuide.html Best Regards Ken
  22. 4 points
  23. 4 points
    WaterCreation is a small and easy-to-use program for creating water animations from a sequence of changing textures. The program generates textures based on predefined settings. We can, among other things, set the number of textures that make up the animation and their size, the color of the water and the brightness, and we can even add our own texture that will serve as a reflection on the water. Download: https://mega.nz/#!G1dhxQoL!ApICGRqkA4IXF6-_gEeOPG9Yg8la9_2Sbeqh1SaYMlM
  24. 4 points
  25. 4 points
    Best regards Raylee