сейчас пишу плагин, есть коннект с базой mysql.
как сделать чтоб шла проверка, есть steamid игрока в таблице или нет?)
когда допишу плагин выложу в паблик, плагин ауры, делаю для удобства когда хочется поставить не несколько серверов.
Записываешь в базу стимID, потом смотришь есть там или нет. Разве не так?как сделать чтоб шла проверка, есть steamid игрока в таблице или нет?)
Точно так же. Условие измени.как посмотреть что есть строка?
CheckSteamID(userid, const String:auth[])
{
decl String:query[255];
Format(query, sizeof(query), "SELECT value FROM ws_user_gameacc WHERE value = '%s'", auth);
SQL_TQuery(hDatabase, T_CheckSteamID, query, userid)
}
#include <sourcemod>
///*****************************************************************
//* BASE INFORMATION *
//SELECT value FROM ws_user_gameacc WHERE value =
//******************************************************************/
new Handle:hDatabase = INVALID_HANDLE;
public Plugin:myinfo =
{
name = "",
author = "",
description = "",
version = "",
url = ""
};
public OnPluginStart()
{
StartSQL()
}
public OnClientAuthorized(client)
{
decl String:auth[32];
GetClientAuthString(client, auth, sizeof(auth));
CheckSteamID(client, auth)
}
public GotDatabase(Handle:owner, Handle:hndl, const String:error[], any:data)
{
if (hndl == INVALID_HANDLE)
{
LogError("Database failure: %s", error);
}
else
{
hDatabase = hndl;
}
}
public T_CheckSteamID(Handle:owner, Handle:hndl, const String:error[], any:client)
{
/* Make sure the client didn't disconnect while the thread was running */
if (!IsClientConnected(client))
{
return;
}
if (hndl == INVALID_HANDLE)
{
LogError("Query failed! %s", error);
KickClient(client, "Авторизация провалена, пожалуйста обратитесь к Администратору, на сайте www.exeplay.ru");
}
else if (!SQL_GetRowCount(hndl))
{
KickClient(client, "Для игры на сервере вы должны пройти регистрацию и ввести SteamID на сайте www.exeplay.ru");
}
}
StartSQL()
{
SQL_TConnect(GotDatabase);
}
CheckSteamID(userid, const String:auth[])
{
decl String:query[255];
Format(query, sizeof(query), "SELECT value FROM ws_user_gameacc WHERE value = '%s'", auth);
SQL_TQuery(hDatabase, T_CheckSteamID, query, userid)
}
//запрос на сервер
//hndl - Handle запроса
if (SQL_FetchRow(hndl)) {
new intvalue = SQL_FetchInt(hndl, 0);
new Float:floatvalue = SQL_FetchFloat(hndl, 1);
decl String:stringvalue[64];
SQL_FetchString(hndl, 2, stringvalue, sizeof(stringvalue));
}
CloseHandle(hndl);
ReadColor(String:SteamId[])
{
new color[4];
new r, g, b, a;
new String:file[255];
new String:query[512];
Format(query, sizeof(query), "SELECT colorr, colorg, colorb, alpha FROM table_name WHERE steamid='%s'", SteamId);
new Handle:hquery = SQL_Query(g_hSQLConnectionHandle, query);
if (hquery == INVALID_HANDLE) return;
if (SQL_FetchRow(hquery)) {
r = SQL_FetchInt(hquery, 0);
g = SQL_FetchInt(hquery, 1);
b = SQL_FetchInt(hquery, 2);
a = SQL_FetchInt(hquery, 3);
}
CloseHandle(hquery);
color[0] = r;
color[1] = g;
color[2] = b;
color[3] = a;
return color;
}
Есть какой-нибудь простой пример?
SQL_FastQuery(DB, "CREATE TABLE IF NOT EXISTS 'Players' (name TEXT DEFAULT 'None', steamid TEXT DEFAULT 'STEAM_0:0:000000');");
new Handle:g_hSQLConnection;
OnPluginStart()
{
decl String:error[256];
g_hSQLConnection = SQL_Connect("default", true, error, sizeof(error));
if (g_hSQLConnection == INVALID_HANDLE)
SetFailState(error);
new String:query[] = "CREATE TABLE IF NOT EXISTS test ( \
id INT(4) NOT NULL , \
key INT(4) NOT NULL , \
PRIMARY KEY (id) ) \
ENGINE = InnoDB;";
if (!SQL_FastQuery(g_hSQLConnection, query))
SetFailState("fail :(");
new String:query2[] = "INSERT INTO test (key) VALUES (42)";
if (!SQL_FastQuery(g_hSQLConnection, query2))
SetFailState("fail :(");
new String:query3[] = "UPDATE test SET key = 21 WHERE key = 42";
if (!SQL_FastQuery(g_hSQLConnection, query3))
SetFailState("fail :(");
}