Как сделать команду по кнопе

Как сделать чтобы по нажатии кнопки F2 у меня выполнялась команда в чат !third. Режим DarkRP

Похожая тема:
https://forum.gm-donate.net/t/thirdperson-rp-commands/3457/2

А не знаете как сделать что бы это: net.Start(“CharacterCreator:OpenMenu”), выполнялось RunConsoleCommand? Просто я хочу привязать открытия меню создания к кнопке, а сделать это кроме как RunConsoleCommand не умею. И хотел бы сделать чтобы CharacterCreator:OpenMenu было консольной командой и открывала меню

На счёт RunConsoleCommand не знаю, но вот один из скриптов на 3-ье лицо которое у меня стоит, там можно вызвать его появление через нажатие клавиши F1 (её можно поменять)
Скрипт без нужной библиотеки работать не будет, скинул пример скрипта, а так советую подождать другого ответа

Скрипт
CreateConVar("w_thirdperson_enabled", 0, FCVAR_ARCHIVE, nil, 0, 1)
local tp_var = GetConVar('w_thirdperson_enabled')

local pos_lerp
hook.Add('CalcView', 'weblib.Thirdperson', function(player, pos, angles, fov, znear, zfar)
	if tp_var:GetBool() and not player:InVehicle() and player:Alive() and not CreationMenuOpened then
		if player:GetObserverMode() ~= OBS_MODE_NONE then return end

		local view = {}
		local trace = {}

		local right = 18
		local up = -8
		local forward = 35

		local bone = player:LookupBone('ValveBiped.Bip01_Head1')
		if bone then
			local head_pos = player:GetBonePosition(bone)

			up = 0
			right = 18

			trace.start = head_pos
		else
			trace.start = player:EyePos()
		end

		trace.endpos = trace.start + ((angles:Forward() * -forward) + (angles:Right() * right) + (angles:Up() * up))
		trace.filter = player

		local line = util.TraceLine(trace)
		pos = line.HitPos

		if line.HitWorld then
			pos = pos + line.HitNormal * 5
		end

		view.origin = pos
		
		return view
	end
end)

hook.Add('ShouldDrawLocalPlayer', 'weblib.TP.ShouldDrawSelf', function()
	if tp_var and tp_var:GetBool() then return true end
end)

local next = 0
hook.Add( "PlayerButtonDown", "weblib.ThirdPerson.Toggle", function( player, button )
	if next-CurTime() > 0 then return end
	next = CurTime() + 0.2

	if button == KEY_F1 then
		tp_var:SetBool(not tp_var:GetBool())
	end
end)

где взаимосвязь с RunConsoleCommand и биндом кнопки?

тем более есть уже готовые , для верхних F клавиш
пример, на F2 будет исполнятся твой net:

hook.Add("ShowTeam", "f2button", function (ply)
     net.Start("CharacterCreator:OpenMenu")
     net.Send(ply)
end)

Так же: