Friendly Fire support L4D(2) games. (#1530)
Support L4D(2) Friendly Fire In Basetriggers.sp #1522 - Games have cvar mp_friendlyfire min. and max. bounds set to 1 - Removing mp_friendlyfire lower bound and set to 0, cvar have no purpose on friendly fire damage. - FF works from z_difficulty and each difficult level have FF damage ration cvars: survivor_friendly_fire_factor_easy survivor_friendly_fire_factor_normal survivor_friendly_fire_factor_hard survivor_friendly_fire_factor_expert Update added PRINT_TO_ things from previous update. Co-authored-by: Bacardi <>
This commit is contained in:
parent
b0799d3336
commit
8f7a1641fc
@ -68,14 +68,28 @@ bool mapchooser;
|
|||||||
|
|
||||||
int g_TotalRounds;
|
int g_TotalRounds;
|
||||||
|
|
||||||
|
|
||||||
|
EngineVersion g_GameEngine = Engine_Unknown;
|
||||||
|
|
||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
LoadTranslations("common.phrases");
|
LoadTranslations("common.phrases");
|
||||||
LoadTranslations("basetriggers.phrases");
|
LoadTranslations("basetriggers.phrases");
|
||||||
|
|
||||||
|
g_GameEngine = GetEngineVersion();
|
||||||
|
|
||||||
g_Cvar_TriggerShow = CreateConVar("sm_trigger_show", "0", "Display triggers message to all players? (0 off, 1 on, def. 0)", 0, true, 0.0, true, 1.0);
|
g_Cvar_TriggerShow = CreateConVar("sm_trigger_show", "0", "Display triggers message to all players? (0 off, 1 on, def. 0)", 0, true, 0.0, true, 1.0);
|
||||||
g_Cvar_TimeleftInterval = CreateConVar("sm_timeleft_interval", "0.0", "Display timeleft every x seconds. Default 0.", 0, true, 0.0, true, 1800.0);
|
g_Cvar_TimeleftInterval = CreateConVar("sm_timeleft_interval", "0.0", "Display timeleft every x seconds. Default 0.", 0, true, 0.0, true, 1800.0);
|
||||||
|
|
||||||
|
if (g_GameEngine == Engine_Left4Dead || g_GameEngine == Engine_Left4Dead2)
|
||||||
|
{
|
||||||
|
g_Cvar_FriendlyFire = FindConVar("z_difficulty");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
g_Cvar_FriendlyFire = FindConVar("mp_friendlyfire");
|
g_Cvar_FriendlyFire = FindConVar("mp_friendlyfire");
|
||||||
|
}
|
||||||
|
|
||||||
RegConsoleCmd("timeleft", Command_Timeleft);
|
RegConsoleCmd("timeleft", Command_Timeleft);
|
||||||
RegConsoleCmd("nextmap", Command_Nextmap);
|
RegConsoleCmd("nextmap", Command_Nextmap);
|
||||||
@ -504,6 +518,52 @@ void ShowFriendlyFire(int client, int who)
|
|||||||
{
|
{
|
||||||
if (g_Cvar_FriendlyFire)
|
if (g_Cvar_FriendlyFire)
|
||||||
{
|
{
|
||||||
|
if (g_GameEngine == Engine_Left4Dead || g_GameEngine == Engine_Left4Dead2)
|
||||||
|
{
|
||||||
|
char buffer[50];
|
||||||
|
g_Cvar_FriendlyFire.GetString(buffer, sizeof(buffer)); // z_difficulty
|
||||||
|
|
||||||
|
// Easy, Normal, Hard, Impossible
|
||||||
|
if (StrEqual(buffer, "easy", false)
|
||||||
|
|| StrEqual(buffer, "normal", false)
|
||||||
|
|| StrEqual(buffer, "hard", false))
|
||||||
|
{
|
||||||
|
Format(buffer, sizeof(buffer), "survivor_friendly_fire_factor_%s", buffer);
|
||||||
|
}
|
||||||
|
else if (StrEqual(buffer, "impossible", false))
|
||||||
|
{
|
||||||
|
Format(buffer, sizeof(buffer), "survivor_friendly_fire_factor_expert");
|
||||||
|
}
|
||||||
|
else // L4D2 game not fix cvar value to one of difficult levels, like L4D
|
||||||
|
{
|
||||||
|
Format(buffer, sizeof(buffer), "survivor_friendly_fire_factor_normal");
|
||||||
|
}
|
||||||
|
|
||||||
|
ConVar ff_factor = FindConVar(buffer);
|
||||||
|
|
||||||
|
if(ff_factor)
|
||||||
|
{
|
||||||
|
float percent = ff_factor.FloatValue * 100.0;
|
||||||
|
|
||||||
|
if (who == PRINT_TO_ALL_ALWAYS
|
||||||
|
|| (who == PRINT_TO_ALL_MAYBE && g_Cvar_TriggerShow.IntValue))
|
||||||
|
{
|
||||||
|
PrintToChatAll("[SM] %t", "Friendly Fire Percent", percent);
|
||||||
|
}
|
||||||
|
else if (client != 0 && IsClientInGame(client))
|
||||||
|
{
|
||||||
|
PrintToChat(client,"[SM] %t", "Friendly Fire Percent", percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (client == 0)
|
||||||
|
{
|
||||||
|
PrintToServer("[SM] %T", "Friendly Fire Percent", client, percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
char phrase[24];
|
char phrase[24];
|
||||||
if (g_Cvar_FriendlyFire.BoolValue)
|
if (g_Cvar_FriendlyFire.BoolValue)
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,12 @@
|
|||||||
"en" "Friendly Fire is disabled."
|
"en" "Friendly Fire is disabled."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"Friendly Fire Percent"
|
||||||
|
{
|
||||||
|
"#format" "{1:0.0f}"
|
||||||
|
"en" "Friendly Fire is {1}%."
|
||||||
|
}
|
||||||
|
|
||||||
"Current Map"
|
"Current Map"
|
||||||
{
|
{
|
||||||
"#format" "{1:s}"
|
"#format" "{1:s}"
|
||||||
|
Loading…
Reference in New Issue
Block a user