因为电台需要触发两次,所以stripper需要写入两次触发.
我用插件方式来实现的.
Code:
//判断 - 最终地图
bool IsFinalMap()
{
char sMap[64];
GetCurrentMap(sMap, sizeof(sMap));
if (StrEqual(sMap, "l4d_vs_hospital05_rooftop", false)
|| StrEqual(sMap, "l4d_vs_smalltown05_houseboat", false)
|| StrEqual(sMap, "l4d_vs_airport05_runway", false)
|| StrEqual(sMap, "l4d_vs_farm05_cornfield", false)
)
{
ButtonPress();
return true;
}
else
{
return false;
}
//return Plugin_Continue;
}
/*--------------------ACTION游戏执行--------------------*/
//执行 - 地图机关按钮
void ButtonPress()
{
int button = FindEntityByClassname(-1, "func_button");
AcceptEntityInput(button, "Press");
}
//执行 - 地图营救电台触发
public Action FinaleStart(Handle Timer)
{
UnflagAndExecuteCommand(TriggeringBot, "ent_fire", "trigger_finale", "");
//return Plugin_Continue;
}
//调用执行指令
public Action UnflagAndExecuteCommand(client, String:command[], String:parameter1[], String:parameter2[])
{
if (client == 0 || !IsClientConnected(client))
{
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientConnected(i) && IsClientInGame(i))
{
client = i;
break;
}
}
}
int userflags = GetUserFlagBits(client);
SetUserFlagBits(client, ADMFLAG_ROOT);
int flags = GetCommandFlags(command);
SetCommandFlags(command, flags & ~FCVAR_CHEAT);
FakeClientCommand(client, "%s %s %s", command, parameter1, parameter2);
SetCommandFlags(command, flags);
SetUserFlagBits(client, userflags);
}
__________________
Please forgive, If I'm not describing it accurately. I use google translate
Functional tests are all from L4D1, and are only keen to solve and fix various bugs of L4D1: