Untitled
unknown
plain_text
a year ago
5.4 kB
5
Indexable
Cache.cpp
replace
void CGrowthPetCache::OnFlush()
{
char szQuery[QUERY_MAX_LEN];
if (m_data.dwVnum == 0)
{
snprintf(szQuery, sizeof(szQuery), "DELETE FROM growth_pet%s WHERE id=%u", GetTablePostfix(), m_data.dwID);
CDBManager::instance().ReturnQuery(szQuery, QID_GROWTH_PET_DELETE, 0, NULL);
if (g_test_server)
sys_log(0, "CGrowthPetCache::Flush : DELETE %u %s", m_data.dwID, szQuery);
}
else
{
static char skillBuf[QUERY_MAX_LEN + 1] = {0};
CDBManager::instance().EscapeString(skillBuf, reinterpret_cast<const char*>(m_data.aSkill), sizeof(m_data.aSkill));
size_t queryLen = snprintf(szQuery, sizeof(szQuery),
"INSERT INTO growth_pet%s (id, owner_id, vnum, state, name, size, level, level_step, evolution, type, hp, sp, def, hp_apply, sp_apply, def_apply, age_apply, exp, item_exp, birthday, end_time, max_time, skill_level) "
"VALUES (%u, %u, %u, %u, '%s', %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %d, %d, FROM_UNIXTIME(%u), %u, %u, '%s') "
"ON DUPLICATE KEY UPDATE "
"owner_id = %u, vnum = %u, state = %u, name = '%s', size = %u, level = %u, level_step = %u, evolution = %u, type = %u, hp = %u, sp = %u, def = %u, "
"hp_apply = %u, sp_apply = %u, def_apply = %u, age_apply = %u, exp = %d, item_exp = %d, birthday = FROM_UNIXTIME(%u), end_time = %u, max_time = %u, skill_level = '%s'",
GetTablePostfix(),
m_data.dwID,
m_data.dwOwner,
m_data.dwVnum,
m_data.bState,
m_data.szName,
m_data.bSize,
m_data.dwLevel,
m_data.bLevelStep,
m_data.bEvolution,
m_data.bType,
m_data.dwHP,
m_data.dwSP,
m_data.dwDef,
m_data.dwHPApply,
m_data.dwSPApply,
m_data.dwDefApply,
m_data.dwAgeApply,
m_data.lExp,
m_data.lItemExp,
m_data.lBirthday,
m_data.lEndTime,
m_data.lMaxTime,
skillBuf,
m_data.dwOwner,
m_data.dwVnum,
m_data.bState,
m_data.szName,
m_data.bSize,
m_data.dwLevel,
m_data.bLevelStep,
m_data.bEvolution,
m_data.bType,
m_data.dwHP,
m_data.dwSP,
m_data.dwDef,
m_data.dwHPApply,
m_data.dwSPApply,
m_data.dwDefApply,
m_data.dwAgeApply,
m_data.lExp,
m_data.lItemExp,
m_data.lBirthday,
m_data.lEndTime,
m_data.lMaxTime,
skillBuf
);
CDBManager::instance().ReturnQuery(szQuery, QID_GROWTH_PET_SAVE, 0, NULL);
m_bNeedQuery = false;
}
}
this code new make update Cache
Char_item.cpp
search
ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (BAG-BAG TRANSFER)");
and you find
else
Below this replace the code
if (!item->GetSocket(2))
return false;
LPGROWTH_PET pPet = GetGrowthPet(item->GetSocket(2));
if (!pPet)
return false;
time_t currentTime = time(0);
DWORD dwBagTime = item->GetSocket(0) - item->GetLimitValue(0);
DWORD dwPetAge = currentTime - pPet->GetPetPoint(POINT_UPBRINGING_BIRTHDAY) - (currentTime - dwBagTime);
DWORD dwPetDuration = currentTime + pPet->GetPetPoint(POINT_UPBRINGING_MAX_DURATION) + (7 * 24 * 60 * 60);
LPITEM pUpBringingItem = AutoGiveItem(pPet->GetSummonItemVnum());
TGrowthPet petTable;
pPet->CreateGrowthPetProto(&petTable);
petTable.dwID = pPet->GetPetID();
petTable.lBirthday = currentTime - dwPetAge;
petTable.lEndTime = dwPetDuration;
petTable.bState = STATE_UPBRINGING;
pPet->SetGrowthPetProto(&petTable);
pUpBringingItem->SetSocket(0, dwPetDuration);
pUpBringingItem->SetSocket(1, petTable.lMaxTime);
pUpBringingItem->SetSocket(2, pPet->GetPetID());
pPet->SetSummonItem(pUpBringingItem);
pPet->Save();
SetGrowthPet(pPet);
ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (BAG-UPBRINGING TRANSFER)");
}
} break;
}
file growth_pet.cpp
search
LPGROWTH_PET CGrowthPetManager::CreateGrowthPet
change
LPGROWTH_PET CGrowthPetManager::CreateGrowthPet(LPCHARACTER ch, DWORD dwID)
{
auto it = m_growthPetGlobalMap.find(dwID);
if (it != m_growthPetGlobalMap.end())
{
sys_log(0, "Using existing growth pet with id %d", dwID);
return it->second;
}
LPGROWTH_PET pPet = M2_NEW CGrowthPet(ch);
m_growthPetGlobalMap.emplace(dwID, pPet);
return pPet;
}
Editor is loading...
Leave a Comment