#plugins-dev-chat

1 messages Β· Page 216 of 1

sour path
#

i play to have fun and my version of fun is to do the best i can

royal mica
#

I hope you atleast join competitive server

#

Nothing wrong with that, don't get me wrong

sour path
#

i do not know any competetive servers

royal mica
#

Actually this could be easily solved by having tags for servers

celest thorn
sour path
#

i just play the most popular polish vanila no ff servers

snow pulsar
#

vanilla sometimes makes me screech

hearty shard
#

strawberry sometimes

sour path
#

modded makes me screah

#

too much

snow pulsar
sour path
#

i used to play dr brights

restive turret
#

Go play eSports titles or something if you wanna be competitive

sour path
#

i do

fathom charm
#

Hey. Class TemperatureTrackerModuleonly work for A7?

restive turret
#

Yes

sour path
#

if servers acctually ban for tryharding then holy shit is someone not allowed to be better than others😭😭

snow pulsar
# sour path i used to play dr brights

You my good sir need to stop playing the bigger servers like Brights and Chaos Theory... there are good servers out there that aren't massive communities but it's hard trying to find originals that don't plugin stack 30 plugins for an experience

restive turret
fathom charm
#

yeah..

#

but sad

#

thx

sour path
#

small communities arent it

celest thorn
#

yevz got banned for the same reason

snow pulsar
restive turret
#

What

celest thorn
#

alot of times lol

restive turret
#

Idk

celest thorn
restive turret
#

Someone posted this gif

celest thorn
#

yea i'm pretty sure that's one of his bans lol

sour path
celest thorn
#

all of the italian servers ban you for tryharding

#

if you beat more than 2 people

sour path
#

everyone in the polish community sounds depressed and dead

#

so that cuts it

sour path
#

more than 25

#

is too much

static meteor
#

Halloween 2023 was crazy for playcounts

snow pulsar
royal mica
sour path
#

more than 25 gets too chaotic

restive turret
snow pulsar
#

Simple solution... don't join servers with over a 32 player slot limit

royal mica
#

do take the quiz

#

it is actually hilarious

celest thorn
#

28????

#

damn

restive turret
soft depot
unique crane
#

What is that

#

Bite of 87?

grand flower
#

cancer

#

now implement dwarf fortress in the SL console

soft depot
#

I replied to what it is

#

