#plugins-dev-chat

1 messages · Page 185 of 1

spring swan
#

yeah he works w/ me and math, hes a cool guy

celest thorn
#

hub

obtuse spruce
#

wooow

celest thorn
#

let me open the proj and show more

#

runs 200 fps trolling

#

love meow

spring swan
#

for me, I just have the great memories of us losing sleep making this map FancyTroller

celest thorn
#

life when 9 months of development for an editor show

obtuse spruce
spring swan
#

(we originally were planning on doing 3 tournaments for that decemember which was crazy

celest thorn
#

this is how big it is

spring swan
sharp vine
#

give me a spider scp

celest thorn
spring swan
#

tinyytonyy parkour to the exiled tournament and then scpwyatt's CTF tournament

obtuse spruce
celest thorn
#

i have one bigger

obtuse spruce
#

I hope your interface is not that big for player dieduring events

restive turret
#

I would do a tournament with unreal tournament weapons

celest thorn
#

and we don't have events

#

its just a custom gamemode

celest thorn
restive turret
#

I'm shit with map design

obtuse spruce
#

Let make FNCS 🤡

#

on SL

restive turret
#

Plz make ctf_face

obtuse spruce
celest thorn
#

but idk if to even show it

restive turret
obtuse spruce
celest thorn
#

i could be taken down by nintendo trolling

obtuse spruce
#

LMAOOO

celest thorn
#

just saying

obtuse spruce
#

Huh

#

Your GPU on Unity STONKS

celest thorn
obtuse spruce
#

Tier list of worst moment with MER

  • 2000 Primitives
  • 5000 Primitives
  • 8000 Primitives
  • 8000 Primitives + Packed prefab
  • 8000 Primitives + Packed prefab + Inside the prefab editor
celest thorn
#

mer is for weaks

spring swan
obtuse spruce
spring swan
restive turret
#

Me when i spawn 100 * RoomCount * DoorCount coin

spring swan
#

trust

warped prairie
#

hello guy i talk to every now and then

spring swan
#

its totally not like over a million primitives shaped in a form of a cube

restive turret
#

Omg i have a pic

celest thorn
#

fake news by the government

#

its actually 2m

obtuse spruce
#

me when spawning 15000 primitives for making minecraft world

celest thorn
#

lets be honest

#

its not possible

obtuse spruce
celest thorn
#

it shitted itself the algo for optimizing everything

spring swan
celest thorn
#

on unity it took an hour to just compile and optimize it

slender lynx
restive turret
celest thorn
warped prairie
#

i was trying to backread in the convo

#

bur it go too long

obtuse spruce
restive turret
celest thorn
obtuse spruce
#

plugins-dev-cat

celest thorn
#

Dogs better

restive turret
#

Anyway gn

celest thorn
#

Good day

obtuse spruce
restive turret
#

Have fun with plugin dev cus I will break it

celest thorn
#

More alcohol ig

restive turret
#

Send airdrop instead

#

A "care package"

celest thorn
#

Jervos alcohol

restive turret
#

1 vodka, 3 pálinka, 3 tatra tea, 6 jager

celest thorn
#

Im sllept and too much alcohol

#

Yippe

celest thorn
restive turret
#

Tbh I would do more but time constraint

#

And I procastinating

obtuse spruce
restive turret
obtuse spruce
#

Major update so make sense

restive turret
#

Thatjust wasze of space

celest thorn
#

True

#

Loke sl in my ssd

warped prairie
#

valid points ngl

soft depot
#

the lighting of that pic was just 1 light I made that was insanely bright to illuminate the entire room Trolley

#

I'm sure if you actually took some time you could light up the room a lot better

upper vapor
#

That's one hell of a nightmare

#

Built in sprites would be nice... images, not very fun

soft turtle
#

How to check if a player has a body?

upper vapor
#

Speaking head emoji

upper pike
#

Jokes aside, I think you try to check if their RoleBase has a iFpcRole (First Person Controlled role) interface

#

Something like if (player.RoleBase is IFpcRole)

celest thorn
#

How do you know which candy is a player eating?

#

do i need to patch the method?

static meteor
celest thorn
#

thanks nw

celest thorn
#

because i don't think so

static meteor
#

Should since its defined in CandyKindID

#

atleast afaik

celest thorn
#

im gonna test it

#

No btw

#

as i expected

upper pike
celest thorn
#

ngl i will pr this shit lol

#

if it works

#

WAIT WHAT

#

pink candy doesn't trigger using too?

upper pike
#

You're kidding

celest thorn
#

No im not

#

ngl if it doesn't and i need to transpail

#

to fix it

#

im gonna die

#

Music at the perfect time lol

#

The caretaker showing up on my playlist rn shows my nightmares

upper pike
#

Is there another event for pink candy at least?

celest thorn
#

the event doesn't register wat

#

oh im stupid

#

i forgot to put a dependency

#

My bad

#

[2026-02-12 09:44:56.500 +01:00] [ERROR] [LabApi] 'ArgumentOutOfRangeException' occurred while invoking 'OnPlayerUsingItem' on 'PluginForTrueJudgment.EventsHandler.CandyEvents': 'Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index', stack trace:
at System.Collections.Generic.List1[T].get_Item (System.Int32 index) [0x00009] in <13c0c460649d4ce49f991e2c222fa635>:0 at PluginForTrueJudgment.EventsHandler.CandyEvents.OnPlayerUsingItem (LabApi.Events.Arguments.PlayerEvents.PlayerUsingItemEventArgs ev) [0x00031] in <04eccae381134640901ae39ef8519589>:0 at LabApi.Events.EventManager.InvokeEvent[TEventArgs] (LabApi.Events.LabEventHandler1[TEventArgs] eventHandler, TEventArgs args) [0x0001d] in <9e8e00107de94d4f8ea9fc96c93d382f>:0

ig no

upper pike
#

Yeah, SelectedIndex returns -1 if you access it at the wrong time

celest thorn
#

lovely

#

OnUsingItem the player didn't do the candy

#

lol

#

im gonna test the other one

#

else its time to transpile

#

Ok the other one works

#

GG nw

upper pike
#

330 really needs to be rewritten

celest thorn
#

true

restive turret
upper pike
#

I can barely write code

restive turret
#

Aren't u KI plugin dev too

upper pike
#

Yeah, but I wouldn’t trust myself with writing any base game code

thin shuttle
#

@restive turret i found a bug

#
Property (_Color) exceeds maximum allowed array size (2431014). Cap to (1048575).
ArgumentOutOfRangeException: Count must be in the range of 0 to 1048575.
Parameter name: count
  at UnityEngine.Graphics.DrawMeshInstanced (UnityEngine.Mesh mesh, System.Int32 submeshIndex, UnityEngine.Material material, UnityEngine.Matrix4x4[] matrices, System.Int32 count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows, System.Boolean receiveShadows, System.Int32 layer, UnityEngine.Camera camera, UnityEngine.Rendering.LightProbeUsage lightProbeUsage, UnityEngine.LightProbeProxyVolume lightProbeProxyVolume) [0x00000] in <00000000000000000000000000000000>:0 
  at DrawableLine.DrawableLinesManager.DrawMeshes () [0x00000] in <00000000000000000000000000000000>:0 

restive turret
#

The bug is I alive

thin shuttle
#

if you spawn ONLY 1 million and 48 thousand and 576 line it's do not spawn them anymore and deleted all other

restive turret
#

Bro what

thin shuttle
#

why array size is cap to only 1 million

#

big bug

restive turret
thin shuttle
#

let me spawn more line

restive turret
#

That's unity

thin shuttle
#

i want more

thin shuttle
#

mostly 2.5 million

umbral cosmos
#

can someone help me in creating a private server in scp

thin shuttle
#

i could have SPAWN MORE LINE

restive turret
#

Create a line pool

restive turret
#

My ass

#

That look like you doing atleast 10k lines

thin shuttle
#

it's restrict me to spawn only 1 million line

#

why can't i spawn more

restive turret
#

Good

restive turret
#

I aint see any restrictions in client side so it must be unity so mtfplush

thin shuttle
#

it's an Array restiction

#

from NW

#

:3

#

Property (_Color) exceeds maximum allowed array size (2431014). Cap to (1048575).

#

it's cap to only 1048575

#

i need more line :3

celest thorn
#

InteractableToy toy = InteractableToy.Create(player.Position, Quaternion.identity);
toy.Scale = new Vector3(10, 10, 10);
toy.Base.InteractionDuration = 0.1f;

Why doesn't this work lol?

restive turret
#

Idk

#

Use duration more

hearty shard
#

slime boy

restive turret
restive turret
#

Why everyone going here at the exact same time I have to go to uni

hearty shard
#

um

celest thorn
#

Idk

hearty shard
#

idk im just lurking

celest thorn
#

i just asked this

#

Wdym?

#

lol

#

how are you trying?

#

with my hands?

forest sentinel
#

what is not working

#

like which event

celest thorn
#

Not even an event

#

i do the command for spawning it

#

nothing happens when i click

#

i don't have exiled

hearty shard
#

i dont think they use exiled...

forest sentinel
#

then weird

#

try with more InteractionDuration

celest thorn
#

i tried 10 but nothing

hearty shard
#

buddy gave the same advice that was given 4 minutes ago lol

forest sentinel
#

and be sure NetworkIsLocked false

celest thorn
#

ig that is the problem maybe?

upper vapor
#

Interacted is called only if the duration is 0

#

Search events are called when it's > 0

thin shuttle
celest thorn
#

that maybe explains alot

celest thorn
#

btw nope

#

and same thing happens

#

when i go to spawn it with the spawntoy

thin shuttle
#

@restive turret more seryously i don't mind for the line limit

#

but i got spam this message when sending an Vector3.NaN

Look rotation viewing vector is zero

restive turret
#

Setting artificial line limit to 2

restive turret
#

*NaN

thin shuttle
#

yeah

unique crane
#

xd

thin shuttle
#

but i would prefer it to not spam Player.Log

restive turret
thin shuttle
#

actually not

#

Vector3.NaN
work really great to send only one message and having two line disconnected from a single message

restive turret
#

Well there is a suggestion for it so

thin shuttle
#

only that

#

oh no

#

that not only that

#

yeah

#

that the good one

#

Only 9208 Colliders

#

with all the line needed to show BoxCollider / SphereCollider / CapsuleCollider and the little MeshCollider

#

@unique crane do you know why all line disapear when max is hit ?

unique crane
#

¯_(ツ)_/¯

#

We dont expect you to draw more than 550 lines

unique crane
hearty shard
#

YOU

restive turret
#

You

hearty shard
#

slime....

hearty shard
restive turret
#

Yes

hearty shard
#

hello!!!

restive turret
#

That a part of it

unique crane
hearty shard
#

ill ask hubert then :c

restive turret
#

You one step closer

hearty shard
#

he'd surely never deny me my rights

upper vapor
#

Your what

hearty shard
#

my right to have sl source code

#

smh

restive turret
#

Copyleft

thin shuttle
#

You can definitely have more than 550

thin shuttle
hearty shard
thin shuttle
#

Because of array getting too much full

#

It's just a pre instantiated list

unique crane
thin shuttle
#

if (array.Count >= 1048575)
return;

unique crane
#

not restrict

thin shuttle
#

Yeah but can you restrict it to this value ?

unique crane
#

Where did you even get that random number

thin shuttle
#

If it's get above no more line are spawned

warped prairie
unique crane
#

"The 2^20 array size is the limitation of the Unity-side internal buffer that’s used for storing the data."

thin shuttle
unique crane
#

Dont spawn 1 million lines

tulip kiln
#

Draw every other line and you got effecitvely 2x lines

soft depot
thin shuttle
unique crane
#

Then render only closest ones

thin shuttle
#

Game*

#

No all at same time

unique crane
#

Sorry thats not happening then

thin shuttle
#

Also we can't know the one that are no more number that the one that are still render

restive turret
#

Yknow what I limiting you to 550

thin shuttle
#

Nooooooo

restive turret
#

Thats it

#

You are now limited

thin shuttle
#

Lol

unique crane
#

Also there is VisualizeColliders command?

thin shuttle
#

Neither capsule or cylinder

forest sentinel
thin shuttle
unique crane
#

You forgot about client items interpolation

#

thats what cuases that

#

most likely

#

makes sense if it flies through space

thin shuttle
unique crane
#

Yeah I think thats close enough for player use

thin shuttle
#

But item are precise to the quaternion when spawned

unique crane
#

¯_(ツ)_/¯

#

I guess not

thin shuttle
#

So are you sure it's not just the collision ?

unique crane
#

No idea

#

Can you pick it up?

thin shuttle
#

You can pick-up through a wall

unique crane
#

if you aim at the corners where collision "doesnt exists"

thin shuttle
#

Oh

#

I see

#

Will try

#

Good hint

#

I can't rn

#

But will

#

Later

unique crane
#

Remember that your drawing server collisions

#

that they are slightly off on server doesnt mean they are wrong on the client

thin shuttle
#

Yeah

snow ruin
#

did you ever got told on how to do this ?

#

i know fade effect had a glitch and the weapon would still be visible but its patched

unique crane
#

Unity moment number #842157845514

#

DoorPermissionFlags.All caused inspector to break as it had ushort.maxValue

hearty shard
#

guh

soft turtle
#

How to make a player invisible to the living and visible to spectators?

#

Like in Exiled. fpcRole.IsInvisibleFor.Add

restive turret
#

check how exiled does it then

hearty shard
hearty shard
soft turtle
#

Ok

hearty shard
#

thats what exiled does

upper vapor
soft turtle
#

Thannnk youu!!

upper vapor
#

np

restive turret
#

@slender lynx lmao

slender lynx
restive turret
#

is zero with you or all AM plp

slender lynx
#

nobody from am

soft depot
#

Here I’ll join

worn gull
#

In the OnShot event how can I get the the Raycast which the gun used?

restive turret
#

camt

worn gull
#

Or the point where the bullet ended

#

😢

static meteor
restive turret
restive turret
#

its in the backlog

worn gull
restive turret
#

or more

worn gull
restive turret
#

backlog doesnt mean it gets added it has to be approved by david / beryl

#

someone then we have to start working on it

slate flume
snow ruin
soft depot
#

so isn't LabAPI gonna change the Cassie wrapper to a different name cuz of the conflict w base game or something?

#

I'm just curious

slate flume
static meteor
soft depot
#

ye just double checking

snow ruin
slate flume
#

I mean you can see there are no fingers on the gun in the model and that's what largely led me to believe they used a glitch to get it working, but now that the glitch is patched pretty sure we're cooked

snow ruin
#

annoying :(

#

im gonna try to look around the effect class

slate flume
#

Go for it but I don't think you'll be able to replicate the glitch with base-game functionality

#

The only avenue I can think of is setting the player's fade to 255 and replicating item models, likely using actual pickups
Not sure it's possible to spawn in an item world model without a player

dim horizon
# snow ruin

This is the best thing I've ever seen in my entire life

snow ruin
#

so sadly messes up bone placement

slate flume
#

That's wild

hearty shard
#

Guh

soft depot
#

my best advice for the items is to just spawn a locked pickup with 0 gravity and move it every tick or something

slate flume
#

If a player is invisible, can you make them still able to be hit by bullets

#

Wait what am I saying they are by default

#

Ignore me

#

Just make the player invisible using ValidatedVisibility and recreate item models

#

That has the disadvantage of no player display info though

#

But it's probably the closest you'll get

soft depot
# snow ruin i tried and i got bad results

unfortunately I dont know any method to hide a player while still keeping their item out because the item is parented to the player so anything that should make them invisible would just make them go to (0,0,0) client side, and fade shrinks items

slate flume
#

This is a NW moment for sure

soft depot
slate flume
#

They're not going to exist otherwise lmao

soft depot
slate flume
#

Yeah I saw that and ignored it because there are no other options

#

Either you deal with recreating the item models or you don't do it at all

snow ruin
#

@soft depot does exiled has ressources on material names ?

#

i doubt so but worth asking before i try logging

soft depot
snow ruin
soft depot
#

so as a heads up, you cant use custom textures or anything in game so that's just never gonna work

snow ruin
#

nah dw abt that

soft depot
#

if you need the textures though you can probably find them in the MER discord as people asset rip SL pretty often to get models of stuff

slate flume
snow ruin
#

i think i explained that wrong

#

womp womp english

#

anyways i dont think there is

slate flume
#

This thing

soft depot
#

it would be funny as hell though to use textures for that

#

only issue is that the models have bends n stuff

hearty shard
#

2 days

slate flume
soft depot
hearty shard
soft depot
soft depot
restive turret
#

Lmao

hearty shard
#

Im super excited

#

9 month anniversary

soft depot
#

yea you can probably tell how excited I am SCP018Tragedy

restive turret
restive turret
#

And ye basegame conflict , will be removed at some point

unique crane
soft depot
hearty shard
slate flume
unique crane
#

Oh Oki

hearty shard
#

Ya

slate flume
#

Can we get some more steamhappy in the chat

restive turret
soft depot
#

(david doesn't understand it cuz he's one of us lonely nerds Trolley)

hearty shard
#

No more steam happy, only HappyBun

hearty shard
#

just get a boyfriend instead

unique crane
#

Who said I don't have anyone

hearty shard
slate flume
#

Based

restive turret
unique crane
#

Well you might be wrong

hearty shard
hearty shard
restive turret
hearty shard
#

never

slate flume
#

If I had a strong relationship atm I wouldn't be trolling these forums and complaining about the whims of Northwood

unique crane
#

On daily basis*

hearty shard
slate flume
unique crane
#

See

#

Again

hearty shard
#

Aha

#

But tbf in the future ill hopefully do more than just sit at my pc

unique crane
#

Shrimp

slate flume
hearty shard
unique crane
#

No you

hearty shard
#

Oh...

#

I prefer being a cat

unique crane
#

Fair enough

#

Eve is a furry?

restive turret
#

Yes

unique crane
#

And on that bombshell

#

I'm gonna go eep

restive turret
#

Eeeepy david

hearty shard
unique crane
#

Me?

hearty shard
#

Yes!

unique crane
#

I would never

hearty shard
#

Too

#

Yeah uh gn lmao

restive turret
slate flume
#

Is SpeakerToy reverb variable still planned?

#

@restive turret you're the slime man right, what's the deal w/ that

#

Wanna know if it's been tracked or not or if I should make a suggestion

restive turret
#

Uh its imported so it will be looked into it

slate flume
#

Sick

restive turret
#

I remember seeing it

slate flume
#

Well here is hoping

snow ruin
#

we can get which are fading but it does even include the weapon model itself

#

RIP on this one

restive turret
#

F

slate flume
#

They had no reason to client-sync that

#

It's preventing the material from fading on the server but the client doesn't recognize it

restive turret
#

Well the fading should work with weapons to if you think about it

#

Tho idk why shrinking it, probably cus doesn't have a fading stuff for it so it gets smaller

slate flume
restive turret
#

Idk if thats intended or not so

slate flume
waxen kayak
#

can i just run async function by this?```Task.Run(async () => await AsyncFunc()); private async Task AsyncFunc(){
MEC.Timing.CallDelayed(0,()=> {
Processing.player?.SendConsoleMessage($"something", "yellow");
Hub = DummyUtils.SpawnDummy();
});
}

upper vapor
upper vapor
upper vapor
#

You can't interact with unity from another thread

#

Actually because of the Coroutine it might work

#

But why are you doing it like this

#

Have a look at Awaitables

slate flume
#

You're literally doing all the processing inside a coroutine

#

What's the point of the async if you're executing all the logic on the main thread anyways with MEC.Timing

waxen kayak
#

because it download something

#

and stuck the thread

slate flume
#

Don't use a coroutine in an async function

static meteor
waxen kayak
#

also convent a audio to ogg

upper vapor
waxen kayak
#

stuck thread too

upper vapor
#

You can use Awaitables with that

waxen kayak
upper vapor
#

Also why do you need to convert it to ogg

slate flume
waxen kayak
slate flume
#

No need to convert to .ogg though

upper vapor
waxen kayak
#

48000khz

slate flume
#

I use .mp3 myself

upper vapor
#

You can use any format, just gotta be able to read it

upper vapor
slate flume
glad pagoda
slate flume
glad pagoda
#

after the patent expired

slate flume
#

You have it wrong

slate flume
glad pagoda
#

iirc they also support flac and wav

#

and I think they had alac too?

slate flume
#

There are external libraries to support everything

waxen kayak
#

but it stuck thread

#

and stuck server

slate flume
waxen kayak
#

so i have to start a thread to process this

glad pagoda
upper vapor
#

Ye

slate flume
upper vapor
# waxen kayak but it stuck thread

Again, use Awaitables
Unity has an AudioClipDownloadHandler that you can use to get an audio clip, though you might need to resample and downmix

glad pagoda
#

but, unity converts flac and aiff to pcm or vorbis anyway

#

since they only support pcm/adpcm/vorbis/mp3 at runtime

waxen kayak
slate flume
#

But why would you do that

#

You're trying to run off of the main thread

upper vapor
#

Yes but in an async context, you might as well Awaitable.MaimThreadAsync

slate flume
#

Create a task and use it to await a download, don't use a coroutine inside a task

waxen kayak
glad pagoda
#

I'm still so happy with the cleanup I did on HttpQuery

slate flume
glad pagoda
#

no

slate flume
#

Idk I don't use tasks

upper vapor
#

Do not trust

#

The Unity scheduler

glad pagoda
#

well not 100% sure

#

but

#

unity does weird stuff to force tasks to run on main thread

upper vapor
#

Awaitable.BackgroundThreadAsync
Network request
Awaitable.MainThreadAsync

glad pagoda
#

so they dont have to deal with people calling their apis from other places

waxen kayak
#

i havent test but i think it works

waxen kayak
#

the main reason is NeteaseAPI.ConvertToOggMono48kHz(p, pn); is sync

#

and takes a long time

slate flume
# slate flume Got it

So probably something like

private async Task ProcessSongAsync(long songId)
{
    await Awaitable.BackgroundThreadAsync();
    var data = DownloadSong(songId);
    var processed = ConvertAudio(data);
    await Awaitable.MainThreadAsync();
    PlayAudio(processed);
}

If I'm not mistaken

waxen kayak
#

yes

slate flume
#

Stop that

#

Also Timing.CallDelayed(0, action) causes a one-frame delay, it's not instant

upper vapor
#

Yk atp why not use ffmpeg

upper vapor
#

So it's not different in this manner

slate flume
waxen kayak
#

ok

#

so just remove calldelayed and just run it?

#

im lazy to installffmpeg

slate flume
#

I've literally never used tasks before it's cool my crude attempt actually makes sense

waxen kayak
#

👌

upper vapor
#

Wouldn't it make sense to cache them instead?

waxen kayak
#

ConvertToOggMono48kHz(p, pn); makes a copy(p copy to pb)

upper vapor
#

Oh aight

slate flume
#

It's a long

waxen kayak
#

hm

#

3mins to 4mins

slate flume
#

The uh

#

What is songId

waxen kayak
#

idk because it download from 网易云(like Spotify)

waxen kayak
slate flume
#

Is it that people get the Id from 网易云, then you query it

waxen kayak
#

player input(command)

slate flume
#

Interesting

#

Why are you using dummies to play the audio and not SpeakerToys

waxen kayak
slate flume
upper vapor
#

Also lets you mute it easily ig

#

Khm

slate flume
#

Would make your system much more responsive

slate flume
#

Run the playing on the main thread, using a buffer, and then handle downloading/processing in the async

slate flume
upper vapor
#

I'll solve network audio once and for all

waxen kayak
#

hmm

#

start Awaitable by Task.Run?

celest thorn
#

unity doesn't like them lol

waxen kayak
celest thorn
#

or if you really need to use a class that then can bring it back on the main thread without risking everything to break

waxen kayak
#

hmm

celest thorn
#
using System;
using System.Collections.Generic;
using UnityEngine;
using Logger = LabApi.Features.Console.Logger;

#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
#pragma warning disable SA1600
public class MainThreadDispatcher : MonoBehaviour
{
    /// <summary>
    /// Actions in queue.
    /// </summary>
    private static readonly Queue<Action> Actions = [];

    /// <summary>
    /// Gets instance of the Dispatcher.
    /// </summary>
    public static MainThreadDispatcher? Instance { get; private set; } = null;

    public static void Initialize()
    {
        if (Instance != null)
        {
            return;
        }

        GameObject gameObject = new GameObject($"Twitch MainThreadDispatcher")
        {
            hideFlags = HideFlags.HideAndDontSave,
        };

        DontDestroyOnLoad(gameObject);

        gameObject.AddComponent<MainThreadDispatcher>();
    }

    /// <summary>
    /// Enqueues a new action.
    /// </summary>
    /// <param name="action">the action to do.</param>
    public static void Enqueue(Action action)
    {
        lock (Actions)
        {
            Actions.Enqueue(action);
        }
    }

    private void Awake()
    {
        if (Instance != null && Instance != this)
        {
            Destroy(gameObject);
            return;
        }

        Instance = this;

        Logger.Info($"Spawned \"{gameObject.name}\"");
    }

    private void Update()
    {
        lock (Actions)
        {
            while (Actions.Count > 0)
            {
                Actions.Dequeue()?.Invoke();
            }
        }
    }
}
#

I've used something like this to do Twitch actions

#

When doing actions that required stuff from the main thread to be done outside of the thread of unity

waxen kayak
#

hmm

#

a function that stuck thread a long time

celest thorn
#

like computer work with threads, and they usually can't communicate especially on unity they shit really fast if you try to do stuff like this so this exist

#

you can safely now do stuff like idk, but i would reccomend if you are doing audio stuff

#

to just use Axwabo library

#

to play the audio

waxen kayak
celest thorn
#

but for getting the music you need a stream / something to play it

celest thorn
#

maybe do a cache system

upper vapor
upper vapor
celest thorn
upper vapor
#

Awaitables won't

waxen kayak
upper vapor
waxen kayak
#

@upper vapor@celest thorn@slate flumeworking now

celest thorn
#

Nice

#

wait is this like korean soundcloud?

next jungle
waxen kayak
celest thorn
#

yea my bad

waxen kayak
celest thorn
#

im tired asf

upper vapor
celest thorn
upper vapor
#

Zero does not know how to distinguish between Asian languages

celest thorn
#

this website

celest thorn
next jungle
celest thorn
#

had a night so bad

#

idk how i can even talk

waxen kayak
#

hmm

#

i guess so

celest thorn
#

hope its not as bad as soundcloud lol

waxen kayak
celest thorn
waxen kayak
celest thorn
#

first encounter in my life ngl

waxen kayak
#

my life depends on Microsoft

next jungle
celest thorn
#

true

next jungle
#

helium tho 👀

upper pike
#

Tbf, I used to use Edge on my crappy 2008 PC because its actually one of the browser apps that use the least amount of RAM

celest thorn
#

runs good

waxen kayak
celest thorn
#

on a pc that sucks so much cannot even run anything aside from docker

static meteor
celest thorn
#

i use it for storage

upper pike
#

Yeah, now I use Firefox because I have more than 4 GB of DDR2 RAM

celest thorn
upper vapor
waxen kayak
#

promise

#

lol

celest thorn
#

so its impossible

#

and tbh i still do wonder why i receive cat videos and cat food when im allergic to cats and i hate those bastards

#

the only good advertisement i receive was for a small game that was actually really good

#

but thats it

upper vapor
celest thorn
#

so am i surprised?

#

no

#

and anywhere in the world you will have this problem

#

at this point its a concept so complex

#

im not surprised

upper vapor
#

It's time to switch to Ladybird

celest thorn
#

WHAT THE FUCK

next jungle
celest thorn
#

This guys are crazy

upper vapor
celest thorn
#

but respect

#

lol

upper vapor
celest thorn
#

i wouldn't even know where to start

upper vapor
static meteor
upper vapor
#

Microslop fanboy

celest thorn
#

Useless space ngl

upper vapor
#

You like copilot?

static meteor
#

I dont use copilot

celest thorn
#

please give me some more waiter

upper vapor
#

WebMCP is coming

next jungle
upper vapor
#

We're so cooked

restive turret
#

Waiter waiter leak my api keys

celest thorn
#

btw funniest shit and i still do wonder the overlords of instagram reels (META) who they have my own bio data and shit because of my vr have thought it was a smart idea to advertise to me "FEET TRACKERS for VRCHAT" HELLO????? i don't play VRCHAT i have a VR BUT NOT VRCHAT

#

and even MY FRIEND GOT RECCOMENDED THAT

static meteor
#

I got that exact thing but on youtube

celest thorn
#

like WHAT

celest thorn
#

Who tf is buying feet trackers

#

like goddamit

waxen kayak
#

🇬 🇦 🇾

restive turret
#

Apparently you

celest thorn
#

and they wouldn't even fit

#

lol

#

100%

#

i would need an american size

restive turret
#

Saying that while you currently wearing it, insane

celest thorn
#

i do wonder who bought them

#

like i wanna interview them

#

and ask them what brings you so low in life, that you need a feet tracker in vr

#

probably the same road that makes you become a developer on a game called SCP: Secret laboratory

#

but that is the good ending compared to that

next jungle
celest thorn
static meteor
celest thorn
#

yes it was that

next jungle
#

because why the fuck not

#

that is why ngl

upper vapor
celest thorn
#

this community can be expressed with

#

Kids

#

and gay people

#

and 1% of people that just play for enjoy

waxen kayak
#

:fearful:

celest thorn
#

lol

#

my argument stands

#

im first one

#

then you look at general

waxen kayak
#

tf2

next jungle
#

game

celest thorn
#

tf2 is goated like cs

#

the best clip in the world are on CS

#

tbh

upper vapor
#

DOOR STUCK

slate flume
#

Hey so how do I actually check if a person is holding down the shoot button when holding a revolver

upper vapor
#

Good wuestion

slate flume
#

doubleActionModule._triggerPull.IsPulling || !doubleActionModule._serverShotCooldown.Ready doesn't work because it registers as false before the player can shoot again

#

Which also means that doubleActionModule.TimeBetweenShots isn't a reliable metric

#

Because that's what _serverShotCooldown uses

upper vapor
#

What if the value is only synced when shootin

slate flume
#

Wdym

slate flume
upper vapor
#

I'll have a look when this stupid class ends

next jungle
#

oh yea that reminded me, any idea why 015 projectile refused to spawn in a coroutine?

slate flume
#

Could be 15 billion different reasons

#
  1. Where are you running this coroutine?
  2. Do the LocalAdminLogs show any issues?
  3. Is this consistent behaviour or is it intermittent?
  4. Show code
slate flume
#

^

#

It's 018

next jungle
#

took me a second to realize it was the wrong number

upper vapor
#

SIKE

#

That's the wroooong numba

next jungle
#

yea just lemmie spawn a fuck ton of pipes and throw it

upper vapor
slate flume
#

Is there a way to speed up console output

#

If I log something every frame, the console falls behind

#

Which is lame and stupid

upper vapor
#

You're pretty much confined to your terminals speed

slate flume
#

Oh so it's a command prompt thing?

upper vapor
#

Use linux

#

Probably

slate flume
#

No :)

upper vapor
#

Might be LA though

upper vapor
slate flume
#

Can't play games like R6 on Linux

upper vapor
slate flume
#

Sue me

upper vapor
#

Gay ming

#

Lame excuse, you could dual boot and have your Linux system be bricked by a windows update

next jungle
#

anyways back to the point, I was running a Timing.CallDelayed which used TimedGrenadeProjectile.SpawnActive from a Thrown event if I remember correctly, I don't think I saw any errors but would have to check again

upper vapor
slate flume
#

You have to get into specifics, you can't be vague

#

Show logs, code, all that

restive turret
upper vapor
next jungle
next jungle
pulsar locust
# upper vapor WebMCP is coming

All I can think of when it comes to WebMCP is that stealer developers are just gonna find a way to use them to steal cookies and passwords

restive turret
upper vapor
upper vapor
#

Skill issue because of a html comment

slate flume
pulsar locust
upper vapor
restive turret
#

Devs & publishers usually

pulsar locust
#

then again no sane Linux user will taint their kernel with a kernel ac

pulsar locust
#

tainting it with ZFS modules is better

next jungle
#

just one more module

restive turret
#

My totally legit

pulsar locust
#

Out of tree I run the v4l2loopback module and zfs

restive turret
#

BallsAntiCheeseKernelModule

pulsar locust
#

Because stupidly there is no way to register new v4l2 devices without modifying the kernel

next jungle
restive turret
#

That's usually plugin development

upper vapor
#

AllIssues.RandomItem()

slate flume
next jungle
#

very likely

restive turret
slate flume
#

Why is windows terminal so slow 😭

#

It's crazy

next jungle
#

can't say I know how slow it is, I use wezterm shrug

pulsar locust
#

Even on some poor devices it doesn't open that slowly for me

static meteor
#

Its not slow for me

slate flume
#

It's about the massive lag with outputs

#

If you output a variable every frame, it doesn't log fast enough to keep it up-to-date

#

It lags behind

slate flume
pulsar locust
#

That's probably a renderer thing

#

Also outputting something every frame is quite niche that most people will absolutely not need

#

It's not like you can read everything it outputs anyway

slate flume
#

Like right now

slate flume
#

It's easy to read

slate flume
upper vapor
#

Make your own window

pulsar locust
upper vapor
slate flume
#

That's my point

#

Doesn't matter what the issue is, the issue is there

next jungle
pulsar locust
#

the bottleneck is something else, openconsole (the thing that terminal is using in the background) is quite capable

slate flume
#

Still slow

#

Idk what your point is

pulsar locust
#

But it's not windows terminal

slate flume
#

It is

#

I'm using Windows Terminal and it's being slow

#

Diagnosis: Windows Terminal = slow

#

Idgaf what part of it is being slow, it's being slow

pulsar locust
#

Windows terminal isn't gonna block the console output for that long

pulsar locust
slate flume
#

I found a bunch of forums talking about these kinds of issues in my search

pulsar locust
#

The stack overflow post seems to talk about the windows standard library printf blocking the thread lmao

#

That's not a windows terminal thing that's just windows itself

slate flume
#

Well then I'll still be blaming windows

#

All I want here is fast output

upper vapor
slate flume
#

I'm saying what I'm using is currently incredibly slow and what I'm using is windows

#

I'm complaining that windows is being slow

pulsar locust
#

openconsole is capable of handling that amount of output which is displayed by wsl2 being fast

upper vapor
#

I was gonna say use WSL but

slate flume
#

Idk what point you want to make here

#

I'll take your word for it

#

Why do you feel the need to nitpick my complaints about Windows being slow

#

I never claimed to be an expert, I'm just an unhappy consumer

pulsar locust
#

Funny innit

upper vapor
pulsar locust
#

Also that the terminal app itself is capable and it's just windows being shit

slate flume
#

Idek what WSL2 is, I just write code

#

I've never had to concern myself this much with terminal shenanigans

pulsar locust
#

WSL2 is a type 1 hypervisor
It just allows you to run Linux on windows

#

With like gpu access and somewhat direct hardware access

slate flume
#

Sick

upper vapor
#

You're still suffering the terminal output of windows

#

Even if the Linux vm is running blazingly fast

pulsar locust
#

WSL2 bypasses the slow printf function according to that stackoverflow post

upper vapor
#

Hmm

#

Ig it's worth doing that then

#

@slate flume you could make a script that copies the plugin into the WSL config when you build your project

slate flume
#

Interesting

pulsar locust
#

Hey look an email I can't read

slate flume
#

Doing similar things with AutomaticActionModule doesn't have this issue

restive turret
#

@hearty shard

slate flume
next jungle
pulsar locust
next jungle
#

wait wdym by avatar but still nice

pulsar locust
#

Booth's an online marketplace that sells avatars or cosmetics for games like vrchat or vtuber software

next jungle
restive turret
#

3-4 frame seems valid to can't shoot

slate flume
#

It's the server saying the client can shoot while it can't

slate flume
#

If you hold down M1 with AutomaticActionModule or DisruptorActionModule, it registers true while you do so (except if you're dry firing)
This is because you're sending a shoot command to the server every frame you hold M1 when it's valid

#

I got to DoubleActionModule (revolvers) and noticed that if you hold M1, there's a short period of time where the game says the trigger isn't pulling, and the cooldown isn't triggered, but the client still doesn't send a shoot packet until 3-4+ frames (I've seen it up to like 6-7 too), which means there's a period of time where for around .1 seconds, the server is able to accept a shooting packet, but the client doesn't send it

#

Why is this happening

#

I can only assume it's a bug with the game

#

My guess is that _basePostShotCooldown is improperly serialized, and that the actual revolver animation takes longer than that cooldown

#

Which would be a bug, no?

restive turret
#

Idk?

upper vapor
#

can you check if the trigger pull is visible while you're spectatinng someonne>?

#

ServerProcessCmd should handle StartPulling properly

#

check _serverPullTokenUsed

slate flume
restive turret
#

What if you log both? And not with OR

slate flume
#

Sure

#

[2026-02-13 03:21:28.179 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.194 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.210 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.226 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.242 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.261 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.275 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.290 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.320 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.335 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.350 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.368 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.381 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.396 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.413 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.429 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.444 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.480 -06:00] [INFO] [SodaPlugin] False | False | True
[2026-02-13 03:21:28.491 -06:00] [INFO] [SodaPlugin] False | False | True
[2026-02-13 03:21:28.506 -06:00] [INFO] [SodaPlugin] False | False | True
[2026-02-13 03:21:28.521 -06:00] [INFO] [SodaPlugin] False | False | True
[2026-02-13 03:21:28.536 -06:00] [INFO] [SodaPlugin] False | False | True
[2026-02-13 03:21:28.552 -06:00] [INFO] [SodaPlugin] False | True | False
[2026-02-13 03:21:28.568 -06:00] [INFO] [SodaPlugin] False | True | False

#

Huh interesting

upper pike
#

What does IsPulling refer to?

#

When the trigger is pulled?

slate flume
restive turret
#

When i pull from git

upper pike
#

And then there's that short delay between pulling the trigger and firing if the gun's not cocked beforehand

slate flume
slate flume
# slate flume [2026-02-13 03:21:28.179 -06:00] [INFO] [SodaPlugin] False | True | False [2...

I cut out some of the LabAPI stuff to log faster and notice that occasionally, in between shots it's 3 False

[2026-02-13 03:29:24.943 -06:00] False | True | False
[2026-02-13 03:29:24.958 -06:00] False | True | False
[2026-02-13 03:29:24.977 -06:00] False | True | False
[2026-02-13 03:29:24.993 -06:00] False | True | False
[2026-02-13 03:29:25.006 -06:00] False | True | False
[2026-02-13 03:29:25.024 -06:00] False | True | False
[2026-02-13 03:29:25.038 -06:00] False | True | False
[2026-02-13 03:29:25.068 -06:00] False | True | False
[2026-02-13 03:29:25.087 -06:00] False | True | False
[2026-02-13 03:29:25.114 -06:00] False | True | False
[2026-02-13 03:29:25.130 -06:00] False | True | False
[2026-02-13 03:29:25.145 -06:00] False | True | False
[2026-02-13 03:29:25.162 -06:00] False | False | False
[2026-02-13 03:29:25.176 -06:00] False | False | True
[2026-02-13 03:29:25.195 -06:00] False | False | True
[2026-02-13 03:29:25.209 -06:00] False | False | True
[2026-02-13 03:29:25.225 -06:00] False | False | True
[2026-02-13 03:29:25.239 -06:00] False | False | True
[2026-02-13 03:29:25.255 -06:00] False | True | False

#

IsPulled is always false, no way that's not fully client-sided

#

But _serverPullTokenUsed is of importantance

#

Makes much more sense now

#

Can I say that I hate the way Revolver is coded

#

It sucks

celest thorn
#

PlayerSpawningEventArgs

How can i change the role they are gonna be?

#

because if i do use the Set it throws an error

#

[2026-02-13 10:37:41.411 +01:00] [ERROR] [LabApi] 'NullReferenceException' occurred while invoking 'OnRoleSetCoupon' on 'plugin.Handlers.ServerHandler': 'Object reference not set to an instance of an object', stack trace:
at InventorySystem.Searching.SearchCoordinator.RoleChanged (ReferenceHub userHub, PlayerRoles.PlayerRoleBase prevRole, PlayerRoles.PlayerRoleBase newRole) [0x00024] in <332b3633824a437197df9bab18f671d8>:0
at (wrapper delegate-invoke) <Module>.invoke_void_ReferenceHub_PlayerRoleBase_PlayerRoleBase(ReferenceHub,PlayerRoles.PlayerRoleBase,PlayerRoles.PlayerRoleBase)
at (wrapper dynamic-method) PlayerRoles.PlayerRoleManager.PlayerRoles.PlayerRoleManager.InitializeNewRole_Patch0(PlayerRoles.PlayerRoleManager,PlayerRoles.RoleTypeId,PlayerRoles.RoleChangeReason,PlayerRoles.RoleSpawnFlags,Mirror.NetworkReader)
at PlayerRoles.PlayerRoleManager.ServerSetRole (PlayerRoles.RoleTypeId newRole, PlayerRoles.RoleChangeReason reason, PlayerRoles.RoleSpawnFlags spawnFlags, System.Action`1[T] beforeSendAction) [0x00075] in <332b3633824a437197df9bab18f671d8>:0

slate flume
#

Spawning/Spawned is just PlayerChanging/Changed except a little later and it only happens if UseSpawnpoint flag is active

celest thorn
#

Tbh the problem is

#

that i need to change another player role

slate flume
#

This is evidenced by a couple facts

  1. Instead of giving you RoleTypeId, they give you PlayerRoleBase, meaning the player's role has already been determined
celest thorn
#

so its a bit complicated

slate flume
celest thorn
#

but i can do that

slate flume
# slate flume 2.

It happens in SetPosition, meaning all that happens is that you stop a player from being teleported, not from changing role

slate flume
#

My only thought is delaying everything by one frame and adding manual revolver handling, but that's lame