oleg_nelasy
Участник
- Сообщения
- 674
- Реакции
- 47
Пытаюсь поймать когда игрок подбирает оружие.
Пробовал так
или так
В обоих случаях не появляется даже тестового сообщения. Шарп обновил до последней версии также проверил в gamedata шарпа вроде есть CCSPlayer_WeaponServices_CanUse".
Компилятор говорит все хорошо на серевер в логе ошибок нет плагин запускается но событие не перехватывается подскажите может я что-то упускаю?
Пробовал так
C#:
public override void Load(bool hotReload)
{
MemoryFunctionWithReturn<CCSPlayer_WeaponServices, CBasePlayerWeapon, bool> CCSPlayer_WeaponServices_CanUseFunc = new(GameData.GetSignature("CCSPlayer_WeaponServices_CanUse"));
CCSPlayer_WeaponServices_CanUseFunc.Hook(OnWeaponCanUse, HookMode.Pre);
}
C#:
public MemoryFunctionWithReturn<CCSPlayer_WeaponServices, CBasePlayerWeapon, bool> CCSPlayer_WeaponServices_CanUseFunc = new(GameData.GetSignature("CCSPlayer_WeaponServices_CanUse"));
public override void Load(bool hotReload)
{
CCSPlayer_WeaponServices_CanUseFunc.Hook(OnWeaponCanUse, HookMode.Pre);
}
public override void Unload(bool hotReload)
{
CCSPlayer_WeaponServices_CanUseFunc.Unhook(OnWeaponCanUse, HookMode.Pre);
}
private HookResult OnWeaponCanUse(DynamicHook hook)
{
Server.PrintToChatAll("test");
var weaponServices = hook.GetParam<CCSPlayer_WeaponServices>(0);
var weapon = hook.GetParam<CBasePlayerWeapon>(1);
if (weaponServices == null || weapon == null || !weapon.IsValid)
return HookResult.Continue;
var pawn = weaponServices.Pawn.Value;
if (pawn == null || !pawn.IsValid) return HookResult.Continue;
var player = pawn.Controller.Value?.As<CCSPlayerController>();
if (player == null || !player.IsValid || player.IsBot)
return HookResult.Continue;
player.PrintToChat($"[Дебаг] Вы коснулись пушки: {weapon.DesignerName}");
return HookResult.Continue;
}
Компилятор говорит все хорошо на серевер в логе ошибок нет плагин запускается но событие не перехватывается подскажите может я что-то упускаю?
Последнее редактирование:
