if(!save || !player->isSaving())
if(!player->isSaving())
query << "`level` = " << std::max((uint32_t)1, player->getLevel()) << ", ";
if(save)
query << "`level` = " << std::max((uint32_t)1, player->getLevel()) << ", ";
query << "`experience` = " << std::max((uint64_t)0, player->getExperience()) << ", ";
if(save)
query << "`experience` = " << std::max((uint64_t)0, player->getExperience()) << ", ";
query << "`maglevel` = " << player->magLevel << ", ";
query << "`mana` = " << player->mana << ", ";
query << "`manamax` = " << player->manaMax << ", ";
query << "`manaspent` = " << player->manaSpent << ", ";
if(save)
{
query << "`maglevel` = " << player->magLevel << ", ";
query << "`mana` = " << player->mana << ", ";
query << "`manamax` = " << player->manaMax << ", ";
query << "`manaspent` = " << player->manaSpent << ", ";
}
query << "`cap` = " << player->getCapacity() << ", ";
if(save)
query << "`cap` = " << player->getCapacity() << ", ";
for(int32_t i = SKILL_FIRST; i <= SKILL_LAST; ++i)
{
query.str("");
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i << db->getUpdateQueryLimitOperator() << ";";
if(!db->executeQuery(query.str()))
return false;
}
if(save)
for(int32_t i = SKILL_FIRST; i <= SKILL_LAST; ++i)
{
query.str("");
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i << db->getUpdateQueryLimitOperator() << ";";
if(!db->executeQuery(query.str()))
return false;
}
FROM //item saving
UNTIL //}
//item saving
if(save)
{
query.str("");
query << "DELETE FROM `player_items` WHERE `player_id` = " << player->getGUID() << ";";
if(!db->executeQuery(query.str()))
return false;
ItemBlockList itemList;
for(int32_t slotId = 1; slotId < 11; ++slotId)
{
if(Item* item = player->inventory[slotId])
itemList.push_back(itemBlock(slotId, item));
}
query_insert.setQuery("INSERT INTO `player_items` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES ");
if(!saveItems(player, itemList, query_insert))
return false;
itemList.clear();
//save depot items
//std::stringstream ss;
for(DepotMap::iterator it = player->depots.begin(); it != player->depots.end(); ++it)
{
/*if(it->second.second)
{
it->second.second = false;
ss << it->first << ",";*/
itemList.push_back(itemBlock(it->first, it->second.first));
//}
}
/*std::string s = ss.str();
size_t size = s.length();
if(size > 0)
{*/
query.str("");
query << "DELETE FROM `player_depotitems` WHERE `player_id` = " << player->getGUID() << ";";// << " AND `pid` IN (" << s.substr(0, --size) << ")";
if(!db->executeQuery(query.str()))
return false;
query_insert.setQuery("INSERT INTO `player_depotitems` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES ");
if(!saveItems(player, itemList, query_insert))
return false;
itemList.clear();
//}
}
for(int32_t i = SKILL_FIRST; i <= SKILL_LAST; ++i)
{
query.str("");
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i << db->getUpdateQueryLimitOperator() << ";";
if(!db->executeQuery(query.str()))
return false;
}
C:\Dev-Cpp\0.3.4pl2\iologindata.cpp In member function `bool IOLoginData::savePlayer(Player*, bool)':
829 C:\Dev-Cpp\0.3.4pl2\iologindata.cpp 'class _Database' has no member named 'getUpdateQueryLimitOperator'
C:\Dev-Cpp\Makefile.win [Build Error] [0.3.4pl2/iologindata.o] Error 1
Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Executing make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c 0.3.4pl2/iologindata.cpp -o 0.3.4pl2/iologindata.o -I"include" -D__USE_MYSQL__ -D__USE_SQLITE__ -D__ENABLE_SERVER_DIAGNOSTIC__
0.3.4pl2/iologindata.cpp: In member function `bool IOLoginData::savePlayer(Player*, bool)':
0.3.4pl2/iologindata.cpp:829: error: 'class _Database' has no member named 'getUpdateQueryLimitOperator'
make.exe: *** [0.3.4pl2/iologindata.o] Error 1
Execution terminated
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i << db->getUpdateQueryLimitOperator() << ";";
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i;
if(save)
for(int32_t i = SKILL_FIRST; i <= SKILL_LAST; ++i)
{
query.str("");
query << "UPDATE `player_skills` SET `value` = " << player->skills[i][SKILL_LEVEL] << ", `count` = " << player->skills[i][SKILL_TRIES] << " WHERE `player_id` = " << player->getGUID() << " AND `skillid` = " << i << db->getUpdateQueryLimitOperator() << ";";
if(!db->executeQuery(query.str()))
return false;
}
anyways, i compiled it and got the exe, tested it and chars exp/skills/items still save
depot doesnt save
my bad for double post
//item saving
ItemBlockList itemList;
if(save)
{
query.str("");
query << "DELETE FROM `player_items` WHERE `player_id` = " << player->getGUID() << ";";
if(!db->executeQuery(query.str()))
return false;
for(int32_t slotId = 1; slotId < 11; ++slotId)
{
if(Item* item = player->inventory[slotId])
itemList.push_back(itemBlock(slotId, item));
}
query_insert.setQuery("INSERT INTO `player_items` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES ");
if(!saveItems(player, itemList, query_insert))
return false;
itemList.clear();
}
//save depot items
//std::stringstream ss;
for(DepotMap::iterator it = player->depots.begin(); it != player->depots.end(); ++it)
{
/*if(it->second.second)
{
it->second.second = false;
ss << it->first << ",";*/
itemList.push_back(itemBlock(it->first, it->second.first));
//}
}
/*std::string s = ss.str();
size_t size = s.length();
if(size > 0)
{*/
query.str("");
query << "DELETE FROM `player_depotitems` WHERE `player_id` = " << player->getGUID() << ";";// << " AND `pid` IN (" << s.substr(0, --size) << ")";
if(!db->executeQuery(query.str()))
return false;
query_insert.setQuery("INSERT INTO `player_depotitems` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES ");
if(!saveItems(player, itemList, query_insert))
return false;
itemList.clear();
//}
Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\0.3.4pl2\Makefile.win"
Executing make...
make.exe -f "C:\Dev-Cpp\0.3.4pl2\Makefile.win" all
g++.exe -c iologindata.cpp -o iologindata.o -I"include" -D__USE_MYSQL__ -D__USE_SQLITE__ -D__ENABLE_SERVER_DIAGNOSTIC__
iologindata.cpp:899: error: expected constructor, destructor, or type conversion before '.' token
iologindata.cpp:900: error: expected constructor, destructor, or type conversion before '<<' token
iologindata.cpp:901: error: expected unqualified-id before "if"
iologindata.cpp:904: error: expected constructor, destructor, or type conversion before '->' token
iologindata.cpp:905: error: expected constructor, destructor, or type conversion before '.' token
iologindata.cpp:906: error: expected unqualified-id before "for"
iologindata.cpp:906: error: expected constructor, destructor, or type conversion before '!=' token
iologindata.cpp:906: error: expected unqualified-id before '++' token
iologindata.cpp:913: error: expected unqualified-id before "if"
iologindata.cpp:916: error: expected unqualified-id before "if"
iologindata.cpp:937: error: expected constructor, destructor, or type conversion before '.' token
iologindata.cpp:938: error: expected constructor, destructor, or type conversion before '<<' token
iologindata.cpp:939: error: expected unqualified-id before "if"
iologindata.cpp:942: error: expected constructor, destructor, or type conversion before '.' token
iologindata.cpp:943: error: expected unqualified-id before "for"
iologindata.cpp:943: error: expected constructor, destructor, or type conversion before '!=' token
iologindata.cpp:943: error: expected constructor, destructor, or type conversion before '++' token
iologindata.cpp:953: error: expected unqualified-id before "if"
iologindata.cpp:957: error: expected unqualified-id before "return"
iologindata.cpp:958: error: expected declaration before '}' token
make.exe: *** [iologindata.o] Error 1
Execution terminated