Help me please MySQL :( -
edwardluciano - 05.05.2013
MySQLFetchAcctSingle It make my server crashed when player login
follow code
MySQLFetchAcctSingle
Код:
public MySQLFetchAcctSingle(sqlplayerid, sqlvalname[], sqlresult[])
{
new query[128];
format(query, sizeof(query), "SELECT %s FROM players WHERE id = %d LIMIT 1", sqlvalname, sqlplayerid);
samp_mysql_query(query);
samp_mysql_store_result();
if(samp_mysql_fetch_row(sqlresult)==1)
{
return 1;
}
return 0;
}
OnAccountUpdate
Код:
public OnAccountUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
MySQLCheckConnection();
new query[MAX_STRING];
format(query, MAX_STRING, "UPDATE players SET ");
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Tag", PlayerInfo[playerid][pTagger]);
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Tag2", PlayerInfo[playerid][pTagger2]);
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Tag3", PlayerInfo[playerid][pTagger3]);
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Tag4", PlayerInfo[playerid][pTagger4]);
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Tag5", PlayerInfo[playerid][pTagger5]);
MySQLUpdateFinish(query, PlayerInfo[playerid][pSQLID]);
}
}
return 1;
}
OnPlayerLogin
Код:
public OnPlayerLogin(playerid,password[])
{
if(IsPlayerNPC(playerid)) return 1;
MySQLCheckConnection();
new tmp2[256];
new string2[256];
new playername2[MAX_PLAYER_NAME];
new playernamesplit[3][MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
split(playername2, playernamesplit, '_');
MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Password", PlayerInfo[playerid][pPassword]);
if(strcmp(PlayerInfo[playerid][pPassword],password, true ) == 0 )
{
new Data[1024];
new Field[64];
new rcnt = 1;
MySQLFetchAcctRecord(PlayerInfo[playerid][pSQLID], Data);
samp_mysql_strtok(Field, "|", Data);
while (samp_mysql_strtok(Field, "|", "")==1)
{
// The rcnt values here represent the order of the columns in the characters table, so don't mess with them
// If you add a column to the table, just add a new line with a +1 rcnt to the block below
// Start it at 3 to skip the first few records we don't need (id, player name, password)
if (rcnt == 109) MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Tag", PlayerInfo[playerid][pTagger]);
if (rcnt == 110) MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Tag2", PlayerInfo[playerid][pTagger2]);
if (rcnt == 111) MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Tag3", PlayerInfo[playerid][pTagger3]);
if (rcnt == 112) MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Tag4", PlayerInfo[playerid][pTagger4]);
if (rcnt == 113) MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Tag5", PlayerInfo[playerid][pTagger5]);
rcnt++;
}
}
command /givetag
Код:
if(strcmp(cmd, "/gtag", true) == 0 || strcmp(cmd, "/givetag", true) == 0)
{
if (PlayerInfo[playerid][pALevel] <= 4578)
{
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Usage: /maketag [playerid/PartOfName] [color] [Tag Number 1-5] [text]");
return 1;
}
giveplayerid = ReturnUser(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Usage: /maketag [playerid/PartOfName] [color] [Tag Number 1-5] [text]");
return 1;
}
new colorztag;
colorztag = strval(tmp);
if(colorztag < 1 || colorztag > 15) { return 1; }
new x_nr[256];
x_nr = strtok(cmdtext, idx);
if(!strlen(x_nr))
{
SendClientMessage(playerid, COLOR_GRAD1, "Usage: /maketag [playerid/PartOfName] [color] [Tag Number 1-5] [text]");
return 1;
}
if(strcmp(x_nr,"1",true) == 0)
{
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[128];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD1, "Usage: /maketag [playerid/PartOfName] color] [Tag Number 1-5] [text]");
return 1;
}
new stang[128];
format(stang, sizeof(stang), "%s",(result));
strmid(PlayerInfo[giveplayerid][pTagger], result, 0, strlen(result), 255);
PlayerInfo[giveplayerid][pTagcolor] = colorztag;
format(string, sizeof(string), "added Tag 1 finish !", giveplayer);
SendClientMessage(playerid, COLOR_WHITE, string);
}
when put other language on this record when save it change language when player log out & logging again is Unknow language and when player logging or log out saver will crash (if English language is normally not change)
follow picture
how to fix it can input & save other language
Re: MySQLFetchAcctSingle Help :( -
edwardluciano - 05.05.2013
help me plz