console colors just cant represent it :(

grand flower
#

boo

sweet flax
soft depot
#

I legit could Trolley

celest thorn
#

obv

soft depot
#

Should I?

sweet flax
soft depot
#

Hmmmm

sweet flax
#

Local admin is too boring

soft depot
#

It’s probably gonna take me a while tbh

sweet flax
#

Vibecode SteamHappy

#

As long as it works for a second its good enough

tulip kiln
#

And I'm not joking, sweats online casue this effect Kek

tulip kiln
#

JavaScript was developed by lunatics

obtuse spruce
#

With the decompiled version of an human model. How am i supposed to deal with hand not affected by animator. Im working on something but hand are not affected by the animator and the transform are ticky

sweet flax
#

They are client sided

obtuse spruce
#

i wanna make hand affected by animator

#

or find what is touching it

sweet flax
#

In that case your the server you wanna ask abt is unity / sl modding

obtuse spruce
#

That not for modding the game itself

true quest
# soft depot

bro omg 😭

is it this RainbowLogs that appeared on my home page?

soft depot
#

the other thing was a local admin modification

upper vapor
obtuse spruce
rustic pecan
#

Can I prevent zombie from getting a bloodlust if he chases a specific player?

#

I didn't see the event in LabAPI

hearty shard
#

ZombieBloodlustAbility:

public bool AnyTargets(ReferenceHub owner, Transform camera)
  {
    foreach (ReferenceHub allHub in ReferenceHub.AllHubs)
    {
      if (allHub.IsHuman() && !allHub.playerEffectsController.GetEffect<Invisible>().IsEnabled && allHub.roleManager.CurrentRole is IFpcRole currentRole && VisionInformation.GetVisionInformation(owner, camera, currentRole.FpcModule.Position, currentRole.FpcModule.CharacterControllerSettings.Radius, this._maxViewDistance, checkInDarkness: false).IsLooking)
        return true;
    }
    return false;
  }

patch this

tulip kiln
#

eve can you add a bloodlust event to secretapi

hearty shard
celest thorn
#

instead of relying on someone else

#

🧠

hearty shard
#

delete labapi

tulip kiln
hearty shard
#

we dont need it

#

we have basegame

hearty shard
rustic pecan
#

Who needs APIs anyways

foggy ruin
#

Is there a way to get this to deal damage to nobody
var grenade = ExplosiveGrenadeProjectile.SpawnActive(ev.OldPosition, ItemType.GrenadeHE, null, 0.01);

rustic pecan
#

Harmony Patch

#

And gas

wary gust
celest thorn
#

and that's it lol

#

save the Serial

#

and from there check the serial

foggy ruin
#

aight

wary gust
#

Pretty sure ExplosionUtils has something

foggy ruin
#

im torn because i kind of want to blow people up ngl

celest thorn
hearty shard
upper vapor
#

i genuinely thought there was an event for this already

hearty shard
#

nope

#

you didnt add it

restive turret
#

There was a suggestion or something i believe

worn gull
#

Where is the event which runs when every player spawned at round start

worn gull
#

bruh

hearty shard
worn gull
#

Yez

#

Thanks

#

forgor name

sharp hedge
upper vapor
tulip kiln
#

ExplosionUtils::ServerSpawnEffect

icy knoll
#

so it's . instead of ::

tulip kiln
#

I forgor

restive turret
#

frogot

plain gazelle
#

what was the way of getting someones name without the color tags again

restive turret
#

DisplayName

#

?

plain gazelle
#

For some reason if i do textToy.Text.Network_textFormat = player.DisplayName it then shows some parentheses after it or sth

#

im limiting the length atm but yeah, they got colors after them or sth

#

Its sth about that * if the player has a custom set name

restive turret
#

.Replace("*<color ....>", string.Empty)

plain gazelle
#

hm

somber dagger
# plain gazelle hm

I personally used ev.Player.ReferenceHub.nicknameSync.Network_displayName when I came up with this issue - worth a try

sweet flax
rustic pecan
#

Hey, guys!

#

Could u help, can I make a specific player see as an SCP during PC's blackout?

grand flower
#

night vision effect

rustic pecan
#

It is an effect?

grand flower
#

yep

#

they added one a few versions ago

unique crane
#

Ye

tulip kiln
#

Mr beast feeling generous in the last week

crimson needle
#

,

celest thorn
#

@idle depot

#

have fun

silver kernel
#

@celest thorn those who remember

celest thorn
silver kernel
#

gls

#

questo rimane il record perΓ²

#

1902y

rustic pecan
#

Only reasons that can cause turning lights off/on are:

  1. SCP-079
  2. SCP-079 recontam
  3. Lightbulb
  4. RA command
#

Didnt I miss sth

#

?

terse bone
#

Is there anyone here who knows why is there a check for role's active time in PitDeath effect?

#

Is it a fix for some unusual bug?

hearty shard
terse bone
#

hmm, okay

thin shuttle
#

It's could be reduced to 0.1f

grand flower
#

I remember us patching it a ton on Bright's

thin shuttle
#

1f is making the possibility for Scp0492 to spawn without getting killed by pit effect

grand flower
#

it's so janky

thin shuttle
#

Don't remind if you can but probably?

grand flower
#

The fact role init takes multiple frames is awful

thin shuttle
#

It's less true now

#

It's was a lot worse before

grand flower
#

Still is

#

yeah but it's still multiple frames

#

should not be

thin shuttle
#

I remind now it's instant

#

Just not all proppetty initialised first tick

grand flower
#

So it's not instant

#

:p

thin shuttle
#

But every important stuff does

#

Like position, roletype, rotation

thin shuttle
grand flower
#

it just sucks, had to write so much garbage code to handle that

thin shuttle
#

But it's was a lot worse before lol that why i am happy kinda

tulip kiln
#

that should get you everything

thin shuttle
tulip kiln
thin shuttle
#

Nope

#

My bad

#

There microHid overcharge

thin shuttle
#

I consider you don't take in count candy from Halloween

rustic pecan
#

Okaaaaay

#

Thanks ❀️

thin shuttle
#

It's kinda a not very know features

restive turret
thin shuttle
#

I don't remind exactly

#

Just yeah some property are null

#

First tick

restive turret
#

Awake => Start => Networked stuff

thin shuttle
#

Yeah

restive turret
#

That's unity stuff can't do much

thin shuttle
#

But if you do

Player.SetRole
Player.Role.Dothing

You could get some nre

#

In the same tick

restive turret
#

I remember fixing some bug but it made 3 other bc of network syncvar not being read in awake

thin shuttle
#

I don't remind for what i get this issue but was probably about some subroutines stuff

grand flower
#

should be on the frame you set the role

restive turret
#

Cant really change that much ngl

rustic pecan
#

But turning off the lights...

#

Never noticed

#

Thanks a lot ❀️

restive turret
#

Cus no one prob ended up blowing up

thin shuttle
rustic pecan
thin shuttle
#

And so mostly nobody hit the limit

terse bone
#

now i can't get stuck in void no matter what

grand flower
restive turret
#

Well i have to study more on this unity and networking behavior so.
But i believe it is one frame away to call Awake then Start

#

Or it's after it? I don't know that so

#

Plus maybe pooling related? One frame to get it? Or is it multiple? Idk

grand flower
#

Start is right after if the game object is enabled

#

So it shouldnt be an issue

restive turret
#

But it is after awake or have 1 frame delay between that

rustic pecan
#

Gentlemen

#

Stupid question

#

Do we have Overcharge event or sth similar in LabAPI?

#

To detect if the lights went off due to overcharge?

#

I coudnt find that, but Im dumb, mb missing sth

restive turret
#

J think there is something

static meteor
#

There's the 079 recontained/recontaining events but idk if that triggers if 079 dosent exist

    /// <summary>
    /// Gets called when SCP-079 is being recontained.
    /// </summary>
    public static event LabEventHandler<Scp079RecontainingEventArgs>? Recontaining;

    /// <summary>
    /// Gets called when SCP-079 has been recontained.
    /// </summary>
    public static event LabEventHandler<Scp079RecontainedEventArgs>? Recontained;
rustic pecan
#

Yeah I saw that too

#

Not kinda what I want

#

In CSharpAssembly I saw that full logic is in Scp079Recontainer

grand flower
#

same frame

restive turret
#

Ah

upper vapor
#

OnEnable is called immediately when the gameobject is enabled

#

Start is called on the first frame when the object is enabled

#

Awake -> OnEnable -> next frame -> Start (if enabled)

upper vapor
grand flower
#

huh

#

nvm yhen

unique crane
#

So technically its covered

upper vapor
#

yeah but there are two labapu events, no?

slender depot
#

Is there an universal event for when items get dropped after a player dies/player drops an item/player throws an item?

upper vapor
#

InventoryExtensions.ItemRemoved i think

slender depot
#

Doesnt it also get called when a player unselects their item?

upper vapor
#

no

#

but the pickup might be null

#

the item doesn't get removed if you change to a different item, does it? Kek

slender depot
#

Dunno, once tried to use it and it instantly fired after I unselected my medkit.

upper vapor
#

um

sweet flax
#

It gets destroyed when changed to a pickup

#

And when removed by ra

upper vapor
#

yeeeeees

upper vapor
sweet flax
upper vapor
#

good question

unique crane
#

curse of remote admin

hearty shard
#

curse of david

unique crane
# hearty shard curse of david

π“†π“‡π“ˆπ“‰π“€€π“€π“€‚π“€ƒπ“€„π“€…π“€†π“€‡π“€ˆπ“€‰π“€Šπ“€‹π“€Œπ“€π“€Žπ“€π“€π“€‘π“€’π“€“π“€”π“€•π“€–π“€—π“€˜π“€™π“€šπ“€›π“€œπ“€π“€žπ“€Ÿπ“€ π“€‘π“€’π“€£π“€€π“€₯𓀦𓀧𓀨𓀩π“€ͺπ“€«π“€¬π“€»π“€Όπ“€½π“€Ύπ“€Ώπ“€π“π“‚π“ƒπ“„π“…π“†π“‡π“ˆπ“‰π“€€π“€π“€‚π“€ƒπ“€„π“€…π“€†π“€‡π“€ˆπ“€‰π“€Šπ“€‹π“€Œπ“€π“€Žπ“€π“€π“€‘π“€’π“€“π“€”π“€•π“€–π“€—π“€˜π“€™π“€šπ“€›π“€œπ“€π“€žπ“€Ÿπ“€ π“€‘π“€’π“€£π“€€π“€₯𓀦𓀧𓀨𓀩π“€ͺπ“€«π“€¬π“€»π“€Όπ“€½π“€Ύπ“€Ώπ“€π“π“‚π“ƒπ“„π“…π“†π“‡π“ˆπ“‰π“€€π“€π“€‚π“€ƒπ“€„π“€…π“€†π“€‡π“€ˆπ“€‰π“€Šπ“€‹π“€Œπ“€π“€Žπ“€π“€π“€‘π“€’

hearty shard
#

oh.

tulip kiln
#

Why has this remained in the LabApi repository for 7 months Kek

hearty shard
#

fun

restive turret
#

Only 3 people noticed

#

And none of them was us

upper vapor
#

i noticed

tulip kiln
hearty shard
restive turret
#

I actually didn't noticed it multiple times and still Forgot it's there

tulip kiln
upper vapor
restive turret
#

Squad merge

hearty shard
#

david appreciates my dms

#

surely

unique crane
#

no

hearty shard
#

yes!

unique crane
#

no

hearty shard
#

:(

wary gust
#

Is this how we are supposed to dispose of items?
item.CurrentOwner?.Inventory.ServerRemoveItem(item.Serial, null);
or ig this is the labapi way (runs the above):
item.CurrentOwner?.RemoveItem(item);

hearty shard
#

i do believe thats how

wary gust
#

why isn't there a method for this? this feels a bit awkward (it would literally call that)

hearty shard
#

dunno

#

make an item extension

wary gust
hearty shard
#

extension(Item item) { public void Destroy() => item.CurrentOwner?.RemoveItem(item); }

main zenith
#

is there a way to apply force to Player or change his velocity(somehow) or the only possible solution is to apply position change every tick?

tranquil river
#

most plugin implementations of player velocity / pushing tend to recreate it server side with adding the velocity to the player's position incrementally and the such, as I don't believe there's any method to apply force to a player unfortunately (could be wrong though)

white badge
#

Are pickup and item serials related?
Can I expect pickup serial equal item serial if I throw it?

upper vapor
#

Yes

#

That's how it's designed

white badge
#

oh thats great

vast wharf
#

How can I get the items a player drops when he dies? It's for cleaning them after 15s for a PvP mode

unique crane
vast wharf
#

Maybe

unique crane
#

You can make just coroutine that runs every 1 second, iterating over all spawned pickups

#

increasing their number in some dictionary by 1 every loop

#

and deleting them on 15

vast wharf
#

But how do I compare it with actual map loot?

unique crane
#

Oh hm

vast wharf
#

(There is a custom pvp zone)

unique crane
#

Use the Dying event and drop all of their stuff in that event

#

You can get the Pickups objects from there

vast wharf
#

Hm will try, thanks!

unique crane
#

Thanks mr yeast

#

@thorn escarp

burnt hearth
#

@thorn escarp

#

free money

thorn escarp
#

!softban 693966678266085476 Account compromised; change your password.

#

God I hate free money so much

regal lakeBOT
#

Done. Enough chaos.

hearty shard
#

cheese

hearty shard
#

can i have it instead

unique crane
hearty shard
#

shh david

#

your crimes will not be forgiven

unique crane
#

what crimes

restive turret
sinful bronze
#

war crimes

unique crane
#

Its not war crimes if im not in a war

unique crane
#

I havent pushed that lol

sinful bronze
#

that's a crime

soft turtle
#

How can I manually register a command?

[CommandHandler(typeof(ClientCommandHandler))]

This registers the command automatically

upper vapor
upper vapor
hearty shard
sweet flax
#

why does sl can give deafult interface and i have a skillissue Instance property in interface cannot have initializer

sweet flax
#

should i downgrade?

marble cobalt
#

Not sure what the issue might be on your end sadly, but we do use some tricks to force a newer C# version on our current Unity version

restive turret
#

also maybe bc of unity edited mscorlib

sweet flax
#

skill issue ig

upper vapor
#

Disable implicit framework references, and use mscorlib, System & System.Core from the game assemblies

sweet flax
upper vapor
#

You don't have to

#

But if you have multiple projects in a folder, I'd suggest using Directory.Build.props (if you can be assed with customizing MSBuild)

sweet flax
#

just had a template

upper vapor
#

That can work, too

#

Hopefully we'll get an official plugin template at some point ([0, ♾️[)

upper vapor
#

Huh

sweet flax
#
<PropertyGroup>
        <TargetFramework>net48</TargetFramework>
        <LangVersion>latest</LangVersion>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
        <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
#
        <Reference Include="mscorlib">
            <HintPath>$(SL_REFERENCES)/mscorlib.dll</HintPath>
        </Reference>
        <Reference Include="System" HintPath="$(SL_REFERENCES)\System.dll" />
        <Reference Include="System.Core" HintPath="$(SL_REFERENCES)\System.Core.dll" />
        <Reference Include="netstandard" HintPath="$(SL_REFERENCES)\netstandard.dll" />
upper vapor
#

Uh

#

What's the error

sweet flax
#

IFoo.cs:77 Instance property in interface cannot have initializer

upper vapor
#

Code?

sweet flax
upper vapor
#

Well yeah you can't do that

#

Interfaces cannot store data

sweet flax
#

i have some kind of skill issue my bad

upper vapor
#

!c#

regal lakeBOT
upper vapor
upper vapor
#

Approximate (~100km)

sweet flax
unique crane
#

Please nuke hungary πŸ™

#

var pickups = ev.GetType().GetProperty("Pickups")?.GetValue(ev) as IEnumerable<Pickup>;

#

What the fuck?

vast wharf
#

how should i do it then?

sweet flax
#

var pickupEvent = ev as IPickupEvent; why

#

please dont vibecode

vast wharf
#

i'm new ok 😭

#

ok sorry

hearty shard
vast wharf
#

i coudn't get it to work so i just asked chat gpt

hearty shard
#

there are humans to ask

vast wharf
#

i figured that out later

#

as you can see 😭

#

how can i do it tho

icy knoll
#

what do you want to do

vast wharf
#

get the items that a player automatically droped because of his death

#

i can only get ammo to dissapear

vast wharf
#

i tried using

private void OnPlayerDying(PlayerDyingEventArgs ev)

var Items = ev.Player.Items;
            foreach (var Item in Items) {
                ScheduleItemDespawnOnce(Item, PvpDropDespawnSeconds);
            }
}
...

item.MoveTo(Server.Host); //I found this doing a search this discord server

but it's still there

slender depot
#

A small question, what part of the game uses Scp079CameraRotationSync?

hearty shard
#

its just what syncs where the camera is looking so players can see the 079 move

slender depot
hearty shard
#

what is this even for

slender depot
#

To manually move 079's cameras in random directions

hearty shard
#

on client:
Scp079CameraRotationSync -> goes into ClientProcessRpc -> Scp079Camera::ApplyAxes

slender depot
hearty shard
#

its a subroutine

#

but uh

#

i do believe you need an 079 to fake it

slender depot
slender depot
hearty shard
#

technically

#

you still need an 079 tho

#

you need OnRoleChanged with an Scp079Role

#

that needs to be a LOCAL player

#

aka the server host in this case

#

its null in any other case

slender depot
#

oh, alr

#

thanks for help

sweet flax
#

dear nw staff could we get offical pdf of usage stripdown command since Hubert shown it on the stream but in shitty quality

#

and it also seems like a good development tool

#

@unique crane pretty please

vast wharf
#

anyone knows how to have 2 hints at the same time?

sweet flax
#

use hsm or ruei

vast wharf
#

hm ok

hearty shard
vast wharf
#

how much time till the release?

#

aprox

hearty shard
#

this year

#

thats all we can know

sweet flax
#

15.0 will give us the ability to draw basic gui

#

but not better hints

vast wharf
#

I'm gonna use ruei for now

vast wharf
sweet flax
#

but you can see what the community has made with only tex

sweet flax
vast wharf
#

oh ok

tulip kiln
quiet rune
#

What DamageHandler does SCP-1509 use?

#

oh wait found it

halcyon terrace
halcyon terrace
pine moon
#

hey um where do i even get all these??

[2026-05-02 22:05:52.727 -05:00] [ERROR] [LabApi] [LOADER] Missing dependencies:
- LabApi v1.1.6.1
- 0Harmony v2.4.2.0
- SecretLabNAudio.Core v2.0.0.0
- System.Text.Json v10.0.0.5
- System.Net.Http v4.2.0.0
- System.IO.Compression v4.2.0.0
- System.Memory v4.0.5.0
- LabApiExtensions v0.1.7.0
- CedModV3 v1.0.0.0
- System.IO.Compression.FileSystem v4.0.0.0

sharp hedge
#

all of those except cedmod can be found in the dedicated servers files

pine moon
#

Oh? Where would i find because im self hosting a private server rn

sharp hedge
#

you can download it in steam, its already in your library hidden under tools

pine moon
sharp hedge
#

make sure tools is marked as visible

pine moon
#

i did i think i found them in the files directly lol

#

where would i get cedmod?

sharp hedge
#

make sure you get the version you want

#

by that i mean exiled or labapi

#

read up on what the plugin does so you know what youre downloading

pine moon
#

where the heck is SecretLabNAudio.Core.dll

sharp hedge
pine moon
#

honest question if anyone knows why are schematics not being found

upper vapor
upper vapor
upper vapor
pine moon
upper vapor
#

Bruh

pine moon
#

like im more confused because the plugin seems to not even work???

#

hes given a beta version that idek if it was tested with labapi

upper vapor
#

Right

#

That explains the SLNA part

#

Tag him in his server ig

pine moon
#

i alrdy will lmfao

#

like it seems it was tested with exiled and nobody was given info???

barren pasture
#

What is SSGroupHeader commonly used for?

upper vapor
upper vapor
barren pasture
#

Ah

pine moon
#

thats the last public one we ever got until this one.

#

so it doesn't work anymore.

upper vapor
#

A game update doesn't automatically break every single plugin completely

pine moon
#

So I honestly don't know.

upper vapor
#

That's unfortunate

pine moon
#

Yeah I wonder if its just me screwing something up

#

I'll redo everything tmrw again

unique crane
#

I wanted to nuke it before too

upper vapor
#

Right

unique crane
#

Just you and slejm move out before that pls

pine moon
#

was me being dumb one plugin was being dumb so caused everything else

upper vapor
upper vapor
unique crane
#

Damm

#

Not doing it then

sweet flax
upper vapor
#

I have no idea what it is ngl

upper vapor
unique crane
#

XD

sweet flax
#

Thats the quality that was shown

upper vapor
#

Quality indeed

restive turret
#

10/10

unique crane
restive turret
#

The stripdown files aren't real

vast wharf
unique crane
vast wharf
#

But absolutely all ones or only of their last death?

upper vapor
#

If you do that in the dying event then it'll include everything

unique crane
#

Yea

#

but I feel like ive talked about this yesterday

vast wharf
#

Yeah, and I can't still get it to work 😭

upper vapor
unique crane
upper vapor
#

A coroutine but like

#

Hold on

unique crane
#

Yeah a coroutine 😭

#

coroutine that just increments the time for each time

#

and destroys it on 15 seconds?

#

I mean like you can attach component but..

#

yea

upper vapor
#

Sobbing
Though you did also suggest what I said now so uhhh

unique crane
#

Yeah

upper vapor
vast wharf
#

What I did yesterday was I got all the pickups on OnPlayerDying then I supposed the game drops them, and then I wait 15s and I destroy them
-# I'm on the phone I don't remember if it was exactly called OnPlayerDying, but it wasn't OnPlayerDied

So I should do instead of that, I should like you said player.DropAllItems() and get the pickups from there?

upper vapor
#

DropAllAmmo then DropAllItems

sweet flax
celest thorn
#

i do wonder if you can check the position of other references hub

#

by using this Trolley

unique crane
#

Otherwise it will print 0 4000 0 if they are out of range

celest thorn
tulip kiln
#

It's been a few days. How has voice chat been doing?

restive turret
tulip kiln
restive turret
#

You can do a funny bit, but Alex gonna screenshit it

upper vapor
thin shuttle
upper vapor
#

That doesn't return anything tho

thin shuttle
restive turret
#

To delete the items

tulip kiln
#

Regardless of my wishes, my budget wouldn't allow it anyway

upper vapor
upper vapor
tulip kiln
#

free 🍐

upper vapor
soft turtle
#

Is it possible to change the permissions on the keycard?

restive turret
#

Custom keycards yes

soft turtle
upper vapor
restive turret
#

Client aint gonna see any change

tulip kiln
#

I have some code for it

next jungle
#

maybe mscorlib is the friends we made along the way?

upper vapor
#

disable implicit frameowrk references

soft turtle
#

wow thx

next jungle
upper vapor
#

well

#

uh

next jungle
#

yea

next jungle
tulip kiln
# soft turtle wow thx

Can you download the file and tell me when you do so? I have seen servers competing with me steal the code I share here, so I'd rather not feed them another useful thing Kek

upper vapor
#

prioritizes your SL_REFERENCES

next jungle
#

ohhh

#

that

#

i didnt think of that

#

thanks

upper vapor
#

np

soft turtle
#

You can delete the code.
I only needed the code to create a custom card. I usually use pre-defined parameters from Northwoods for checks, instead of saving them myself

tulip kiln
cyan crown
#

is this broken☠️

#

wrong place to ask but i don't know where to ask anyways

obtuse spruce
# tulip kiln It's been a few days. How has voice chat been doing?

I was just about to mention this to you its actually going well realman Based on what Ive been told, its happened once in a period of two hours. That a improvement. And I still dont know if the staff member in question really got this issue. I’m going to tell my whole team to report any issues like this

hearty shard
upper vapor
#

skill issue

hearty shard
#

i did not mean to post that twice

#

anyway

#

evil ax

harsh thorn
cyan crown
#

cheating but it didn't count it in for some reason

harsh thorn
#

Might have misspelled it or something

cyan crown
#

maybe does it count for "Aim Lock" as cheating?

#

i think aimbot would been a correct term instead of aim lock

harsh thorn
#

Or cheats

cyan crown
#

okay, thanks ced have a good evening

vast wharf
upper vapor
#

Np

hearty shard
#

@modern lark you could prob patch this to fix it

modern lark
hearty shard
#

true

#

but

#

temp fix

#

ohactually

#

it does this by default already, checking if theres another camera to use

modern lark
upper vapor
#

no room = bad

#

so

#

without a map

#

you're kinda out of luck

hearty shard
#

oh

#

is it room issue

#
public bool TryGetDefaultCamera(out Scp079Camera cam)
  {
    if (this._defaultCamId == (ushort) 0)
    {
      Scp079InteractableBase first1;
      if (Scp079InteractableBase.AllInstances.TryGetFirst<Scp079InteractableBase>((Func<Scp079InteractableBase, bool>) (x => x is Scp079Camera scp079Camera && x.SyncId != (ushort) 0 && scp079Camera.Room.Name == RoomName.Hcz079 && scp079Camera.Label.Equals("079 CONT CHAMBER", StringComparison.InvariantCultureIgnoreCase)), out first1))
      {
        cam = first1 as Scp079Camera;
        this._defaultCamId = cam.SyncId;
        return true;
      }
      Scp079InteractableBase first2;
      if (Scp079InteractableBase.AllInstances.TryGetFirst<Scp079InteractableBase>((Func<Scp079InteractableBase, bool>) (x => x is Scp079Camera), out first2))
      {
        cam = first2 as Scp079Camera;
        this._defaultCamId = cam.SyncId;
        return true;
      }
      cam = (Scp079Camera) null;
      return false;
    }
    Scp079Camera result;
    if (Scp079InteractableBase.TryGetInteractable<Scp079Camera>(this._defaultCamId, out result))
    {
      cam = result;
      return true;
    }
    cam = (Scp079Camera) null;
    return false;
  }
#

its failing here

#

theres no room checks here

modern lark
#

I'm going to propose a way to spawn rooms then Kek

hearty shard
#
Disconnecting connection: connection(0). This can happen if the other side accidentally (or an attacker intentionally) sent invalid data. Reason: System.NullReferenceException: Object reference not set to an instance of an object.
at PlayerRoles.PlayableScps.Scp079.Cameras.Scp079CurrentCameraSync+<>c.b__42_0 (PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase x) [0x00000] in <00000000000000000000000000000000>:0
at Utils.NonAllocLINQ.HashsetExtensions.TryGetFirst[T] (System.Collections.Generic.HashSet1[T] target, System.Func2[T,TResult] condition, T& first) [0x00000] in <00000000000000000000000000000000>:0
#

where actually is that occuring

modern lark
hearty shard
#
.method assembly hidebysig instance bool
      '<TryGetDefaultCamera>b__42_0'(
        class PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase x
      ) cil managed
    {
      .maxstack 3
      .locals init (
        [0] class PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera scp079Camera
      )

      // [136 126 - 136 321]
      IL_0000: ldarg.1      // x
      IL_0001: isinst       PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera
      IL_0006: stloc.0      // scp079Camera

      IL_0007: ldloc.0      // scp079Camera
      IL_0008: brfalse.s    IL_0033
      IL_000a: ldarg.1      // x
      IL_000b: callvirt     instance unsigned int16 PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_SyncId()
      IL_0010: brfalse.s    IL_0033
      IL_0012: ldloc.0      // scp079Camera
      IL_0013: callvirt     instance class MapGeneration.RoomIdentifier PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_Room()
      IL_0018: ldfld        valuetype MapGeneration.RoomName MapGeneration.RoomIdentifier::Name
      IL_001d: ldc.i4.s     18 // 0x12
      IL_001f: bne.un.s     IL_0033
      IL_0021: ldloc.0      // scp079Camera
      IL_0022: ldfld        string PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera::Label
      IL_0027: ldstr        "079 CONT CHAMBER"
      IL_002c: ldc.i4.3
      IL_002d: callvirt     instance bool [mscorlib]System.String::Equals(string, valuetype [mscorlib]System.StringComparison)
      IL_0032: ret
      IL_0033: ldc.i4.0
      IL_0034: ret

    } // end of method '<>c'::'<TryGetDefaultCamera>b__42_0'
#

oh lmao

#

so yes its a null room issue

hearty shard
#

but yeah no i see it in the IL lmao

modern lark
hearty shard
#

yep

#

just basegame moment

#

im just confused why the IL is weird here

hearty shard
#

Idk i dont get it

barren pasture
#
{
                if (player == null) return;

                string hint = "'Ey, I'm walkin' 'ere!";
                //var hint = GetPlayerHint(player);
                if (!string.IsNullOrEmpty(hint))
                    player.SendHint(hint);
}```
This snippet of code has been causing an issue. Players are getting dc'd with 0 message, and the server isn't procuring any errors. The only error I can find is client-side, saying some network message is missing an ID. Help would be appreciated.
#

I would have to replicate the error to paste it

upper vapor
#

what's the message ID

hearty shard
barren pasture
#

How am I supposed to know?

upper vapor
barren pasture
#

How am I supposed to get the ID tho?

hearty shard
#

it should just

#

say it

#

in the error

barren pasture
#

Again, I'll have to replicate the error, give me like 20 minutes

upper vapor
#

aight

#

wait

barren pasture
#

wait what?

upper vapor
#

might be this one

barren pasture
#

Not the same, lemme replicate the error

upper vapor
#

if there is no room assigned

#

then it poopies itself

hearty shard
#

not the issue

upper vapor
hearty shard
#

uh

#

Γ―s that new code

#

wait

#

no

#

im stupid my bad

hearty shard
#

i didnt notice the first line

#

instead of 2nd

#

my bad

#

whoops

#

so it is fixable server side

#

theoretically?

#

@modern lark do you use secretapi

#

i forgot

barren pasture
#

60287

modern lark
hearty shard
# modern lark Nope
using System;
using HarmonyLib;
using MapGeneration;
using PlayerRoles.PlayableScps.Scp079;
using PlayerRoles.PlayableScps.Scp079.Cameras;
using Utils.NonAllocLINQ;

/// <summary>
/// Fixes <see cref="Scp079CurrentCameraSync.TryGetDefaultCamera"/> causing null reference.
/// </summary>
[HarmonyPatch(typeof(Scp079CurrentCameraSync), nameof(Scp079CurrentCameraSync.TryGetDefaultCamera))]
internal static class FixScp079Sync
{
#pragma warning disable SA1313
    private static bool Prefix(Scp079CurrentCameraSync __instance, ref Scp079Camera cam, ref bool __result)
#pragma warning restore SA1313
    {
        cam = null!;
        __result = false;

        if (__instance._defaultCamId == 0)
        {
            if (Scp079InteractableBase.AllInstances.TryGetFirst(x => x is Scp079Camera scp079Camera && x.SyncId != 0 && scp079Camera.Room?.Name == RoomName.Hcz079 && scp079Camera.Label.Equals("079 CONT CHAMBER", StringComparison.InvariantCultureIgnoreCase), out Scp079InteractableBase first1))
            {
                cam = (first1 as Scp079Camera)!;
                __instance._defaultCamId = cam.SyncId;
                __result = true;
                return false;
            }

            if (Scp079InteractableBase.AllInstances.TryGetFirst(x => x is Scp079Camera, out Scp079InteractableBase first2))
            {
                cam = (first2 as Scp079Camera)!;
                __instance._defaultCamId = cam.SyncId;
                __result = true;
                return true;
            }

            cam = null!;
            __result = false;
            return false;
        }

        if (Scp079InteractableBase.TryGetInteractable(__instance._defaultCamId, out Scp079Camera result))
        {
            cam = result;
            __result = true;
        }

        return false;
    }
}
#

well heres ur fix

#

theoretically

upper vapor
#

what the fuck

hearty shard
#

i cba to do IL

upper vapor
#

you could've patched the lambda

#

😭

hearty shard
#

i did just say i cba to do IL rn

#

although

#

i dont rly need to

#

i just need to get the nested method

#

but

#

do i care rn?

#

no

#

its just a temp anyway til stink nw fix

#

(pls fix)

modern lark
#

It's already kind enough to help me with such a thing Kek

upper vapor
wary gust
#

nope

#

well I do but it doesn't work

upper vapor
#

bruh

wary gust
#

idk not mine

#

doesn't NW have a tool for it?

#

just ping david or something

upper vapor
#

😭

wary gust
#
var badMessage = AppDomain.CurrentDomain.GetAssemblies()
        .SelectMany(t => t.GetTypes())
        .Where(t => typeof(NetworkMessage).IsAssignableFrom(t))
        .FirstOrDefault(t => t.FullName.GetStableHashCode() == 21154);
    Logger.Error($"Bad message is: {badMessage?.FullName ?? "NULL"}");
#

I was sent this

hearty shard
#

wait ax

#

    private static MethodInfo TargetMethod()
    {
        return typeof(Scp079CurrentCameraSync).GetNestedMethod(StateMachine, Method)
               ?? throw new Exception($"Could not locate state machine for {StateMachine} | {Method}");
    }

#pragma warning disable SA1313
    private static bool Prefix(Scp079CurrentCameraSync __instance, Scp079InteractableBase x, ref bool __result)
#

the Scp079InteractableBase x is how you get it right

upper vapor
#

you can't use the instance here but yeah

hearty shard
#

i dont remember getting the param

#

ye ye

#
/// <summary>
/// Fixes <see cref="Scp079CurrentCameraSync.TryGetDefaultCamera"/> causing null reference.
/// </summary>
[HarmonyPatch(typeof(Scp079CurrentCameraSync), nameof(Scp079CurrentCameraSync.TryGetDefaultCamera))]
internal static class FixScp079Sync
{
    private const string StateMachine = "<>c.b__42";
    private const string Method = "TryGetDefaultCamera";

    private static MethodInfo TargetMethod()
    {
        return typeof(Scp079CurrentCameraSync).GetNestedMethod(StateMachine, Method)
               ?? throw new Exception($"Could not locate state machine for {StateMachine} | {Method}");
    }

#pragma warning disable SA1313
    private static bool Prefix(Scp079InteractableBase x, ref bool __result)
#pragma warning restore SA1313
    {
        __result = false;
        if (x is not Scp079Camera scp079Camera)
            return false;

        if (x.SyncId == 0)
            return false;

        if (!scp079Camera.Room || scp079Camera.Room.Name != RoomName.Hcz079)
            return false;

        if (!scp079Camera.Label.Equals(Scp079CurrentCameraSync.DefaultCameraName, StringComparison.InvariantCultureIgnoreCase))
            return false;

        __result = true;
        return true;
    }
}
#

gg ez

#

transpiler would be shorter tho

upper vapor
#

why do you return true at the end

hearty shard
#

uh

#

mistake

#

whoops

unique crane
#

Silly Eve

hearty shard
#

i lowk got distracted as i was typing

#

silly david

#
IL_000b: callvirt     instance unsigned int16 PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_SyncId()
      IL_0010: brfalse.s    IL_0033
      IL_0012: ldloc.0      // scp079Camera
      IL_0013: callvirt     instance class MapGeneration.RoomIdentifier PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_Room()
      IL_0018: ldfld        valuetype MapGeneration.RoomName MapGeneration.RoomIdentifier::Name
      IL_001d: ldc.i4.s     18 // 0x12
#

i mean

#

insert a brfalse after get_Room would work

#

prob

upper vapor
#

dup brfalse

hearty shard
#

why dup?

upper vapor
#

because otherwise you need to get it again

barren pasture
hearty shard
#

Oh i see

#

lmao

barren pasture
#

idk if david is even in chat still lol

wary gust
#

@barren pasture fixed my script:

ushort code = 60287;
var badMessage = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(t => t.GetTypes())
    .Where(t => typeof(NetworkMessage).IsAssignableFrom(t))
    .FirstOrDefault(t => (ushort)t.FullName.GetStableHashCode() == code);
Logger.Error($"Bad message is: {badMessage?.FullName ?? "NULL"}");
#

or well snippet or whatever

barren pasture
#

Where would I put this?

wary gust
#

where you want

#

but it didn't find anything anyway so idk

#

it does find stuff if you put in the ID for roundRestartedMessage

wary gust
#

idk if you made that just for this but it will fail in some cases since you are not casting the stable hash codes to a ushort. See my message above

hearty shard
#
private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
    {
        CodeMatcher matcher = new CodeMatcher(instructions, generator)
            .End()
            .Advance(-2)
            .CreateLabel(out Label skip)
            .Start()
            .MatchEndForward(new CodeMatch(OpCodes.Callvirt, AccessTools.Method(typeof(Scp079InteractableBase), "get_Room")))
            .Insert(new CodeInstruction(OpCodes.Dup), new CodeInstruction(OpCodes.Brfalse, skip));

        return matcher.InstructionEnumeration();
    }

@upper vapor is there a nicer way to create label at end - 2

upper vapor
#

no idea

#

i don't use codematcher

hearty shard
#

ill just do this then

#

well actually itd be -1

#

i mean

#

no errors

#

soooo

#

probably fine!!!

#

surely

silk prawn
#

How should I RegisterEvents?
I did CustomHandlersManager.RegisterEventsHandler(Handler);

#

and it doesn't work πŸ™

restive turret
#

whats in the handler

#

and where you reg itΕ±

silk prawn
# restive turret whats in the handler

I mean there's alot things but basically I want atleast for

public void PlayerJoined(PlayerJoinedEventArgs ev)
        {
            ev.Player.SendHint("JeΕ›li to widzisz to rejestracja eventΓ³w dziaΕ‚a", 3f);
        }```
to work 
And I register it in `    public class SnaksHunt : Plugin<Config>`
restive turret
#

check the example in labapi

silk prawn
restive turret
#

How is the handler class looking

silk prawn
#

nvm I think i figured it out tho

#

lemme try to do this

wispy breach
#

hello, there's a way to highlight a player with 1344 orb to players without giving them the 1344 black glasses sides effect?
or just to highlight just a specific player with the orb?
thx

wispy breach
# unique crane Nop

sad, thx for the response, hope it'll be added in the future as this could give us a lot of new ideas

sweet flax
#

How can i make an standalone program that can read / write to my local admin on my pc. Is there a way to communicate easily or i would need to inject into the process?

restive turret
#

Should be a tcp connection tho

harsh thorn
#

though the server code might also show some more insight on how it works

sweet flax
harsh thorn
#

and you can send commands to it aswel

sweet flax
#

?

harsh thorn
#

the project i sent

sweet flax
#

The scpsl remote query admin csproj?

#

Cuz there is 3 over there

#

One i think is the lib

harsh thorn
#

as that contains the logic for actually using it

barren pasture
#

Would having Player::SendHint in an async task on a separate thread mess with it?

grand flower
#

Probably not advisable

hearty shard
#

you can do MainThreadDispatcher

barren pasture
#

Is that a class or what?

hearty shard
#

yes

barren pasture
#

Aight

#

rn I'm just trying making then entire thing a coroutine

hearty shard
barren pasture
#

A frame?

hearty shard
#

it dispatches onto Update, which is every frame

barren pasture
#

Oh right

hearty shard
#

so itll dispatch on the next frame after being added

barren pasture
#

So just a 1/60 second difference

hearty shard
#

yes

soft turtle
#

Is there a parameter in the KeycardItem class that can change the name on the default card?

hearty shard
#

im not on pc to check rn

soft turtle
cosmic echo
#

Add Triangles

upper vapor
cosmic dagger
soft turtle
soft turtle
upper vapor
#

One of the Keycard details

sweet flax
#

is there some kind of a downside in performence in using monobehaviours instead of "fake components" (class that has a static dictionary of <ReferenceHub, TSelf>)?

restive turret
#

what

#

i dont get the "instead of "

sweet flax
#

i dunno how to explain

#

you can have either monobehaviour

#

which is attached directly to players gameObject

#

or you can have an class

restive turret
#

i know what mono beh are

#

i just dont understand the "fake components" part

sweet flax
#

wait

#
public class ExampleClass 
{
  private static readonly Dictionary<ReferenceHub, ExampleClass> ByReferenceHub = new();

  public ReferenceHub ReferenceHub {get; private set;} = null!;

  public ExmapleClass(ReferenceHub hub) 
  {
    ByReferenceHub[hub] = this;
  }

  public void Destroy()
  {
    ByReferenceHub.Remove(ReferenceHub);
  }

  public static bool TryGet(ReferenceHub hub, [NotNullWhen(true)] out ExmapleClass? exampleClass) => ByReferenceHub.TryGet(hub, out ExmapleClass? exampleClass);
}
#

could be some syntax errors but you get the idea

restive turret
#

why not use the data store one?

sweet flax
#

idk

#

so is there a perforemnce cost of adding a component instead of keeping it in a dictioanry

restive turret
#

idk tbh

#

it also mostly depends what you want

sweet flax
#

wdym?

#

cuz rn i only use monobehaviours when i need to use the base unity events like Update or OnDestroyy

restive turret
#

ye thats what I meant

hearty shard
upper vapor
hearty shard
#

keep it gone

#

no server for you

upper vapor
#

Keep you gone yeah

hearty shard
#

what the FUCK

hearty shard
#

oh.

inner citrus
hearty shard
#

erm

#

what the sigma

restive turret
#

denied

unique crane
hearty shard
#

@modern lark did the fix work btw

modern lark
modern lark
#

Aye aye

hearty shard
#

errr

#

@modern lark is the error the issue still

#

wait maybe i did smth wrong in my test actually

#

Oh

#

yea

#
[2026-05-04 18:55:36.939 +02:00] [STDOUT] OnSerialize failed for: object=SzCameraToy(Clone) component=AdminToys.Scp079CameraToy sceneId=0
[2026-05-04 18:55:36.939 +02:00] [STDOUT] System.NullReferenceException: Object reference not set to an instance of an object
[2026-05-04 18:55:36.940 +02:00] [STDOUT]   at AdminToys.RoomReaderWriters.WriteRoomIdentifier (Mirror.NetworkWriter writer, MapGeneration.RoomIdentifier room) [0x00000] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 18:55:36.940 +02:00] [STDOUT]   at AdminToys.Scp079CameraToy.SerializeSyncVars (Mirror.NetworkWriter writer, System.Boolean forceAll) [0x0001a] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 18:55:36.940 +02:00] [STDOUT]   at Mirror.NetworkBehaviour.OnSerialize (Mirror.NetworkWriter writer, System.Boolean initialState) [0x00008] in <1bebde0895f14b11be97fb0c4e2cabe4>:0
[2026-05-04 18:55:36.940 +02:00] [STDOUT]   at AdminToys.AdminToyBase.OnSerialize (Mirror.NetworkWriter writer, System.Boolean initialState) [0x00000] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 18:55:36.941 +02:00] [STDOUT]   at AdminToys.Scp079CameraToy.OnSerialize (Mirror.NetworkWriter writer, System.Boolean initialState) [0x00000] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 18:55:36.941 +02:00] [STDOUT]   at Mirror.NetworkBehaviour.Serialize (Mirror.NetworkWriter writer, System.Boolean initialState) [0x00015] in <1bebde0895f14b11be97fb0c4e2cabe4>:0
[2026-05-04 18:55:36.941 +02:00] [STDOUT] OnSerialize failed for: object=SzCameraToy(Clone) component=AdminToys.Scp079CameraToy sceneId=0
#

