Jump to content

LethalArms

Active+ Member
  • Posts

    69
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by LethalArms

  1. This is basically a system to complement my other system. With this you one can have a custom tag name behind the name/karma of the character As you can see on this picture Behind the character name and karma there's a red tag, this is achieved using this system. I didn't make it show the level by my personal choice but you can easily add it. I remember seeing another post on this forum about this, but i cant find it anymore not sure why, so i'm posting my own version. InstanceBaseEffect.cpp Search for CInstanceBase::UpdateTextTailLevel Below sprintf(szText, "Lv %d", level); And before CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); Add this if (IsGameMaster()) { const char* name = GetNameString(); size_t len = strcspn(name, "]"); char *result = (char *)malloc((len + 1) * sizeof(char)); // Not sure why on client side needs to be like this strncpy(result, name, len +1); result[len + 1] = '\0'; const char *tagDictionary[] = { "[GM]", "[SA]", "[GA]", "[DEV]" }; //Here you can also change the color of the tag const char *nameDictionary[] = { "|cffff0000[STAFF]", "|cffff0000[EQUIPA]", "|cffff0000[STAFF2]", "|cffff0000[DEVELOPER]" }; int tagIndex = -1; for (int i = 0; i < sizeof(tagDictionary) / sizeof(tagDictionary[0]); ++i) { if (strcmp(result, tagDictionary[i]) == 0) { tagIndex = i; break; } } if (tagIndex != -1){ sprintf(szText, nameDictionary[tagIndex]); } else{ // This is just for if the code cant find any tag, it will default to this one. // You can also just delete this whole else statement and it will default to the level text sprintf(szText, "|cffff0000[TEST]"); } free(result); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } And thats all xD
  2. EDIT: I found a better way to search for the tag On char.cpp Instead of #ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); char result[5]; strncpy(result, name, 4); result[4] = '\0'; Make it like this #ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); size_t len = strcspn(name, "]"); char result[len+1]; strncpy(result, name, len +1); result[len + 1] = '\0'; This way you can have any tag size without having to do any modification on the code, and for what i saw on my tests, if i increased from 4 chars to 5 it will have problems, this way there is no problem at all!!!
  3. So ashika posted this a few days ago And since i couldnt find a way to show all of them ingame depending on the GM "class" i decided to make my own, its not that hard tbh, and i think it doesnt fck anything but if u find problems let me know. Here's the result First of all, the way the system works is by the GM name, so if it has [SA] or [GM] in name it will apply the effect for it. Server Side service.h #define ENABLE_CUSTOM_TAG_EFFECTS affect.h in enum EAffectBits search for the last enum (in my case is AFF_BITS_MAX) and before it add #ifdef ENABLE_CUSTOM_TAG_EFFECTS AFF_GA, AFF_GM, AFF_SA, #endif on char.cpp Search for m_afAffectFlag.Set(AFF_YMIR); And replace it with this #ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); // This will only search for the first 4 characters if u want more for tags such as [DEV] you will need to increase this values char result[5]; strncpy(result, name, 4); result[4] = '\0'; // This is where you change the tag const char *tagDictionary[] = { "[GM]", "[SA]", "[GA]" }; // This is where you change the effect name to what you put on affect.h const EAffectBits nameDictionary[] = { AFF_GM, AFF_SA, AFF_GA }; int tagIndex = -1; for (int i = 0; i < sizeof(tagDictionary) / sizeof(tagDictionary[0]); ++i) { if (strcmp(result, tagDictionary[i]) == 0) { tagIndex = i; break; } } if (tagIndex != -1) { m_afAffectFlag.Set(nameDictionary[tagIndex]); } else{ m_afAffectFlag.Set(AFF_YMIR); } #endif On client side locale_inc.h #define ENABLE_CUSTOM_TAG_EFFECTS InstanceBaseEffect.cpp On CInstanceBase::__SetAffect( Search case AFFECT_YMIR: Add below #ifdef ENABLE_CUSTOM_TAG_EFFECTS case AFFECT_GA: case AFFECT_GM: case AFFECT_SA: #endif InstanceBase.h Search for AFFECT_NUM Add before #ifdef ENABLE_CUSTOM_TAG_EFFECTS AFFECT_GA, // 50 AFFECT_GM, // 51 AFFECT_SA, // 52 #endif InstanceBase.cpp On CInstanceBase::IsGameMaster() Add before return false #ifdef ENABLE_CUSTOM_TAG_EFFECTS if (m_kAffectFlagContainer.IsSet(AFFECT_GA)) return true; if (m_kAffectFlagContainer.IsSet(AFFECT_GM)) return true; if (m_kAffectFlagContainer.IsSet(AFFECT_SA)) return true; #endif PythonCharacterModule.cpp Add next to the others #ifdef ENABLE_CUSTOM_TAG_EFFECTS PyModule_AddIntConstant(poModule, "AFFECT_GA", CInstanceBase::AFFECT_GA); PyModule_AddIntConstant(poModule, "AFFECT_GM", CInstanceBase::AFFECT_GM); PyModule_AddIntConstant(poModule, "AFFECT_SA", CInstanceBase::AFFECT_SA); #endif This file is for the Faster Loading System found here on the forum, if u dont have it, you will need to add the effect on client/root/playersettingsmodule.py, i wont provide a code for cuz i dont really have a way to test it, but shouldn't be that hard PythonPlayerSettingsModule.cpp Find {pkBase.EFFECT_REFINED + 1 Before add #ifdef ENABLE_CUSTOM_TAG_EFFECTS {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_GA, "Bip01", "d:/ymir work/effect/team_ranks/ga.mse"}, {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_GM, "Bip01", "d:/ymir work/effect/team_ranks/gm.mse"}, {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_SA, "Bip01", "d:/ymir work/effect/team_ranks/sa.mse"}, #endif Lastly, on client you will need to add ashika files where you want (in my case i added to etc/ymir work/effect/team_ranks/ and duplicate the gm.mse file (in this case 2 times), change the name to ga.mse and sa.mse, then will open them and at the end of the file there is going to be this line List TextureFiles { "gamemaster.tga" } change them acording to the effect you want, on this case, for GA is gameadmin.tga, for GM is gamemaster.tga and for SA is serveradmin.tga. And thats all, hope you all like it!
  4. Download If anyone wants to have this system with Lykan here are the files, i've changed them to work with lykan, it took me a lot of time but it works! Just replace, compile, and it should all work normally.
  5. On tmp4 files go to each core config and change BIND_IP and PROXY_IP to the RadminVPN IP , i think its but i'm not sure, do that, start the server and it should work
  6. Fixed, glad to know it works, gonna add it on the original post thanks! Also, you can easily make it show F1 - accountid, F2-accountid on the button like some servers have on def LoadAccounts(): Find self.loginAcc0.SetText(ind[1]) Replace with self.loginAcc0.SetText('F1 - ' + ind[1]) Find self.loginAcc1.SetText(ind[1]) Replace with self.loginAcc1.SetText('F2 - ' + ind[1])
  7. Yes and i think it can be done in a easier way than that, making use of the functions loginAccount, i'm currently trying to implement the Sash System on my server but as soon as i'm done with it, i will do that But this code might work, i didnt test it, but give it a try and let me know!
  8. Hi, i made some changes on this system so that it now can show multiple accounts slots and add/delete accounts easily I'm not an experienced programmer by any means, so bugs might happen and the code isn't the most efficient and clean, so if anyone has a suggestion let me know! [Hidden Content] First i recommend installing his system first because i will only be listing the changes i made and this wont work without his system installed first Also, i will only show the steps to have 2 slots account, but they can easily be replicated to have multiple accounts. Implemented and Tested on TMP4 Server Files but most likely will work on any other server files. Be extremely careful with tabulations, i would recommend using Visual Studio Code or something similar to avoid problems with it Small video: Icons used for save and delete account button (it doesn't have on hover and on click icons so you will have to add them yourself) Download -> Mediafire or M2DL So lets start First delete the root/uiSelectCredentials.py and uiscript/accountlistwindow files that wont be needed anymore root/introwindow.py (This is configured for my own interface so you will have to change positions according to yours) root/intrologin.py (Remember you need to have the system from North implemented or you wont be able to find the correct lines) I think i'm not missing anything but if you find any error let me know and i will update the post. Probably gonna try to do some changes on the code to make it easier to add more accounts, currently it's not that hard but can be better. Feel free to leave suggestions and help improve this!
  9. The weapons models and textures are missing, do u have the download for them?
  10. If it gives this error to someone: While compiling the server source go to src/common/item_lenght.h Search for enum EMaterialSubTypes and add at the end of the function this "MATERIAL_DS_CHANGE_ATTR,"
  11. Not sure if it's a error or not (since i've found the same problem with other similar tools) but while exporting sura model, the bones of 2 of the fingers in the left hand always export bigger than the other fingers The only way i found to kinda fix this was using grnreader or noesis and exporting to smd (if it was exported to fbx the problem also occurs)
  12. PROBLEM FIXED the OnPickMoney function on uiExchange.py was wrong instead of: def OnPickMoney(self, money): net.SendExchangeElkAddPacket(str(money)) it needs to be like this def OnPickMoney(self, money): net.SendExchangeElkAddPacket(money) and it works perfectly :v
  13. EDIT: No syserr's, not on client,or server cores,or anything With the "old" exchange window works fine But with the "new" one, doesn't show the money and also doesn't trade it Also if u could tell me how i remove that text under the exchange window and the target lvl i appreciate it root/uiExchange.py: [Hidden Content] uiScript/exchangedialog_new.py: [Hidden Content] I had to disable the NEW_EXCHANGE_WINDOW variables on the server and client, but also had to remove the exchangedialog_new from the folder and also removed uiExchange, for some reason wasn't able to make the old exchange window work with them in the folder as a backup, like uiexchange_backup.py and exchangedialog_new_backup.py. Hope this info helps to solve my problem, thks in advance!
  14. So, i implemented a exchange window that i found and the Increase Max Yang tutorial from this forum. The max yang seems to work amazing, but i can't trade Yang, not sure if this is a bug of the exchange window or the max yang implementation, it just always stays at 0 on the exchange window, and doesn't send any yang to the other player, i've reimplemented max yang and exchange window, but still nothing Max Yang Link: The exchange window is from another forum, so i will not post the link here, but if needed i can send the files. I've tried searching on a lot of forums, and can't find an answer, tried fixing it my self (which didn't work, of course xD)
  15. UPDATE: I combined both tools in one, it will convert both heightmap and minimap at the same time, so if u want just one of it, you can use the other links to have a single tool Link for 2-in-1 tool: [Hidden Content]
  16. Fixed the Error on the Heightmap tool, which basically was causing to show some weird lines on the finished heightmap, but it's fixed now, the mediafire link is the same. I was working on making the final result image a 16 bit image, since it already converts to a 16 bit png, but i still wasn't able to do it, and it was taking much of my time, and currently i'm more focused on other projects
  17. UPDATE: i found an error on the tool that i'm currently working on fixing
  18. Download Center Minimap & Heightmap Converter So, i've been developing something, and i needed the minimaps and heightmap from metin2, and i was using the Map Converter tool that can be found here in the forum, but taking a screenshot of that tool (since it doesn't allow to export heightmap, only minimap), isn't the best of ways, so i made my own tool to do that, this took me a while, since i'm not a very experienced programmer... The tool is very simple to use (i believe), just move the whole map folder to where the python file is, and run the script and follow the instructions, it will also go with 2 maps already done, the final image will have the same name as the map folder name. Idk if anyone has done this, that release to the public the source code (Map converter tool creator didn't release source code i think), so if anyone needs the code or the tool, can use without any trouble, since this is also a backup for me, so i dont lose the tool xD It uses the python 3.10.5, and some libraries, so you will need to install them: PIL (pillow) Torchvision Numpy (i think this one already comes with python, not sure) OpenCV It's just .py files that you can look through the code, but either way, here's virus total scan of the .rar files [Hidden Content] [Hidden Content] The folders are only that big (8.31mb and 11.42mb) because both have 2 full map's folders on them, and one of them uses normal png, and the other uses 8bit png (that's why the 3.11mb difference) I did separate because idk, that's how i made them, and i guess i'm too lazy to combine them together lol Heightmap: [Hidden Content] Minimap: [Hidden Content]
  19. FIXED: Not sure what actually fixed it but what i did was remove the special_item_group.txt and put the one that comes on the files and removed all quest's, put them again and questcompile and now it works
  20. There is 110000~110099 ÃÖÇÏ±Þ ÀÏ¹Ý ¹é·æ¼® ITEM_DS DS_SLOT1 1 ANTI_SAFEBOX | ANTI_SELL NONE NONE NONE 0 0 0 0 0 TIMER_BASED_ON_WEAR 86400 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
  21. I didn't change anything on that file, but i will try anyway to put the one from that comes with the files to see if the error disappears can you tell me what the file is about? Since like item_proto is updated in the database, i'm thinking maybe that file is also updated in the database, and the fact that i edited some stuff on the db caused it to bug?
  22. I installed costume system, and it was working normally, then i went to disable the alchemy, and what i did was remove the dragon_soul quests, remove some items from item_proto and item_names, and remove DSS button from locale/xx/ui/inventorywindow.py, and the game didn't enter, i put my id and password, it says Connecting to the server, and then the message disappears and it does nothing, I'm again on the main menu, i've edited back everything i did, but for some reason it still isn't working, and i can't figure out why... Syserr on Client is clean Auth Syserr Channel1-first Syserr Channel1-game1 Syserr the same as Channel1-first Channel1-game2 Syserr is a bit different than Channel1-first/game1 I've trying to find a fix for like the past 30minutes, if someone could help would be great
  23. FIXED IT It seems that the implementation of the max yang wasn't 100%, some stuff on the root was missing and that's what's causing the bug
  24. From what i've noticed the bug is because of the max yang implementation i did, from this post now i just need to find what i did wrong, if i did something or if the system actually is bugged, but i think i did something wrong, it's the most likely option
  25. I've tried searching a lot on the internet, and found some "solutions" but none worked, idk how it started, and i still couldn't figure out what is... Really need help on this... thks in advance... At first i thought it was because of 4/5 inventory, but then i saw the clip again and realized i didn't even had it installed, maybe the max yang? seems to be the only thing added
×
×
  • 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.