Willing to pay. Budget of $20. Requires DHooks, probably. I just don't know how to use it.
Concept:
Command sm_pt_focus
If the client has the ball and uses this command, they cannot pass by locking on to teammates.
If the client uses the command again without throwing the ball, they can lock onto teammates again.
If they throw the ball, they can lock onto teammates again.
There will be ShowHudText that shows that the sm_pt_focus is enabled. When it is disabled, it does not appear.
In other words, a command that when toggled by the player who has the ball, prevents "m_hPasstimePassTarget" from ever being any player. This would be undone whenever the ball is thrown (which I should be able to do easily via game events) or if the player with the ball runs the command again.
Basic functionality script using SDKHook
The following code gets you most of the basic functionality (as an example).
PHP Code:
bool arrbNoTarget[MAXPLAYERS+1];
public void OnPluginStart() { RegConsoleCmd("sm_pt_focus", Command_PasstimeFocus);
for (int client = 1; client <= MaxClients; client++) if (IsClientInGame(client)) OnClientPutInServer(client); }
public void OnClientDisconnect(int client) { arrbNoTarget[client] = false; }
That solves the whole "cannot pass" thing mostly, but it comes with the issue of not working whenever you hover directly over a player and throw the ball; as it still passes like normal. Using other Thinks or other ent props does not solve the issue (feel free to redo the testing if you want).
Re: DHooks: people much smarter than me that I've asked about the issue tell me that one will likely need to detour "CPasstimeGun::BValidPassTarget".
Also, bonus points/money if you can keep it all in one SP file (no separate gamedata file usage).