A
Вы не поняли (либо я плохо объяснил).Разве так не работает?
На см 1.6.4 компилируетсяPHP:public OnPluginStart() { RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN); RegAdminCmd("sm_blabla", Command_Banv, ADMFLAG_BAN); g_bActivated = true; }
![]()
Я сейчас сонный и могу тупить...
А, я просто спать хочу и поэтому не понял суть вопроса... Извини тогда, лучше я ночью больше не полезу уже в исходник...Может кто другой поможетВы не поняли (либо я плохо объяснил).
Данный плагин банит по переменной. Например, xbox_throttlebias 0 меняется на xbox_throttlebias 1. Так вот, кроме это переменной нужно добавить еще одну.
Буду ждать и надеяться. Возможно кто-то сделает...А, я просто спать хочу и поэтому не понял суть вопроса... Извини тогда, лучше я ночью больше не полезу уже в исходник...Может кто другой поможет
Это я знаю, но нужна еще одна переменная.@...aDDidas..., Ну можно же заменить xbox_throttlebias и потом заменить iRate = 46; на 148 строке
Это я знаю, но нужна еще одна переменная.
#pragma semicolon 1
#include <sourcemod>
public Plugin:myinfo =
{
name = "BanV34",
description = "",
author = "Regent",
version = "1.0",
url = "http://all4css.ru/"
};
new bool:g_bActivated;
new bool:g_bBanned[65];
public OnPluginStart()
{
RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
g_bActivated = true;
}
public OnClientAuthorized(iClient, const String:auth[])
{
QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
QueryClientConVar(iClient, "joy_forwardsensitivity", Query_Func);
}
public Action:Command_Banv(iClient, szArgs)
{
Send_MainMenu(iClient);
return Plugin_Handled;
}
public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) == 46)
{
g_bBanned[iClient] = true;
if (g_bActivated)
{
KickClient(iClient, "You are banned on this server");
}
}
else
{
g_bBanned[iClient] = false;
}
}
Send_MainMenu(iClient)
{
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[BanV34]\n \n", false);
if (g_bActivated)
{
DrawPanelItem(hPanel, "Забанить игрока", 0);
DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
DrawPanelItem(hPanel, "Выход", 0);
}
else
{
DrawPanelItem(hPanel, "Разбанить игрока", 0);
DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
DrawPanelItem(hPanel, "Выход", 0);
}
SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
CloseHandle(hPanel);
}
Send_PlayerMenu(iClient)
{
new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
if (g_bActivated)
{
SetMenuTitle(hMenu, "Забанить игрока:\n \n");
}
else
{
SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
}
decl String:szName[64];
decl String:szClient[8];
for (new i = 1; i < MaxClients; i++)
{
if (IsClientConnected(i))
{
QueryClientConVar(i, "xbox_throttlebias", Query_Func);
if (g_bActivated && !g_bBanned[i])
{
GetClientName(i, szName, 64);
IntToString(i, szClient, 8);
AddMenuItem(hMenu, szClient, szName, 0);
}
else if (!g_bActivated && g_bBanned[i])
{
GetClientName(i, szName, 64);
IntToString(i, szClient, 8);
AddMenuItem(hMenu, szClient, szName, 0);
}
}
}
SetMenuExitButton(hMenu, true);
DisplayMenu(hMenu, iClient, 0);
}
public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
if (action == MenuAction_Select)
{
if (iInfo == 1)
{
Send_PlayerMenu(iClient);
}
if (iInfo == 2)
{
g_bActivated = !g_bActivated;
Send_MainMenu(iClient);
}
}
}
public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
if (action == MenuAction_End)
{
CloseHandle(menu);
}
else
{
if (action == MenuAction_Cancel)
{
Send_MainMenu(iClient);
}
if (action == MenuAction_Select)
{
decl String:szInfo[8];
GetMenuItem(menu, iInfo, szInfo, 8);
new iTarget = StringToInt(szInfo, 10);
if (!IsClientConnected(iTarget))
{
PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
}
decl iRate;
if (g_bActivated)
{
iRate = 46;
}
else
{
iRate = 1;
}
decl String:szCmd[128];
Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
new Handle:data = CreateKeyValues("data");
KvSetString(data, "type", "2");
KvSetString(data, "cmd", szCmd);
ShowVGUIPanel(iTarget, "info", data, true);
CloseHandle(data);
}
}
}
К сожалению не работает (бан дается только по xbox_throttlebias)--- Добавлено позже ---PHP:#pragma semicolon 1 #include <sourcemod> public Plugin:myinfo = { name = "BanV34", description = "", author = "Regent", version = "1.0", url = "http://all4css.ru/" }; new bool:g_bActivated; new bool:g_bBanned[65]; public OnPluginStart() { RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN); g_bActivated = true; } public OnClientAuthorized(iClient, const String:auth[]) { QueryClientConVar(iClient, "xbox_throttlebias", Query_Func); QueryClientConVar(iClient, "joy_forwardsensitivity", Query_Func); } public Action:Command_Banv(iClient, szArgs) { Send_MainMenu(iClient); return Plugin_Handled; } public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) == 46) { g_bBanned[iClient] = true; if (g_bActivated) { KickClient(iClient, "You are banned on this server"); } } else { g_bBanned[iClient] = false; } } Send_MainMenu(iClient) { new Handle:hPanel = CreatePanel(); SetPanelTitle(hPanel, "[BanV34]\n \n", false); if (g_bActivated) { DrawPanelItem(hPanel, "Забанить игрока", 0); DrawPanelItem(hPanel, "Защита: включена\n \n", 2); DrawPanelItem(hPanel, "Выключить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } else { DrawPanelItem(hPanel, "Разбанить игрока", 0); DrawPanelItem(hPanel, "Защита: отключена\n \n", 2); DrawPanelItem(hPanel, "Включить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0); CloseHandle(hPanel); } Send_PlayerMenu(iClient) { new Handle:hMenu = CreateMenu(Handle_PlayerMenu); if (g_bActivated) { SetMenuTitle(hMenu, "Забанить игрока:\n \n"); } else { SetMenuTitle(hMenu, "Разбанить игрока:\n \n"); } decl String:szName[64]; decl String:szClient[8]; for (new i = 1; i < MaxClients; i++) { if (IsClientConnected(i)) { QueryClientConVar(i, "xbox_throttlebias", Query_Func); if (g_bActivated && !g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } else if (!g_bActivated && g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } } } SetMenuExitButton(hMenu, true); DisplayMenu(hMenu, iClient, 0); } public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_Select) { if (iInfo == 1) { Send_PlayerMenu(iClient); } if (iInfo == 2) { g_bActivated = !g_bActivated; Send_MainMenu(iClient); } } } public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_End) { CloseHandle(menu); } else { if (action == MenuAction_Cancel) { Send_MainMenu(iClient); } if (action == MenuAction_Select) { decl String:szInfo[8]; GetMenuItem(menu, iInfo, szInfo, 8); new iTarget = StringToInt(szInfo, 10); if (!IsClientConnected(iTarget)) { PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game"); } decl iRate; if (g_bActivated) { iRate = 46; } else { iRate = 1; } decl String:szCmd[128]; Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate); new Handle:data = CreateKeyValues("data"); KvSetString(data, "type", "2"); KvSetString(data, "cmd", szCmd); ShowVGUIPanel(iTarget, "info", data, true); CloseHandle(data); } } }
Если нет,то не знаю
Вот еще попробуйК сожалению не работает (бан дается только по xbox_throttlebias)
#pragma semicolon 1
#include <sourcemod>
public Plugin:myinfo =
{
name = "BanV34",
description = "",
author = "Regent",
version = "1.0",
url = "http://all4css.ru/"
};
new bool:g_bActivated;
new bool:g_bBanned[65];
public OnPluginStart()
{
RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
g_bActivated = true;
}
public OnClientAuthorized(iClient, const String:auth[])
{
QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
QueryClientConVar(iClient, "cl_cmdrate", Query_Func2);
}
public Action:Command_Banv(iClient, szArgs)
{
Send_MainMenu(iClient);
return Plugin_Handled;
}
public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) == 46)
{
g_bBanned[iClient] = true;
if (g_bActivated)
{
KickClient(iClient, "You are banned on this server");
}
}
else
{
g_bBanned[iClient] = false;
}
}
public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) == 46)
{
g_bBanned[iClient] = true;
if (g_bActivated)
{
KickClient(iClient, "You are banned on this server");
}
}
else
{
g_bBanned[iClient] = false;
}
}
Send_MainMenu(iClient)
{
new Handle:hPanel = CreatePanel();
SetPanelTitle(hPanel, "[BanV34]\n \n", false);
if (g_bActivated)
{
DrawPanelItem(hPanel, "Забанить игрока", 0);
DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
DrawPanelItem(hPanel, "Выход", 0);
}
else
{
DrawPanelItem(hPanel, "Разбанить игрока", 0);
DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
DrawPanelItem(hPanel, "Выход", 0);
}
SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
CloseHandle(hPanel);
}
Send_PlayerMenu(iClient)
{
new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
if (g_bActivated)
{
SetMenuTitle(hMenu, "Забанить игрока:\n \n");
}
else
{
SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
}
decl String:szName[64];
decl String:szClient[8];
for (new i = 1; i < MaxClients; i++)
{
if (IsClientConnected(i))
{
QueryClientConVar(i, "xbox_throttlebias", Query_Func);
QueryClientConVar(i, "cl_cmdrate", Query_Func2);
if (g_bActivated && !g_bBanned[i])
{
GetClientName(i, szName, 64);
IntToString(i, szClient, 8);
AddMenuItem(hMenu, szClient, szName, 0);
}
else if (!g_bActivated && g_bBanned[i])
{
GetClientName(i, szName, 64);
IntToString(i, szClient, 8);
AddMenuItem(hMenu, szClient, szName, 0);
}
}
}
SetMenuExitButton(hMenu, true);
DisplayMenu(hMenu, iClient, 0);
}
public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
if (action == MenuAction_Select)
{
if (iInfo == 1)
{
Send_PlayerMenu(iClient);
}
if (iInfo == 2)
{
g_bActivated = !g_bActivated;
Send_MainMenu(iClient);
}
}
}
public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
if (action == MenuAction_End)
{
CloseHandle(menu);
}
else
{
if (action == MenuAction_Cancel)
{
Send_MainMenu(iClient);
}
if (action == MenuAction_Select)
{
decl String:szInfo[8];
GetMenuItem(menu, iInfo, szInfo, 8);
new iTarget = StringToInt(szInfo, 10);
if (!IsClientConnected(iTarget))
{
PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
}
decl iRate;
decl iRate2;
if (g_bActivated)
{
iRate = 46;
iRate2 = 46;
}
else
{
iRate = 1;
iRate2 = 128;
}
decl String:szCmd[128];
decl String:szCmd2[128];
Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2);
new Handle:data = CreateKeyValues("data");
KvSetString(data, "type", "2");
KvSetString(data, "cmd", szCmd);
ShowVGUIPanel(iTarget, "info", data, true);
CloseHandle(data);
}
}
}
Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
Я плохо пишу просто попробывал :D@...aDDidas..., Попробуй это еще
ОффтопPHP:#pragma semicolon 1 #include <sourcemod> public Plugin:myinfo = { name = "BanV34", description = "", author = "Regent", version = "1.0", url = "http://all4css.ru/" }; new bool:g_bActivated; new bool:g_bBanned[65]; public OnPluginStart() { RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN); g_bActivated = true; } public OnClientAuthorized(iClient, const String:auth[]) { QueryClientConVar(iClient, "xbox_throttlebias", Query_Func); QueryClientConVar(iClient, "cl_cmdrate", Query_Func2); } public Action:Command_Banv(iClient, szArgs) { Send_MainMenu(iClient); return Plugin_Handled; } public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) == 46) { g_bBanned[iClient] = true; if (g_bActivated) { KickClient(iClient, "You are banned on this server"); } } else { g_bBanned[iClient] = false; } } public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) == 46) { g_bBanned[iClient] = true; if (g_bActivated) { KickClient(iClient, "You are banned on this server"); } } else { g_bBanned[iClient] = false; } } Send_MainMenu(iClient) { new Handle:hPanel = CreatePanel(); SetPanelTitle(hPanel, "[BanV34]\n \n", false); if (g_bActivated) { DrawPanelItem(hPanel, "Забанить игрока", 0); DrawPanelItem(hPanel, "Защита: включена\n \n", 2); DrawPanelItem(hPanel, "Выключить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } else { DrawPanelItem(hPanel, "Разбанить игрока", 0); DrawPanelItem(hPanel, "Защита: отключена\n \n", 2); DrawPanelItem(hPanel, "Включить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0); CloseHandle(hPanel); } Send_PlayerMenu(iClient) { new Handle:hMenu = CreateMenu(Handle_PlayerMenu); if (g_bActivated) { SetMenuTitle(hMenu, "Забанить игрока:\n \n"); } else { SetMenuTitle(hMenu, "Разбанить игрока:\n \n"); } decl String:szName[64]; decl String:szClient[8]; for (new i = 1; i < MaxClients; i++) { if (IsClientConnected(i)) { QueryClientConVar(i, "xbox_throttlebias", Query_Func); QueryClientConVar(i, "cl_cmdrate", Query_Func2); if (g_bActivated && !g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } else if (!g_bActivated && g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } } } SetMenuExitButton(hMenu, true); DisplayMenu(hMenu, iClient, 0); } public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_Select) { if (iInfo == 1) { Send_PlayerMenu(iClient); } if (iInfo == 2) { g_bActivated = !g_bActivated; Send_MainMenu(iClient); } } } public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_End) { CloseHandle(menu); } else { if (action == MenuAction_Cancel) { Send_MainMenu(iClient); } if (action == MenuAction_Select) { decl String:szInfo[8]; GetMenuItem(menu, iInfo, szInfo, 8); new iTarget = StringToInt(szInfo, 10); if (!IsClientConnected(iTarget)) { PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game"); } decl iRate; decl iRate2; if (g_bActivated) { iRate = 46; iRate2 = 46; } else { iRate = 1; iRate2 = 128; } decl String:szCmd[128]; decl String:szCmd2[128]; Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate); Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2); new Handle:data = CreateKeyValues("data"); KvSetString(data, "type", "2"); KvSetString(data, "cmd", szCmd); ShowVGUIPanel(iTarget, "info", data, true); CloseHandle(data); } } }
@Seton1447, Как минимум
теперь не работает :DPHP:Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
Первая переменная меняется, а вот вторая почему-то нет =(@...aDDidas..., Попробуй это еще
ОффтопPHP:#pragma semicolon 1 #include <sourcemod> public Plugin:myinfo = { name = "BanV34", description = "", author = "Regent", version = "1.0", url = "http://all4css.ru/" }; new bool:g_bActivated; new bool:g_bBanned[65]; public OnPluginStart() { RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN); g_bActivated = true; } public OnClientAuthorized(iClient, const String:auth[]) { QueryClientConVar(iClient, "xbox_throttlebias", Query_Func); QueryClientConVar(iClient, "cl_cmdrate", Query_Func2); } public Action:Command_Banv(iClient, szArgs) { Send_MainMenu(iClient); return Plugin_Handled; } public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) == 46) { g_bBanned[iClient] = true; if (g_bActivated) { KickClient(iClient, "You are banned on this server"); } } else { g_bBanned[iClient] = false; } } public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) == 46) { g_bBanned[iClient] = true; if (g_bActivated) { KickClient(iClient, "You are banned on this server"); } } else { g_bBanned[iClient] = false; } } Send_MainMenu(iClient) { new Handle:hPanel = CreatePanel(); SetPanelTitle(hPanel, "[BanV34]\n \n", false); if (g_bActivated) { DrawPanelItem(hPanel, "Забанить игрока", 0); DrawPanelItem(hPanel, "Защита: включена\n \n", 2); DrawPanelItem(hPanel, "Выключить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } else { DrawPanelItem(hPanel, "Разбанить игрока", 0); DrawPanelItem(hPanel, "Защита: отключена\n \n", 2); DrawPanelItem(hPanel, "Включить защиту\n \n", 0); DrawPanelItem(hPanel, "Выход", 0); } SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0); CloseHandle(hPanel); } Send_PlayerMenu(iClient) { new Handle:hMenu = CreateMenu(Handle_PlayerMenu); if (g_bActivated) { SetMenuTitle(hMenu, "Забанить игрока:\n \n"); } else { SetMenuTitle(hMenu, "Разбанить игрока:\n \n"); } decl String:szName[64]; decl String:szClient[8]; for (new i = 1; i < MaxClients; i++) { if (IsClientConnected(i)) { QueryClientConVar(i, "xbox_throttlebias", Query_Func); QueryClientConVar(i, "cl_cmdrate", Query_Func2); if (g_bActivated && !g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } else if (!g_bActivated && g_bBanned[i]) { GetClientName(i, szName, 64); IntToString(i, szClient, 8); AddMenuItem(hMenu, szClient, szName, 0); } } } SetMenuExitButton(hMenu, true); DisplayMenu(hMenu, iClient, 0); } public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_Select) { if (iInfo == 1) { Send_PlayerMenu(iClient); } if (iInfo == 2) { g_bActivated = !g_bActivated; Send_MainMenu(iClient); } } } public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo) { if (action == MenuAction_End) { CloseHandle(menu); } else { if (action == MenuAction_Cancel) { Send_MainMenu(iClient); } if (action == MenuAction_Select) { decl String:szInfo[8]; GetMenuItem(menu, iInfo, szInfo, 8); new iTarget = StringToInt(szInfo, 10); if (!IsClientConnected(iTarget)) { PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game"); } decl iRate; decl iRate2; if (g_bActivated) { iRate = 46; iRate2 = 46; } else { iRate = 1; iRate2 = 128; } decl String:szCmd[128]; decl String:szCmd2[128]; Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate); Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2); new Handle:data = CreateKeyValues("data"); KvSetString(data, "type", "2"); KvSetString(data, "cmd", szCmd); ShowVGUIPanel(iTarget, "info", data, true); CloseHandle(data); } } }
@Seton1447, Как минимум
теперь не работает :ab:PHP:Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
Да. То есть когда человека банишь, то переменные (к примеру) становятся xbox_throttlebias 46 , cl_cmdrate 46.@...aDDidas..., Она должна при бане меняться? Вроде же если разбан то = 128 а если бан 46
#include <sourcemod>
public Plugin:myinfo =
{
name = "Nsbans",
author = "Schmidt",
description = "No-Steam-Bans",
version = "1.0",
url = "http://world-source.ru/"
};
new bool:PlayerBanned[MAXPLAYERS+1],
bool:Protect = true,
bool:BanAction[MAXPLAYERS+1];
public OnPluginStart()
{
RegAdminCmd("nsadmin", Nsbans, ADMFLAG_ROOT);
}
public Action:Nsbans(i, args)
{
if (!(GetUserFlagBits(i) & ADMFLAG_ROOT))
{
ReplyToCommand(i, "[ Nsbans ] У вас нет доступа");
return Plugin_Handled;
}
if (args < 1) ShowGlavPanel(i);
return Plugin_Handled;
}
ShowGlavPanel(i)
{
decl Handle:Nsbans_Panel;
if ((Nsbans_Panel = CreatePanel()) == INVALID_HANDLE)
{
ReplyToCommand(i, "[ Nsbans ] Не удалось создать меню");
return;
}
DrawPanelText(Nsbans_Panel, "[ Nsbans ] Меню\n \n");
if (Protect) DrawPanelItem(Nsbans_Panel, "Дать Бан");
else DrawPanelItem(Nsbans_Panel, "Дать Бан", ITEMDRAW_DISABLED);
if (Protect) DrawPanelItem(Nsbans_Panel, "Разбанить Игрока", ITEMDRAW_DISABLED);
else DrawPanelItem(Nsbans_Panel, "Разбанить Игрока");
decl String:Schmidt[75];
if (Protect) Format(Schmidt, sizeof(Schmidt), "Защита: ВКЛ (ОТКЛ)\n \n");
else Format(Schmidt, sizeof(Schmidt), "Защита: ОТКЛ (ВКЛ)\n \n");
DrawPanelItem(Nsbans_Panel, Schmidt);
DrawPanelItem(Nsbans_Panel, "Выход");
SendPanelToClient(Nsbans_Panel, i, wS_SelectGlavPanel, 0);
CloseHandle(Nsbans_Panel);
}
public wS_SelectGlavPanel(Handle:menu, MenuAction:action, i, z)
{
if (action != MenuAction_Select && z > 3)
{
return;
}
if (z < 3)
{
if (z == 1) BanAction[i] = true;
else BanAction[i] = false;
ShowBanMenu(i);
}
else if (z == 3)
{
if (Protect)
{
Protect = false;
PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Защита отключена");
}
else
{
Protect = true;
PrintToChat(i, "\x01[ \x03Nsbans\x01 ] \x04Защита включена");
wS_KickBanPlayers();
}
ShowGlavPanel(i);
}
}
wS_KickBanPlayers()
{
for (new x = 1; x <= MaxClients; x++)
{
if (IsClientInGame(x) && !IsFakeClient(x))
{
QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:QueryKick_Func);
QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:QueryKick_Func2);
}
}
}
public QueryKick_Func(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) != 200) KickClient(i, "[ Nsbans ] Вы забанены");
}
public QueryKick_Func2(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) != 100) KickClient(i, "[ Nsbans ] Вы забанены");
}
ShowBanMenu(i)
{
new Handle:h = CreateMenu(BanActionMenu);
if (BanAction[i])
{
SetMenuTitle(h, "Кому дать бан?\n \n");
}
else
{
SetMenuTitle(h, "Кого разбанить?\n \n");
}
decl String:f[20], String:n[MAX_NAME_LENGTH], s;
s = sizeof(n);
for (new x = 1; x <= MaxClients; x++)
{
if (IsClientInGame(x) && !IsFakeClient(x))
{
QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:Query_Func);
QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:Query_Func2);
GetClientName(x, n, s);
if (!PlayerBanned[x])
{
if (BanAction[i])
{
Format(f, sizeof(f), "%d", GetClientUserId(x));
AddMenuItem(h, f, n);
}
else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
}
else
{
if (!BanAction[i])
{
Format(f, sizeof(f), "%d", GetClientUserId(x));
AddMenuItem(h, f, n);
}
else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
}
}
}
AddMenuItem(h, "GlavMenu", "<- Главное Меню <-");
DisplayMenu(h, i, 0);
}
public BanActionMenu(Handle:menu, MenuAction:action, i, z)
{
if (action == MenuAction_End)
{
CloseHandle(menu);
return;
}
if (action != MenuAction_Select)
{
return;
}
decl String:f[20];
GetMenuItem(menu, z, f, sizeof(f));
if (StrEqual(f, "GlavMenu"))
{
ShowGlavPanel(i);
return;
}
new target_client = GetClientOfUserId(StringToInt(f));
if (target_client < 1)
{
PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Игрок не найден");
return;
}
if (BanAction[i] && !PlayerBanned[target_client])
{
// ДАЁМ БАН
// Здесь надо изменить xbox_throttlespoof на значение, отличное от 200
new Handle:h = StartMessageOne("VGUIMenu", i);
BfWriteString(h, "xbox_throttlespoof 201; quit");
BfWriteString(h, "cl_cmdrate 88; quit");
EndMessage();
KickClient(target_client, "Вы забанены");
}
else if (!BanAction[i] && PlayerBanned[target_client])
{
// ДАЁМ РАЗБАН
// Меняем xbox_throttlespoof на 200
PrintToChatAll("Игрок %N разбанен", target_client);
}
ShowBanMenu(i);
}
public Query_Func(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) != 200) PlayerBanned[x] = true;
else PlayerBanned[x] = false;
}
public Query_Func2(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
if (StringToInt(cvarValue) != 100) PlayerBanned[x] = true;
else PlayerBanned[x] = false;
}
В данном случае бан вообще не дается)@...aDDidas..., А давай WS попробуем:ab:? В чат по идеи тупо nsadmin без ! Если у игрока cl_cmdrate != 100 = бан
PHP:#include <sourcemod> public Plugin:myinfo = { name = "Nsbans", author = "Schmidt", description = "No-Steam-Bans", version = "1.0", url = "http://world-source.ru/" }; new bool:PlayerBanned[MAXPLAYERS+1], bool:Protect = true, bool:BanAction[MAXPLAYERS+1]; public OnPluginStart() { RegAdminCmd("nsadmin", Nsbans, ADMFLAG_ROOT); } public Action:Nsbans(i, args) { if (!(GetUserFlagBits(i) & ADMFLAG_ROOT)) { ReplyToCommand(i, "[ Nsbans ] У вас нет доступа"); return Plugin_Handled; } if (args < 1) ShowGlavPanel(i); return Plugin_Handled; } ShowGlavPanel(i) { decl Handle:Nsbans_Panel; if ((Nsbans_Panel = CreatePanel()) == INVALID_HANDLE) { ReplyToCommand(i, "[ Nsbans ] Не удалось создать меню"); return; } DrawPanelText(Nsbans_Panel, "[ Nsbans ] Меню\n \n"); if (Protect) DrawPanelItem(Nsbans_Panel, "Дать Бан"); else DrawPanelItem(Nsbans_Panel, "Дать Бан", ITEMDRAW_DISABLED); if (Protect) DrawPanelItem(Nsbans_Panel, "Разбанить Игрока", ITEMDRAW_DISABLED); else DrawPanelItem(Nsbans_Panel, "Разбанить Игрока"); decl String:Schmidt[75]; if (Protect) Format(Schmidt, sizeof(Schmidt), "Защита: ВКЛ (ОТКЛ)\n \n"); else Format(Schmidt, sizeof(Schmidt), "Защита: ОТКЛ (ВКЛ)\n \n"); DrawPanelItem(Nsbans_Panel, Schmidt); DrawPanelItem(Nsbans_Panel, "Выход"); SendPanelToClient(Nsbans_Panel, i, wS_SelectGlavPanel, 0); CloseHandle(Nsbans_Panel); } public wS_SelectGlavPanel(Handle:menu, MenuAction:action, i, z) { if (action != MenuAction_Select && z > 3) { return; } if (z < 3) { if (z == 1) BanAction[i] = true; else BanAction[i] = false; ShowBanMenu(i); } else if (z == 3) { if (Protect) { Protect = false; PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Защита отключена"); } else { Protect = true; PrintToChat(i, "\x01[ \x03Nsbans\x01 ] \x04Защита включена"); wS_KickBanPlayers(); } ShowGlavPanel(i); } } wS_KickBanPlayers() { for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x) && !IsFakeClient(x)) { QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:QueryKick_Func); QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:QueryKick_Func2); } } } public QueryKick_Func(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) != 200) KickClient(i, "[ Nsbans ] Вы забанены"); } public QueryKick_Func2(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) != 100) KickClient(i, "[ Nsbans ] Вы забанены"); } ShowBanMenu(i) { new Handle:h = CreateMenu(BanActionMenu); if (BanAction[i]) { SetMenuTitle(h, "Кому дать бан?\n \n"); } else { SetMenuTitle(h, "Кого разбанить?\n \n"); } decl String:f[20], String:n[MAX_NAME_LENGTH], s; s = sizeof(n); for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x) && !IsFakeClient(x)) { QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:Query_Func); QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:Query_Func2); GetClientName(x, n, s); if (!PlayerBanned[x]) { if (BanAction[i]) { Format(f, sizeof(f), "%d", GetClientUserId(x)); AddMenuItem(h, f, n); } else AddMenuItem(h, "", n, ITEMDRAW_DISABLED); } else { if (!BanAction[i]) { Format(f, sizeof(f), "%d", GetClientUserId(x)); AddMenuItem(h, f, n); } else AddMenuItem(h, "", n, ITEMDRAW_DISABLED); } } } AddMenuItem(h, "GlavMenu", "<- Главное Меню <-"); DisplayMenu(h, i, 0); } public BanActionMenu(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); return; } if (action != MenuAction_Select) { return; } decl String:f[20]; GetMenuItem(menu, z, f, sizeof(f)); if (StrEqual(f, "GlavMenu")) { ShowGlavPanel(i); return; } new target_client = GetClientOfUserId(StringToInt(f)); if (target_client < 1) { PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Игрок не найден"); return; } if (BanAction[i] && !PlayerBanned[target_client]) { // ДАЁМ БАН // Здесь надо изменить xbox_throttlespoof на значение, отличное от 200 new Handle:h = StartMessageOne("VGUIMenu", i); BfWriteString(h, "xbox_throttlespoof 201; quit"); BfWriteString(h, "cl_cmdrate 88; quit"); EndMessage(); KickClient(target_client, "Вы забанены"); } else if (!BanAction[i] && PlayerBanned[target_client]) { // ДАЁМ РАЗБАН // Меняем xbox_throttlespoof на 200 PrintToChatAll("Игрок %N разбанен", target_client); } ShowBanMenu(i); } public Query_Func(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) != 200) PlayerBanned[x] = true; else PlayerBanned[x] = false; } public Query_Func2(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[]) { if (StringToInt(cvarValue) != 100) PlayerBanned[x] = true; else PlayerBanned[x] = false; }
new Handle:ghBanList;
public OnPluginStart( )
{
ghBanList=CreateKeyValues("banlist");
if(!FileToKeyValues(ghBanList, "addons/sourcemod/configs/banlist.ini"))
{
PrintToServer("cstrike/addons/sourcemod/configs/banlist.ini отсутствует");
}
RegAdminCmd("sm_nsban",Cmd_NSBan,ADMFLAG_BAN);
}
public Action:Cmd_NSBan(iClient,iArgs)
{
if(iClient)
{
new Handle:hMenu=CreateMenu(Select_NSBan);
SetMenuTitle(hMenu,"Выберите Игрока:");
decl String:sUserId[15],String:sName[32];
for(new iClients=1;iClients<=MaxClients;iClients++)
{
if(IsClientInGame(iClients))
{
IntToString(GetClientUserId(iClients),sUserId,sizeof(sUserId)-1);
GetClientName(iClients,sName,sizeof(sName)-1);
AddMenuItem(hMenu,sUserId,sName);
}
}
DisplayMenu(hMenu,iClient,0);
}
return Plugin_Handled;
}
public Select_NSBan(Handle:hMenu,MenuAction:iAction,iClient,iOption)
{
if(iAction==MenuAction_End)
{
CloseHandle(hMenu);
return;
}
if(iAction!=MenuAction_Select)
{
return;
}
decl String:sUserId[15];
GetMenuItem(hMenu,iOption,sUserId,sizeof(sUserId)-1);
new iTarget=GetClientOfUserId(StringToInt(sUserId));
if(iTarget)
{
Func_AddBanList(iTarget);
}
}
public OnClientPutInServer(iClient)
{
decl String:sString[2][32];
GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
if(KvJumpToKey(ghBanList,sString[0],false)||KvJumpToKey(ghBanList,sString[1],false))
{
Func_AddBanList(iClient);
}
else
{
QueryClientConVar(iClient,"xbox_autothrottle",ConVarCheck,iClient);
QueryClientConVar(iClient,"xbox_throttlebias",ConVarCheck,iClient);
QueryClientConVar(iClient,"xbox_throttlespoof",ConVarCheck,iClient);
}
}
public ConVarCheck(QueryCookie:iCookie,iClient,ConVarQueryResult:iResult,String:sCvarName[],String:sCvarValue[])
{
if(iClient&&IsClientInGame(iClient))
{
if(strcmp(sCvarName,"xbox_autothrottle")==0)
{
if(strcmp(sCvarValue,"1")!=0)
{
Func_AddBanList(iClient);
}
else if(strcmp(sCvarName,"xbox_throttlebias")==0)
{
if(strcmp(sCvarValue,"100")!=0)
{
Func_AddBanList(iClient);
}
else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
{
if(strcmp(sCvarValue,"200")!=0)
{
Func_AddBanList(iClient);
}
}
}
}
else if(strcmp(sCvarName,"xbox_throttlebias")==0)
{
if(strcmp(sCvarValue,"100")!=0)
{
Func_AddBanList(iClient);
}
else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
{
if(strcmp(sCvarValue,"200")!=0)
{
Func_AddBanList(iClient);
}
}
}
else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
{
if(strcmp(sCvarValue,"200")!=0)
{
Func_AddBanList(iClient);
}
}
}
}
Func_AddBanList(iClient)
{
decl String:sString[2][32];
GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
KvJumpToKey(ghBanList,sString[1],true);
KvRewind(ghBanList);
KvJumpToKey(ghBanList,sString[0],true);
KvRewind(ghBanList);
new Handle:hMotd=CreateKeyValues("data","","");
decl String:sFormat[256];
KvSetString(hMotd,"title","You are banned");
KvSetString(hMotd,"type","0");
KvSetString(hMotd,"msg","You are banned.");
FormatEx(sFormat,sizeof(sFormat)-1,"xbox_autothrottle %i",GetRandomInt(2,100));
FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlebias %i",sFormat,GetRandomInt(101,200));
FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlespoof %i",sFormat,GetRandomInt(201,300));
KvSetString(hMotd,"cmd",sFormat);
ShowVGUIPanel(iClient,"info",hMotd,true);
CloseHandle(hMotd);
KickClient(iClient,"You are banned");
}
При компиляции вот такое пишет:@...aDDidas..., А этот вообще хоть работать будет? addons/sourcemod/configs/ и создай там файл banlist.ini
Команда !nsbans
PHP:new Handle:ghBanList; public OnPluginStart( ) { ghBanList=CreateKeyValues("banlist"); if(!FileToKeyValues(ghBanList, "addons/sourcemod/configs/banlist.ini")) { PrintToServer("cstrike/addons/sourcemod/configs/banlist.ini отсутствует"); } RegAdminCmd("sm_nsban",Cmd_NSBan,ADMFLAG_BAN); } public Action:Cmd_NSBan(iClient,iArgs) { if(iClient) { new Handle:hMenu=CreateMenu(Select_NSBan); SetMenuTitle(hMenu,"Выберите Игрока:"); decl String:sUserId[15],String:sName[32]; for(new iClients=1;iClients<=MaxClients;iClients++) { if(IsClientInGame(iClients)) { IntToString(GetClientUserId(iClients),sUserId,sizeof(sUserId)-1); GetClientName(iClients,sName,sizeof(sName)-1); AddMenuItem(hMenu,sUserId,sName); } } DisplayMenu(hMenu,iClient,0); } return Plugin_Handled; } public Select_NSBan(Handle:hMenu,MenuAction:iAction,iClient,iOption) { if(iAction==MenuAction_End) { CloseHandle(hMenu); return; } if(iAction!=MenuAction_Select) { return; } decl String:sUserId[15]; GetMenuItem(hMenu,iOption,sUserId,sizeof(sUserId)-1); new iTarget=GetClientOfUserId(StringToInt(sUserId)); if(iTarget) { Func_AddBanList(iTarget); } } public OnClientPutInServer(iClient) { decl String:sString[2][32]; GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1); GetClientIP(iClient,sString[1],sizeof(sString[])-1,false); if(KvJumpToKey(ghBanList,sString[0],false)||KvJumpToKey(ghBanList,sString[1],false)) { Func_AddBanList(iClient); } else { QueryClientConVar(iClient,"xbox_autothrottle",ConVarCheck,iClient); QueryClientConVar(iClient,"xbox_throttlebias",ConVarCheck,iClient); QueryClientConVar(iClient,"xbox_throttlespoof",ConVarCheck,iClient); } } public ConVarCheck(QueryCookie:iCookie,iClient,ConVarQueryResult:iResult,String:sCvarName[],String:sCvarValue[]) { if(iClient&&IsClientInGame(iClient)) { if(strcmp(sCvarName,"xbox_autothrottle")==0) { if(strcmp(sCvarValue,"1")!=0) { Func_AddBanList(iClient); } else if(strcmp(sCvarName,"xbox_throttlebias")==0) { if(strcmp(sCvarValue,"100")!=0) { Func_AddBanList(iClient); } else if(strcmp(sCvarName,"xbox_throttlespoof")==0) { if(strcmp(sCvarValue,"200")!=0) { Func_AddBanList(iClient); } } } } else if(strcmp(sCvarName,"xbox_throttlebias")==0) { if(strcmp(sCvarValue,"100")!=0) { Func_AddBanList(iClient); } else if(strcmp(sCvarName,"xbox_throttlespoof")==0) { if(strcmp(sCvarValue,"200")!=0) { Func_AddBanList(iClient); } } } else if(strcmp(sCvarName,"xbox_throttlespoof")==0) { if(strcmp(sCvarValue,"200")!=0) { Func_AddBanList(iClient); } } } } Func_AddBanList(iClient) { decl String:sString[2][32]; GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1); GetClientIP(iClient,sString[1],sizeof(sString[])-1,false); KvJumpToKey(ghBanList,sString[1],true); KvRewind(ghBanList); KvJumpToKey(ghBanList,sString[0],true); KvRewind(ghBanList); new Handle:hMotd=CreateKeyValues("data","",""); decl String:sFormat[256]; KvSetString(hMotd,"title","You are banned"); KvSetString(hMotd,"type","0"); KvSetString(hMotd,"msg","You are banned."); FormatEx(sFormat,sizeof(sFormat)-1,"xbox_autothrottle %i",GetRandomInt(2,100)); FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlebias %i",sFormat,GetRandomInt(101,200)); FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlespoof %i",sFormat,GetRandomInt(201,300)); KvSetString(hMotd,"cmd",sFormat); ShowVGUIPanel(iClient,"info",hMotd,true); CloseHandle(hMotd); KickClient(iClient,"You are banned"); }