lmao

#
public override void SerializeSyncVars(NetworkWriter writer, bool forceAll)
  {
    base.SerializeSyncVars(writer, forceAll);
    if (forceAll)
    {
      writer.WriteString(this.Label);
      writer.WriteRoomIdentifier(this.Room);
      writer.WriteVector2(this.VerticalConstraint);
      writer.WriteVector2(this.HorizontalConstraint);
      writer.WriteVector2(this.ZoomConstraint);
    }
#

@upper vapor who decided that this is how it should be πŸ’”

upper vapor
#

mirror

hearty shard
#

i mean

#

thats lowk on yall tbh

upper vapor
#

well

hearty shard
#

cuz WriteRoomIdentifier requires Room to exist, yall dont have anything for the case of "theres no room"

upper vapor
#

cameras are expected to have a room

#

sooooooo

hearty shard
#

this cant even be fixed then lmao

#

at least not til nw decides to

#

lmao

modern lark
hearty shard
#

the real fix is to not destroy the map

upper vapor
#

me when

hearty shard
#

but that kinda defeats the point of what you wanted

upper vapor
#

you can just patch WriteRoomIdentifier

hearty shard
#

i assume at least lel

hearty shard
upper vapor
#

write 0 0 0

#

boom

hearty shard
#

the error will just be on client trying to deserialize

upper vapor
hearty shard
#

stuff on client

#

in general would error no?

upper vapor
#

though i don't think camera switching is gonna work

upper vapor
#

but from what i can tell, it won't error

hearty shard
#

thats what im tryin rn

hearty shard
upper vapor
#

not being able to switch cameras is a different topic Kek

upper vapor
hearty shard
#

or fail

upper vapor
#

no room

hearty shard
upper vapor
#

no think

#

no fart

#

no amogus

hearty shard
#

what

#

r u ok

#

do you need therapy

upper vapor
#

perhaps

#

check Scp079DirectionalCameraSelector.IsReady

hearty shard
#

WHY

#

WHY IS

#

i hate you

upper vapor
#

overcon will probably work tho

hearty shard
#

nope

#

smth is erroring

upper vapor
#

xd

hearty shard
#

wait

#

[2026-05-04 19:08:00.111 +02:00] [STDOUT] NullReferenceException: Object reference not set to an instance of an object
[2026-05-04 19:08:00.112 +02:00] [STDOUT] at PlayerRoles.PlayableScps.Scp079.Cameras.Scp079CurrentCameraSync+<>c.<TryGetDefaultCamera>b__42_0 (PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase x) [0x00018] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.112 +02:00] [STDOUT] at Utils.NonAllocLINQ.HashsetExtensions.TryGetFirst[T] (System.Collections.Generic.HashSet1[T] target, System.Func2[T,TResult] condition, T& first) [0x00011] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.113 +02:00] [STDOUT] at PlayerRoles.PlayableScps.Scp079.Cameras.Scp079CurrentCameraSync.TryGetDefaultCamera (PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera& cam) [0x0000b] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.113 +02:00] [STDOUT] at PlayerRoles.PlayableScps.Scp079.Cameras.Scp079CurrentCameraSync.TryGetCurrentCamera (PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera& cam) [0x00024] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.113 +02:00] [STDOUT] at PlayerRoles.PlayableScps.Scp079.Scp079Role.get_IsAFK () [0x00000] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.114 +02:00] [STDOUT] at AFK.AFKManager.OnUpdate () [0x00043] in <69208f83d7754673a3350a7c8052e26b>:0
[2026-05-04 19:08:00.114 +02:00] [STDOUT] at (wrapper delegate-invoke) <Module>.invoke_void()

