Написание плагинов

LeXon

Участник
Сообщения
317
Реакции
29
@LeXon, а если вручную файлы в папку с игрой закинуть, то еррорки есть?
Так я в ручную проверил их наличие.
Попробуй вписать в server.cfg те конфиги, что в gg_skins

gg_KnifeCTmodel "models/player/gg_knife/ct.mdl"
gg_KnifeTmodel "models/player/gg_knife/terror.mdl"
После инспекции .sp файла попробую данные манипуляции, как уже крайний вариант))
 

Svoboda

Помощь по CSS v92
Сообщения
393
Реакции
56
Помогите добавить сюда команду что бы игроки могли отключать оверлей
 

Вложения

  • WinOverlay.sp
    2.1 КБ · Просмотры: 7

Mensi1337

Участник
Сообщения
242
Реакции
16
Добрый вечер, подскажите в чем ошибка в данном плагине?
[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()
PHP:
#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);
}
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Добрый вечер, подскажите в чем ошибка в данном плагине?
[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()
В файл addons/sourcemod/configs/databases.cfg впишите подключение к бд.
"sourcebans"
{
"driver" "sqlite"
"host" "localhost"
"database" "sourcebans"
"user" "root"
"pass" ""
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
через notepad++ всё читабельно
смени кодировку файла с win1251 на utf-8 без bom
То, что читабельно, не значит, что скомпилируется
У меня к базе web он подключён, локальную подключить ещё?
Вообще он тебе показал пример заполнения пвраметров.У тебя же параметры могут отличаться.

Кстати, файле ...\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 защищен паролем");
}
 

Вложения

  • 333.sp
    2 КБ · Просмотры: 5
  • 333.smx
    4.5 КБ · Просмотры: 1

rokfestr

Участник
Сообщения
340
Реакции
63
Как сделать чтобы гранаты не пролетали сквозь игроков? [CSGO]

C-подобный:
#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);
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
@Grey83, помоги, (о проблеме выше) теперь партиклы появляются, но в виде еррора, он почему-то дальше new ent = CreateEntityByName("info_particle_system"); строчки не читает.
ScreenShot_20181206194735.png
 

Вложения

  • paintball.sp
    24.4 КБ · Просмотры: 3

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
в строке 370 убери точку с запятой перед фигурной скобкой, лол
 

Mr_panica

XenForo one 💖
Сообщения
921
Реакции
436
@Grey83, помоги, (о проблеме выше) теперь партиклы появляются, но в виде еррора, он почему-то дальше new ent = CreateEntityByName("info_particle_system"); строчки не читает.
Посмотреть вложение 36153
Этож предупреждение, а не ошибка, разве это влияет на работу плагина?
У меня такие ошибки вылазят из-за кривого кода (в смысле некрасивого)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@LeXon, посмотрел
попробуй скомпилить вот это (у меня нет необходимого инклюда для этого)
И обязательно сохрани все конфиги, что ты на сервере держишь, в кодировке UTF-8 без BOM.
Конфиг ...\cfg\sourcemod\gg_skins.cfg можешь вообще удалить, если хочешь (я дефолтом в исходнике прописал комплектные скины).
 

Вложения

  • gg_skin.sp
    3.2 КБ · Просмотры: 8

Mensi1337

Участник
Сообщения
242
Реакции
16
смени кодировку файла с 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 защищен паролем");
}
Спасибо, исправилось.
 
Последнее редактирование:

LeXon

Участник
Сообщения
317
Реакции
29
@LeXon, посмотрел
попробуй скомпилить вот это (у меня нет необходимого инклюда для этого)
И обязательно сохрани все конфиги, что ты на сервере держишь, в кодировке UTF-8 без BOM.
Конфиг ...\cfg\sourcemod\gg_skins.cfg можешь вообще удалить, если хочешь (я дефолтом в исходнике прописал комплектные скины).
Спасибо, всё работает, только моделька багованая, но ничего поставлю другую, главное что sp файл теперь ставит модельку):good:
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Можно ли сюда добавить звуки на 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, не помойму как лучше сделать.
 

Туник

Участник
Сообщения
1,281
Реакции
263
На общее обозрение вопрос!
Может кто написать проверку на прайм игроков, если прайма нет чтобы не пускало на сервер, после этой обновы куча новых и бесплатных аккаунтов одного сегодня 3 раза банил, он создает акк и опять с аимом заходит, просто крч жесть, скину на киви немного,+ я думаю за работу такую не я один отблагодарю!
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
На общее обозрение вопрос!
Может кто написать проверку на прайм игроков, если прайма нет чтобы не пускало на сервер, после этой обновы куча новых и бесплатных аккаунтов одного сегодня 3 раза банил, он создает акк и опять с аимом заходит, просто крч жесть, скину на киви немного,+ я думаю за работу такую не я один отблагодарю!

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 статус аккаунта.");
}
 

Туник

Участник
Сообщения
1,281
Реакции
263
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 статус аккаунта.");
}
Плагин работает нормально, но нашел маленький косяк в нем, после установки он блокирует показ карты которая стоит на данный момент на сервере, показ блокируется везде на хостинге в сб и в клиенте, этот момент можно ли пофиксить?
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Сверху Снизу