CounterStrikeSharp icon indicating copy to clipboard operation
CounterStrikeSharp copied to clipboard

VirtualFunctions.ClientPrint not working inside EventBulletImpact, working for EventItemPickup example

Open oscar-wos opened this issue 1 year ago • 4 comments

RegisterEventHandler<EventBulletImpact>((@event, info) =>
{
    var player = @event.Userid;

    if (player == null || !player.IsValid)
        return HookResult.Continue;

    player.PrintToChat($"123"); // doesn't work
    player.PrintToCenterAlert("123"); // doesn't work
    player.PrintToCenter("123"); // doesn't work

    player.PrintToConsole("123"); // works
    player.PrintToCenterHtml("123"); // works
    player.PlayerPawn.Value!.Teleport(new Vector(@event.X, @event.Y, @event.Z), QAngle.Zero, Vector.Zero); // works
    Console.WriteLine($"{@event.X}, {@event.Y}, {@event.Z}"); // works
    return HookResult.Continue;
});

RegisterEventHandler<EventItemPickup>((@event, info) =>
{
    var player = @event.Userid;

    if (player == null || !player.IsValid)
        return HookResult.Continue;

    player.PrintToChat($"123"); // works
    player.PrintToCenterAlert("123"); // works
    player.PrintToCenter("123"); // works

    player.PrintToConsole("123"); // works
    player.PrintToCenterHtml("123"); // works
    //player.PlayerPawn.Value!.Teleport(new Vector(@event.X, @event.Y, @event.Z), QAngle.Zero, Vector.Zero); // works
    //Console.WriteLine($"{@event.X}, {@event.Y}, {@event.Z}"); // works
    return HookResult.Continue;
});

CounterStrikeSharp was created and is maintained by Michael "roflmuffin" Wilson. Counter-Strike Sharp uses code borrowed from SourceMod, Source.Python, FiveM, Saul Rennison, source2gen and CS2Fixes. See ACKNOWLEDGEMENTS.md for more information. Current API Version: v287 (1.0.287+6cf124b)

Metamod:Source Version Information Metamod:Source version 2.0.0-dev+1314

oscar-wos avatar Nov 16 '24 14:11 oscar-wos

use with Server.NextFrame(() => { //print here });

darkerz7 avatar Nov 16 '24 17:11 darkerz7

use with Server.NextFrame(() => { //print here });

This just results in a seg fault

RegisterEventHandler<EventBulletImpact>((@event, info) =>
{
    var player = @event.Userid;

    if (player == null || !player.IsValid)
        return HookResult.Continue;

    Server.NextFrame(() =>
    {
        player.PrintToChat($"{@event.X}, {@event.Y}, {@event.Z}");
    });

    Console.WriteLine($"{@event.X}, {@event.Y}, {@event.Z}"); // works
    return HookResult.Continue;
});

{F14C2D50-B079-46A4-93E4-45F28C12E943}

https://pastebin.com/cV2ZwZM6

oscar-wos avatar Nov 16 '24 23:11 oscar-wos

it is logical that in the next frame there is no event anymore copy the values ​​before this

float x = @event.X;
float y = @event.Y;
float z = @event.Z;
Server.NextFrame...

darkerz7 avatar Nov 17 '24 08:11 darkerz7

it is logical that in the next frame there is no event anymore copy the values ​​before this

float x = @event.X;
float y = @event.Y;
float z = @event.Z;
Server.NextFrame...

Perhaps we might need to add more documentation that clarifies that game events don't exist on the next frame.

zonical avatar Nov 23 '24 20:11 zonical