#

uhhhhhh

upper vapor
#

afk

sinful bronze
#

ahh

upper vapor
hearty shard
#
    .method assembly hidebysig instance bool
      '<TryGetDefaultCamera>b__42_0'(
        class PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase x
      ) cil managed
    {
      .maxstack 3
      .locals init (
        [0] class PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera scp079Camera
      )

      // [136 126 - 136 321]
      IL_0000: ldarg.1      // x
      IL_0001: isinst       PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera
      IL_0006: stloc.0      // scp079Camera

      IL_0007: ldloc.0      // scp079Camera
      IL_0008: brfalse.s    IL_0033
      IL_000a: ldarg.1      // x
      IL_000b: callvirt     instance unsigned int16 PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_SyncId()
      IL_0010: brfalse.s    IL_0033
      IL_0012: ldloc.0      // scp079Camera
      IL_0013: callvirt     instance class MapGeneration.RoomIdentifier PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase::get_Room()
      IL_0018: ldfld        valuetype MapGeneration.RoomName MapGeneration.RoomIdentifier::Name
      IL_001d: ldc.i4.s     18 // 0x12
      IL_001f: bne.un.s     IL_0033
      IL_0021: ldloc.0      // scp079Camera
      IL_0022: ldfld        string PlayerRoles.PlayableScps.Scp079.Cameras.Scp079Camera::Label
      IL_0027: ldstr        "079 CONT CHAMBER"
      IL_002c: ldc.i4.3
      IL_002d: callvirt     instance bool [mscorlib]System.String::Equals(string, valuetype [mscorlib]System.StringComparison)
      IL_0032: ret
      IL_0033: ldc.i4.0
      IL_0034: ret

    } // end of method '<>c'::'<TryGetDefaultCamera>b__42_0'
