Assuming that you know how to edit the plugin yourself:
Instead of registering the Ham_Think forward in plugin_init(), register it when the cannon is created (nativeCreateCannon), and unregister it when destroyed (line 308).
- This will be fixed by just adding a small alive check in the CmdStart forward (above line 145).
- When the cannon is destroyed (line 308); set entity owner to 0. (and if you did #1, unregister the think forward as well).
- It's not supposed to be deleted on round end (at least not from what I can see in the code). This can be added by hooking round end and using find_ent_by_class() and remove_entity().
Note:
The spawn function is hooked by the usage of ResetHud, note that this is not the correct way to see if a player has spawned. Use Ham_Spawn with "player" classname.
__________________