Команды или мини плагин на запрет!

NeXxX

Участник
Сообщения
312
Реакции
26
У меня этот стоит на awp сервере диглы убирает без лишних команд в чат LINK
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
У меня этот стоит на awp сервере диглы убирает без лишних команд в чат LINK

А если стоит плагин на выдачу оружия? (для админов). К тому же, дописать очистку оружия на карте по запрещенному оружию, не проблема.
Только не знаю как правильнее сделать. Удалять запрещенное оружие каждые X сек. или каждый новый раунд.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdkhooks>
#include <csgo_colors>

#define PLUGIN_VERSION "1.5"

// Квары - Cvars
new bool:g_block_use_weapons = true;
new bool:g_block_buy_weapons = true;

// Список блокируемого оружия.
new const String:block_weapons_list[][] =
{
	"ak47", "aug", "mp7", "mp9"
};

#define Weapon_Count sizeof(block_weapons_list)

public Plugin:myinfo =
{
    name = "[CS:GO] Block Weapons",
    author = "Hejter",
    description = "Block pickup and buy weapons.",
    version = PLUGIN_VERSION,
    url = "http://www.excw.ru"
};

public OnPluginStart() 
{
	new Handle:hRegister; // Локальный handle для регистрации ConVar'ов

	CreateConVar("block_weapons_version", PLUGIN_VERSION, "Plugin version.", FCVAR_PLUGIN|FCVAR_DONTRECORD|FCVAR_NOTIFY);

	// Сразу будем отслеживать изменения и зарегистрируем переменную
	HookConVarChange((hRegister = CreateConVar("block_use_weapons", "1", "Block use and pickup other weapons?", FCVAR_PLUGIN, true, 0.0, true, 1.0)), OnBlockUseWeaponsChange);
	g_block_use_weapons = GetConVarBool(hRegister); // Мгновенно присвоим значение для глобального буля

	// Вторая переменная - Second variable
	HookConVarChange((hRegister = CreateConVar("block_buy_weapons", "1", "Block buy other weapons?", FCVAR_PLUGIN, true, 0.0, true, 1.0)), OnBlockBuyWeaponsChange);
	g_block_buy_weapons = GetConVarBool(hRegister); // Convars by KyleS

	AutoExecConfig(true, "csgo_block_weapons");

	LoadTranslations("csgo_block_weapons.phrases");
}

public OnBlockUseWeaponsChange(Handle:convar, const String:oldValue[], const String:newValue[])  
{  
    g_block_use_weapons = GetConVarBool(convar);  
} 

public OnBlockBuyWeaponsChange(Handle:convar, const String:oldValue[], const String:newValue[])  
{  
    g_block_buy_weapons = GetConVarBool(convar);  
} 

public OnClientPostAdminCheck(client){SDKHook(client, SDKHook_WeaponEquip, WeaponEquip);}
public OnClientDisconnect(client){SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip);}

// Запрещает использовать и поднимать запрещенное оружие.
public Action:WeaponEquip(client, weapon) 
{ 
    if(g_block_use_weapons)
	{
    decl String:blockWeapon[21]; 
    GetEntityClassname(weapon, blockWeapon, 21);

    for(new i = 0; i < Weapon_Count; ++i) 
    { 
        if(strcmp(blockWeapon[7], block_weapons_list[i]) == 0)
        { 
            //EmitSoundToClient(client, "buttons/weapon_cant_buy.wav"); // Проигрывает звук игроку.    
            return Plugin_Handled; 
        } 
    } 
    } 
    return Plugin_Continue; 
} 

// Запрещает покупать заблокированное оружие.
public Action:CS_OnBuyCommand(client, const String:weapon[])  
{ 
    if(g_block_buy_weapons) 
    {
     
    for(new i = 0; i < Weapon_Count; ++i)
    { 
        if(strcmp(weapon, block_weapons_list[i]) == 0) 
        { 
            CGOPrintToChat(client, "%t", "Weapon_Block"); // Сообщение клиенту.
            //EmitSoundToClient(client, "buttons/weapon_cant_buy.wav"); // Проигрывает звук игроку.    
            return Plugin_Handled; 
        } 
    } 
    } 
    return Plugin_Continue; 
}
Снёс DEBUG - с авто он там бесполезен. В проверке валидности игрока также вряд ли есть смысл, тем более, без звука в SDKHook - ошибку не выдаст.
Можно убрать проверку g_block_use_weapons, но придётся хорошо расписать действие квара. Оффтоп
 

rus0707

