You are also working on main 5.2, as I am continuing but with little time.
if (ms_per_frame > 0.0)
{
if (g_FPSOverrideActive == 1 && g_FPSOverrideMs > 0.0)
{
ms_per_frame = g_FPSOverrideMs;
}
const double now_ms = g_pTimer->GetAbsTime();
const double elapsed_ms = now_ms - last_render_tick_count;
if (elapsed_ms < ms_per_frame)
{
double rest_ms = ms_per_frame - elapsed_ms;
if (g_UseOriginal150FPSPipeline)
{
// ORIGINAL PIPELINE FIX
if (rest_ms > 1.0)
{
Sleep((DWORD)rest_ms);
}
}
else
{
// SLEEP SPIN FOR RECHECK
// CPU AT TIMING
constexpr float min_spin_ms = 1.0f;
constexpr float spin_yield_threshold_ms = 0.5f;
constexpr float sleep_threshold_ms = 5.0f;
const auto sleep_ms = rest_ms - min_spin_ms;
const auto start_sleep = g_pTimer->GetTimeElapsed();
if (sleep_ms > sleep_threshold_ms)
{
std::this_thread::sleep_for(std::chrono::milliseconds(static_cast<long>(sleep_ms)));
}
const auto actual_sleep_ms = g_pTimer->GetTimeElapsed() - start_sleep;
const auto start_spin = g_pTimer->GetTimeElapsed();
const auto spin_ms = rest_ms - actual_sleep_ms;
// ROT + FRAME COUNT TIMIBNGS
while (true)
{
const auto current = g_pTimer->GetTimeElapsed();
const auto spinned_ms = current - start_spin;
if (spinned_ms >= spin_ms) break;
if (spin_ms - spinned_ms > spin_yield_threshold_ms)
{
std::this_thread::yield();
}
}
}
current_tick_count += static_cast<int>(rest_ms);
}
}
bool CNewUIMyInventory::IsEquipable(int iIndex, ITEM* pItem)
{
if (pItem == nullptr)
return false;
const ITEM_ATTRIBUTE* pAttr = &ItemAttribute[pItem->Type];
const BYTE baseClass = gCharacterManager.GetBaseClass(Hero->Class);
const BYTE stepClass = gCharacterManager.GetStepClass(Hero->Class);
if (!pAttr->RequireClass[baseClass] || pAttr->RequireClass[baseClass] > stepClass)
{
return false;
}
if (baseClass == CLASS_RAGEFIGHTER)
{
if (iIndex == EQUIPMENT_GLOVES)
{
return false;
}
if (pAttr->m_byItemSlot == EQUIPMENT_WEAPON_RIGHT)
{
if (!g_CMonkSystem.RageEquipmentWeapon(iIndex, pItem->Type))
return false;
}
}
const WORD wStrength = CharacterAttribute->Strength + CharacterAttribute->AddStrength;
const WORD wDexterity = CharacterAttribute->Dexterity + CharacterAttribute->AddDexterity;
const WORD wEnergy = CharacterAttribute->Energy + CharacterAttribute->AddEnergy;
const WORD wVitality = CharacterAttribute->Vitality + CharacterAttribute->AddVitality;
const WORD wCharisma = CharacterAttribute->Charisma + CharacterAttribute->AddCharisma;
const WORD wLevel = CharacterAttribute->Level;
const int iItemLevel = pItem->Level;
int iDecNeedStrength = 0;
int iDecNeedDex = 0;
extern JewelHarmonyInfo* g_pUIJewelHarmonyinfo;
if (g_pUIJewelHarmonyinfo != nullptr && iItemLevel >= pItem->Jewel_Of_Harmony_OptionLevel)
{
StrengthenCapability sc;
g_pUIJewelHarmonyinfo->GetStrengthenCapability(&sc, pItem, 0);
if (sc.SI_isNB)
{
iDecNeedStrength += sc.SI_NB.SI_force;
iDecNeedDex += sc.SI_NB.SI_activity;
}
}
if (pItem->SocketCount > 0)
{
for (int i = 0; i < pItem->SocketCount; ++i)
{
const int seed = pItem->SocketSeedID[i];
if (seed == 38)
{
iDecNeedStrength += g_SocketItemMgr.GetSocketOptionValue(pItem, i);
}
else if (seed == 39)
{
iDecNeedDex += g_SocketItemMgr.GetSocketOptionValue(pItem, i);
}
}
}
if (pItem->RequireStrength - iDecNeedStrength > wStrength)
return false;
if (pItem->RequireDexterity - iDecNeedDex > wDexterity)
return false;
if (pItem->RequireEnergy > wEnergy)
return false;
if (pItem->RequireVitality > wVitality)
return false;
if (pItem->RequireCharisma > wCharisma)
return false;
if (pItem->RequireLevel > wLevel)
return false;
if (pItem->Type == ITEM_DARK_RAVEN_ITEM)
{
const auto pPetInfo = GetPetInfo(pItem);
if (pPetInfo == nullptr || pPetInfo->m_dwPetType == PET_TYPE_NONE)
return false;
const int requiredCharisma = 185 + (pPetInfo->m_wLevel * 15);
if (requiredCharisma > wCharisma)
return false;
}
if (gMapManager.WorldActive == WORLD7_ATLANS)
{
if (pItem->Type >= ITEM_HORN_OF_UNIRIA && pItem->Type <= ITEM_HORN_OF_DINORANT)
{
return false;
}
}
if (gMapManager.WorldActive == WORLD10_ICARUS || g_Direction.m_CKanturu.IsMayaScene())
{
if (pItem->Type == ITEM_HORN_OF_UNIRIA)
{
return false;
}
}
if (gMapManager.InChaosCastle() || (Get_State_Only_Elf() && g_isCharacterBuff((&Hero->Object), eBuff_CrywolfHeroContracted)))
{
if ((pItem->Type >= ITEM_HORN_OF_UNIRIA && pItem->Type <= ITEM_DARK_RAVEN_ITEM) || pItem->Type == ITEM_HORN_OF_FENRIR)
return false;
}
else
{
if (((pItem->Type >= ITEM_HORN_OF_UNIRIA && pItem->Type <= ITEM_DARK_HORSE_ITEM) || pItem->Type == ITEM_HORN_OF_FENRIR)
&& Hero->Object.CurrentAction >= PLAYER_SIT1 && Hero->Object.CurrentAction <= PLAYER_SIT_FEMALE2)
{
return false;
}
}
if (iIndex == EQUIPMENT_WEAPON_LEFT || iIndex == EQUIPMENT_WEAPON_RIGHT)
{
ITEM* otherWeapon = &CharacterMachine->Equipment[(iIndex == EQUIPMENT_WEAPON_LEFT) ? EQUIPMENT_WEAPON_RIGHT : EQUIPMENT_WEAPON_LEFT];
if (baseClass == CLASS_ELF)
{
if (pItem->Type != ITEM_ARROWS && pItem->Type != ITEM_BOLT)
{
if (otherWeapon->Type != -1)
{
if (pAttr->TwoHand && otherWeapon->TwoHand)
{
return false;
}
}
}
else if ((pItem->Type == ITEM_ARROWS && otherWeapon->Type == ITEM_BOLT) ||
(pItem->Type == ITEM_BOLT && otherWeapon->Type == ITEM_ARROWS))
{
return false;
}
return true;
}
if (otherWeapon->Type != -1)
{
if (pAttr->TwoHand || otherWeapon->TwoHand)
{
return false;
}
}
}
if (pAttr->m_byItemSlot != iIndex)
{
if (
(iIndex == EQUIPMENT_WEAPON_LEFT || iIndex == EQUIPMENT_WEAPON_RIGHT) &&
(pAttr->m_byItemSlot == EQUIPMENT_WEAPON_LEFT || pAttr->m_byItemSlot == EQUIPMENT_WEAPON_RIGHT)
)
{
if (pAttr->m_byItemSlot == EQUIPMENT_WEAPON_LEFT && pItem->Type >= ITEM_SHIELD && pItem->Type < ITEM_SHIELD + MAX_ITEM_INDEX)
{
return false;
}
if(!pAttr->TwoHand)
return true;
}
if (
(iIndex == EQUIPMENT_RING_LEFT || iIndex == EQUIPMENT_RING_RIGHT) &&
(pAttr->m_byItemSlot == EQUIPMENT_RING_LEFT || pAttr->m_byItemSlot == EQUIPMENT_RING_RIGHT)
)
{
return true;
}
return false;
}
return true;
}
Monogame?just testing
can you share ui bar? Please?View attachment 290641View attachment 290642
almost one week apart. Testing only. but here is my gift:
Code:if (ms_per_frame > 0.0) { if (g_FPSOverrideActive == 1 && g_FPSOverrideMs > 0.0) { ms_per_frame = g_FPSOverrideMs; } const double now_ms = g_pTimer->GetAbsTime(); const double elapsed_ms = now_ms - last_render_tick_count; if (elapsed_ms < ms_per_frame) { double rest_ms = ms_per_frame - elapsed_ms; if (g_UseOriginal150FPSPipeline) { // ORIGINAL PIPELINE FIX if (rest_ms > 1.0) { Sleep((DWORD)rest_ms); } } else { // SLEEP SPIN FOR RECHECK // CPU AT TIMING constexpr float min_spin_ms = 1.0f; constexpr float spin_yield_threshold_ms = 0.5f; constexpr float sleep_threshold_ms = 5.0f; const auto sleep_ms = rest_ms - min_spin_ms; const auto start_sleep = g_pTimer->GetTimeElapsed(); if (sleep_ms > sleep_threshold_ms) { std::this_thread::sleep_for(std::chrono::milliseconds(static_cast<long>(sleep_ms))); } const auto actual_sleep_ms = g_pTimer->GetTimeElapsed() - start_sleep; const auto start_spin = g_pTimer->GetTimeElapsed(); const auto spin_ms = rest_ms - actual_sleep_ms; // ROT + FRAME COUNT TIMIBNGS while (true) { const auto current = g_pTimer->GetTimeElapsed(); const auto spinned_ms = current - start_spin; if (spinned_ms >= spin_ms) break; if (spin_ms - spinned_ms > spin_yield_threshold_ms) { std::this_thread::yield(); } } } current_tick_count += static_cast<int>(rest_ms); } }
IF YOU KNOW, YOU KNEW. #PeakAsWeSpeak
which bar?Monogame?
can you share ui bar? Please?
can you share or guide ?GFx UI implementation in process.
Using ScaleForm 3.2 SDK and plain .gfx/.dds files for now.
View attachment 294315
What is that ? look like render HTML font huh?GFx UI implementation in process.
Using ScaleForm 3.2 SDK and plain .gfx/.dds files for now.
View attachment 294315
Hi. How is it going with GFx interface?GFx UI implementation in process.
Using ScaleForm 3.2 SDK and plain .gfx/.dds files for now.
View attachment 294315
nope, wanna be first?No one shared the ex700 main source yet?

If i had i would have posted it already.nope, wanna be first?![]()
Did you heard that someone has it?If i had i would have posted it already.
Yes some chinese guy(as aways) have it, years ago they posted a unpacked and packettwist disabled main.exe they compiled.Did you heard that someone has it?