-
Posts
105 -
Joined
-
Last visited
-
Days Won
2
Content Type
Forums
Articles
Blogs
Events
Gallery
Store
Downloads
Profiles
Everything posted by ALLex
-
Download: [Hidden Content]
-
The real icons will appear instead of the icons of the objects in the effects. All objects have been replaced with icons of the same size as in the game itself, so there is no extra file you need to upload. root/uiaffectshower.py [Hidden Content] Maybe you need this to
-
FIX- "Dragon God Attack" display in upper left corner
ALLex replied to ALLex's topic in Metin2 Fixes
Automatic Message This topic has been moved from "Resources and information metin2 servers > [C++ / Python] Metin2 Systems" to "[C++ / Python] Metin2 Systems > Resources and information metin2 servers > Metin2 Fixes" -
I am sharing about a customer of mine... You shouldn't pay for such ridiculous things. Software developers are charging high prices for this. It's a shame. I will continue to share projects that are always low-cost so that people don't get scammed. If the sharing has been done, the topic can be closed. Open, Root/ uiminimap.py . Search CANNOT_SEE_INFO_MAP_DICT = { "metin2_map_monkeydungeon" : False, "metin2_map_monkeydungeon_02" : False, "metin2_map_monkeydungeon_03" : False, "metin2_map_devilsCatacomb" : False, } Now you can add after "metin2_map_devilsCatacomb" : False, any map you want to hide Exemple: CANNOT_SEE_INFO_MAP_DICT = { "metin2_map_monkeydungeon" : False, "metin2_map_monkeydungeon_02" : False, "metin2_map_monkeydungeon_03" : False, "metin2_map_devilsCatacomb" : False, "metin2_map_metin2.network" : False, "metin2_map_serverfiles" : False, "metin2_map_c++_systems" : False, }
-
Good day everyone, after you die and restart, your character becomes invisible for a certain period of time. Open the cmd_general.cpp file and search for the code below. NOTE: There may be 2 of them. Apply the same process to both results. ch->ReviveInvisible(5); You can change the number 5 in the parentheses according to your own preference.
-
UserInterface\InstanceBase\InstanceBaseEffect.cpp AÇ Search sprintf(szText, "Lv%", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); CHANGE IT TO THE ONE BELOW, IT IS MADE FROM 65 LEVEL TO 250 LEVEL, YOU CAN ADJUST IT ACCORDING TO THE LEVEL OF YOUR SERVER. void CInstanceBase::UpdateTextTailLevel(DWORD level) { static D3DXCOLOR s_kLevelColor = D3DXCOLOR(152.0f/255.0f, 255.0f/255.0f, 51.0f/255.0f, 1.0f); char szText[256]; //FTYAZİLİM_LVL_RENK if (level >= 65 && level < 70) { sprintf(szText, "|cFF959697Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 70 && level < 100) { sprintf(szText, "|cFFFFFFFFLv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 100 && level < 120) { sprintf(szText, "|cFF00FF7FLv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 120 && level < 140) { sprintf(szText, "|cFF00FF00Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 140 && level < 150) { sprintf(szText, "|cFF00CCFFLv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 150 && level < 160) { sprintf(szText, "|cFF0000FFLv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 160 && level < 170) { sprintf(szText, "|cFFDA70D6Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 170 && level < 180) { sprintf(szText, "|cFFC67171Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 180 && level < 190) { sprintf(szText, "|cFF00FFFFLv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 190 && level < 200) { sprintf(szText, "|cFFFFCC00Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 200 && level < 240) { sprintf(szText, "|cFFFF4500Lv %d|r", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } else if (level >= 250) { sprintf(szText, "Lv %d", level); CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor); } }
-
Freebsd 13.2+ Mariadb 10.6.16 pkg install python3 Navicat id: mdkc password: Dev Download: [Hidden Content]
-
Download: [Hidden Content] Bsd:
-
DELETE FROM item WHERE owner_id="account id" snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window < %d or window = %d or window %d)", GetTablePostfix(), pi->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY); snprintf(queryStr, sizeof(queryStr), "DELETE FROM item%s WHERE owner_id=%d AND (window in ('INVENTORY','EQUIPMENT','DRAGON_SOUL_INVENTORY'))", GetTablePostfix(), pi->player_id);
-
P2PSendSwitchbot: No switchbot found to transfer. (pid 28 source_port 13000 target_port 16000) error appears when you change ch,port etc new_switchbot.cpp 1 void CSwitchbotManager::Initialize() { m_map_Switchbots.clear(); } to void CSwitchbotManager::Initialize() { for (auto& it : m_map_Switchbots) { delete it.second; } m_map_Switchbots.clear(); } 2 void CSwitchbotManager::P2PSendSwitchbot(DWORD player_id, WORD wTargetPort) { CSwitchbot* pkSwitchbot = FindSwitchbot(player_id); if (!pkSwitchbot) { sys_err("No switchbot found to transfer. (pid %d source_port %d target_port %d)", player_id, mother_port, wTargetPort); return; } pkSwitchbot->Pause(); to void CSwitchbotManager::P2PSendSwitchbot(DWORD player_id, uint16_t wTargetPort) { CSwitchbot* pkSwitchbot = FindSwitchbot(player_id); if (!pkSwitchbot) { return; } pkSwitchbot->Pause(); m_map_Switchbots.erase(player_id); TPacketGGSwitchbot pack; pack.wPort = wTargetPort; pack.table = pkSwitchbot->GetTable(); delete pkSwitchbot; pkSwitchbot = nullptr; P2P_MANAGER::Instance().Send(&pack, sizeof(pack)); }
-
And because my love is unconditional for you metinists, I decided to leave you this fix for a bug that is present on most servers. After the changes below, the dragon god's attack will appear in the list of effects in the upper left corner next to the other (affect). 53377cbb2f496da17b44d903ffb221b8.mp4 Open uiaffectshower.py and search for: MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",), Under add: MALL_DESC_IDX_START+player.POINT_ATT_BONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",), Open PythonPlayerModule.cpp and search for: PyModule_AddIntConstant(poModule, "POINT_MALL_ATTBONUS", POINT_MALL_ATTBONUS); Under add: PyModule_AddIntConstant(poModule, "POINT_ATT_BONUS", POINT_ATT_BONUS);
-
Now maybe some of you don't see it as a problem, maybe others do, I hope it helps you Replace in PythonPlayerInput.cpp function ::__OnPressGround With this void CPythonPlayer::__OnPressGround(CInstanceBase& rkInstMain, const TPixelPosition& c_rkPPosPickedGround) { __ClearReservedAction(); __ClearAutoAttackTargetActorID(); #ifdef ENABLE_METIN_QUEUE for (DWORD dwVirtualID : m_vecQuqueAutoAttack) { CInstanceBase* pkInstTarget = NEW_FindActorPtr(dwVirtualID); if (pkInstTarget) { pkInstTarget->SetAutoFarmAffect(false); } } m_vecQuqueAutoAttack.clear(); #endif if (NEW_CancelFishing()) return; if (!__IsMovableGroundDistance(rkInstMain, c_rkPPosPickedGround)) return; if (!rkInstMain.NEW_MoveToDestPixelPositionDirection(c_rkPPosPickedGround)) { __ReserveClickGround(c_rkPPosPickedGround); return; } }
-
Before ddf1462c637f1d75e71f9805da2b71bd.mp4 After 29f70a73e797c42eb891258bf134b0fa.mp4 Open char.cpp and search : void CHARACTER::ComputePoints() SetMaxStamina(iMaxStamina); add after int iCurHP = this->GetHP(); int iCurSP = this->GetSP(); Search ComputeSkillPoints(); RefreshAffect(); CPetSystem* pPetSystem = GetPetSystem(); if (NULL != pPetSystem) { pPetSystem->RefreshBuff(); } for (TMapBuffOnAttrs::iterator it = m_map_buff_on_attrs.begin(); it != m_map_buff_on_attrs.end(); it++) { it->second->GiveAllAttributes(); } UpdatePacket(); } Repleace with this ComputeSkillPoints(); RefreshAffect(); if (IsPC()) { CPetSystem * pPetSystem = GetPetSystem(); if (pPetSystem) pPetSystem->RefreshBuff(); // @Fixed Hp/Mp mount/unmount if (this->GetHP() != iCurHP) this->PointChange(POINT_HP, iCurHP-this->GetHP()); if (this->GetSP() != iCurSP) this->PointChange(POINT_SP, iCurSP-this->GetSP()); } UpdatePacket(); }