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

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет! Может кто помочь. Хочу сохранить запас патронов и позже вернуть это значение.
 

Туник

Участник
Сообщения
1,281
Реакции
263
Стоит SB++(sourcebans-pp-1.6.3.Full RUS v1.3) в нём есть данный плагин, который по сути должен ловить тех кто обходит бан - через другой аккаунт, я как понимаю этот плагин должен банить повторно если ip адрес совпал с тем что забанен, может у кого есть данное чудо рабочее, т.к этот явно не пашет, или может кто помочь его оживить?
 

Вложения

  • sbpp_sleuth.sp
    7.8 КБ · Просмотры: 5

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
хилл союзников:
#include <sourcemod>
#include <sdktools>

#define HEALTH_INC 10 //Кол-во прибавляемого хп

public Plugin:myinfo=
{
    name = "Medic Trace",
    author = "",
    version = "0.0.1 Beta",
    url = ""
};

//new precache;

public OnPluginStart() 
{
   HookEvent("weapon_fire", Fire); //Ловим событие
   //precache = PrecacheModel("materials/sprites/glow.vmt", false);
  
   //Загрузка
   //AddFileToDownloadsTable("materials/sprites/glow.vmt");
   //AddFileToDownloadsTable("materials/sprites/glow.vtf");
}

public Fire(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new target = GetClientAimTarget(client, true);
    if(target != -1 && target > 0 && target <= MaxClients && !IsClientObserver(target) && GetClientTeam(target) == GetClientTeam(client))
    {
        //Effects
        //new Float:fvecOrigin[3];
        //GetEntPropVector(client, Prop_Send, "m_vecOrigin", fvecOrigin);
        //TE_SetupBeamRingPoint(fvecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
        //TE_SendToAll();
        
        
        new health = GetClientHealth(target);
        if(health < 100)
        {
            PrintCenterText(client, "Вы лечите %N", target);
            //Effects
            //new Float:vecOrigin[3];
            //GetEntPropVector(target, Prop_Send, "m_vecOrigin", vecOrigin);
            //TE_SetupBeamRingPoint(vecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
            //TE_SendToAll();
            
            PrintCenterText(target, "Вас лечит %N", client);
            SetEntityHealth(target, health + HEALTH_INC);
        }
    }
}
Подскажите как сделать, чтобы плагин работал по флагу ?
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
хилл союзников:
#include <sourcemod>
#include <sdktools>

#define HEALTH_INC 10 //Кол-во прибавляемого хп

public Plugin:myinfo=
{
    name = "Medic Trace",
    author = "",
    version = "0.0.1 Beta",
    url = ""
};

//new precache;

public OnPluginStart()
{
   HookEvent("weapon_fire", Fire); //Ловим событие
   //precache = PrecacheModel("materials/sprites/glow.vmt", false);
 
   //Загрузка
   //AddFileToDownloadsTable("materials/sprites/glow.vmt");
   //AddFileToDownloadsTable("materials/sprites/glow.vtf");
}

public Fire(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new target = GetClientAimTarget(client, true);
    if(target != -1 && target > 0 && target <= MaxClients && !IsClientObserver(target) && GetClientTeam(target) == GetClientTeam(client))
    {
        //Effects
        //new Float:fvecOrigin[3];
        //GetEntPropVector(client, Prop_Send, "m_vecOrigin", fvecOrigin);
        //TE_SetupBeamRingPoint(fvecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
        //TE_SendToAll();
       
       
        new health = GetClientHealth(target);
        if(health < 100)
        {
            PrintCenterText(client, "Вы лечите %N", target);
            //Effects
            //new Float:vecOrigin[3];
            //GetEntPropVector(target, Prop_Send, "m_vecOrigin", vecOrigin);
            //TE_SetupBeamRingPoint(vecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
            //TE_SendToAll();
           
            PrintCenterText(target, "Вас лечит %N", client);
            SetEntityHealth(target, health + HEALTH_INC);
        }
    }
}
Подскажите как сделать, чтобы плагин работал по флагу ?
C-подобный:
#include <sourcemod>
#include <sdktools>

#define HEALTH_INC 10 //Кол-во прибавляемого хп

public Plugin:myinfo=
{
    name = "Medic Trace",
    author = "",
    version = "0.0.1 Beta",
    url = ""
};

//new precache;

public OnPluginStart()
{
   HookEvent("weapon_fire", Fire); //Ловим событие
   //precache = PrecacheModel("materials/sprites/glow.vmt", false);
 
   //Загрузка
   //AddFileToDownloadsTable("materials/sprites/glow.vmt");
   //AddFileToDownloadsTable("materials/sprites/glow.vtf");
}

