....PHP:public OnClientAuthorized(client, const String:auth[]) { if(0 < client <= MaxClients && !IsFakeClient(client)) { // check decl String:query[256]; PrintToServer("SteamID: %s", auth); FormatEx(query, sizeof(query), "SELECT * FROM `steam` WHERE `SteamID` = '%s'", auth); SQL_TQuery(db, SQL_CheckInsert, query, client); } }
И в threaded запросах лучше использовать такую проверку на ошибки:
PHP:public SQLErrorCheckCallback(Handle:owner, Handle:hndl, const String:error[], any:data) { if (owner == INVALID_HANDLE) { LogError("SQL Error (owner): %s", error); return; } // или if (hndl == INVALID_HANDLE) { LogError("SQL Error(hndl): %s", error); return; } // чаще используеться hndl поскольку это и есть наш запрос // а onwer это sql соедниение }
public OnClientAuthorized(client)
{
if(0 < client <= MaxClients && !IsFakeClient(client))
{
// check
decl String:steamid[64], String:query[256];
GetClientAuthString(client, steamid, sizeof(steamid));
PrintToServer("SteamID: %s", steamid);
Format(query, sizeof(query), "SELECT * FROM `steam` WHERE `SteamID` = '%s'", steamid);
SQL_TQuery(db, SQL_CheckInsert, query, client);
}
}
public OnClientPostAdminCheck(client)
{
if(0 < client <= MaxClients && !IsFakeClient(client))
{
// check
decl String:steamid[64], String:query[256];
GetClientAuthString(client, steamid, sizeof(steamid));
Format(query, sizeof(query), "SELECT COUNT(*) FROM `steam` WHERE `SteamID` = '%s' LIMIT 1", steamid);
SQL_TQuery(db, SQL_CheckInsert, query, client);
}
}
Ну тогда почему JumPixX'a в итоге использовал
вместоPHP:public OnClientAuthorized(client) { if(0 < client <= MaxClients && !IsFakeClient(client)) { // check decl String:steamid[64], String:query[256]; GetClientAuthString(client, steamid, sizeof(steamid)); PrintToServer("SteamID: %s", steamid); Format(query, sizeof(query), "SELECT * FROM `steam` WHERE `SteamID` = '%s'", steamid); SQL_TQuery(db, SQL_CheckInsert, query, client); } }
PHP:public OnClientPostAdminCheck(client) { if(0 < client <= MaxClients && !IsFakeClient(client)) { // check decl String:steamid[64], String:query[256]; GetClientAuthString(client, steamid, sizeof(steamid)); Format(query, sizeof(query), "SELECT COUNT(*) FROM `steam` WHERE `SteamID` = '%s' LIMIT 1", steamid); SQL_TQuery(db, SQL_CheckInsert, query, client); } }
Потому что у меня свой плагин есть по работе с админками и магазином buy.powerhub.ru. И у меня там сделано через OnClientAuthorized, и уже пол года нормально работает.
*facepalm*
Ты ее даже используешь не правильно.
public SQL_CheckInsert(Handle:owner, Handle:hndl, const String:error[], any:data)
{
if (db == INVALID_HANDLE)
{
return;
}
if(SQL_GetRowCount(hndl) == 0)
{
// insert
decl String:steamid[64], String:query[256];
GetClientAuthString(data, steamid, sizeof(steamid));
Format(query, sizeof(query), "INSERT INTO `steam` (`SteamID`) VALUES ('%s')", steamid);
SQL_TQuery(db, SQLErrorCheckCallback, query);
}
}
Возвращаясь к моему вопросу в посте 6. Так а зачем в данном плагине вообще проверять админ игрок или нет? Здесь нет ни чего связанного с админ правами.
public OnClientPostAdminCheck(client)
{
// это не значит, что client админ
// но именно с этого момента можно точно узнать, есть у него права или нет:
if (GetUserAdmin(client) != INVALID_ADMIN_ID)
{
// права есть
}
else
{
// прав нет
}
}
PHP:public Plugin:myinfo = { name = "injection", description = "None", author = "JumPixX", version = "1.0", url = "www.cssrus.ru" };
За?ись за него все написали, исправили, и он свои копирайты поставил.
Молодец :lol:
Это не честно. Люди сидели парились, писали, а если каждый будет делать как ты?Привычка :(
Я все равно на сервере стараюсь плагины маскировать.
-------------
Изменил на твои :)
Это не честно. Люди сидели парились, писали, а если каждый будет делать как ты?
Какой толк вообще что-то делать для людей, если люди не будут тебя уважать хотя бы в пару строк...
вот поэтому я в паблик ничего и не выкладываю...
0wn3r, Я считаю что это не особо правильно... Так как мы делаем проверку присутствует ли в базе игрок или нет...Такой запрос не нужен: SELECT COUNT(*) FROM `steam` WHERE `SteamID` = '%s' LIMIT 1
Хватит такого SELECT * FROM `steam` WHERE `SteamID` = '%s'
SELECT `SteamID` FROM `steam` WHERE `SteamID` = '%s' LIMIT 1