before i begin , sorry for the double post, but i felt this was needed a new reply.
Now it messes up the saving or loading.. im not sure.
It keeps giving people other people's stats and info, can anyone check if there is something wrong with the code?
Thanks in advance.
--Edit: it seems that copy and pasting this has messed up the indentation, my apologies.
Code:
public Save(id,info) {
//Save all the data
new Query[256],Authid[64],Data[32];
get_user_authid(id,Authid,63);
switch(info) {
case S_EXP: {
new bf_exp[256]
new bf_level[256]
new bf_neededexp[256]
num_to_str(g_iExp[id],bf_exp,255)
num_to_str(g_iLevel[id],bf_level,255)
num_to_str(g_iNeededExp[id],bf_neededexp,255)
format(Data,31,"%d",id)
format(Query,255,"UPDATE stats SET exp = '%s' WHERE Authid = '%s'",bf_exp,Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE stats SET neededexp = '%s' WHERE Authid = '%s'",bf_neededexp,Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE stats SET level = '%s' WHERE Authid = '%s'",bf_level,Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
}
case S_HUD: {
format(Query,255,"UPDATE stats SET rank = '%s' WHERE Authid = '%s'",g_szRank[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE stats SET clan = '%s' WHERE Authid = '%s'",g_szClan[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
}
case S_MISSION: {
format(Query,255,"UPDATE stats SET mission = '%s' WHERE Authid = '%s'",g_szMission[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
}
case S_STATS: {
format(Query,255,"UPDATE points SET bonuspoints = '%d' WHERE Authid = '%s'",g_iBonusPoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET chakrapoints = '%d' WHERE Authid = '%s'",g_iChakraPoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET speedpoints = '%d' WHERE Authid = '%s'",g_iSpeedPoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET staminapoints = '%d' WHERE Authid = '%s'",g_iStaminaPoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET defencepoints = '%d' WHERE Authid = '%s'",g_iDefencePoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET maxchakra = '%d' WHERE Authid = '%s'",g_iMaxChakra[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET strengthpoints = '%d' WHERE Authid = '%s'",g_iStrengthPoints[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET balance = '%d' WHERE Authid = '%s'",g_iBalance[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
format(Query,255,"UPDATE points SET maxhealth = '%d' WHERE Authid = '%s'",g_iTrueHealth[id],Authid);
SQL_ThreadQuery(g_SqlTuple,"QueryHandle",Query,Data,32);
}
}
}
public Load(id) {
new Query[256],Authid[64],Data[2];
get_user_authid(id,Authid,63);
format(Data,1,"%d",id)
format(Query,255,"SELECT * FROM stats WHERE Authid = '%s'",Authid);
SQL_ThreadQuery(g_SqlTuple,"LoadHandle",Query,Data,1);
format(Query,255,"SELECT * FROM points WHERE Authid = '%s'",Authid);
SQL_ThreadQuery(g_SqlTuple,"LoadPointsHandle",Query,Data,1);
}
public QueryHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
//I use QueryHandle for just inserting stuff into the db
//Basically it just handles how the query is done and checks for error
if(FailState == TQUERY_CONNECT_FAILED) {
return log_amx("Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if(FailState == TQUERY_QUERY_FAILED)
{
return log_amx("Saving Query Failed. [%d] %s", Errcode, Error);
}
if(Errcode) {
return log_amx("Error on query: %s",Error)
}
return PLUGIN_CONTINUE
}
public InsertHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED) {
return log_amx("Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if(FailState == TQUERY_QUERY_FAILED) {
return log_amx("Insert Query failed. [%d] %s", Errcode, Error);
}
if(Errcode) {
return log_amx("Error on query: %s",Error)
}
server_print("New player added to database.")
return PLUGIN_CONTINUE
}
public LoadHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED) {
return log_amx("Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if(FailState == TQUERY_QUERY_FAILED) {
return log_amx("Load Player Info Query failed. [%d] %s", Errcode, Error);
}
if(Errcode) {
return log_amx("Error on query: %s",Error)
}
new id = str_to_num(Data);
if(!SQL_MoreResults(Query)) {
server_print("Unknown player")
new Authid[64],Query[256];
get_user_authid(id,Authid,63);
format(Query,255,"INSERT INTO stats VALUES('%s','1','0','%d','%s','%s','%s')",Authid,g_iNeededExp[id],g_szRank[id],g_szClan[id],g_szMission[id]);
SQL_ThreadQuery(g_SqlTuple,"InsertHandle",Query);
}
while(SQL_MoreResults(Query))
{
g_iLevel[id] = SQL_ReadResult(Query,1);
g_iExp[id] = SQL_ReadResult(Query,2);
g_iNeededExp[id] = SQL_ReadResult(Query,3);
SQL_ReadResult(Query,4,g_szRank[id],63);
SQL_ReadResult(Query,5,g_szClan[id],63);
SQL_ReadResult(Query,6,g_szMission[id],63);
SQL_NextRow(Query);
}
return PLUGIN_CONTINUE
}
public LoadPointsHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED) {
return log_amx("Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if(FailState == TQUERY_QUERY_FAILED) {
return log_amx("Load Player Stats Query failed. [%d] %s", Errcode, Error);
}
if(Errcode) {
return log_amx("Error on query: %s",Error)
}
new id = str_to_num(Data);
if(!SQL_MoreResults(Query)) {
server_print("Unknown player")
new Authid[64],Query[256];
get_user_authid(id,Authid,63);
format(Query,255,"INSERT INTO points VALUES('%s','5','%d','%d','%d','%d','%d','%d','%d','%d')",Authid,g_iChakraPoints[id],g_iSpeedPoints[id],g_iStrengthPoints,g_iStaminaPoints[id],g_iMaxChakra[id],g_iDefencePoints[id],g_iBalance[id],g_iTrueHealth[id]);
SQL_ThreadQuery(g_SqlTuple,"InsertHandle",Query);
}
while(SQL_MoreResults(Query))
{
g_iBonusPoints[id] = SQL_ReadResult(Query,1);
g_iChakraPoints[id] = SQL_ReadResult(Query,2);
g_iSpeedPoints[id] = SQL_ReadResult(Query,3);
g_iStrengthPoints[id] = SQL_ReadResult(Query,4);
g_iStaminaPoints[id] = SQL_ReadResult(Query,5);
g_iMaxChakra[id] = SQL_ReadResult(Query,6);
g_iDefencePoints[id] = SQL_ReadResult(Query,7);
g_iBalance[id] = SQL_ReadResult(Query,8);
g_iTrueHealth[id] = SQL_ReadResult(Query,9);
SQL_NextRow(Query);
}
return PLUGIN_CONTINUE
}