Please note the following: I have previously hosted, admin'd and developed specifically for Bhop servers. The plugins I suggest here are bare-bones for any Bhop server, and the lack-there-of on DtK bugs me. I will not edit for you, but I will show you the edits required for some plugins for the Dr.API timer as well.
Slope fix: https://forums.alliedmods.net/showthread.php?p=2322788
Why?
Landing on a slope does not correctly boost you as it would in CS:S. This fix fixes a number of map bugs. Plugin made by Blaacky, one of the most known Bhop contributors (Blacky's Timer on CS:S).
Trigger_Push fix: https://forums.alliedmods.net/showthread.php?p=2323671
Why?
Maps that use the old method of boosting such as blocks that fling you up (bhop_adventure) cause a desync between Player and Server. This plugin properly fixes that. Plugin again, made by Blaacky.
Timer Checkpoints: https://sourcemod.market/scripts/32/...er-checkpoints
Why?
This makes use of the "Levels" selection in the zones menu. Maps that have Stages/Levels will now show split times between stages. Example would be passing through the Stage One checkpoint will show you the time between the Start and that Checkpoint, your personal best, and the current top time's best. Not using a checkpoint plugin will result in the Stages being useless apart from teleports for users grinding/exploring maps. Above is the official link from Dr.API's website sourcemod.market.
Removing finish messages if not a new personal record
Explination:
The following edit will remove all the messages from a player finishing a map, UNLESS they beat their personal best, or finish the map for the first time. The user will see all finishes client sided, but it will not spam the server chat. This is strictly a quality of life edit, and will improve chat visibility all-together.
In your ftp/Timer download, go to addons\sourcemod\scripting\
Open drapi_timer_finish_message with Notepad++ or your chosen editng program.
Go down to line 278:
Code:
else
{
if(ranked)
{
if(NewPersonalRecord && !FirstRecord)
{
if(B_timer_finish_message_show)
{
CPrintToChatAll("");
CPrintToChatAll("%t", "Header2", name, BonusString);
CPrintToChatAll("%t", "Style", StyleString);
CPrintToChatAll("%t", "Time", TimeString);
CPrintToChatAll("%t", "OldTime", LastTimeString);
CPrintToChatAll("");
}
else
{
CPrintToChat(client, "");
CPrintToChat(client, "%t", "Header2", name, BonusString);
CPrintToChat(client, "%t", "Style", StyleString);
CPrintToChat(client, "%t", "Time", TimeString);
CPrintToChat(client, "%t", "OldTime", LastTimeString);
CPrintToChat(client, "");
}
}
else
{
if(B_timer_finish_message_show)
{
CPrintToChatAll("");
CPrintToChatAll("%t", "Header2", name, BonusString);
CPrintToChatAll("%t", "Style", StyleString);
CPrintToChatAll("%t", "Time", TimeString);
CPrintToChatAll("");
}
else
{
CPrintToChat(client, "");
CPrintToChat(client, "%t", "Header2", name, BonusString);
CPrintToChat(client, "%t", "Style", StyleString);
CPrintToChat(client, "%t", "Time", TimeString);
CPrintToChat(client, "");
}
}
}
else
{
if(B_timer_finish_message_show)
{
CPrintToChat(client, "");
CPrintToChat(client, "%t", "Header3", name, BonusString);
CPrintToChat(client, "%t", "Style", StyleString);
CPrintToChat(client, "%t", "Time", TimeString);
CPrintToChat(client, "");
}
else
{
CPrintToChatAll("");
CPrintToChatAll("%t", "Header3", name, BonusString);
CPrintToChatAll("%t", "Style", StyleString);
CPrintToChatAll("%t", "Time", TimeString);
CPrintToChatAll("");
}
}
}
}
Replace with the following code:
Code:
else
{
if(ranked)
{
if(NewPersonalRecord && !FirstRecord)
{
CPrintToChatAll("");
CPrintToChatAll("%t", "Header2", name, BonusString);
CPrintToChatAll("%t", "Style", StyleString);
CPrintToChatAll("%t", "Time", TimeString);
CPrintToChatAll("%t", "OldTime", LastTimeString);
}
else
{
CPrintToChatAll("");
CPrintToChatAll("%t", "Header2", name, BonusString);
CPrintToChatAll("%t", "Style", StyleString);
CPrintToChatAll("%t", "Time", TimeString);
}
}
else
{
CPrintToChat(client, "");
CPrintToChat(client, "%t", "Header3", name, BonusString);
CPrintToChat(client, "%t", "Style", StyleString);
CPrintToChat(client, "%t", "Time", TimeString);
}
}
}
Save the file, and recompile it with the sourcemod compiler provided with the Timer download.
Restart the server.
I will come back with more, including the noclip patches and fixes if it seems like the admins will take care of the server. There are still multiple exploits in the timer that aren't fixed, but very, very few people know about them, which is good.