Jump to content

LethalArms

Active+ Member
  • Posts

    69
  • Joined

  • Last visited

  • Feedback

    0%

About LethalArms

Informations

  • Gender
    Male
  • Country
    Portugal
  • Nationality
    Portuguese

Social Networks

  • Discord
    LethalArms#3717

Recent Profile Visitors

337 profile views

LethalArms's Achievements

Community Regular

Community Regular (8/16)

  • Very Popular Rare
  • One Year In
  • Collaborator
  • Dedicated
  • One Month Later

Recent Badges

314

Reputation

  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]
×
×
  • 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.