Участник
Сообщения
326
Реакции
43
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdkhooks>
#include <csgo_colors>

#define PLUGIN_VERSION "1.5"

// Квары - Cvars
new bool:g_block_use_weapons = true;
new bool:g_block_buy_weapons = true;

// Список блокируемого оружия.
new const String:block_weapons_list[][] =
{
    "ak47", "aug", "mp7", "mp9"
};

#define Weapon_Count sizeof(block_weapons_list)

public Plugin:myinfo =
{
    name = "[CS:GO] Block Weapons",
    author = "Hejter",
    description = "Block pickup and buy weapons.",
    version = PLUGIN_VERSION,
    url = "http://www.excw.ru"
};

public OnPluginStart() 
{
    new Handle:hRegister; // Локальный handle для регистрации ConVar'ов

    CreateConVar("block_weapons_version", PLUGIN_VERSION, "Plugin version.", FCVAR_PLUGIN|FCVAR_DONTRECORD|FCVAR_NOTIFY);

    // Сразу будем отслеживать изменения и зарегистрируем переменную
    HookConVarChange((hRegister = CreateConVar("block_use_weapons", "1", "Block use and pickup other weapons?", FCVAR_PLUGIN, true, 0.0, true, 1.0)), OnBlockUseWeaponsChange);
    g_block_use_weapons = GetConVarBool(hRegister); // Мгновенно присвоим значение для глобального буля

    // Вторая переменная - Second variable
    HookConVarChange((hRegister = CreateConVar("block_buy_weapons", "1", "Block buy other weapons?", FCVAR_PLUGIN, true, 0.0, true, 1.0)), OnBlockBuyWeaponsChange);
    g_block_buy_weapons = GetConVarBool(hRegister); // Convars by KyleS

    AutoExecConfig(true, "csgo_block_weapons");

    LoadTranslations("csgo_block_weapons.phrases");
}

public OnBlockUseWeaponsChange(Handle:convar, const String:oldValue[], const String:newValue[])  
{  
    g_block_use_weapons = GetConVarBool(convar);  
} 

public OnBlockBuyWeaponsChange(Handle:convar, const String:oldValue[], const String:newValue[])  
{  
    g_block_buy_weapons = GetConVarBool(convar);  
} 

public OnClientPutInServer(client){SDKHook(client, SDKHook_WeaponEquip, WeaponEquip);}
public OnClientDisconnect(client){SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip);}

// Запрещает использовать и поднимать запрещенное оружие.
public Action:WeaponEquip(client, weapon) 
{ 
    if(g_block_use_weapons)
    {
    decl String:blockWeapon[21]; 
    GetEntityClassname(weapon, blockWeapon, 21);

    for(new i = 0; i < Weapon_Count; ++i) 
    { 
        if(strcmp(blockWeapon[7], block_weapons_list[i]) == 0)
        { 
            //EmitSoundToClient(client, "buttons/weapon_cant_buy.wav"); // Проигрывает звук игроку.    
            return Plugin_Handled; 
        } 
    } 
    } 
    return Plugin_Continue; 
} 

// Запрещает покупать заблокированное оружие.
public Action:CS_OnBuyCommand(client, const String:weapon[])  
{ 
    if(g_block_buy_weapons) 
    {
     
    for(new i = 0; i < Weapon_Count; ++i)
    { 
        if(strcmp(weapon, block_weapons_list[i]) == 0) 
        { 
            CGOPrintToChat(client, "%T", "Weapon_Block"); // Сообщение клиенту.
            //EmitSoundToClient(client, "buttons/weapon_cant_buy.wav"); // Проигрывает звук игроку.    
            return Plugin_Handled; 
        } 
    } 
    } 
    return Plugin_Continue; 
}
Снёс DEBUG - с авто он там бесполезен. В проверке валидности игрока также вряд ли есть смысл, тем более, без звука в SDKHook - ошибку не выдаст.
Можно убрать проверку g_block_use_weapons, но придётся хорошо расписать действие квара.


а количества можно сюда сделать
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Можно убрать проверку g_block_use_weapons, но придётся хорошо расписать действие квара.
Это как?

Добавлено через 47 секунд
а количества можно сюда сделать
Какое количество? сформулируй вопрос правильно.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Проходиться циклом по всем игрокам и делать SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip); при отключении и обратное - при включении. Но так же придётся сделать проверки в вызовах, вроде OnClientDisconnect(client).
Но это того стоит, основная функция куда чаще вызывается.
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Проходиться циклом по всем игрокам и делать SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip); при отключении и обратное - при включении. Но так же придётся сделать проверки в вызовах, вроде OnClientDisconnect(client).
Но это того стоит, основная функция куда чаще вызывается.

