SOLVED:
Array auth was too short for SteamID64 correct length is 21
Hi guys I have problem with taken value from DB after query - all the time I've getting value equals to 0, but executing same query on DB I'll get correct value.
DB Vip table:
Code:
VipId|SteamId|Expired|ServerId
PHP Code:
static Handle database = null;
public void OnPluginStart()
{
InitDB();
}
public void InitDB()
{
SQL_TConnect(SQLConnecting, "Vips");
}
public void SQLConnecting(Handle owner, Handle hndl, const char[] error, any data)
{
if(owner == null || owner == INVALID_HANDLE)
ThrowError("Can't connect to the database, error occurred:\n%s", error);
database = hndl;
}
public void OnClientPostAdminCheck(int client)
{
if(!IsValidPlayer(client, true))
return;
char auth[17];
if(GetClientAuthId(client, AuthId_SteamID64, auth, 17, true))
{
char query[256];
//Format(query, 256, "SELECT IsVip('%s');", auth);
Format(query, 256, "SELECT COUNT(VipId) FROM Vips WHERE SteamId = '%s' AND Expired >= NOW() LIMIT 1;", auth);
SQL_TQuery(database, CheckPlayerVip, query, client);
}
}
stock void CheckPlayerVip(Handle owner, Handle result, const char[] error, any client)
{
if (result != null && SQL_FetchRow(result))
{
int value = SQL_FetchInt(result, 0);
bool isVip = view_as<bool>(value);
PrintToServer("Player %N isVip %d", client, vvalue);
if(isVip)
AddUserFlags(client, Admin_Reservation);
delete result;
}
else
PrintToServer("Error occurred: '%s'", error);
}