SavePlayerUpgradeLevels(client, Handle:hTransaction=INVALID_HANDLE)
{
// Save upgrade levels
new iSize = GetUpgradeCount();
new upgrade[InternalUpgradeInfo], playerupgrade[PlayerUpgradeInfo];
new iAdded;
decl String:sQuery[8192];
Format(sQuery, sizeof(sQuery), "REPLACE INTO %s (player_id, upgrade_id, purchasedlevel, selectedlevel, enabled, visuals, sounds) VALUES ", TBL_PLAYERUPGRADES);
for(new i=0;i<iSize;i++)
{
GetUpgradeByIndex(i, upgrade);
if(!IsValidUpgrade(upgrade))
continue;
if(iAdded > 0)
Format(sQuery, sizeof(sQuery), "%s, ", sQuery);
GetPlayerUpgradeInfoByIndex(client, i, playerupgrade);
Format(sQuery, sizeof(sQuery), "%s(%d, %d, %d, %d, %d, %d, %d)", sQuery, g_iPlayerInfo[client][PLR_dbId], upgrade[UPGR_databaseId], GetClientPurchasedUpgradeLevel(client, i), GetClientSelectedUpgradeLevel(client, i), playerupgrade[PUI_enabled], playerupgrade[PUI_visuals], playerupgrade[PUI_sounds]);
iAdded++;
}
if(iAdded > 0)
{
// Add the query to the transaction instead of running it right away.
if(hTransaction != INVALID_HANDLE)
SQL_AddQuery(hTransaction, sQuery);
else
SQL_TQuery(g_hDatabase, SQL_DoNothing, sQuery);
}
}