Нудно.
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Я бы ещё не так сделал, а событием расписал и хукал/унхукал. :-D Оффтоп
Кстати, CGOPrintToChat(client, "%t", "Weapon_Block"); - нужная маленькая t, либо после укажи индекс клиента (бессмысленно %T, в целом).

Буду знать :oops:

Добавлено через 17 минут
В чем отличие
OnClientDisconnect от OnClientDisconnect_Post?

Правильно ли будет если я сделаю так?

PHP:
public OnClientDisconnect(client)
{
    if ( IsClientInGame(client) )
    {
        SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip);
    }
}

Оффтоп
 
Последнее редактирование:

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Я являюсь админом на данном проекте, а что такое?
Какая самая стабильная версия?
Чтоб в ней работала, блокировка покупки и блокировка поднятия, без удаления ненужного оружия.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В чем отличие
OnClientDisconnect от OnClientDisconnect_Post?
Первый вызов - игрок ещё подключён и можно узнать все его параметры, а второе - уже отключён, передаётся лишь индекс. По сути, одно и тоже, но Post, возможно, оптимальнее.
Правильно ли будет если я сделаю
Думаю, не стоит. Захуканным - зря проверяться, а не до конца загрузившимся при выходе - всё равно ошибки не выдаст.
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Я являюсь админом на данном проекте, а что такое?
Какая самая стабильная версия?
Чтоб в ней работала, блокировка покупки и блокировка поднятия, без удаления ненужного оружия.

Та что в Post #2 [Версия 1.5]

Добавлено через 2 минуты
Первый вызов - игрок ещё подключён и можно узнать все его параметры, а второе - уже отключён, передаётся лишь индекс. По сути, одно и тоже, но Post, возможно, оптимальнее.Думаю, не стоит. Захуканным - зря проверяться, а не до конца загрузившимся при выходе - всё равно ошибки не выдаст.

Значит оставлю просто disconnect.
 
Последнее редактирование:

NeXxX

Участник
Сообщения
312
Реакции
26
А если стоит плагин на выдачу оружия? (для админов). К тому же, дописать очистку оружия на карте по запрещенному оружию, не проблема.
Только не знаю как правильнее сделать. Удалять запрещенное оружие каждые X сек. или каждый новый раунд.

Плагин не выдает определенное оружие а запрещает
и оно даже не появляется на карте тоесть (скидывается оружие)
 

m22b

Участник
Сообщения
1,007
Реакции
283
Я являюсь админом на данном проекте, а что такое?
Какая самая стабильная версия?
Чтоб в ней работала, блокировка покупки и блокировка поднятия, без удаления ненужного оружия.

В чем проблема поставить weapon restrict ? :
https://forums.alliedmods.net/showthread.php?p=950174

В чем проблема зайти на forums.alliedmods.net и попросить об этом там ? (там больше кодеров которым делать нечего а за бабос тебе так еще и не то сделают)) , да и если их форум пошуршать возможно уже кто то спрашивал и есть варианты)

:)
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
В чем проблема поставить weapon restrict ? :
https://forums.alliedmods.net/showthread.php?p=950174

В чем проблема зайти на forums.alliedmods.net и попросить об этом там ? (там больше кодеров которым делать нечего а за бабос тебе так еще и не то сделают)) , да и если их форум пошуршать возможно уже кто то спрашивал и есть варианты)

:)

Я писал в постах выше что мне не нужны на столько расширенные функции как в weapon restrict, поэтому спросил может у кого нить есть мини версия плагина.
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
В чем проблема поставить weapon restrict ? :
https://forums.alliedmods.net/showthread.php?p=950174

В чем проблема зайти на forums.alliedmods.net и попросить об этом там ? (там больше кодеров которым делать нечего а за бабос тебе так еще и не то сделают)) , да и если их форум пошуршать возможно уже кто то спрашивал и есть варианты)

:)

А чем мой вариант плох?
Оффтоп

Добавлено через 16 часов 51 минуту
Плагин не выдает определенное оружие а запрещает
Тот плагин который ты дал. Он запрещает покупать оружие и очищает карту от выкинутого оружия, но если на сервере стоит выдача админам оружия, то мой вариант будет куда лучше. Ведь он запрещает использовать оружие, а т.е поднимать его и держать в руках.
 
Последнее редактирование:
Сверху Снизу