upper vapor
#

just

#

disable afk checks

hearty shard
#
private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
    {
        CodeMatcher matcher = new CodeMatcher(instructions, generator)
            .End()
            .Advance(-BacktrackCount)
            .CreateLabel(out Label skip)
            .Start()
            .MatchEndForward(new CodeMatch(OpCodes.Callvirt, AccessTools.Method(typeof(Scp079InteractableBase), "get_Room")))
            .Insert(new CodeInstruction(OpCodes.Dup), new CodeInstruction(OpCodes.Brfalse, skip));

        return matcher.InstructionEnumeration();
    }
hearty shard
#

maybe i fucked up the transpiler

upper vapor
#

check for null properly

#

UnityEngine.Object.op_Implicit

#

whatever tf

hearty shard
#

wait actually

#

i think

#

the issue is uhhh

#

i dont think its patching it

hearty shard
#

yea i forgot to patch the non categorized

#

[2026-05-04 19:11:44.572 +02:00] [ERROR] [SecretAPI] [HarmonyExtensions] failed to safely patch SecretAPI5/4/2026 7:11:44 PM (SecretAPI.Patches.FixRoomIdWriter): HarmonyLib.HarmonyException: Patching exception in method static MapGeneration.RoomIdentifier AdminToys.RoomReaderWriters::ReadRoomIdentifier(Mirror.NetworkReader reader) ---> System.Exception: Parameter "writer" not found in method static MapGeneration.RoomIdentifier AdminToys.RoomReaderWriters::ReadRoomIdentifier(Mirror.NetworkReader reader)

