Jump to content

xP3NG3Rx

Honorable Member
  • Posts

    855
  • Joined

  • Days Won

    402
  • Feedback

    100%

xP3NG3Rx last won the day on November 4 2025

xP3NG3Rx had the most liked content!

About xP3NG3Rx

Recent Profile Visitors

42769 profile views

xP3NG3Rx's Achievements

God

God (16/16)

  • Well Followed Rare
  • Reacting Well
  • Dedicated
  • Very Popular Rare
  • One Year In

Recent Badges

24.8k

Reputation

  1. Nobody cares what it does if it could do more. There will always be one or two who will show you what is missing from everything. Mr. Perfectos they are. Not even a respond they worth.
  2. * Additional informations Before this version(v26.0.5) they have added these in the v24.2.11: ENABLE_COUNTLINE_RENDER_AFTER_UI ENABLE_RENDER_COUNTLINE_ATTACHED_MOUSE -> New render layer: MOUSE_ATTACHED ui.NumberLine("MOUSE_ATTACHED") References of ENABLE_RENDER_COUNTLINE_ATTACHED_MOUSE: -> uiGuildBank.py -> uiSafebox.py Reference of ENABLE_COUNTLINE_RENDER_AFTER_UI: -> mouseModule.py Before: After:
  3. The fail_type came with v25.1.6. and the custom mining motion type in 2018. The texts are not in the locale, they forgot to add them, since then it still spams into syserr.
  4. It is kind of a "how the flour has made" in a how to make cake question. Back to the topic, I do not know when and why but they already added a change for this which may be invalid (long time did not put that much focus on this section especially reverse engineering, the code below is a potencial maybe): // PythonApplicationModule.cpp struct SCameraDistance { float fShortDistance; float fLongDistance; }; static std::map<std::string, SCameraDistance> gs_mapCamera; static bool gs_bCameraMapInit = false; static inline void InitializeCameraDistances() { if (gs_bCameraMapInit) return; gs_bCameraMapInit = true; gs_mapCamera["metin2_map_n_flame_dragon"] = { 6000.0f, 6000.0f }; gs_mapCamera["metin2_12zi_stage"] = { 5000.0f, 5000.0f }; gs_mapCamera["metin2_map_defensewave"] = { 5000.0f, 5000.0f }; gs_mapCamera["metin2_map_mists_of_island"] = { 5000.0f, 5000.0f }; gs_mapCamera["metin2_map_guild_whitedragon_boss"] = { 7000.0f, 7000.0f }; gs_mapCamera["metin2_map_moonlight_boss"] = { 2500.0f, 5500.0f }; gs_mapCamera["metin2_map_greedy_room"] = { 7000.0f, 7000.0f }; } PyObject* appSetCameraMaxDistance(PyObject* poSelf, PyObject* poArgs) { InitializeCameraDistances(); SCameraDistance rDistance = { 2500.0f, 3500.0f }; const char* c_szCurMapName = CPythonBackground::Instance().GetWarpMapName(); std::map<std::string, SCameraDistance>::iterator it = gs_mapCamera.find(c_szCurMapName); float fMaxDistance = 0.0f; if (it == gs_mapCamera.end()) { if (!PyTuple_GetFloat(poArgs, 0, &fMaxDistance)) return Py_BuildException(); fMaxDistance = fMINMAX(rDistance.fShortDistance, fMaxDistance, rDistance.fLongDistance); // this line is not in the official one, I added to it. } else { rDistance = it->second; if (CPythonSystem::Instance().GetCameraMode()) fMaxDistance = rDistance.fLongDistance; else fMaxDistance = rDistance.fShortDistance; } CCamera::SetCameraMaxDistance(fMaxDistance); return Py_BuildNone(); } This will ignore the default values from the constInfo on the predefined maps and will set the data from the std::map regarding the options.
  5. When does it happen? Because, from that log it does not coming out, you might have sent a wrong log file. It is an errorless close of the client. Here your cursor was on the serverexitbutton, which means you clicked on it and then the phasecurtain came which is already the closing time in the networkStream.MainStream.__ChangePhaseWindow -> app.Exit() Then the destructor of the classes run down successfully.
  6. GF-v25.1.8 Halloween Alternative download link → M2DL GF-v25.1.8 Root Meta Alternative download link → M2DL 25.1.8 Halloween icon Alternative download link → M2DL
  7. GF v25.1.6 Root Meta Alternative download link → M2DL
  8. Download
  9. PSD Files
  10. That's correct, use that for your own. Btw, they made this. I just reversed from their binary. (item.CheckAffect)
  11. GF v24.3.8 Root Meta Alternative download links →M2DL (Includes msm files, dumped binary for IDA)
  12. In the item_manager.cpp -> ITEM_MANAGER::CreateDropItem Give a try to change the "Drop Item Group" (m_map_pkDropItemGroup) iteration like so: // Drop Item Group { itertype(m_map_pkDropItemGroup) it; it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum()); if (it != m_map_pkDropItemGroup.end()) { typeof(it->second->GetVector()) v = it->second->GetVector(); for (DWORD i = 0; i < v.size(); ++i) { int iPercent = (v[i].dwPct * iDeltaPercent) / 100; if (iPercent >= number(1, iRandRange)) { item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true); if (item) { if (item->GetType() == ITEM_POLYMORPH) { if (item->GetVnum() == pkChr->GetPolymorphItemVnum()) { item->SetSocket(0, pkChr->GetRaceNum()); } } //##!! else if (item->GetType() == ITEM_SKILLBOOK) // also you can add && pkChr->IsStone() { if (item->GetVnum() == ITEM_SKILLBOOK_VNUM) { if (number(1, 100) <= 30) // 30% { extern const DWORD GetRandomSkillVnum(BYTE bJob = JOB_MAX_NUM, BYTE bSkillGroup = 0); item->SetSocket(0, GetRandomSkillVnum(pkKiller->GetJob(), pkKiller->GetSkillGroup())); } //else //{ // //not needed. CreateItem does the job //} } } //##!! vec_item.push_back(item); } } } } }
  13. The problem is in front of your eyes. Check again the item_proto or your dump_proto. When the dump_proto has no valid subtype handling (it may be in macro what the compiler doesn't see) it will set it to -1 which will be 255.
  14. GF v24.3.6 Root Meta Alternative download link → M2DL
×
×
  • 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.