public Fire(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new target = GetClientAimTarget(client, true);
    if(target != -1 && target > 0 && target <= MaxClients && !IsClientObserver(target) && GetClientTeam(target) == GetClientTeam(client) && GetUserFlagBits(client) & ADMFLAG_ROOT) // ADMFLAG_ROOT - нужный флаг игрока, который лечит
    {
        //Effects
        //new Float:fvecOrigin[3];
        //GetEntPropVector(client, Prop_Send, "m_vecOrigin", fvecOrigin);
        //TE_SetupBeamRingPoint(fvecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
        //TE_SendToAll();
        
        
        new health = GetClientHealth(target);
        if(health < 100)
        {
            PrintCenterText(client, "Вы лечите %N", target);
            //Effects
            //new Float:vecOrigin[3];
            //GetEntPropVector(target, Prop_Send, "m_vecOrigin", vecOrigin);
            //TE_SetupBeamRingPoint(vecOrigin, 100.0, 99.0, precache, precache, 0, 15, 1.0, 5.0, 0.0, {0, 0, 255, 255}, 10, 0);
            //TE_SendToAll();
            
            PrintCenterText(target, "Вас лечит %N", client);
            SetEntityHealth(target, health + HEALTH_INC);
        }
    }
}
 

KupuK

Участник
Сообщения
56
Реакции
32
Всем привет, нужна помощь в cs:go

Нужно для плагина VIP Bhop добавить возможность ограничивать время начала работы БХопа через конфиг, через сколько секунд после начала раунда БХ будет доступен

Нужно добавить конфиг, в котором можно указывать раунды, в котором не выдавать деньги, указанные в конфиге групп (т.е. чтобы отключить их на пистолетках).
В друг пригодиться мой вариант есть в конфиге с настройка ограничение по раундам и через сколько секунд после начала раунда будет работать бхоп!
 

Вложения

  • VIP_BunnyHop.zip
    7.2 КБ · Просмотры: 5

samec051

Участник
Сообщения
26
Реакции
3
Снова я со своими нубскими вопросами: Как сделать так, чтобы условие выполнялось, если на сервере 2+ игрока? Есть в SourceMod переменная, которая хранит онлайн на сервере?
C-подобный:
if("тут переменная" >= 2)
        {
            тут что-то;
        }
 
Последнее редактирование:

Madness aka null138

Участник
Сообщения
713
Реакции
734

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
здравствуйте, у меня 2 вопроса помогите пожалуйста.
1. Что я сделал не правильно что ругается на первый аргумент в 16 строке?
2. Убираю 16 строку, компилирую плагин но звук не играет а сообщение пишется, что я не правильно сделал?
код:
#pragma semicolon 1

#include <sdktools>

#pragma newdecls required

Handle s_CvSound;
char s_Sound;

public void OnPluginStart()
{
    char szBuffer[64];
    s_CvSound = CreateConVar("sm_block_buy_weapon_sound", "sound/plug/pisk.wav", "Путь к звуку");
    FormatEx(szBuffer, 64, "%s", s_Sound);
    AddFileToDownloadsTable(szBuffer);
    PrecacheSound(s_Sound, true);
}

