Failed to call hook OnEntityTakeDamageSolved
I have looked at other posts on this and they're not useful, this is my code but it seems to still want to give me the error, I mean it still calls the function but it says the error and it's quite annoying having it pop up every 2 seconds. I have also tried just doing 'private void' instead of object and still same error.
object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
{
            if (entity == null || info == null) return null;

            BasePlayer player = entity as BasePlayer;

            SendChatMessage(player, info.Weapon.name);
            SendChatMessage(player, info.HitEntity.name);

            return true;
}​
You are assuming the entity is always a BasePlayer, which it isn't. You'd need to null check the player or change the signature to only be BasePlayer.
Ok so it doesn't display every two seconds anymore but it still displays the error, this is my new code, I did a check to see if entity was only Workbench and it sends the messages if entity is a workbench and nothing else but again still prints errors.
void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
        {
            var wb = entity as Workbench;
            if (!wb) return;

            var player = info.Initiator as BasePlayer;
            if (!player) return;

            SendChatMessage(player, info.Weapon.name);
            SendChatMessage(player, info.HitEntity.name);
        }​

Edit: So commented out SendChatMessage and it doesn't print the error anymore, when I uncomment it does, so I guess its either info or player that is null.

You swapped around your checking of which source the player comes from, but also now assuming that the HitInfo is not null.
Ok well you can post it as fixed, took multiple different ways to work and I even checked info is null but if you want specific stuff in info you need to check it, cause I was trying to print info.Weapon.name and it was null apparently so it now all works. I was not understanding some of the code and somethings being null and some not.
There may not always be HitInfo, that's where null checks come into play. Some weapons may not have that name set either I believe, but you can always do some debug output to test and see.
Locked automatically