Well, whilst I find it mind-boggingly illogical as to why you could possibly want this, I took the liberty of making the simple modifications to the code to enable this. I don't guarantee it will work.
First, open beacon (make a backup copy!), find and replace PerformBeacon with this...
Code:
PerformBeacon(client, target, bool:set)
{
if(set)
{
if (g_BeaconSerial[target] == 0)
{
CreateBeacon(target);
LogAction(client, target, "\"%L\" set a beacon on \"%L\"", client, target);
}
}
else
{
if(g_BeaconSerial[target] != 0)
{
KillBeacon(target);
LogAction(client, target, "\"%L\" removed a beacon on \"%L\"", client, target);
}
}
}
And find and replace Command_Beacon with this:
Code:
public Action:Command_Beacon(client, args)
{
if (args < 2)
{
ReplyToCommand(client, "[SM] Usage: sm_beacon <#userid|name> <set>");
return Plugin_Handled;
}
decl String:arg[65];
decl bool:set;
GetCmdArg(2, arg, sizeof(arg));
set = StringToInt(arg);
GetCmdArg(1, arg, sizeof(arg));
decl String:target_name[MAX_TARGET_LENGTH];
decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
if ((target_count = ProcessTargetString(
arg,
client,
target_list,
MAXPLAYERS,
COMMAND_FILTER_ALIVE,
target_name,
sizeof(target_name),
tn_is_ml)) <= 0)
{
ReplyToTargetError(client, target_count);
return Plugin_Handled;
}
for (new i = 0; i < target_count; i++)
{
PerformBeacon(client, target_list[i]);
}
if (tn_is_ml)
{
ShowActivity2(client, "[SM] ", "%t", "Toggled beacon on target", target_name);
}
else
{
ShowActivity2(client, "[SM] ", "%t", "Toggled beacon on target", "_s", target_name);
}
return Plugin_Handled;
}
Compile funcommands. It will probably produce a warning about the conversion of an int to a bool, however this is a cheap-hack (which I also can't guarantee will work).
It will now require two arguments. The ID and the boolean operator for on and off.