Jump to content

Search the Community

Showing results for tags 'c++'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Metin2 Dev
    • Announcements
  • Community
    • Member Representations
    • Off Topic
  • Miscellaneous
    • Metin2
    • Showcase
    • File Requests
    • Community Support - Questions & Answers
    • Paid Support / Searching / Recruiting
  • Metin2 Development
  • Metin2 Development
    • Basic Tutorials / Beginners
    • Guides & HowTo
    • Binaries
    • Programming & Development
    • Web Development & Scripts / Systems
    • Tools & Programs
    • Maps
    • Quests
    • 3D Models
    • 2D Graphics
    • Operating Systems
    • Miscellaneous
  • Private Servers
    • Private Servers
  • Uncategorized
    • Drafts
    • Trash
    • Archive
    • Temporary
    • Metin2 Download

Product Groups

  • Small Advertisement
  • Large Advertisement
  • Advertising

Categories

  • Third Party - Providers Directory

Categories

  • Overview
  • Pages
    • Overview
    • File Formats
    • Network
    • Extensions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Pillory


Marketplace


Game Server


Country


Nationality


Github


Gitlab


Discord


Skype


Website

  1. M2 Download Center Download Here ( Internal ) [Hidden Content]
  2. M2 Download Center Download Here ( Internal ) Maybe somebody works. I actually shared it in a different community. I wanted to share it with my family even though it is now a dead community. Without forgetting, you can get a lot by following the links. [Hidden Content] EXTRA: EXTRA:
  3. M2 Download Center Download Here ( Internal )
  4. Download Metin2 Download or Mega Is made for this select character [Hidden Content]
  5. M2 Download Center Downlaod Here ( Internal ) Download Here ( GitHub ) Please dont flame me. @Mali61 push me to pubblish here. Video
  6. M2 Download Center Download Here ( Internal ) Hello everyone. Yesterday @Doonqa asked me if I could reverse this function of the game from the official binary. Known fact these functions are necessary and obligatory for the multilanguage systems and I have them since years ago, here they are. Download Edit: I have found something related to the arabic codepage, so I just post it here: <! It has not been tested. !> Any problem appears, comment box is down below ⬇ Cheers!
  7. Hello all, I recently found how stupid number generators inside source files are. Currently, to generate a "random" number, the system seems to use function number(x,y). I found out that this function is an ugly version of rand() % y + x, which does not really generates random number with real distribution. I really don't know if other files use this or better solutions, but in files related to Drop that's what it is. To make the point on how stupid this (not)random system is, just take a look at this : iRandRange = 4000000; iRandRange = iRandRange * 100 / (100 + CPrivManager::instance().GetPriv(pkKiller, PRIV_ITEM_DROP) + (pkKiller->IsEquipUniqueItem(UNIQUE_ITEM_DOUBLE_ITEM) ? 100 : 0)); //example "random" generation: int random_number = number(1, iRandRange) Why should you make a range of 4000000 to estabilish like 0.1% of drop? lmao Thus I decided to share with you a real solution, that may can help you if you are issuing the same problem/question. I found it in the web. It uses the standard C++ random distribution, and can also be replaced with boost's one. There is needing to spend hardware resources for generating numbers, but I guess it is not this much, so please be careful and test it before using in real servers. Include random c++ library(depending on your c++ version, if not available, then use Boost) #include <random> Then you can use inside cycles(for, while...): std::random_device os_seed; const uint_least32_t seed = os_seed(); std::mt19937 generator(seed); //the hardware number generator std::uniform_int_distribution< uint_least32_t > distribute(1, max_range); //the number distribution Example usage int max_range = 100; int extractions = 100; int percent = 10; int total_found = 0; std::random_device os_seed; const uint_least32_t seed = os_seed(); std::mt19937 generator(seed); std::uniform_int_distribution< uint_least32_t > distribute(1, max_range); for(int i = 0; i < extractions; i++){ if(percent >= distribute(generator)){ std::cout << "Number found at Extraction: "<< i+1 <<"\n"; total_found++; } } std::cout << "Total found: " << total_found << "in " << extractions << "extractions \n"; Obviously you can adapt easily on any Percent you want to obtain in your source files, just work in the max_range variable.
  8. There is a problem, when you change position of horse riding skill in playersettingsmodule, you cannot use horse skills. For me, the way skills work on the client side of thing is really dumb, but they went even furher. I don't understand why, client checks if player has a horse riding level from the fixed skill slot, not from skill info itself. Without my fix, it goes like this: With fix: Actual fix:
  9. Hey Dev! Welcome to my first small tutorial here. When i implemented mount renewal and mount follow system i thought that mounts are really coming too close to character when u walk and then stop. so i was looking for a solution: 1. Open ServerSource src/game/MountSystem.cpp 2. Search for: int APPROACH = 200; 3. Just play around with 200, enjoy
  10. Hey, In different Games always Ninja's have the ability to hide example in Wow when Rogue hide the Monsters losing their aggro, but in Metin2 when you hide with the Skill Eunhyung the Monster still have aggro on you, this seems little wrong, Hided and Monster still can reach you? Maybe because you can use Poison / Bleeding / Fire that make this little bit difficult, but i think i come up with a solution. I think the only part that missing is when you clean the Target from the Monster to move again back but is not really necessary. * I Added also for GMs in /in command the function. In the Tutorial bellow, you can find the Function ForgetMyAttacker with my improvements.
  11. Short back story: I remember long time ago I had a map that had many NPCs on it and I got a problem with the packet that sends the NPCs to the client to be displayed on the big atlas map Fix: input_login.cpp Search: SECTREE_MANAGER::instance().SendNPCPosition(ch); Couple lines under it you should find: d->SetPhase(PHASE_GAME); Put the "d->SetPhase(PHASE_GAME);" before the SendNPCPosition line Like this:
  12. M2 Download Center Download Here ( Internal ) Hello, Today i saw some people search this..... With [007]Dawis char clicked emotion to [TEST] char... Python Version Spoiler Root => UiTarget.py Search this Spoiler def __OnEmotionAllow(self): Add this Spoiler import player sender = player.GetName() net.SendChatPacket("/emotion_allow %d" % (self.vid)) net.SendWhisperPacket( (self.nameString), "{} requested the use of emotions with you".format(player.GetName()) ) C++ Version by @ ASIKOO ACMD(do_emotion_allow) { if ( ch->GetArena() ) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ÃÀå¿¡¼­ »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.")); return; } char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); if (!*arg1) return; uint32_t val = 0; str_to_number(val, arg1); #ifdef M2_FEATURE_NOTICE_EMOTION LPCHARACTER tch = CHARACTER_MANAGER::instance().Find(val); if (tch) { bool bFrom = !(s_emotion_set.find(std::make_pair(ch->GetVID(), val)) == s_emotion_set.end()); bool bTo = !(s_emotion_set.find(std::make_pair(val, ch->GetVID())) == s_emotion_set.end()); if (bFrom && bTo) { ch->ChatPacket(CHAT_TYPE_INFO, "You are currently sharing emotions with your partner! <3"); return; } if (!bFrom && bTo) { s_emotion_set.insert(std::make_pair(ch->GetVID(), val)); ch->ChatPacket(CHAT_TYPE_INFO, "You allowed emotions with %s.", tch->GetName()); tch->ChatPacket(CHAT_TYPE_INFO, "%s allowed to share emotions.", ch->GetName()); return; } if (bFrom) { ch->ChatPacket(CHAT_TYPE_INFO, "You have already asked to share emotions with %s...", tch->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, "Don't anger your partner and be patient!"); return; } else { s_emotion_set.insert(std::make_pair(ch->GetVID(), val)); ch->ChatPacket(CHAT_TYPE_INFO, "You asked to share emotions with %s.", tch->GetName()); tch->ChatPacket(CHAT_TYPE_INFO, "%s requested to share emotions with you.", ch->GetName()); return; } } #else s_emotion_set.insert(std::make_pair(ch->GetVID(), val)); #endif } Best Regards, [007]Dawis
  13. Download Github(link) This is a small adjustment for the minimap when we using the Field of View. In fact, in the normal system, the FoV of the minimap remains unchanged. Normal: Large: Update: Since there are a lot of people that use the drag bar version, I decided to make a specific version of it. Video
  14. M2 Download Center Download ( Internal ) Download ( Mega ) Hi Everyone! Making a monster transparent is not a real problem, in some cases even ugly. However, I would like to propose an alternative to classic transparency that can make some monsters more interesting. The idea is to allow some monsters to become visible only in a certain range. In the guide I also added the possibility of making it untargetable up to a minimum distance and the possibility of hiding the monster from the minimap to make it truly camouflaged.
  15. M2 Download Center Download Here ( Internal ) Hello everyone, today I`m going to show to how to make a VIP system from SRC. You need Launcher SRC, Server SRC. So, let`s begin. 1.Launcher: Go to UserInterface/InstanceBase.h and search After that add: Search After that add: 1.2 Go to InstanceBase.cpp and search After that add: In same file search: And after that add: Search: After that add: 1.3: In file InstanceBaseEffect.cpp search After that add: Search: After that add: Search: After that add: 1.4 In fine PythonCharacterModule.cpp search: And after that add: Search: And after that add: Launcher part done. 2.SERVER 2.1 In file common/length.h search: And after that add: 2.2 In file game/src/affect.h search: And after add: 2.3 In file game/src/char.cpp search: And after add: Search And after that add: 2.4 In file game/src/config.cpp search And mofify like that: 2.5 In file db/src/ClientManager.cpp search: And after that add: 3.MYSQL 3.1 Go to your database->COMMON->RIGHT CLICK ON gmlist->DESIGN TABLE->SELECT mAuthority from Fields TAB->VALUES->ADD VIP AFTER PLAYER. 4.CLIENT 4.1. In file ROOT/PlayerSettingModule.py search And after that add: 4.2 In locale go to effect folder(WHERE YOU HAVE GM.MSE) and add THIS FILES: NEW LINK - FIXED Post any problems/bugs and we will solve them tohether Sorry for my bad english..:(
  16. Hello, As a certain someone pointed out with pseudo code, a new fix has made its way onto the official binaries. This fix is really small and specific as it would almost never be triggered, unless you specifically trigger it yourself. How to reproduce? Basically, edit the file metin2.cfg and replace the resolution (WIDTH / HEIGHT) with those three lines. WIDTH 32767 HEIGHT 32767 WINDOWED 0 Unless you have a very unusual and gigantic screen and resolution, it will basically crash, saying that your game doesn't support DirectX, stuff like that. How to fix? Spoiler [Hidden Content] Edit: Additional fix for overflow and negatives values here: Have a nice day!
  17. Download GitHub or Mega Hi guys! As we all know, the only trigger for quests on metin2 that is activated upon receipt of an item is pickup trigger (when x.pickup begin). Unfortunately, this only covers the case where you pick up an item from the ground, so it is very limited. Some people were asking to improve this, so I created a new trigger, with which you can cover other cases. For now, it works in these cases: Trade Buy from npc shop Buy from npc shopEx Buy from pc shop Pick up from ground /item command (for testing) Example: Spoiler This is just a draft, it already works, but if you have systems that interact with items, you will have to call it up under those systems as well. You can report to me below any new cases of getting items for new systems, I will help you.
  18. M2 Download Center Download Here ( Internal ) Hi guys. First of all, I also know this system is public already, but I was boring, so I had to reverse something, so here it is: Quiver System.7z If you have extra systems which might ignore the quivers, you must to extend them by yourself. Just couple of them from the official: acce, costume bonus transfer, change look, skillbook combination, sealbind and so on. Anything is wrong in the guide or missing something let me know, hit a comment below.
  19. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Based idea: [Hidden Content] [Hidden Content] You can add control for specific skill ids ----------- Not tested very well. Let me know, if you found a bug.
  20. M2 Download Center Download Here ( Internal ) Extract root and open intrologin.py At the beginning add: import os from _winreg import * Search: self.loginExitButton = GetObject("LoginExitButton") Add: self.saveLoginButton = GetObject("SaveLoginButton") self.loadCredentialButton = GetObject("LoadCredentials") Finally at the end add: def ICDev_ECRYPT(self,data): Data = '' for l in data: Data = Data+str(int(ord(l) + 2) * 2)+' ' return Data def ICDev_DECRYPT(self,data): Data = '' data = data.split() for l in data: Data = Data+chr((int(l) / 2) - 2) return Data def __OnClickSaveLoginButton(self): id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() if (len(id) != 0 and len(pwd) != 0): if not os.path.exists("SOFTWARE\ICDev"): key = CreateKey(HKEY_CURRENT_USER,"SOFTWARE\ICDev") SetValueEx(key, "UserID", 0, REG_SZ, self.ICDev_ECRYPT(id)) SetValueEx(key, "Passwd", 0, REG_SZ, self.ICDev_ECRYPT(pwd)) CloseKey(key) self.PopupNotifyMessage("Datele au fost salvate!",self.SetIDEditLineFocus) def __OnClickLoadInfoButton(self): try: key = OpenKey(HKEY_CURRENT_USER, "SOFTWARE\ICDev", 0, KEY_ALL_ACCESS) self.Connect(self.ICDev_DECRYPT(QueryValueEx(key, "UserID")[0]),self.ICDev_DECRYPT(QueryValueEx(key, "Passwd")[0])) except: self.PopupNotifyMessage("Nu exista nici un account salvat!",self.SetIDEditLineFocus) Extract locale_xx and open loginwindow.py Search: "text" : uiScriptLocale.LOGIN_CONNECT, }, ), }, Add: ## userDataBoard { "name" : "UserDataBoard", "type" : "thinboard", "x" : (SCREEN_WIDTH - 208) / 2, "y" : (SCREEN_HEIGHT - 355), "width" : 205, "height" : 55, "children" : ( { "name" : "SaveLoginButton", "type" : "button", "x" : 10, "y" : 0, "vertical_align" : "center", "default_image" : "d:/ymir work/ui/public/large_button_01.sub", "over_image" : "d:/ymir work/ui/public/large_button_02.sub", "down_image" : "d:/ymir work/ui/public/large_button_03.sub", "text" : uiScriptLocale.LOGIN_SAVE_BUTTON, }, { "name" : "LoadCredentials", "type" : "button", "x" : 105, "y" : 0, "vertical_align" : "center", "default_image" : "d:/ymir work/ui/public/large_button_01.sub", "over_image" : "d:/ymir work/ui/public/large_button_02.sub", "down_image" : "d:/ymir work/ui/public/large_button_03.sub", "text" : uiScriptLocale.LOGIN_LOAD_BUTTON, }, ), }, In local_interface.txt (local_xx) add: LOGIN_SAVE_BUTTON Save LOGIN_LOAD_BUTTON Load Now add in YourClient/lib: MEGA
  21. Hello, int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) if (ch && ch->IsPC()) { if (get_global_time() < ch->analyze_protect) { ch->analyze_protect_count = ch->analyze_protect_count + 1; ch->ChatPacket(CHAT_TYPE_INFO, "<test server> analyze_protect_count. Count %d", ch->analyze_protect_count); if (ch->analyze_protect_count >= 300) { ch->analyze_protect_count = 0; d->SetPhase(PHASE_CLOSE); return (0); } } else ch->analyze_protect_count = 0; ch->analyze_protect = get_global_time() + 1; } In char.h int analyze_protect; int analyze_protect_count; In void CHARACTER::Initialize() and Destroy analyze_protect = 0; analize_protect_count = 0;
  22. M2 Download Center Download Here ( GitHub ) Download Here ( MEGA ) Download Here ( Internal ) I came across this new insert event by quests which I had to use while I was developing the 6th & 7th Attribute System so I decided to share this little feature and it could be useful in some situations.
  23. M2 Download Center Download Here ( Internal ) This cape system like a sashe with scale system it's completely suitable for all characters. Download Link: [Hidden Content] VT: Click
  24. M2 Download Center Download Here ( Internal ) I think the title should explain all. The system give way to set mob's drops via tables (Database) instead to use mob_drop_item.txt, common_drop_item.txt, drop_item_group.txt which can be buggy (easly, just a wrong space) without trace any error in your game expirience. WARNING : The System doens't disable the txts so you can use the txts and the tables without any problems. I have inserted "/reload d" command to reload the drop tables without restart channels. i will code a small tool in python to convert the txts to tables (i will be added to the repository). The drop chance by default is set to 1/1000 (so in table you should set it to 1000 to give 100% drop chance 'base' , it will change via the ymir's algorithm depend on the levels killer/victim). you can chance this scale to use 100 instead 1000 basically changing in lenght.h the value of DROP_SCALE_TABLE here you can find the repository. MySkype: live:ikarus.developer update: Added a small part to install only if you are using __SEND_TARGET_INFO__ to show the drop in the target board WARNING: i noticed some people think this system is a realtime database reading based system. i want explain it better , to make sure every body know how this system works. This system works using cache, it read the tables once on boot, then the db core setup all core during core boot using cache. Only if you want to reload (refreshing the cache) the db core will read again the tables and will send to every core the "update".
  25. M2 Download Center Download Here ( Internal ) Before I start it I want to mention that this is an alternative for what @Mali61 posted. You can use either one. Download link: [Hidden Content] PS: Please read README file
×
×
  • 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.