-
Posts
726 -
Joined
-
Last visited
-
Days Won
44 -
Feedback
0%
Ken last won the day on May 14 2019
Ken had the most liked content!
About Ken
![](https://metin2.dev/uploads/theme-resources/monthly_2024_04/inactive_member.png.93c58f8d97615030f47bf5c572db6f20.png)
- Birthday July 10
Informations
-
Gender
Not Telling
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
Ken's Achievements
-
Ken changed their profile photo
-
ALEX ۩͇̿V͇̿I͇̿P͇̿۩ started following Ken
-
How about now?
-
M2 Download Center Download Here ( Internal ) Hey everyone, it's a nice day to share something I just wrote Grid class in python language. You can use it as fast moving into the window with this or something else. Usage: from grid import Grid import item import chat grid = Grid(width=5, height=9) item.SelectItem(11299) (width, height) = item.GetItemSize() available_position = grid.find_blank(width, height) if available_position == -1: chat.AppendChat(chat.CHAT_TYPE_INFO, "There is no available position.") return chat.AppendChat(chat.CHAT_TYPE_INFO, "Available position is %d" % (available_position)) Best Regards Ken
-
If you've interest about reverse engineering, you can check out this tool. (I can't say it's better than IDA). It's just made by NSA. Here is the link for ya. The tool was written in Java. (To provide cross-platform support). [Hidden Content] Installation guide is here too: [Hidden Content]InstallationGuide.html Best Regards Ken
- 3 replies
-
- 11
-
-
-
-
official Official Unpacked Updates Metin2 🚫 No Spam 🚫
Ken replied to pollux's topic in Guides & HowTo
With 19.1, They've added two GUI in the game. (Lucky box, The new fish system). Here are two files. FishingGameWindow.py LuckyBoxWindow.py About the new cheat blocker ; Webzen should try harder than this. At least gameguard was better than this Thanks to @T4UMP Best Regards Ken -
As i see in your codes, you're just trying to show the item's full name that which has not full name (skill book, skill forget items and polymorph items) when you pick up them on the ground. I liked thank you for sharing with us. Best Regards Ken
-
It seems like you're missing format when you call sys_log function. Can you show us to your char_item.cpp, please? Best Regards Ken
-
There is nothing to do with the Syserr file. Do you have any game.core file in your channel folders? It seems like you do have one.
-
The blue lines does not look good. It could be good without them too. Thank you for sharing with us.
-
You can show your character as a NPC. You just need to add a few variables and write a few situations with that variables prevent from Null pointer or unexpected errors. (I mean crashing game file)
-
Hi everyone, I would like to share a memory leak fix about pack type Hybrid, Hybrid with SDB and panama. I saw it while analyzing Webzen's new pack type. EterPack.cpp Search this: if( !m_pCSHybridCryptPolicy->DecryptMemory(std::string(filename), static_cast<const BYTE*>(*data), index->data_size, *zObj) ) { return false; } Replace with this if( !m_pCSHybridCryptPolicy->DecryptMemory(std::string(filename), static_cast<const BYTE*>(*data), index->data_size, *zObj) ) { delete zObj; return false; } Search this: if( !m_pCSHybridCryptPolicy->GetSupplementaryDataBlock(std::string(filename), pSDBData, iSDBSize) ) { return false; } Replace with this if( !m_pCSHybridCryptPolicy->GetSupplementaryDataBlock(std::string(filename), pSDBData, iSDBSize) ) { delete zObj; return false; } Search this: else if (COMPRESSED_TYPE_PANAMA == index->compressed_type) { CLZObject * zObj = new CLZObject; __Decrypt_Panama(filename, static_cast<const BYTE*>(*data), index->data_size, *zObj); out_file.BindLZObjectWithBufferedSize(zObj); *data = zObj->GetBuffer(); } Replace with this: else if (COMPRESSED_TYPE_PANAMA == index->compressed_type) { CLZObject * zObj = new CLZObject; if (!__Decrypt_Panama(filename, static_cast<const BYTE*>(*data), index->data_size, *zObj)) { delete zObj; return false; } out_file.BindLZObjectWithBufferedSize(zObj); *data = zObj->GetBuffer(); } Best Regards Ken
-
Welcome to the party
-
Hi, everyone today I would like to share a fix which Webzen has made with you. The fix is about the target position. Ymir is not checking if the target is on horse or not. It would be useful for range attacks. Find this: D3DXVECTOR3 CActorInstance::OnGetFlyTargetPosition() { D3DXVECTOR3 v3Center; if (m_fRadius<=0) { BuildBoundingSphere(); v3Center = m_v3Center; } else { v3Center = m_v3Center; } D3DXVec3TransformCoord(&v3Center, &v3Center, &GetTransform()); return v3Center; } Replace with this: D3DXVECTOR3 CActorInstance::OnGetFlyTargetPosition() { D3DXVECTOR3 v3Center; if (m_fRadius <= 0) BuildBoundingSphere(); v3Center = m_v3Center; D3DXVec3TransformCoord(&v3Center, &v3Center, &GetTransform()); if (__IsMountingHorse()) v3Center.z += 110.0f; return v3Center; } Best Regards Ken
-
Search some functions and Lists
Ken replied to VenTus's topic in Community Support - Questions & Answers
Psuedo-Code ; signed int __stdcall CPythonNonPlayer::GetMonsterHitRange(char a1) { signed int v2; // [esp+0h] [ebp-1Ch] int v3; // [esp+18h] [ebp-4h] v3 = sub_3236B90(a1); if ( !v3 ) return 70.0; if ( *(v3 + 272) ) v2 = *(v3 + 272); else v2 = 100; return v2; } Reversed function: float CPythonNonPlayer::GetMonsterHitRangeByVnum(DWORD raceVnum) const { const TMobTable * p = GetTable(raceVnum); if (!p) return 70.0f; if (p->hitRange) return p->hitRange; return 100.0f; } Best Regards Ken