Jump to content

VegaS

Banned
  • Posts

    363
  • Joined

  • Last visited

  • Days Won

    40
  • Feedback

    0%

Everything posted by VegaS

  1. Since eternexus etc. can not find certain characters unpack eg 01.¼º / ³ª¹ "and then be renamed locations and made new ones. This is in the property, some of its folders/files have Chinese chars in its names. Here are resolved: [Hidden Content] You can go in property/property and creates a file named for * list * like that: [Hidden Content]
  2. M2 Download Center Download Here ( Internal ) I mention that all these functions are shit, we just did in a hurry, we have not tested, they are just tools to check code that do not have very bright but functional. Someone wanted this and even more people from a certain conference, so I made this little tutorial. These features give you the chance to check the following: - To introduce reading a game DLL source automatically. - To check the size of the DLL in question. - To check more files in the client if that which corresponds md5 version of the file. ffd:h -> [Hidden Content] Src/Client/UserInterface/Locale_inc.h #define __ENABLE_DLL_CHECK__ // enable #define __ENABLE_CHECK_SIZE__ // check size of files #define __ENABLE_CHECK_MD5__ // check md5 of files #define __SIZE_DLL__ 54200 // size in kb Src/Client/UserInterface/UserInterface.cpp #include "ffd.h" // Put file ffd.h in Extern/include/ #ifdef __ENABLE_DLL_CHECK__ int FunctionGetFileSize(char* FileName) { HANDLE pFile_done = CreateFileA(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); return FunctionGetFileSize(pFile_done, NULL); } #endif #ifdef __ENABLE_CHECK_MD5__ void FunctionGetFileMD5(char* cFile, char* hash) { MD5 ffd; if (strcmp(ffd.digestFile(cFile), hash)) { MessageBoxA(NULL, "It was detected a change to a file. Please do update the autopatcher!", "#System Error", NULL); exit(0); } } #endif You can check this function in : int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) #ifdef __ENABLE_DLL_CHECK__ const char* keyName = "name_your_dll"; HINSTANCE hGetProcIDDLL = LoadLibrary(keyName + ".dll"); if (hGetProcIDDLL == NULL) { MessageBox(NULL, "The customer name can not start without dll_vegas.dll, please update your autopatcher.", "#System Error", MB_ICONSTOP); return 0; } #endif #ifdef __ENABLE_CHECK_SIZE__ if (FunctionGetFileSize(keyName + ".dll") != __SIZE_DLL__) //kb { MessageBox(NULL, "DLL has been changed, please update.", "#System Error", MB_ICONSTOP); return 0; } #endif #ifdef __ENABLE_CHECK_MD5__ const char* MILES_key_MD5_Index_0 = "miles/mssdsp.flt"; const char* MILES_key_MD5_Index_0 = "miles/msssoft.m3d"; const char* MILES_key_MD5_Index_0 = "miles/mssa3d.m3d"; const char* MILES_key_MD5_Index_0 = "miles/mss32.dll"; const char* DLL_key_MD5_Index_0 = "python27.dll"; const char* DLL_key_MD5_Index_1 = "mss32.dll"; const char* LIB_key_MD5_Index_0 = "ib/__future__.pyc"; const char* LIB_key_MD5_Index_1 = "lib/copy_reg.pyc"; const char* LIB_key_MD5_Index_2 = "lib/linecache.pyc"; const char* LIB_key_MD5_Index_3 = "lib/ntpath.pyc"; const char* LIB_key_MD5_Index_4 = "lib/os.pyc"; const char* LIB_key_MD5_Index_5 = "lib/site.pyc"; const char* LIB_key_MD5_Index_6 = "lib/stat.pyc"; const char* LIB_key_MD5_Index_7 = "lib/string.pyc"; const char* LIB_key_MD5_Index_8 = "lib/traceback.pyc"; const char* LIB_key_MD5_Index_9 = "lib/types.pyc"; const char* LIB_key_MD5_Index_10 = "lib/UserDict.pyc"; const char* Index_key_md5_ = "pack/Index"; const char* PACK_key_MD5_Index_0 = "pack/root.eix"; const char* PACK_key_MD5_Index_1 = "pack/ETC.eix"; const char* PACK_key_MD5_Index_2 = "pack/locale_en.eix"; ///////////// VERIFICATION PATCH MILES /////////////////// FunctionGetFileMD5(MILES_key_MD5_Index_0,"cb71b1791009eca618e9b1ad4baa4fa9"); FunctionGetFileMD5(MILES_key_MD5_Index_1,"bdc9ad58ade17dbd939522eee447416f"); FunctionGetFileMD5(MILES_key_MD5_Index_2,"e089ce52b0617a6530069f22e0bdba2a"); FunctionGetFileMD5(MILES_key_MD5_Index_3,"6400e224b8b44ece59a992e6d8233719"); ///////////// VERIFICATION PATCH DLL /////////////////// FunctionGetFileMD5(DLL_key_MD5_Index_0,"d219c0a8aff2c771946d73554916bd9a"); FunctionGetFileMD5(DLL_key_MD5_Index_1,"6400e224b8b44ece59a992e6d8233719"); ///////////// VERIFICATION PATCH LIB /////////////////// FunctionGetFileMD5(LIB_key_MD5_Index_0,"d2505c6e64dc44a1745dda0905f4e787"); FunctionGetFileMD5(LIB_key_MD5_Index_1,"5e996d35b598676b253dd25fa3809ef2"); FunctionGetFileMD5(LIB_key_MD5_Index_2,"c4c28529b05b4093f629fb7b23603cd2"); FunctionGetFileMD5(LIB_key_MD5_Index_3,"966048f390a65bebf60f912845441110"); FunctionGetFileMD5(LIB_key_MD5_Index_4,"9e1e72faaafcde16dfd0e643a31f0b74"); FunctionGetFileMD5(LIB_key_MD5_Index_5,"8336371539a459e72d7110f0cb1ed84f"); FunctionGetFileMD5(LIB_key_MD5_Index_6,"3dc2d3d11ba4c668a0097fbd631c7be6"); FunctionGetFileMD5(LIB_key_MD5_Index_7,"39c29074226b2196e7f13ce93560d3d0"); FunctionGetFileMD5(LIB_key_MD5_Index_8,"009e6647dfac211b6e69c6b3f1ed5600"); FunctionGetFileMD5(LIB_key_MD5_Index_9,"2bff75340aa1d94b88bfc7915a291564"); FunctionGetFileMD5(LIB_key_MD5_Index_10,"aabdd94dfe3a1b0092f0a414a935c091"); ///////////// VERIFICATION INDEX /////////////////// FunctionGetFileMD5(Index_key_md5_,"8823ca827dfc980798856e97f3568cef"); ///////////// VERIFICATION FILES PACK /////////////////// FunctionGetFileMD5(PACK_key_MD5_Index_0,"ce13b7c96f725b7d7c39cbe1ae2f8b4d"); FunctionGetFileMD5(PACK_key_MD5_Index_1,"7c0b756d079a9c76a220a724b9594eeb"); FunctionGetFileMD5(PACK_key_MD5_Index_2,"5b1aea18b89330481e16eca94673951c"); #endif
  3. For members who saw this post and want and overtake them this: common/item_length.h ITEM_NAME_MAX_LEN = 24, gameLib/ItemData.h ITEM_NAME_MAX_LEN = 24, dump_proto/dump_proto.cpp ITEM_NAME_MAX_LEN = 24,
  4. M2 Download Center Download Here ( Internal ) I made these tutorial at the request of a member from this community who wanted to buy this very simple verification. Example quest: quest shit_function begin state start begin when kill with npc.is_pc() begin local global_insult_sex if pc.get_sex() == 0 then global_insult_sex = "gay" else global_insult_sex = "bitch" end local check_my_ip = pc.get_ip() local check_enemy_ip = npc.get_ip() if check_my_ip == check_enemy_ip then say("You're too "..global_insult_sex.."!") return end end end end Server/quest_functions pc.get_ip npc.get_ip Src/game/questlua_pc.cpp int pc_get_ip(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if(!ch) return 0; lua_pushstring(L, ch->GetDesc()->GetHostName()); return 1; } { "get_ip", pc_get_ip }, Src/game/questlua_npc.cpp int npc_get_ip(lua_State* L) { LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr(); if (npc && npc->IsPC()) lua_pushstring(L, npc->GetDesc()->GetHostName()); else lua_pushstring(L, ""); return 1; } { "get_ip", npc_get_ip }, #include "desc.h" Bonus
  5. Check my profile and add me in skype, and i help you with function for look like that:
  6. I see you want to use for description in refine, you can start with this: def OverInItem(self, value_t): global description_refine import grp if description_refine: table_description = { 30501 : ["[1] Value text","[2] Value text","[3] Value text"], 30502 : ["[1] Value text","[2] Value text","[3] Value text"], 30503 : ["[1] Value text","[2] Value text","[3] Value text"], 30504 : ["[1] Value text","[2] Value text","[3] Value text"], 30505 : ["[1] Value text","[2] Value text","[3] Value text"], 30506 : ["[1] Value text","[2] Value text","[3] Value text"], } try: self.tooltipItem.ClearToolTip() item.SelectItem(description_refine[value_t]) self.tooltipItem.AutoAppendTextLine("%s" % item.GetItemName(), self.tooltipItem.TITLE_COLOR) self.tooltipItem.AppendSpace(5) self.tooltipItem.AutoAppendTextLine("Test value:", self.SPECIAL_POSITIVE_COLOR) for i in xrange(len(table_description[description_refine[value_t]])): self.tooltipItem.AutoAppendTextLine("%s" % table_description[description_refine[value_t]][i]) self.tooltipItem.AlignHorizonalCenter() self.tooltipItem.ShowToolTip() except: pass
  7. If I understood well you want it, here is a simple function (i not tested): // Search in game.py function OnUpdate and add: if 1 == constInfo.ENABLE_PICKUP: self.PickUpItem() // Search: onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) // Add bellow: onPressKeyDict[app.DIK_F5] = lambda : self.__EnablePickUpItem() def __EnablePickUpItem(self): global CHECK_ACTIVE_PICKUP if CHECK_ACTIVE_PICKUP == 0: CHECK_ACTIVE_PICKUP = 1 constInfo.ENABLE_PICKUP = 1 else: CHECK_ACTIVE_PICKUP = 0 constInfo.ENABLE_PICKUP = 0 // Search: testAlignment = 0 // Add bellow: CHECK_ACTIVE_PICKUP = 0 // Add in constInfo.py: ENABLE_PICKUP = 0
  8. It was written in 15 minutes, may be some mistakes and the code is not one of the best. --[[ ########################################## # Dev: VegaS # # Quest: Blocking IP address to killings # # Date: 25/05/2016 # ########################################## ]] quest pvp_global begin state start begin function Verification_Ip_Adress() local search_me = pc.get_ip() local search_enemy = npc.get_ip() local table_count_kill_ip = pc.getqf("count_ip_block") if search_me == search_enemy then pc.setqf("count_ip_block", pc.getqf("count_ip_block") + 1) end end function Verification_Block() local go_to_text_insult_find_by_race if pc.get_sex() == 0 then go_to_text_insult_find_by_race = "gay" else go_to_text_insult_find_by_race = "bitch" end local block_me = pc.get_ip() local block_enemy = npc.get_ip() local list_block_ = pc.getqf("count_ip_block") if block_me == block_enemy and list_block_ == 10 then say("You're too "..go_to_text_insult_find_by_race.."!") return end end when login with pc.level >= 1 begin set_state(player_kill) end end state player_kill begin when letter begin send_letter("Kill PvP") end when button or info begin say_title("Experts pvp") say_reward("Kill 30 player!") pc.setqf("state_kill", 30) q.set_counter("Kills left:", 30) set_state(kill) end end state kill begin when letter begin send_letter("Duel") end when button or info begin say("Your text........") say_reward("Kills left: "..pc.getqf("state_kill").." ") end when kill with npc.is_pc() begin if get_time() < pc.getqf("time_kill") then syschat("Not yet passed the 5 minutes after the last killing!") return end pvp_global.Verification_Block() local count_kill = pc.getqf("state_kill") - 1 if count_kill <= 30 then pvp_global.Verification_Ip_Adress() pc.setqf("state_kill", count_kill) q.set_counter("Kills left:", count_kill) pc.setqf("time_kill", get_time()+ 300) -- 5 minutes end if count_kill == 0 then say_title("Congratulations!") notice_all("".. pc.get_name() .." mission completed your details!") clear_letter() set_state(__COMPLETE__) end end end state __COMPLETE__ begin end end Is ok and, perhaps it already has: #include "desc.h"
  9. I made this 5 minutes .. why pay for this easy work? xD Quest: quest lua_function_vegas begin state start begin when kill with npc.is_pc() begin local global_insult_sex if pc.get_sex() == 0 then global_insult_sex = "gay" else global_insult_sex = "bitch" end local check_my_ip = pc.get_ip() local check_enemy_ip = npc.get_ip() if check_my_ip == check_enemy_ip then say("You're too "..global_insult_sex.."!") return end end end end Server/quest_functions pc.get_ip npc.get_ip Src/game/questlua_pc.cpp int pc_get_ip(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if(!ch) return 0; lua_pushstring(L, ch->GetDesc()->GetHostName()); return 1; } { "get_ip", pc_get_ip }, Src/game/questlua_npc.cpp int npc_get_ip(lua_State* L) { LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr(); if (npc && npc->IsPC()) lua_pushstring(L, npc->GetDesc()->GetHostName()); else lua_pushstring(L, ""); return 1; } { "get_ip", npc_get_ip },
  10. root/uiRefine.py search in class RefineDialogNew: self.successPercentage.Hide() and change with: self.successPercentage.Show()
  11. Are you serious? xD void CInstanceBase::__AttachEmpireEffect(DWORD eEmpire) if (IsVIP()) return;
  12. if (GetGMLevel() == GM_VIP) { m_afAffectFlag.Set(AFF_VIP); } else if (GetGMLevel() == GM_VIP) { m_afAffectFlag.Set(AFF_VIP); } if (IsVIP()) return; - delete For remove PK_PROTECTED .
  13. Hahaha, without advertisement. At that forum is posted only the board and thinboard, lol , is *most of the python part*, is 3% of code.
  14. Not completely your tutorial, here i give you full parts xD 1. Search in char.cpp: cannot_dead = false; 2. Add below: costume_visible = true; 1. Search: WORD CHARACTER::GetPart(BYTE bPartPos) const { assert(bPartPos < PART_MAX_NUM); return m_pointsInstant.parts[bPartPos]; } 2. Change with: WORD CHARACTER::GetPart(BYTE bPartPos) const { assert(bPartPos < PART_MAX_NUM); if(bPartPos == PART_MAIN && GetWear(WEAR_COSTUME_BODY) && CostumeVisible() == false) if(const LPITEM pArmor = GetWear(WEAR_BODY)) return pArmor->GetVnum(); return m_pointsInstant.parts[bPartPos]; } 1. Search: WORD CHARACTER::GetOriginalPart(BYTE bPartPos) const { switch (bPartPos) { case PART_MAIN: if (!IsPC()) return GetPart(PART_MAIN); else return m_pointsInstant.bBasePart; case PART_HAIR: return GetPart(PART_HAIR); case PART_ACCE: return GetPart(PART_ACCE); default: return 0; } } 2. Change with: WORD CHARACTER::GetOriginalPart(BYTE bPartPos) const { switch(bPartPos) { case PART_MAIN: if(GetWear(WEAR_COSTUME_BODY) && CostumeVisible() == false) if(const LPITEM pArmor = GetWear(WEAR_BODY)) return pArmor->GetVnum(); if(!IsPC()) return GetPart(PART_MAIN); else return m_pointsInstant.bBasePart; case PART_HAIR: return GetPart(PART_HAIR); #ifdef __ENABLE_ACCE_ case PART_ACCE: return GetPart(PART_ACCE); #endif default: return 0; } } 1. Search in char.h: void SetLastSyncTime(const timeval &tv) { memcpy(&m_tvLastSyncTime, &tv, sizeof(timeval)); } const timeval& GetLastSyncTime() { return m_tvLastSyncTime; } void SetSyncHackCount(int iCount) { m_iSyncHackCount = iCount;} int GetSyncHackCount() { return m_iSyncHackCount; } 2. Add below: public: bool CostumeVisible() const { return costume_visible; }; void SetCostumeVisible(bool visible) { costume_visible = visible; }; private: bool costume_visible; 1. Search in item.cpp: case ITEM_ARMOR: { if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY)) break; if (GetSubType() == ARMOR_BODY || GetSubType() == ARMOR_HEAD || GetSubType() == ARMOR_FOOTS || GetSubType() == ARMOR_SHIELD) { if (bAdd) { if (GetProto()->bSubType == ARMOR_BODY) m_pOwner->SetPart(PART_MAIN, GetVnum()); } else { if (GetProto()->bSubType == ARMOR_BODY) m_pOwner->SetPart(PART_MAIN, m_pOwner->GetOriginalPart(PART_MAIN)); } } } break; 2. Delete function and change with this: case ITEM_ARMOR: { if(m_pOwner->GetWear(WEAR_COSTUME_BODY) && m_pOwner->CostumeVisible() == true) break; if(GetSubType() == ARMOR_BODY || GetSubType() == ARMOR_HEAD || GetSubType() == ARMOR_FOOTS || GetSubType() == ARMOR_SHIELD) { if(bAdd) { if(GetProto()->bSubType == ARMOR_BODY) m_pOwner->SetPart(PART_MAIN, GetVnum()); } else { if(GetProto()->bSubType == ARMOR_BODY) m_pOwner->SetPart(PART_MAIN, m_pOwner->GetOriginalPart(PART_MAIN)); } } } break; 1. Search: case ITEM_COSTUME: { DWORD toSetValue = this->GetVnum(); EParts toSetPart = PART_MAX_NUM; if (GetSubType() == COSTUME_BODY) { toSetPart = PART_MAIN; if (false == bAdd) { const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY); toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN); } } 2. Change with: case ITEM_COSTUME: { DWORD toSetValue = this->GetVnum(); EParts toSetPart = PART_MAX_NUM; if(GetSubType() == COSTUME_BODY) { toSetPart = PART_MAIN; if(false == bAdd || (m_pOwner->GetWear(WEAR_BODY) && m_pOwner->CostumeVisible() == false)) { const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY); toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN); } } Good quest: quest costume begin state start begin when login begin cmdchat("costume "..q.getcurrentquestindex()) end when button or info begin if pc.getqf("costume") == 1 then chat("You chose visibility costume.") pc.setqf("costume", 2) pc.costume(0) elseif pc.getqf("costume") == 2 then chat("You chose visibility armor.") pc.setqf("costume", 1) pc.costume(1) end end end end quest login_costume_use begin state start begin when login with pc.getqf("block_quest") == 0 begin pc.setqf("block_quest", 1) pc.setf("costume", "costume", 1) end end end
  15. And why is it necessary to make a reply with that? : price, bugs of the design, if there is a possibility for minor custom job (more like 2 small fixes) and if so, specify if there is an extra fee about custom job and how much is this fee... When you can easily put it that people have to contact you through a private message or give your skype. I apologize for this comment but it was only an opinion, not something bad.
  16. if (FindAffect(ALIGNMENT_BONUS_1)) { if (GetRealAlignment() != NAME_ALIGNMENT_1) { RemoveAffect(ALIGNMENT_BONUS_1); //return false; } } I apologize for this ugly code, but I'm very tired. I haven't tested this, but I can help you more on skype, because we did not stay very long forum.
  17. affect.h: // 1) Search: AFFECT_CUBE_12, // 2) After make a new line and paste: ALIGNMENT_BONUS_1, ALIGNMENT_BONUS_2, Code for use: #ifdef __ALIGNMENT_BONUS__ if (GetRealAlignment() == NAME_ALIGNMENT_1) { AddAffect(ALIGNMENT_BONUS_1, POINT_MAX_HP, VALUE_BONUS_ALIGNMENT_1, 0, ALIGNMENT_TIME, 0, true); } if (GetRealAlignment() == NAME_ALIGNMENT_2) { AddAffect(ALIGNMENT_BONUS_2, POINT_MAX_HP, VALUE_BONUS_ALIGNMENT_2, 0, ALIGNMENT_TIME, 0, true); } #endif service.h: #define __ALIGNMENT_BONUS__ #define NAME_ALIGNMENT_1 100000 #define NAME_ALIGNMENT_2 200000 #define ALIGNMENT_TIME (60*60*24*365) #define VALUE_BONUS_ALIGNMENT_1 1000 #define VALUE_BONUS_ALIGNMENT_2 2000 You can add code execution in input_login.cpp -> EnterGame
  18. https://www.youtube.com/watch?v=GFgy0Jx-Pic
  19. char.cpp: Search and delete: if (GetRealAlignment() < 0) { if (IsEquipUniqueItem(UNIQUE_ITEM_FASTER_ALIGNMENT_UP_BY_TIME)) UpdateAlignment(120 * (dwPlayedTime / 60000)); else UpdateAlignment(60 * (dwPlayedTime / 60000)); } else UpdateAlignment(5 * (dwPlayedTime / 60000)); } If you want when you sign King item (70050) as your degree of alignment to grow then alter the function only with this: if (GetRealAlignment() < 0) { if (IsEquipUniqueItem(UNIQUE_ITEM_FASTER_ALIGNMENT_UP_BY_TIME)) UpdateAlignment(120 * (dwPlayedTime / 60000)); } And search in char_battle.cpp and delete function: if (pkAttacker->IsPC()) { if (GetLevel() - pkAttacker->GetLevel() >= -10) if (pkAttacker->GetRealAlignment() < 0) { if (pkAttacker->IsEquipUniqueItem(UNIQUE_ITEM_FASTER_ALIGNMENT_UP_BY_KILL)) pkAttacker->UpdateAlignment(14); else pkAttacker->UpdateAlignment(7); } else pkAttacker->UpdateAlignment(2); I hope I understood what you said, correct me if not, this is want you want?
  20. # 1.) Search in game.py: onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) # 2.) Add below: onPressKeyDict[app.DIK_F5] = lambda : self.LoadScript() def LoadScript(self): import mtdbg mtdbg.LoadMichaFile("files_work_1.py", "NameClassWindow") Add in root new files mtdbg.py and he added: import ui import imp as micha_imp global actual_michabg_files actual_michabg_files = {} class LoadMichaFile(ui.ScriptWindow): def __init__(self, micha_f, micha): global actual_michabg_files ui.ScriptWindow.__init__(self) self.Show() k = micha_f + "|"+ micha if(actual_michabg_files.has_key(k)): if(actual_michabg_files[k] != None): actual_michabg_files[k].Hide() actual_michabg_files[k] = None self.s = micha_imp.load_source(micha, micha_f) self._c= getattr(self.s, micha)() self._c.Show() actual_michabg_files[k] = self._c print "Reloaded "+ micha_f + "." + micha def __del__(self): ui.ScriptWindow.__del__(self) Example of use: Put the script you want to edit root client and rename it in files_work_1.py then enter and edit your class like: class NameClassWindow(ui.BoardWithTitleBar): # --* NEW Thanks to @Micha aka xCPx
  21. You can start with this: http://pastebin.com/ZdJapmZ4
  22. Another solution easier: #ifdef __ENABLE_EFFECT_COSTUME_FUNCTION_PROTO_ case CItemData::ITEM_TYPE_COSTUME: if (pItem->GetSubType() == CItemData::COSTUME_BODY) { DWORD vnum = pItem->GetIndex(); long value_proto = pItem->GetValue(3); if (value_proto == 1000) __AttachEffect(EFFECT_REFINED+EFFECT_COSTUME_TITAN_1); else if (value_proto == 1500) __AttachEffect(EFFECT_REFINED+EFFECT_COSTUME_TITAN_2); else if (value_proto == 2000) __AttachEffect(EFFECT_REFINED+EFFECT_COSTUME_TITAN_3); else if (value_proto == 2500) __AttachEffect(EFFECT_REFINED+EFFECT_COSTUME_TITAN_4); else if (value_proto == 3000) __AttachEffect(EFFECT_REFINED+EFFECT_COSTUME_TITAN_5); } } #endif
  23. For yellow: colorInfo.py: CHR_NAME_RGB_MOB = (235, 22, 9) CHR_NAME_RGB_NPC = (122, 231, 93) CHR_NAME_RGB_PC = (255, 215, 76) CHR_NAME_RGB_PK = (180, 100, 0) CHR_NAME_RGB_PVP = (238, 54, 223) CHR_NAME_RGB_PARTY = (128, 192, 255) CHR_NAME_RGB_WARP = (136, 218, 241) CHR_NAME_RGB_WAYPOINT = (255, 255, 255) Because in uiMiniMap.py exist: self.tooltipInfo.SetTextColor(dwTextColor) With colors and functions are loaded here: And check your function in introLoading.py:
×
×
  • 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.