#

wait

#

oh

#

thats just cuz im dumb and put the wrong patch method

upper vapor
hearty shard
#

ok now the real error is
m.Reflection.MethodInfo SecretAPI.Patches.FixScp079DefaultCamSync::TargetMethod() ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: Could not locate state machine for <>c.b__42 | TryGetDefaultCamera
at SecretAPI.Patches.FixScp079DefaultCamSync.TargetMethod () [0x0001d] in <dd20e58ec4c54674a907e1a051672dbe>:0

#

i c why

upper vapor
#

i b

restive turret
#

@hearty shard this is client sided too btw

upper vapor
restive turret
#

even if your ass patch on server it is likely not gonna work

hearty shard
#

yes but where

#

what is on the client

upper vapor
#

directional camera switching will poopy itself

hearty shard
#

yes that

#

but

upper vapor
#

overcon might work

restive turret
#

just make sure the Scp079InteractableBase Room is not null

upper vapor
restive turret
#

krill issue

hearty shard
#

[2026-05-04 19:14:22.825 +02:00] [ERROR] [SecretAPI] [HarmonyExtensions] failed to safely patch SecretAPI5/4/2026 7:14:22 PM (SecretAPI.Patches.FixScp079DefaultCamSync): HarmonyLib.HarmonyException: Patching exception in method System.Boolean PlayerRoles.PlayableScps.Scp079.Cameras.<>c::<TryGetDefaultCamera>b__42_0(PlayerRoles.PlayableScps.Scp079.Scp079InteractableBase x) ---> System.ArgumentException: You cannot combine TargetMethod, TargetMethods or [HarmonyPatchAll] with individual annotations [TryGetDefaultCamera]

#

wtf is this error

#

OH