Максим Юдачёв
Участник
- Сообщения
- 9
- Реакции
- 0
Название напишешь плагина ?плагин поствить не судьба?
немножко по форуму поискать то.
Работает!вроде тоже не сработает, команда серверная
public OnPluginStart() AddCommandListener(CommandBlock, "status");
public Action:CommandBlock(client, String:command[], args) return Plugin_Handled;
Это ты с sm plugins list перепутал)Обсуждали же
А куда вписать это ?Работает!Это ты с sm plugins list перепутал)PHP:public OnPluginStart() AddCommandListener(CommandBlock, "status"); public Action:CommandBlock(client, String:command[], args) return Plugin_Handled;
В блокнот (любой текстовый редактор). Установить кодировку ANSI или UTF-8 без BOM, сохранить с расширением sp (должно получиться BlockStatus.sp, например) и компилировать.куда вписать это ?
В блокнот (любой текстовый редактор). Установить кодировку ANSI или UTF-8 без BOM, сохранить с расширением sp (должно получиться BlockStatus.sp, например) и компилировать.
чтобы админам работал статус
public OnPluginStart() AddCommandListener(CommandBlock, "status");
public Action:CommandBlock(client, String:command[], args) return client && GetUserAdmin(client)==INVALID_ADMIN_ID ? Plugin_Handled:Plugin_Continue;




Да.Правильно сделал ?
Вот фото:
Выполнение 1....Посмотреть вложение 10503
Выполнение 2....Посмотреть вложение 10504
Выполнение 3....Посмотреть вложение 10505
Выполнение 4....Посмотреть вложение 10506
Выполнение 5....Посмотреть вложение 10507
Теперь можно кидать на сервер ?
Проблема, появилась, теперь и не игроки не видят и не админы.
public OnPluginStart() AddCommandListener(CommandBlock, "status");
public Action:CommandBlock(client, String:command[], args) return Plugin_Handled;
Не катит, при попытке написания status от клиента - client берется сервера (т.е. 0)Так будет работать команда status и в консоли самого сервера (ведь тоже администраторские полномочия).PHP:public OnPluginStart() AddCommandListener(CommandBlock, "status"); public Action:CommandBlock(client, String:command[], args) return client && GetUserAdmin(client)==INVALID_ADMIN_ID ? Plugin_Handled:Plugin_Continue;
#include <sourcemod>
public Plugin:myinfo =
{
name = "Status Ping Flood Control",
author = "Danyas" ,
description = "Управление доступом к командам status и ping.",
version = "beta",
url = "N/A"
}
new Handle: g_hMaxCmds,
Handle: g_hAdminImmunity,
Handle: g_hAfterLimitAction,
Handle: g_hActionReason,
Handle: g_hBanDuration,
g_WCmds[MAXPLAYERS + 1];
public OnPluginStart()
{
g_hMaxCmds = CreateConVar("sm_spfc_cmds_max", "5", "Допустимое количество вводимых команд на раунд.", _, true, 1.0);
g_hAdminImmunity = CreateConVar("sm_spfc_admin_immunity", "1", "Имунитет для админов. Для сервера имунитет включен в любом случае.");
g_hAfterLimitAction = CreateConVar("sm_spfc_action", "1", "0 - перестать отвечать на команды до конца раунда. \n 1 - кикнуть \n 2 - забанить");
g_hActionReason = CreateConVar("sm_spfc_action_reason", "Флуд командами Status '|' Ping.", "Работает когда sm_spfc_action больше нуля! \n Выводимая причина кика '|' бана игроку");
g_hBanDuration = CreateConVar("sm_spfc_action_duration", "5", "Работает когда sm_spfc_action равен двум! \n Длительность бана игрока");
RegConsoleCmd("status",spChecker); RegConsoleCmd("ping",spChecker); // Add's checker for cmds status and ping
HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); // Hooking roundend event
}
public Action:spChecker(client, args)
{
if (client == 0) { return Plugin_Continue; } //Server immunity Check
else if (GetConVarBool(g_hAdminImmunity) && GetUserAdmin(client) != INVALID_ADMIN_ID) { return Plugin_Continue; } //Admin Immunity Check
else
{ g_WCmds[client]++ // +1 to cmd count
if(g_WCmds[client] > GetConVarInt(g_hMaxCmds)) // Validate if used cmds count higher then sm_spfc_cmds_max
{ if (!IsClientInKickQueue(client)) // execlude invalid client errors
{
new String:reason[64];
GetConVarString(g_hActionReason, reason, 64);
switch (GetConVarInt(g_hAfterLimitAction))
{
case 1: { g_WCmds[client] = 0; KickClient(client, "[SPFC] %s",reason); return Plugin_Handled;}
case 2: { g_WCmds[client] = 0; ServerCommand("sm_ban #%d %i [SPFC]\"%s\"", GetClientUserId(client), GetConVarInt(g_hBanDuration), reason); return Plugin_Handled;}
default: { PrintToConsole(client, "[SPFC] %s. До конца раунда они не будут работать.", reason); return Plugin_Handled;}
}
}
return Plugin_Handled;
}
return Plugin_Continue;
}
}
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
for(new i = 1; i <= MaxClients; i++) g_WCmds[i] = 0; // reset cmds count
}
status от клиента - client берется сервера (т.е. 0)
Тогда зачем его проверял? Когда он у тебя не 0?if (client == 0)
Функция всегда должна возвращать значение, т.е. конечная скобка должна быть лишь одна.return Plugin_Continue; }}