Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/27/16 in all areas

  1. Hello everyone. If you play or played on gameforge servers you should to know that what is this. When you are opening more than one clients the icon of the applications (on the windows taskbar) are groupped like With this little modification you can do like this(as on gameforge clients work): Open the EterLib\MSWindow.cpp and paste this under the #include <windowsx.h> line: #define DISABLE_TASKBAR_GROUPING #ifdef DISABLE_TASKBAR_GROUPING #include <Shobjidl.h> #endif Then scroll down to the CMSWindow::Create function and search this code: if (!m_hWnd) return false; Paste the following code below of that: #ifdef DISABLE_TASKBAR_GROUPING OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); if (v.dwMajorVersion == 6 && v.dwMinorVersion >= 1 || v.dwMajorVersion > 6) { WCHAR myAppID[128]; swprintf(myAppID, sizeof(myAppID) / sizeof(myAppID[0]), L"MyMetin2AppID%u", GetCurrentProcessId()); HRESULT hr = SetCurrentProcessExplicitAppUserModelID(myAppID); if (!SUCCEEDED(hr)) return false; } #endif The if-statement checks your windows version and if passed, the ungrouping will run. (6.1 is Win7SP1) P3NG3R
    1 point
  2. Purpose of this HowTo: Making your Makefile's output look cleaner. Guide:
    1 point
  3. Good job but have a little problem about "SetCurrentProcessExplicitAppUserModelID" usage API works on Win7 or later, You already do requirement with GetVersionEx but it is not enough because you are already used "SetCurrentProcessExplicitAppUserModelID" in your client and builded IAT with this API so when XP or Vista users try run your client he will get this error. You need call as dynamic, like this; OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); if (v.dwMajorVersion >= 6 && v.dwMinorVersion >= 1) { WCHAR myAppID[128]; swprintf(myAppID, sizeof(myAppID) / sizeof(myAppID[0]), L"MyMetin2AppID%u", GetCurrentProcessId()); typedef HRESULT(WINAPI* SetCurrentProcessExplicitAppUserModelIDptr)(_In_ PCWSTR AppID); SetCurrentProcessExplicitAppUserModelIDptr SetCurrentProcessExplicitAppUserModelIDo = (SetCurrentProcessExplicitAppUserModelIDptr)GetProcAddress(LoadLibraryA("shell32.dll"), "SetCurrentProcessExplicitAppUserModelID"); if (SetCurrentProcessExplicitAppUserModelIDo) { HRESULT hr = SetCurrentProcessExplicitAppUserModelIDo(myAppID); if (!SUCCEEDED(hr)) return false; } }
    1 point
  4. One tip: Use [Hidden Content]
    1 point
  5. The exe automates the installation. In the other link, you have to manually put it in the plugin folder inside 3dsMax
    1 point
  6. [Hidden Content] [Hidden Content]
    1 point
  7. stringName is std::string, not char* At the very last, if (!strcmp(strMapEventOx, stringName.c_str())) or if (!stringName.compare(strMapEventOx)) , but the overload of the == operator should be fine in this case.
    1 point
  8. Hey, As I promised that I make a fix for the wolfmans pickaxe, and fishing rod holding, I'm here with it. 1.) Open GameLib\RaceData.h and find this: void RegisterAttachingBoneName(DWORD dwPartIndex, const char * c_szBoneName); Paste this below: void ChangeAttachingBoneName(DWORD dwPartIndex, const char * c_szBoneName); 2. Open GameLib\RaceData.cpp and find this function: void CRaceData::RegisterAttachingBoneName(DWORD dwPartIndex, const char * c_szBoneName) { m_AttachingBoneNameMap.insert(TAttachingBoneNameMap::value_type(dwPartIndex, c_szBoneName)); } Than paste this function below: void CRaceData::ChangeAttachingBoneName(DWORD dwPartIndex, const char * c_szBoneName) { TAttachingBoneNameMap::iterator it = m_AttachingBoneNameMap.find(dwPartIndex); if (it == m_AttachingBoneNameMap.end()) return; //m_AttachingBoneNameMap[dwPartIndex] = c_szBoneName; //bad behavior possiblity it->second = c_szBoneName; } The following modification is may different by systems like costume weapon and so on, so I give a solution for clean version, you have to make it yourself. 3.) Open GameLib\ActorInstanceAttach.cpp and find this code(or something like that with other systems): void CActorInstance::AttachWeapon(DWORD dwItemIndex,DWORD dwParentPartIndex, DWORD dwPartIndex) { //[...] __DestroyWeaponTrace(); //ľçĽŐą«±â(ŔÚ°´ Ŕ̵µ·ů) żŢĽŐ,żŔ¸ĄĽŐ ¸đµÎżˇ ŔĺÂř. if (__IsRightHandWeapon(pItemData->GetWeaponType())) AttachWeapon(dwParentPartIndex, CRaceData::PART_WEAPON, pItemData); if (__IsLeftHandWeapon(pItemData->GetWeaponType())) AttachWeapon(dwParentPartIndex, CRaceData::PART_WEAPON_LEFT, pItemData); and replace it with this: void CActorInstance::AttachWeapon(DWORD dwItemIndex,DWORD dwParentPartIndex, DWORD dwPartIndex) { //[...] DWORD dwWeaponType = pItemData->GetWeaponType(); #ifdef ENABLE_WOLFMAN_CHARACTER if (m_eRace == CRaceData::RACE_WOLFMAN_M) { char* szAttachingBoneName = "equip_right_weapon"; if (dwWeaponType != CItemData::WEAPON_CLAW) szAttachingBoneName = "equip_right"; m_pkCurRaceData->ChangeAttachingBoneName(CRaceData::PART_WEAPON, szAttachingBoneName); } #endif __DestroyWeaponTrace(); if (__IsRightHandWeapon(dwWeaponType)) AttachWeapon(dwParentPartIndex, CRaceData::PART_WEAPON, pItemData); if (__IsLeftHandWeapon(dwWeaponType)) AttachWeapon(dwParentPartIndex, CRaceData::PART_WEAPON_LEFT, pItemData); Done, build and enjoy. P3NG3R.
    1 point
  9. if (strMapEventOx == stringName) instead of: if (!strcmp(strMapEventOx, stringName))
    1 point
×
×
  • 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.