public Action CS_OnBuyCommand(int client, const char[] weapon)
{
    char szBuffer[64];
    s_Sound = GetConVarDefault(s_CvSound, szBuffer, 64);
    if (strcmp(weapon, "m4a1", false) == 0 || strcmp(weapon, "ak47", false) == 0)
    {
        PrintToChat(client, "\x04 Запрещено");
        ClientCommand(client, "play *%s", s_Sound);
        return Plugin_Handled;
    }
    return Plugin_Continue;
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@KiKiEEKi, тут как минимум путь к файлу неправильный, кмк
 

WodiX

Участник
Сообщения
202
Реакции
29
здравствуйте, у меня 2 вопроса помогите пожалуйста.
1. Что я сделал не правильно что ругается на первый аргумент в 16 строке?
2. Убираю 16 строку, компилирую плагин но звук не играет а сообщение пишется, что я не правильно сделал?
код:
#pragma semicolon 1

#include <sdktools>

#pragma newdecls required

Handle s_CvSound;
char s_Sound;

public void OnPluginStart()
{
    char szBuffer[64];
    s_CvSound = CreateConVar("sm_block_buy_weapon_sound", "sound/plug/pisk.wav", "Путь к звуку");
    FormatEx(szBuffer, 64, "%s", s_Sound);
    AddFileToDownloadsTable(szBuffer);
    PrecacheSound(s_Sound, true);
}

public Action CS_OnBuyCommand(int client, const char[] weapon)
{
    char szBuffer[64];
    s_Sound = GetConVarDefault(s_CvSound, szBuffer, 64);
    if (strcmp(weapon, "m4a1", false) == 0 || strcmp(weapon, "ak47", false) == 0)
    {
        PrintToChat(client, "\x04 Запрещено");
        ClientCommand(client, "play *%s", s_Sound);
        return Plugin_Handled;
    }
    return Plugin_Continue;
}
Перекеш звуков кс го
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Grey83, Делаю так ClientCommand(client, "play *plug/pisk.wav"); звук работает.
Делают так s_CvSound = CreateConVar("sm_block_buy_weapon_sound", "plug/pisk.wav", "Путь к звуку");
ClientCommand(client, "play *%s", s_Sound);
Звук не работает и пишет что его нету.
Ошибка вот какая:
Failed to load sound "*%.wav", file probably missing from disk/repository
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@KiKiEEKi, ну так у Вас строка в виде одного символа объявлена. Это неправильно. Это раз.
Во-вторых, Вы нигде содержимое квары не получаете, и переменная полностью в дефолтном состоянии (строка - пустая).
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Kruzya, Где посмотреть как объявлять виде одного или несколько символов?

Сделал вот так
код:
Handle s_CvSound = INVALID_HANDLE;
char s_Sound[64] = "plug/pisk.wav";
char szBuffer[64];

public void OnPluginStart()
{
    s_CvSound = CreateConVar("sm_block_buy_weapon_sound", "plug/pisk.wav", "Путь к звуку");
}

public void OnMapStart()
{
    FormatEx(szBuffer, 64, "sound/%s", s_Sound);
    AddFileToDownloadsTable(szBuffer);
    PrecacheSound(s_Sound);
}

public Action CS_OnBuyCommand(int client, const char[] weapon)
{
    s_Sound = GetConVarString(s_CvSound, szBuffer, 64);

    if (strcmp(weapon, "m4a1", false) == 0 || strcmp(weapon, "ak47", false) == 0)
    {
        PrintToChat(client, "\x04 Запрещено");
        EmitSoundToClient(client, s_Sound);
        return Plugin_Handled;
    }
    return Plugin_Continue;
}
Но не помогу понять как устранить ошибку (строка 19) array sizes do not match, or destination array is too small
 

DarkerZ

Участник
Сообщения
395
Реакции
175
@KiKiEEKi
C-подобный:
s_Sound = GetConVarString(s_CvSound, szBuffer, 64);
sourcemod API:
void GetConVarString(Handle convar, char[] value, int maxlength)
ты не можешь void значение присвоить в char[]
юзай
C-подобный:
GetConVarString(s_CvSound, s_Sound, 64);
и вообще лучше сделай это через HookConVarChange. тебе незачем каждый раз при buy команде дёргать квар
 

Туник

Участник
Сообщения
1,281
Реакции
263
Может кто делал себе плагин для запрета входа игрокам с VAC и желательно + тех кому STEAM отключил микро из-за жалоб постоянных, поделитесь?
 

WodiX

Участник
Сообщения
202
Реакции
29
Может кто делал себе плагин для запрета входа игрокам с VAC и желательно + тех кому STEAM отключил микро из-за жалоб постоянных, поделитесь?
Так не проще включить доступ только без ВАК Бана?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@KiKiEEKi, попробуй так
C-подобный:
#pragma semicolon 1

#include <sdktools_sound>
#include <sdktools_stringtables>

char s_Sound[PLATFORM_MAX_PATH];

public void OnPluginStart()
{
    ConVar cvar = CreateConVar("sm_block_buy_weapon_sound", "plug/pisk.wav", "Путь к звуку", FCVAR_PRINTABLEONLY);
    CVarChanged_Sound(cvar, NULL_STRING, NULL_STRING);
    cvar.AddChangeHook(CVarChanged_Sound);
}

public void CVarChanged_Sound(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    cvar.GetString(s_Sound, sizeof(s_Sound));

    int len = strlen(s_Sound) - 4;
    if(len < 1 || strcmp(s_Sound[len], ".mp3", false) && strcmp(s_Sound[len], ".wav", false))
        s_Sound[0] = 0;
    else OnMapStart();
}

public void OnMapStart()
{
    if(!s_Sound[0]) return;

    char buffer[sizeof(s_Sound)];
    FormatEx(buffer, sizeof(buffer), "sound/%s", s_Sound);
    AddFileToDownloadsTable(buffer);
    PrecacheSound(s_Sound, true);
}

public Action CS_OnBuyCommand(int client, const char[] weapon)
{
    if(strcmp(weapon, "m4a1", false) && strcmp(weapon, "ak47", false))
        return Plugin_Continue;

    PrintToChat(client, "\x04 Покупка %s запрещена", weapon);
    if(s_Sound[0]) EmitSoundToClient(client, s_Sound);
    return Plugin_Handled;
}
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Grey83, Сделал вот так, ошибок нету в консоле но звук не играет. Хуках инфо о звуков вашем плагином и он показывает тот звук который указан в плагине и в server.cfg переменой. То есть все классно но звук не играет.
код:
Handle s_CvSound = INVALID_HANDLE;
char s_Sound[64] = "plug/pisk.wav";
char szBuffer[64];

public void OnPluginStart()
{
    s_CvSound = CreateConVar("sm_block_buy_weapon_sound", "plug/pisk.wav", "Путь к звуку");
}

public void OnMapStart()
{
    FormatEx(szBuffer, 64, "%s", s_Sound);
    AddFileToDownloadsTable(szBuffer);
    PrecacheSound(s_Sound);
}

public Action CS_OnBuyCommand(int client, const char[] weapon)
{
    GetConVarString(s_CvSound, s_Sound, 64);

    if (strcmp(weapon, "m4a1", false) == 0 || strcmp(weapon, "ak47", false) == 0)
    {
        PrintToChat(client, "\x04Запрещено");
        EmitSoundToClient(client, s_Sound);
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

Ваш плагин попробовал, он пишет в консоле что звук не найден. Может кто проверит? Может именно у меня что то не так.
 
Сверху Снизу