Another problem[MySQL R34] -
Keyhead - 02.11.2013
Well, My unban command isn't working properly.
pawn Код:
CMD:unban(playerid, params[])
{
new target[24],query[200];
if(!IsPlayerAdmin(playerid) || Player[playerid][Admin] >= 3) return SendClientMessage(playerid, -1, "SERVER:You're not admin!");
if(sscanf(params,"s[24]",target)) return SendClientMessage(playerid, -1, "SERVER:/unban [Name]");
mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%s' LIMIT 1", target);
mysql_tquery(SQL, query, "OnUnbanCheck","d",playerid);
return 1;
}
forward OnUnbanCheck(playerid);
public OnUnbanCheck(playerid)
{
if(cache_num_rows() > 0)
{
cache_get_field_content(0, "bannedby", Player[playerid][BannedBy], SQL, 24);
cache_get_field_content(0, "reason", Player[playerid][BanReason], SQL, 20);
Player[playerid][Banned] = cache_get_field_content_int(0, "banned");
UpdateBans(playerid);
}
return 1;
}
stock UpdateBans(playerid, params[])
{
new target[MAX_PLAYER_NAME], str[128], query[200];
if(Player[playerid][Banned] == 1)
{
mysql_format(SQL,query, sizeof(query),"UPDATE `players` SET `banned` = '0' WHERE `username` = '%s' LIMIT 1", target);
mysql_tquery(SQL, query, "", "");
print(query);
SendClientMessage(playerid, -1, "SERVER:Done!");
}
else
{
format(str, 128,"[MySQL]:This player is not registered.");
SendClientMessage(playerid, -1, str);
}
return 1;
}
It runs the query, But the username is empty. So, how do I get it to unban what I type.
Код:
UPDATE `players` SET `banned` = '0' WHERE `username` = '' LIMIT 1
That's what I mean about the username being empty.
Re: Another problem[MySQL R34] -
dusk - 03.11.2013
The name is empty because you don't get it with GetPlayerName
pawn Код:
stock UpdateBans(playerid, params[])
{
new target[MAX_PLAYER_NAME], str[128], query[200];
GetPlayerName(playerid,target,sizeof(target));
if(Player[playerid][Banned] == 1)
{
mysql_format(SQL,query, sizeof(query),"UPDATE `players` SET `banned` = '0' WHERE `username` = '%s' LIMIT 1", target);
mysql_tquery(SQL, query, "", "");
print(query);
SendClientMessage(playerid, -1, "SERVER:Done!");
}
else
{
format(str, 128,"[MySQL]:This player is not registered.");
SendClientMessage(playerid, -1, str);
}
return 1;
}
Re: Another problem[MySQL R34] -
Keyhead - 03.11.2013
That doesn't work. That would make the target the same as my name. I don't want to unban myself. Thanks for your input though. It's appreciated.
Re: Another problem[MySQL R34] -
Jefff - 03.11.2013
Escape string in unban cmd
pawn Код:
@OnUnbanCheck(playerid, name[]);
@OnUnbanCheck(playerid, name[])
{
if(cache_num_rows() > 0)
{
if(cache_get_field_content_int(0, "banned"))
{
new query[128];
mysql_format(SQL,query,sizeof(query),"UPDATE `players` SET `banned` = 0 WHERE `username` = '%s' LIMIT 1", name);
mysql_tquery(SQL,query,"","");
print(query);
SendClientMessage(playerid, -1, "SERVER:Done!");
}//else not banned
}
else
SendClientMessage(playerid, -1, "[MySQL]:This player is not registered.");
return;
}
CMD:unban(playerid, params[])
{
if(!IsPlayerAdmin(playerid) || Player[playerid][Admin] >= 3) SendClientMessage(playerid, -1, "SERVER:You're not admin!");
else if(isnull(params)) SendClientMessage(playerid, -1, "SERVER:/unban [Name]");
else if(!(2 < strlen(params) < 21)) SendClientMessage(playerid, -1, "ERROR: Name must be between 3-20 characters");
else{
new query[128];
mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", params);
mysql_tquery(SQL, query, "@OnUnbanCheck", "is", playerid, params);
}
return 1;
}
Re: Another problem[MySQL R34] -
Keyhead - 03.11.2013
Cheers mate. It works. I appreciate the help. I'll rep+ you if I can.