Jump to content


Popular Content

Showing most liked content since 03/26/2018 in all areas

  1. 20 points
    Since I have got a few requests: __________ OfficialClient_07042018_DE.rar https://mega.nz/#!QbZSQbqQ!2pVvuDOuKQBaZs8z_tkcfpARE37kLTSakdGpcL3HV7k Extracted: 07/04/2018 (DD/MM/YYYY) This archive should include the complete Metin2.DE Client
  2. 18 points
    Well I dont know which eterPacks where modified by the last official patches. I extracted some of them. 18.1 should be completly included (only the crypted parts). There are also some parts of 17.6/18.0 included. If something is missing, just tell me the eterpack's name and i'll add it. by Samagon ________ Extracted: 05/04/2018 (DD/MM/YYYY) Included patches: metin2_patch_easter1 metin2_patch_luck metin2_patch_mail metin2_patch_xmas Download: https://mega.nz/#!VGwzRIzY!SfZ6yGV_a21fiwyv2S6ugI9zRyhGoSwaCSMV5xup6Uk[
  3. 10 points
    Hey Metin2dev-Community WE WISH EVERYONE HAPPY EASTER Lovely greetings Metin2dev-Team
  4. 9 points
    Thanks for the information nodelar is empty. (1kb) If still sth. is missing, just tell me the eterpack File Info: by Samagon ________ Extracted: 06/04/2018 (DD/MM/YYYY) Included patches: metin2_patch_common metin2_patch_etc_costume1 metin2_patch_etc metin2_patch_horse_sound metin2_patch_luck_sound https://mega.nz/#!0Hpx3IqS!cHGm6fd9boae711uECBEuq06gABF5viEwSpYJUDh_vg
  5. 8 points
    I hate when some people delete their bug fix topic...
  6. 6 points
    Hi! Today I've just finished my new dungeon - Crystal dungeon. I would like to ask you to some feedback. What do you like or what i should make better next time (This is not my last dungeon ) There is few images and video from the dungeon Btw: I will release the metin stone from first floor for free. https://www.youtube.com/watch?v=TCpHf1q1TaQ
  7. 6 points
    The official servers already did that for begginers weapons with antiflag.
  8. 6 points
    Hello, I'm here to share a little easter present with you guys. Features: - about 12 hours work - 4x4 Level/Farmmap - high realism with many little details - attr and minimap - capedragonhead textureset sowie mtthunder environment Screenshots: keep in mind that I've used some of iAce aka. CryPrimes objects, which he has published on youtube. You can find some reuploads on other boards! A big thanks to Ace! Also you have to edit the Settings.txt and atlasinfo with your own coordinates! https://mega.nz/#!HyRDDZ6R!1sQ1lsXPe3ZTG3qU2F53vsu7-wN-SVk42YAAYLqC34E Password for the download is byapex I wish you an nice weekend, enjoy the holidays with your friends and family Sincerly, apex
  9. 5 points
  10. 5 points
    Hey everyone, sorry for the lack of updates. Real life and stuff. Anyway, I'm preparing a bigger update. Lots of code cleaning and error fixing. I read what you wrote and will try to fix what you reported. Thanks to you all for reporting bugs and suggest changes. Though I will start upgrading the code to c++17 standard which means that I'll most likely not make changes to macro definitions like mentioned above. People should build the project like it's meant to be and under the same feature sets and compilers like I did, to make sure there's less room for errors. If you want to port the code, you can do so of course, I don't mind that. But for 'official' release they won't be included.
  11. 4 points
    Hello people, i saw that a lot of people want to start developing on Metin2, but there isn't a place where the people can easly see tutorials without surf the whole internet. My idea is to create a reference for anyone who want to start creating his own server, starting from the first steps into the creation of a full Metin2 Server, but also a place where advanced developers could orient into the complicated parts of this world. The special thing about this wiki is that everyone could add or alter pages (that will be approved by moderators), so everyone could contribute to the wiki. The wiki his hosted inside a website that i own (it would be very complicated handle this kind of project inside any forum). At the monent, the wiki is started and it's only in english. (Translation system will be added, contact me if you would like to translate) The wiki will be completly free and without any kind of advertisement. (But altervista's limitated band could make the site unaccessible) Link here: https://rewardmetin2.altervista.org/index.php?title=Main_Page. Greets!
  12. 4 points
    Hi, some days ago i released new Crystal dungeon so i bring you something for free - new Crystal metin. I hope you will enjoy it! You can find the video at 3:30 https://www.youtube.com/watch?v=TCpHf1q1TaQ Download:
  13. 4 points
    I'm not a hero, and will not, sorry
  14. 3 points
    #Update: Edited stackable items Sort Type->Alphabet fixed(string) also you can change for GetVnum()
  15. 3 points
    Hello, today I will give you this login interface, which is very similar to WoM2. It's coded by me, good luck Original interface(WoM2): My interface: Photo1: Photo2: Download: 1. https://1drv.ms/u/s!AhOzstvwiFbCa_hZFTG57aD_mTU 2. https://www111.zippyshare.com/v/rIWjrge8/file.html btw: configuration in root/intrologin.py: SERVER_IP = "" CH1_PORT = 21000 CH2_PORT = 22000 CH3_PORT = 23000 CH4_PORT = 24000 PORT_AUTH = 31009 NUME_SERVER = "Andy"
  16. 3 points
    Ignore him. He's just iratm shitposting again. 1) A peer can be null, and it's used when we send something without caring for an answer from db. 2) BlockCountry return type isn't handled, so even if it fails, it doesn't exit. Avenuetm didn't reply to Dr3am3r when he asked whether or not a db.core has been generated (in the thread title, it says "db crash", so we expect he got one), but he ended up giving some random likes and nothing more If he doesn't reply, mods should close this thread then. EDIT: how to read a core dump: https://github.com/martysama0134/how-to-general/blob/master/freebsd-tips/how-to-analyze-a-core-dump.md Enjoy.
  17. 3 points
    I still don't understand why don't you change your packets. The reaseon why hacks works is because they know what source contain. Change those data and they won't work anymore.
  18. 3 points
    If you like it, share your opinion here. Model have collision and lights.
  19. 3 points
    Open char _state.cpp and search: if (fDist >= 4000.0f) Add before if (fDist >= 100.0f) { int boss_no_follow[] = {3391, 3591, 3791, 3091, 3191, 3891, 3691, 1191, 1901, 5163, 1304}; for (int i = 0; i < _countof(boss_no_follow); i++) { if (m_pkMobData->m_table.dwVnum == boss_no_follow[i]) { SetVictim(NULL); return; } } } The difference between mob_proto NOMOVE flag is that c++ part allow the mob to use his walk motion when it's not attacked. Open char_state.cpp and search: if (victim && !victim->IsDead()) Replace with if (victim && !victim->IsDead()) { SECTREE *tree = victim->GetSectree(); if (tree && tree->IsAttr(victim->GetX(), victim->GetY(), ATTR_BANPK)) return; if (CanBeginFight()) BeginFight(victim); return; } In char.cpp search void CHARACTER::OnMove(bool bIsAttack) After add SECTREE * sectree = GetSectree(); if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && IsMonster()) Return(); After you go out of safezone the mob will go for you. I haven't got a solution for that yet. Frist method needs something more. Open ActorInstanceBattle.cpp and create a bool with boss vnum bool NO_MOVE_WHEN_ATTACK(unsigned int vnum) { switch (vnum) { case 2493: case 2091: case 2092: case 1903: case 2492: case 1191: case 2598: case 3091: case 3191: case 3591: case 3691: case 3791: case 3891: case 3391: case 6091: return true; } return false; } Search bool CActorInstance::__CanPushDestActor(CActorInstance& rkActorDst) Add if (NO_MOVE_WHEN_ATTACK(rkActorDst.GetRace())) return false;
  20. 2 points
    Is it possible to drive a car without a driver? Is it possible to drive a car without a engine? You better hire a developer or go play minecraft.
  21. 2 points
  22. 2 points
    Hello, today I will give you this login interface, which is very similar to WoM2. It's coded by me, good luck Original interface(WoM2): My interface: Photo1: Photo2: Download: https://1drv.ms/u/s!AhOzstvwiFbCbOvOhJG_R8ohLeg Link alternativ: https://www118.zippyshare.com/v/FxNbjoDa/file.html
  23. 2 points
    Doesn't matter.
  24. 2 points
    You're compiling with debug mode enable.
  25. 2 points
  26. 2 points
    InnoDB is slightly faster in writing, but it gets totally corrupted very often in case of system crash or reboot (with metin2 server still running) (shutdown -r now is safe). Making Sql backups of InnoDB is mandatory if you don't want to die fast. (cold backups, if not complete, are junk with innodb) MyISAM is slightly faster in reading. MariaDB has also Aria as engine, Mysql8 improves MyISAM and InnoDB by a lot (like InnoDB with improved ACID). https://dev.mysql.com/doc/refman/8.0/en/innodb-benefits.html https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html
  27. 2 points
  28. 2 points
  29. 2 points
    Fix for Exchange Bug: File : exchange.cpp https://pastebin.com/7L9VUGPv
  30. 2 points
    Writting stuff in English (or not)on a programming language, that will then be converted and will lead to the CPU to do some stuff that will ultimately block m2bob, until it does not
  31. 2 points
    Hey guys, have someone source of metin2dev_archiver? I need to have almost same structure of item_proto but I need to add a new subtype: WEAPON_UNLIMITED_ARROW. Thanks for answers! Sincerely, ReFresh
  32. 2 points
    Thank you so much, but guys still keep focus this topic is spam-free, thank you. Nevermind...
  33. 2 points
    if true == horse.is_summon() then notice("Horse is already summoned.") else if number(1, 100) <= horse_summon.get_horse_summon_prob_pct() then horse.summon() notice("You successfuly summoned your horse.") else notice("Horse wasn't summoned.") end end You have to use like this.
  34. 2 points
    Thank you for give me Credits apex and beautiful map
  35. 2 points
    Based on last modification, the most recent modified files you didn't mention are: metin2_patch_common metin2_patch_etc metin2_patch_nodelar metin2_patch_etc_costume1 metin2_patch_horse_sound metin2_patch_luck_sound Those were all updated on the 8th of January. Good job by the way!
  36. 2 points
  37. 2 points
    Was gonna send a pm until i saw this « like lz4 or something ». Good luck.
  38. 2 points
    Heya, as title says it's party dice system self written (without CHAT_TYPE_DICE_INFO, it's up to you) https://i.imgur.com/sj3EZ64.gifv (sry for laggs - "wooden pc" ^^) You can test possibility of same score there: https://repl.it/@Nevisor/Dice-FORINFOR char_battle.cpp //find if (ch->GetParty()) ch = ch->GetParty()->GetNextOwnership(ch, GetX(), GetY()); //replace with if (ch->GetParty()) { ch = ch->GetParty()->GetNextOwnership(ch, GetX(), GetY()); #ifdef __ENABLE_DICE_SYSTEM__ ch = ch->GetParty()->Dice(ch, GetX(), GetY(), item->GetName()); #endif } party.cpp //at the end of file add #ifdef __ENABLE_DICE_SYSTEM__ LPCHARACTER CParty::Dice(LPCHARACTER ch, long x, long y, const char * szName) //item name { for (TMemberMap::iterator it = m_memberMap.begin(); it != m_memberMap.end(); ++it) { if (it->second.pCharacter->GetDesc() && DISTANCE_APPROX(it->second.pCharacter->GetX() - x, it->second.pCharacter->GetY() - y) < PARTY_DEFAULT_RANGE) { ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, "|cffffe6ba*** Rolling for the following item: %s ***", szName); while (1) { LPCHARACTER pkWinner; int iDice = 0; int iDraw = 0; for (TMemberMap::iterator it = m_memberMap.begin(); it != m_memberMap.end(); ++it) if (it->second.pCharacter->GetDesc() && DISTANCE_APPROX(it->second.pCharacter->GetX() - x, it->second.pCharacter->GetY() - y) < PARTY_DEFAULT_RANGE) { int iScore = number(1, 10000); if (iScore == iDice) iDraw == iScore; else if (iDice == 0 || iScore > iDice) { pkWinner = it->second.pCharacter; iDice = iScore; } ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, "|cffffe6ba*** ->\t\t\t\t\t%s - Dice score: %d ***", it->second.pCharacter->GetName(), iScore); } if (iDice != iDraw) { ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, "|cffbb00ff*** Winner of the item %s is: %s ***", szName, pkWinner->GetName()); return pkWinner; } else { ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, ""); ChatPacketToAllMember(CHAT_TYPE_DICE_INFO, "|cffffe6ba*** Rolling again for the following item: %s ***", szName); } } } } return ch; } #endif party.h //find void P2PSetMemberLevel(DWORD pid, BYTE level); //or bool IsPartyInDungeon(int mapIndex); //add bellow #ifdef __ENABLE_DICE_SYSTEM__ LPCHARACTER Dice(LPCHARACTER ch, long x, long y, const char * szName); #endif length.h enum EChatType { CHAT_TYPE_TALKING, /* 그냥 채팅 */ CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */ CHAT_TYPE_NOTICE, /* 공지사항 */ CHAT_TYPE_PARTY, /* 파티말 */ CHAT_TYPE_GUILD, /* 길드말 */ CHAT_TYPE_COMMAND, /* 일반 명령 */ CHAT_TYPE_SHOUT, /* 외치기 */ CHAT_TYPE_WHISPER, CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_MONARCH_NOTICE, #ifdef __ENABLE_DICE_SYSTEM__ CHAT_TYPE_DICE_INFO, #endif CHAT_TYPE_MAX_NUM };
  39. 2 points
    I think I need a proper base-finder of process only, but I'm not good enough in hacking soo.
  40. 2 points
    Hi here are some new Metin2 Wallpaper Source: Turkmmo
  41. 2 points
    The textures of this water are ideally joined by no visible textures (seams). Colors are well matched to the climate of the metin. If you like this look here: https://metin2dev.org/board/index.php?/topic/16751-3d-art-tatsumaru/
  42. 2 points
    Dear community, this is my first guide for you in which I will show you how you change the older Granny 2.4 version which is the client using to the newer Granny 2.9 version. For this tutorial I'm using the mainline_released client source (all client sources are the same as I heard). DO NOT FORGET TO CREATE BACKUPS! 1. Step: Navigate to novalineSrcsToolsRAD Game Toolsgrannycommon and unzip the file granny_common_2_9_12_0_release.zip. You will receive some folders. Now you navigate into the folder include and copy the granny.h file to the include folder of your client (for me it's mainline_releasedSrcsExterninclude). Then you go into the libwin32 folder and copy all the *.lib and *.pdb files into your lib folder of your client. 2. Step: Open your client source and navigate to the project EterGrnLib. Open Mesh.cpp. Search for this: int * boneIndices = GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding); Replace with this: int * boneIndices = (int*)GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding); Search for this: return GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp); Replace with this: return (int*)GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp); Search for this: m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal); Replace with this: m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal, GrannyAllowUncopiedTail); ----- Open ModelInstanceUpdate.cpp. Search for this: GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix); Replace with this: GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix, false); ----- Open Material.cpp. Search for this: granny_variant twoSideResult = GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided"); if (NULL != twoSideResult.Type) GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided); Replace with this: granny_variant twoSideResult; if (GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided", &twoSideResult) && NULL != twoSideResult.Type) GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided, NULL); ----- Open ModelInstanceModel.cpp Search for this: return GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]); Replace with this: return (int*)GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]); ----- Navigate to the UserInterface project. Open UserInterface.cpp. Search for this (it's at the end of the file): static void GrannyError(granny_log_message_type Type, granny_log_message_origin Origin, char const *Error, void *UserData) { TraceError("GRANNY: %s", Error); } Replace with this: static void GrannyError(granny_log_message_type Type, granny_log_message_origin Origin, char const* File, granny_int32x Line, char const *Error, void *UserData) { TraceError("GRANNY: %s", Error); } Now rebuild the whole project! 3. Step: Go to the folder where we unziped the things of the first step and go to the lib folder. Copy the granny2.dll into your main client directory. Now you're finished and you have Granny 2.9. I hope this guide helped you! Special Thanks to Cryfact! Regards
  43. 1 point
    http://sandbox.onlinephpfunctions.com/code/72df51282264211c57a6957c8681ac1b7f14b64a PS: you need this to use that simple function otherwise you need to pass your $proto[$vnum] = $size; or change it to whatever you want while($item = $query->fetch_object()) { for($i = 0; $i < $proto[$item->vnum]->size; ++$i) $items[$item->pos + ($i * 5)] = $item->vnum; }
  44. 1 point
    UserInterface/UserInterface.cpp Set this variable to true. bool bPackFirst = FALSE;
  45. 1 point
  46. 1 point
    I got max dm/dh setup on source on two variables, its reads both variables, compares with the bonus on item. If higher then max, changes bonus Tuesday or so when im out of work i can send you a link containing it.
  47. 1 point
    Hhhhh so funny #HERO dude you know they puted a new protection to their files and if someone upnacked them (the hero xP3NG3Rx ) would share them with all of us
  48. 1 point
    I gave you some suggestions/tips, because I thought you were the creator of this script, but it seems not.
  49. 1 point
    Hello guy. I spent my time to create a map just for you metin2_map_Desert_Fazer.rar
  50. 1 point
    It serves to open PNG Source Client 1. Open folder ScriptLib that can be opened with png images in png textures python and put in granny sorry speak english