Untitled
unknown
plain_text
5 months ago
5.4 kB
3
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