#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
new Handle:g_hSQLdb;
public OnPluginStart()
{
SQL_TConnect(SQLT_OnConnect, "sourcebans");
}
public SQLT_OnConnect(Handle:hOwner, Handle:hQuery, const String:sError[], any:iNull)
{
if (!hQuery)
{
LogError("SQLT_OnConnect: %s", sError);
SetFailState("SQLT_OnConnect: %s", sError);
}
g_hSQLdb = hQuery;
decl String:sAuth[32];
for (new i = 1; i <= MaxClients; ++i)
{
if (IsClientAuthorized(i))
{
GetClientAuthString(i, sAuth, sizeof(sAuth));
OnClientAuthorized(i, sAuth);
}
}
}
public OnClientAuthorized(iClient, const String:sAuth[])
{
decl String:sQuery[256];
FormatEx(sQuery, sizeof(sQuery), "SELECT `srv_password` FROM sb_admins WHERE `authid` = '%s' AND (expired > UNIX_TIMESTAMP() OR expired = 0) LIMIT 1;", sAuth);
SQL_TQuery(g_hSQLdb, SQLT_OnClientAuthorized, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientAuthorized(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
if (!hQuery)
{
LogError("SQLT_OnClientAuthorized: %s", sError);
}
new iClient = GetClientOfUserId(iUserId);
if (iClient && SQL_FetchRow(hQuery))
{
decl String:sPassword[64], Handle:hDataPack;
SQL_FetchString(hQuery, 0, sPassword, sizeof(sPassword));
hDataPack = CreateDataPack();
WritePackString(hDataPack, sPassword);
QueryClientConVar(iClient, "_pw", OnQueryClientConVar, hDataPack);
}
}
public OnQueryClientConVar(QueryCookie:hCookie, iClient, ConVarQueryResult:hResult, const String:sConVarName[], const String:sConVarValue[], any:hDataPack)
{
decl String:sPassword[64];
ResetPack(hDataPack);
ReadPackString(hDataPack, sPassword, sizeof(sPassword));
if (!StrEqual(sPassword, sConVarValue))
{
KickClient(iClient, "STEAM защищен паролем");
}
CloseHandle(hDataPack);
}
В файл addons/sourcemod/configs/databases.cfg впишите подключение к бд.Добрый вечер, подскажите в чем ошибка в данном плагине?
[SM] Native "SQL_TQuery" reported: Invalid database Handle 0 (error: 4)
[SM] Displaying call stack trace for plugin "SB_Auth.smx":
[SM] [0] Line 37, D:\Compiled\SB_Auth.sp::OnClientAuthorized()
У меня к базе web он подключён, локальную подключить ещё?В файл addons/sourcemod/configs/databases.cfg впишите подключение к бд.
"sourcebans"
{
"driver" "sqlite"
"host" "localhost"
"database" "sourcebans"
"user" "root"
"pass" ""
}
смени кодировку файла с win1251 на utf-8 без bomчерез notepad++ всё читабельно
Вообще он тебе показал пример заполнения пвраметров.У тебя же параметры могут отличаться.У меня к базе web он подключён, локальную подключить ещё?
#pragma semicolon 1
#include <sdktools>
#include <sdkhooks>
new Handle:g_hSQLdb,
bool:bLate;
public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
bLate = late;
return APLRes_Success;
}
public OnPluginStart()
{
SQL_TConnect(SQLT_OnConnect, "sourcebans");
}
public SQLT_OnConnect(Handle:hOwner, Handle:hQuery, const String:sError[], any:iNull)
{
if(!hQuery)
{
LogError("SQLT_OnConnect: %s", sError);
SetFailState("SQLT_OnConnect: %s", sError);
}
g_hSQLdb = hQuery;
if(bLate) for(new i = 1, String:sAuth[32]; i <= MaxClients; ++i)
if(IsClientAuthorized(i) && GetClientAuthString(i, sAuth, sizeof(sAuth))) OnClientAuthorized(i, sAuth);
bLate = false;
}
public OnClientAuthorized(iClient, const String:sAuth[])
{
if(!g_hSQLdb)
{
LogError("OnClientAuthorized: g_hSQLdb = INVALID_HANDLE");
return;
}
decl String:sQuery[256];
FormatEx(sQuery, sizeof(sQuery), "SELECT `srv_password` FROM sb_admins WHERE `authid` = '%s' AND(expired > UNIX_TIMESTAMP() OR expired = 0) LIMIT 1;", sAuth);
SQL_TQuery(g_hSQLdb, SQLT_OnClientAuthorized, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientAuthorized(Handle:hOwner, Handle:hQuery, const String:sError[], any:iClient)
{
if(!hQuery) LogError("SQLT_OnClientAuthorized: %s", sError);
if((iClient = GetClientOfUserId(iClient)) && SQL_FetchRow(hQuery))
{
decl String:sPassword[64], Handle:hDataPack;
SQL_FetchString(hQuery, 0, sPassword, sizeof(sPassword));
hDataPack = CreateDataPack();
WritePackString(hDataPack, sPassword);
QueryClientConVar(iClient, "_pw", OnQueryClientConVar, hDataPack);
}
}
public OnQueryClientConVar(QueryCookie:hCookie, iClient, ConVarQueryResult:hResult, const String:sConVarName[], const String:sConVarValue[], any:hDataPack)
{
decl String:sPassword[64];
ResetPack(hDataPack);
ReadPackString(hDataPack, sPassword, sizeof(sPassword));
CloseHandle(hDataPack);
if(!StrEqual(sPassword, sConVarValue))
KickClient(iClient, "STEAM защищен паролем");
}
#include <sourcemod>
#include <sdktools>
new g_offsCollisionGroup=-1;
public Plugin:myinfo =
{
name = "[KDLP] NoBlock",
author = "KorDen",
version = "1.0",
url = "http://dev.sky-play.ru"
}
public OnPluginStart()
{
g_offsCollisionGroup = FindSendPropOffs("CBaseEntity", "m_CollisionGroup");
if (g_offsCollisionGroup == -1)
SetFailState("[NoBlock] Failed to get offset");
HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
}
public OnSpawn(Handle:event, const String:name[], bool:dontBroadcast)
SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);
public OnEntityCreated(entity, const String:classname[])
if(StrContains(classname, "_projectile", false)!=-1)
SetEntData(entity, g_offsCollisionGroup, 5, 4, true);
Этож предупреждение, а не ошибка, разве это влияет на работу плагина?@Grey83, помоги, (о проблеме выше) теперь партиклы появляются, но в виде еррора, он почему-то дальше new ent = CreateEntityByName("info_particle_system"); строчки не читает.
Посмотреть вложение 36153
Спасибо, исправилось.смени кодировку файла с win1251 на utf-8 без bom
То, что читабельно, не значит, что скомпилируется
Вообще он тебе показал пример заполнения пвраметров.У тебя же параметры могут отличаться.
Кстати, файле ...\addons\sourcemod\configs\databases.cfg есть ещё дополнительные параметры.
Вообще попробуй так (теперь будет писать в лог, что не подключен к БД вместо ошибки выполнения):PHP:#pragma semicolon 1 #include <sdktools> #include <sdkhooks> new Handle:g_hSQLdb, bool:bLate; public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) { bLate = late; return APLRes_Success; } public OnPluginStart() { SQL_TConnect(SQLT_OnConnect, "sourcebans"); } public SQLT_OnConnect(Handle:hOwner, Handle:hQuery, const String:sError[], any:iNull) { if(!hQuery) { LogError("SQLT_OnConnect: %s", sError); SetFailState("SQLT_OnConnect: %s", sError); } g_hSQLdb = hQuery; if(bLate) for(new i = 1, String:sAuth[32]; i <= MaxClients; ++i) if(IsClientAuthorized(i) && GetClientAuthString(i, sAuth, sizeof(sAuth))) OnClientAuthorized(i, sAuth); bLate = false; } public OnClientAuthorized(iClient, const String:sAuth[]) { if(!g_hSQLdb) { LogError("OnClientAuthorized: g_hSQLdb = INVALID_HANDLE"); return; } decl String:sQuery[256]; FormatEx(sQuery, sizeof(sQuery), "SELECT `srv_password` FROM sb_admins WHERE `authid` = '%s' AND(expired > UNIX_TIMESTAMP() OR expired = 0) LIMIT 1;", sAuth); SQL_TQuery(g_hSQLdb, SQLT_OnClientAuthorized, sQuery, GetClientUserId(iClient)); } public SQLT_OnClientAuthorized(Handle:hOwner, Handle:hQuery, const String:sError[], any:iClient) { if(!hQuery) LogError("SQLT_OnClientAuthorized: %s", sError); if((iClient = GetClientOfUserId(iClient)) && SQL_FetchRow(hQuery)) { decl String:sPassword[64], Handle:hDataPack; SQL_FetchString(hQuery, 0, sPassword, sizeof(sPassword)); hDataPack = CreateDataPack(); WritePackString(hDataPack, sPassword); QueryClientConVar(iClient, "_pw", OnQueryClientConVar, hDataPack); } } public OnQueryClientConVar(QueryCookie:hCookie, iClient, ConVarQueryResult:hResult, const String:sConVarName[], const String:sConVarValue[], any:hDataPack) { decl String:sPassword[64]; ResetPack(hDataPack); ReadPackString(hDataPack, sPassword, sizeof(sPassword)); CloseHandle(hDataPack); if(!StrEqual(sPassword, sConVarValue)) KickClient(iClient, "STEAM защищен паролем"); }
Спасибо, всё работает, только моделька багованая, но ничего поставлю другую, главное что sp файл теперь ставит модельку):good:@LeXon, посмотрел
попробуй скомпилить вот это (у меня нет необходимого инклюда для этого)
И обязательно сохрани все конфиги, что ты на сервере держишь, в кодировке UTF-8 без BOM.
Конфиг ...\cfg\sourcemod\gg_skins.cfg можешь вообще удалить, если хочешь (я дефолтом в исходнике прописал комплектные скины).
На общее обозрение вопрос!
Может кто написать проверку на прайм игроков, если прайма нет чтобы не пускало на сервер, после этой обновы куча новых и бесплатных аккаунтов одного сегодня 3 раза банил, он создает акк и опять с аимом заходит, просто крч жесть, скину на киви немного,+ я думаю за работу такую не я один отблагодарю!
#include <SteamWorks>
#pragma semicolon 1
#pragma newdecls required
public void OnClientPostAdminCheck(int client)
{
if (!IsFakeClient(client) && !IsClientSourceTV(client) && (CheckCommandAccess(client, "BypassPremiumCheck", ADMFLAG_ROOT, true) || !SteamWorks_HasLicenseForApp(client, 624820))) return;
KickClient(client, "Для игры на этом сервере вам необходим Prime статус аккаунта.");
}
Плагин работает нормально, но нашел маленький косяк в нем, после установки он блокирует показ карты которая стоит на данный момент на сервере, показ блокируется везде на хостинге в сб и в клиенте, этот момент можно ли пофиксить?by @Someone
C-подобный:#include <SteamWorks> #pragma semicolon 1 #pragma newdecls required public void OnClientPostAdminCheck(int client) { if (!IsFakeClient(client) && !IsClientSourceTV(client) && (CheckCommandAccess(client, "BypassPremiumCheck", ADMFLAG_ROOT, true) || !SteamWorks_HasLicenseForApp(client, 624820))) return; KickClient(client, "Для игры на этом сервере вам необходим Prime статус аккаунта."); }
Можно ли сюда добавить звуки на 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ?
[CS: Source] - Advanced c4 timer v.1.4.1
На 30 и 20 я знаю легко добавить, а вот уже отсчет с 10 до 0, не помойму как лучше сделать.
Используй от туда: AntiF2PПлагин работает нормально, но нашел маленький косяк в нем, после установки он блокирует показ карты которая стоит на данный момент на сервере, показ блокируется везде на хостинге в сб и в клиенте, этот момент можно ли пофиксить?