#plugins-dev-chat
1 messages · Page 174 of 1
Just set the flag 
Yeah
Also that might not work cuz the collider is recreated on Start
Yeah I realized my line of thought as I was saying it
I forgot about PrimitiveObjectFlags
Bro
The colliders for those boxes are literally just one primitive surrounding the whole thing
Idk wth is happening to cause that but I ended up just putting a primitive floor right in the actual floor and it was fixed
It happens literally by just running into that corner
There isn't much to see
I walked into a corner and clipped through the map geometry
Perhaps the boxes' colliders are still present and fuck up the collision (if you have a lot of small colliders in a tight space, you can clip through)
Props to Unity for making this happen 
turn off collisions for boxes
too much collisions = you go backrooms
Yes 100%
I literally already did
Show code
spawn the box somewhere in middle of the room and run into it
Why not just
Had no issues when I tried that
&= ~PrimitiveFlags.Collidable
now that is interesting operators
Because some of the primitives in that list are the invisible colliders I put up
I don't want to make the invisible colliders non-collideable
That's like the whole point of having them
Unless you mean inside the if statement
And if that's the case then I have no reason to
I saw "astra" and thought of something else 
Is this ai
probably not, elon is a mug
Seems to be more error is you set as ntf
Yeah it seems interesting
No it's the Astra rocket launch from 2021
Well except it's flipped
Watch this unusual rocket launch from Astra as it blasts off sideways. Check it out here.
#astra
@restive turret any updates on this: https://github.com/northwood-studios/LabAPI/issues/323
Before You Report I have searched for existing reports of this bug, and this bug report is unique. Version 1.1.4 Description First opened as a support question in the discord: Forum Post Sometimes ...
Don't think any got run
I currently having too much in my backlog once i finish those i will look for those stuff too
Alr, I was just curious
Also fun fact you can just look into usage of "PickupModel" (i think that's the name) you can see many times it doesn't directly use the inventory extension or any other stuff it creates the item with whatever/however it want.
I still have no idea why it doesn't run the action.
ItemPickupBase or whatever it's called events run quite reliably
Ye that's why i have zero clue rn
It was weird how it just strolled to the side 
Is allowing player with perks change their nicknames against the csg?
ty
Is there a way to add optional config values to the configs file, and if that config doesn't appear in the file, it uses an assigned default value
yes
i forgot the class name
but you can do smth like
GetString("key", "default value")
hold on i may have the class name somewhere
yml config or game config class?
Yaml
YamlConfig.GetString
but this do for basegame
wdym no
im thinking of smth else then
[YamlMember(DefaultValuesHandling = DefaultValuesHandling.OmitDefault)]
just add as an attribute to your property
btw if you just do smth like
public class MyConf
{
public string MyConfigVal {get; set; } = "yippeee";
}
Even if you dont set default it using that
ahhh that what u meant
didnt know that exists
Yeah but I want to add the ability to entirely omit the option from the config file and still use the default value
yeah then use the attribute
that will override what labapi does natively
I use it in one of my plugins
What dependency is YamlMember in? Nvm
lol
Yeah, I probably should have looked before I asked
nah ur all good
is anyone have plugin to wear schematic on player 😭
You're probably gonna need to make your own
I don't know how to write plugins (
Well
Another question
Is there a way to do this but with a specific property of a struct object.
For example, in the image I don't want to write the last two
Is there a way to omit the second offset information from the config file and use the default values
do attributes not work in structs? never really used em
Removing the option from the file with the attribute makes it return the Vector3 default value (Vector3 0, 0, 0) without replacing it in the file. Without the attribute though, it would add back second_position as 0, 0, 0 to the yaml file
I just assumed because the SpawnData secondPosition property isn't a direct property of the MyConfigs class, it just doesn't work
[YamlIgnore] above the property?
Maybe
I still want the ability to change the SecondPosition in the config file. But if its not included, then use the default value
Nop sorry
Its either all or nothing
Only possible workaround that may work: Make 2 classes with 1 being the subclass, make custom serialize and deserialize to determine which use or dont use
Or simple workaround that will not hurt: Just keep that property and add comment "Optional"
lol
Fair enough
All my homies hate snake case, make your own serializer and deserializer
Np
So fucking true
camelCase is so peak
It's also peak when you forget to specify the options that should be passed to JsonSerializer 
Bro harmony about to make me crash out
Might be a skill issue?
So much for the name
Erm actually
And doing that causes my postfix not to work
It's a void it shouldn't be blocking execution
Is what they would want you to believe
-# idk tbh I only have transpilers
Because I forgot it was there
I've had the postfix for ages
I'm trying to introduce this prefix
Also I tried it and it fixed nothing
And I don't see how that would help
I literally don't even have anything in my method body
I know right
I don't know what this shit just chose to break
The crazy thing is if I remove the empty prefix it fucking WORKS AGAIN
WHY
😭
I'm actively losing my shit
What fucking universe are we in where I do an empty patch and it destroys my postfix
Is it because it has no parameters or something?
No!
I tried it with parameters
Same issue
The prefixes work fine by themselves
The postfix works fine by itself
You put the two together and the postfix shits itself
I don't fucking know why
It's really pissing me off
I can only assume it's some bullshit about the target methods reflection I do
But idrk how I'd change that
Because idek why it would be causing a problem
Of all the things to shit the bed
I never thought it'd be Harmony
I thought Harmony was solid
I mean the postfix doesn't even register when I grab the patchinfo once I add the prefix
I'm gonna see if anyone has any ideas at the harmony discord
Anyone have any insight?
I'm really kinda stuck here I can't even lie
Are you sure? Postfix is ran after a method is called, Prefix is before
Unless you altered something
Transpile alters the code as it’s ran
More advanced than Postfix/Prefix
Harmony.DEBUG = true
and check what IL it produce
it prob skips the postfix cus of the fucked up prefix
I know bro
I have like over a dozen handmade transpilers
I'm saying they don't fix anything in this use case
cool
And yes I know this
okay
I'm not looking for elementary help this is legitimately an issue
I've worked with harmony for a long time
Hearing stuff like "Postfix runs after a method is called" has no bearing on this situation
I mean sorry I don’t know who you are
I apologize if I'm being rude just I'm genuinely so frustrated
remove your code fixes the issue 
You could've read the prior messages I had addressing this exact situation
I'll give it a shot, the interesting thing is it appears the postfix is just entirely skipped, it doesn't appear with the patch info
The postfix is skipped but the actual method still runs perfectly fine right?
@restive turret I FUCKING LOVE YOU
I had to fix my reflection
I needed to check declaring types to see if they were overriden
Lmao
This day has turned around quite swimmingly
I also found continuation of your NRE issues
Love that
The issue runs deep lmao
It's like one of the magician's scarf tricks
tbh most of the issue lays on update runs after destroyed the object but it doesnt usually tell to other components and that realated stuff
Yep
Means it run like this
- Destoy RefHub
- Run action with refhub
- oops nre
Hopefully guarding with null checks will fix it 
It's really a systemic issue, none of the components are designed accounting for the fact that someone may leave and join in the same frame
I was able to fix the biggest issue myself some time back so the server doesn't brick itself but outside of that I didn't dig too far
Had other issues tbh idk if you saw that but if you spawn it as one that has ammo it throws too
Yeah it's really kinda messed up
Idk if I should be blaming Unity or SL
I'm just shocked no one opened this can of worms sooner
This games been around for like a decade now
More like didn't expect to destroy the same frame (or next one) after created
We don't know who you are

I don't mean this in a mean way or anything that's just so funny
Why not typeof(...).Assembly
Lmao real shit
You know I was disappointed to find out today that CollectionsMarshall doesn't exist in Framework 4.8
Would've made all my dreams come true
So tuff
i don't know which one hoenstly
It really sucks cause I had it in my mind like "Oh I have a really cool optimization I can do with CollectionsMarshall!" only to get it spat in my goddamn face
why does discord scroll up in the channel when i press up in the fav gifs selector
NUH UHHH
use arrays if possible
they're a tiny bit faster in .net framework
(compared to lists)
I was gonna do dictionaries 0_0
oh
It's cause I was lazy
I ended up just doing a completely different system instead so it worked out in the end
Still annoying as hell though
Would've been nice to have the option
Tbh there is already a list/array with defined statbase's
That's true but also like
I didn't know that
...

bug we have a developer
we a have bug developer
lmao
get good kid
@languid temple
remove this kid from here
yeah buddy i don't remember asking
!langru
Привет, это англоязычный сервер. Вы можете присоединиться к [официальному](#partnered-servers message) или [локализированному](#partnered-servers message) русскоязычному серверу.
there's no night without midnight 
night starts after 8pm and ends at 6am
so it will always have midnight (12 am)
what
press [crow] to crow
how many more of these do you got
a lot
RAWWWWR

i bet some SL gamer slammed the shit out of this bot that's why he started using cheats
huh
this Spr1 guy
if you really wanna modify the game, you gotta do that in offline mode and no AC and no server list
what plugin
Could you show the code of the plugin?
😭
he vibe coded it
using chatgpt
☠️
But something had to be made already no?
You can show part of the code
can you elaborate on the project
What does it do then
FLIRTs 💞
what is blud yapping about
Привет, это англоязычный сервер. Вы можете присоединиться к [официальному](#partnered-servers message) или [локализированному](#partnered-servers message) русскоязычному серверу.
so are you gonna make it with exiled or labapi
XDDD

the screen of doom
i love having to accept the unity eula every time i wanna launch the same editor
I seen you a while back
You were in the Exiled discord at some point?
All I know is you're
- R3flectForward
- former nw programmer
I didn't interact with the community but I've been in the server for years
Would I be against the CSG if I conduct tests with a copy of Midnight?
has to be on an offline server
so not verified
also
you have to run the game in offline mode
and even then you risk getting banned by AC
the EULA explains the requirements for running a modified client
and don't post a video of you cheating 
🙃
just say what it's RA update
what
- Using, attempting to use, developing, distributing, or sharing Cheats, tools allowing Exploiting, or tools allowing bypassing our Anti-cheat System or Hardware ID bans for the Game is forbidden. It is also forbidden to provide any kind of support (eg. in usage, configuration, installation, distribution, or development) for Cheats and tools specified.
https://link.scpslgame.com/eula
oh it got changed?
oh
🙁
i heard you were allowed to use cheats in offline mode
but that one prohibits it
even if you're allowed to modify client offline
just cant do cheats
Using cheats in general is just a terrible idea
I wanted to make some kind of midnight detection
ur gonna have to do it on a live server
as in make the anti cheat
Yeah
That was my doubt
Glad I asked
if you want to do ANY cheat testing, email security@scpslgame.com first
Ty
and ofc wait for reply
Check the damage handler when the hurt event is triggered and see how players are teleported in 106's source
Give them the Pocket Corroded effect
the effect itself teleports the player
hmmm
just like this?
That should do the trick yea
thanku❤
When the effect is enabled it checks if pocket dimension's room identifier can be found, then teleports the player to it's position
Is there a way to reload the plugins of a server without restarting the server?
Keep in mind this can have some unforseen consequences (like players don't immediately die if they are last alive), and some might see it as super OP. (I speak from personal experience)
No
Damn
thats not entirely true
i dont know if sl has a base game thing for it
You would need a plugin to do it
I have in my plugin class inheritance, set the config class type to my config class, but the config doesn't show up. Hell am I doing wrong?
Here's the class if y'all need it
Your future is miserable
And it turns out that Scp1509 doesn't even run a PlayerHurting event
I know 
Impossible
It does when it's not friendly fire
But when it is, it doesn't run
Unlike every other damage source
Would you be surprised if the attack check is client side
I had the friendly fire fake synced for the client
Now it's weird right
It's some issue with the jailbird hitreg I believe (1509 shares it right?)
When I charge at a teammate, the charge acts like they're an enemy, but the swing does no damage
Yeah
So if you look at MeleeAutosyncItem.ServerAttack
It reads a referencehub
So uh
It still checks for destructibles though
What?
Why does that matter
The client sends a reference hub because it believes friendly fire is enabled
The client detects the scientist as an enemy and stops the charge appropriately
The only thing that doesn't work is the fact that the playerhurting events aren't running
It yeah
Now I imagine that if it's detecting the scientist as an enemy on the client, it'd have to be sending that enemy to the server
The problem is somewhere along the way with the melee it tosses it out (on the server side)
I'm 99.9999% sure you haven't registered the handler
What do you mean
I'm looking at gitlab (pain) and the code path looks perfectly normal
Sure
I can try to test this in like 20 minutes
I hope you figure out what's wrong cause I'm feeling lazy atm
My suspicion is that the hitreg does a FF check before calling the event
I can't check properly yet cuz the ficking classroom.is locked
Np
Log the message type in ProcessingJailbirdMessageEvent
I'm going to...
Okay
I was right
ClientTryAttack has an FF check
The charge attack is handled by the server though
Boiiiing
Even then, why does it detect an FF hit on the client
You...
Getting up is not stonks
Going back to bed after i ate my breakfast
The client has friendly fire fake synced
That's why the charge ends early
Without the fake sync the charge would go right through the teammate
The problem isn't a client-side check, it's a server-side one
Chat is this real
I know it's server-side because it's not broken when friendly fire is enabled on the server and the client, but it's broken when friendly fire is only enabled on the client
Give it a shot
Fake sync friendly fire to the client and see if the hurting events run
So it turns out that I won't be testing anything until I get home cuz the vnc server is frozen
That's epic
Oh fuck I know why
It's all coming together
That IsDamageable check means the server completely disregards the player before it even gets to the ApplyDamage which would trigger the PlayerHurting events
Not sure if that would be considered a bug or not because it makes sense, but other things (like Firearms) don't do it this way
how to check if a player is playing snake🤔
Depends on your use case
Yeah but I mean why
That's what I mean by "use case"
prevent being kicked by afk check🤔
Check KeycardItem.StartInspectTimes
Cannot resolve symbol 'StartInspectTimes' :(
Is your assembly publicized?
nope
Do that
Unless the issue is that you're not using the inventorysystem KeycardItem
There are two types
Use the InventorySystem one
As I believe StartInspectTimes should be public
using LabApi.Features.Wrappers;
using KeycardItem = InventorySystem.Items.Keycards.KeycardItem;
namespace Extensions;
public static class KeycardInspectingExtension
{
public static bool IsInspectingKeycard(this Player player) => player.CurrentItem?.Base is KeycardItem keycard && KeycardItem.StartInspectTimes.ContainsKey(keycard.ItemSerial);
}
Of course :)
But scp attacking does
Yeah but also SCPs are 100% not designed for friendly fire, every other human-based thing does it the other way
It's interesting that this case is considered different
Tbh there is other type of check which check for FF (i think?)
Nvm you are wrong it checks for AllowFriendlyFire too
Huh?
What do you mean I'm wrong
So?
It checks for ff
And?
It fails on IsEnemy
That was never my point lmao
I'm saying that every other weapon in the game triggers an OnHurting event for friendly fire which allows you to force friendly fire on the damage handler
Melee weapons don't because they use this alternative method
Which is odd
I don't really get what the point is you're trying to make
All weapons check for friendly fire
Can you try FF enabled on both side and not faking it
To check if it runs the damage stuff
Then idk cant help you then
Bro what do you think I'm pointing out here
"can't help you" what problem do you think I'm experiencing
This was my whole point
The problem is that the hitreg is working different than every other human weapon in the game
Which is why I mentioned this ^
With other weapons, even when it's friendly fire and it's not enabled, you're able to modify the OnPlayerHurting to allow friendly fire
You can't do that with melee weapons
Which is the oddity
I feel like along the way there's been some kind of miscommunication where you think I'm trying to point out something I'm not idk
It feels like we're on entirely different pages
Maybe I reread it and I think the check is making it cant run, I will remove it and see if causing any issue on both party
I hope I'm not coming off as rude 😅 I'm just trying to bridge the gap here
No, I can handle more rudeness idc about that
Why movement boost effect not work if player hold micro hid?
It limits the movement
Because there's a hard cap
They placed a 5.4m/s movement speed limit
It happened some months ago
Bruh
Any plan to revert?
someone in NW must hate sweaty players hahaha
If you had any plans to increase a player's speed when they're holding Micro, you should scrap them
I mean I think even casual players hated the change

But there is no way to patch it XD
Such a restriction makes no sense, as it limits server modification.
After all, if it could be patched, not every server would do it. If a player didn't like it, they would simply play on a different server.
I already filled with task and now have this as backlog one more, i don't even know how would be good to do such a thing
Hey all good
It's a minor thing and something we can fix on the server-side with one patch
Prioritize the bigger stuff
So my solution is we rewrite the entire damage system to not be stupidly annoying to work with 
One method to rule them all
(Not exactly possible with just one method)
record DamageContext
record InstantDamage(minecraft reference, ReferenceHub attacker) : DamageContext
record DelayedDamage(idk bruh) : DamageContext
-# it's instant harming but wtv
dont harm yourself
It's a little ridiculous lmao but I get why the range is that large
It seems the distance is about 3u
I assume that because
But I haven't actually looked at the code lmao
@slate flume Apparently older Jailbird code was the same DetectDestructibles check
Added in ~14.1.3
- Charge no longer collides with teammates when Friendly Fire is disabled.
It makes sense, they don't want the client charge to go past the player
It's just odd the the server uses the check it does instead of passing damage to the damagehandler for the other processes to figure out
The client-side code makes sense and is fine, the server-side code is the part that's weird
It shouldn't be rechecking HitboxIdentity.IsDamageable before running ApplyDamage, as that's already handled as part of ApplyDamage
You get what I mean
can you open a bug report if you haven't yet
Uh yeah I have a few bugs I have to get to
I'll do it in a while
I've got a few things I'm making first
aight
Base-game or labapi?
could be either ngl 😭
it might make more sense to report it on github cuz the event doesn't fire
Makes sense
I mean it isn't really an issue with the base-game, it only becomes an issue for devs
Even though it's a problem with base-game systems
Just checking, we can't change the fire rate of guns right?
No it won't sync with clients
As that ever could be done
I have an open LabAPI request for it
Does anyone know how to trigger this error?
refhub being null??
Possibly. But what caused this?
how would I know? what did u even do??
FacilitySoundtrack.AloneSoundtrack.UpdateVolume
Why is the sound check handled on the server?
So that plugin devs can modify these things
I have no idea. I last updated my plugins yesterday. And this error happened today.
Have you traced the call?
one of your ReferenceHub is null
or its CurrentRole
or its roleManager
even in my NRE test i couldnt replicate it
+<>c__DisplayClass7_0.<OnChangedRole>b__0 () [0x000a7] in <3f9e3ad076d44278a57a4a5ad52bb801>:0
I think I know where the problem is. Thanks for the tip.
Well it's odd you see because CurrentRole has been accessed both times before the IsEnemy call
Although no. I don't know what the problem is
But it only NRE'd at that point
ye thats why i have zero clue
both of the role!
Wait wait wait wait
It's If Else
If TryGetLocalHub fails, then it tries to access it in IsEnemy
This is a NW bug
No?
null checks my ass
This is so fire
anyway gimme reproduction steps @soft turtle
What is local player supposed to be from the perspective of the server
I'm a little lost
This code fails in any situation where there's at least one person connected to the server and the ReferenceHub._localHub is null but ReferenceHub._localHubSet is true
Are you by chance doing something with host hub?
Or actually
Most issues come from that xd
if this runds on server you doing something wrong
It fails if there is no local player
idk
Showing more of your code would help
we gonna steal all of them
I think we can agree though that this is still wild
"Yeah if we can't get the local hub we'll just assume it exists"

Of course you NRE there man
I don't have any NPCs in the server
I don't think that's the problem
No not talking about that
are you doing something like
foreach(Player player in Player.List)
private void OnChangedRole(PlayerChangedRoleEventArgs ev)
{
if (ev.Player.IsDestroyed)
return;
if (ev.Player.Scale != Vector3.one)
ev.Player.Scale = Vector3.one;
if (ev.NewRole.RoleTypeId == RoleTypeId.Tutorial && ev.ChangeReason == RoleChangeReason.RemoteAdmin && !ev.Player.IsDummy)
{
if (ev.SpawnFlags != RoleSpawnFlags.AssignInventory && ev.SpawnFlags != RoleSpawnFlags.None)
ev.Player.Position = new Vector3(38, -109, 50);
}
Timing.CallDelayed(0.5f, () =>
{
if (ev.Player.IsDestroyed)
return;
if (ev.NewRole.RoleTypeId == RoleTypeId.Spectator)
{
switch (Plugin.ForceSpawn)
{
case Faction.FoundationStaff:
if (ev.OldRole.IsNtf())
{
ev.Player.Role = RoleTypeId.NtfPrivate;
ev.Player.SendBroadcast("<b>Вы воскрешены за <color=blue>МОГ</color>, с последнего приезда <color=blue>МОГ</color> еще не прошло <color=red>15 сек</color>!</b>", 10);
}
break;
case Faction.FoundationEnemy:
if (!ev.OldRole.IsChaos())
{
ev.Player.Role = RoleTypeId.ChaosRifleman;
ev.Player.SendBroadcast("<b>Вы воскрешены за <color=green>Повстанцы Хаоса</color>, с последнего приезда <color=green>Повстанцы Хаоса</color> еще не прошло <color=red>15 сек</color>!</b>", 10);
}
break;
}
}
if (Plugin.config.CoinSpawn && ev.NewRole.RoleTypeId.IsAlive())
{
if (Round.IsRoundInProgress && !ev.Player.IsInventoryFull && Plugin.random.Next(1, 100) <= 15)
ev.Player.AddItem(ItemType.Coin);
}
if (ev.NewRole.RoleTypeId == RoleTypeId.ClassD)
{
foreach (ItemType item in Plugin.config.DClassItem)
ev.Player.AddItem(item);
}
});
}
?
OnChangedRole
thats why you disconnect the server
this does not seem to do any of what shown before
I presume this error is coming from a plugin you're working on
Do you have the source code posted on GitHub or anything?
can you show the start of your insane log file
Nope
yup you killed localhub / server
Any errors before that?
or the player you wish to broadcast
But how did he get into ChangingRoleEvent?
how would I know?
The problem is in one of your coroutines
probably starting it makes server a NoneRole
Are there any errors before the ones you showed us
^^^^^^^^^^^^^^^
Nope
Then what you're looking for is a coroutine where you send a broadcast to players
[2026-01-15 17:58:21.953 +03:00] [STDOUT] Disconnecting connId=0 to prevent exploits from an Exception in MessageHandler: NullReferenceException Object reference not set to an instance of an object.
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException (System.Object obj) [0x00018] in <0deee1b9576d40a7a211b55014778fa6>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at UnityEngine.Component.get_transform () [0x00006] in <0deee1b9576d40a7a211b55014778fa6>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at CustomPlayerEffects.Scp1344.PlaySound () [0x0000c] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at CustomPlayerEffects.Scp1344.Enabled () [0x00013] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at (wrapper dynamic-method) CustomPlayerEffects.StatusEffectBase.CustomPlayerEffects.StatusEffectBase.ForceIntensity_Patch0(CustomPlayerEffects.StatusEffectBase,byte)
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at CustomPlayerEffects.StatusEffectBase.set_Intensity (System.Byte value) [0x00012] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at CustomPlayerEffects.StatusEffectBase.set_IsEnabled (System.Boolean value) [0x0000a] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at InventorySystem.Items.Usables.Scp1344.Scp1344Item.ServerChangeStatus (InventorySystem.Items.Usables.Scp1344.Scp1344Status status) [0x0005b] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at InventorySystem.Items.Usables.Scp1344.Scp1344Item.set_Status (InventorySystem.Items.Usables.Scp1344.Scp1344Status value) [0x0001a] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at InventorySystem.Items.Usables.Scp1344.Scp1344Item.OnStatusChanged (System.UInt16 serial, InventorySystem.Items.Usables.Scp1344.Scp1344Status status) [0x0000a] in <2074319d08ae411499ec188b6bd916d5>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at (wrapper delegate-invoke) System.Action2[System.UInt16,InventorySystem.Items.Usables.Scp1344.Scp1344Status].invoke_void_T1_T2(uint16,InventorySystem.Items.Usables.Scp1344.Scp1344Status) [2026-01-15 17:58:21.953 +03:00] [STDOUT] at InventorySystem.Items.Usables.Scp1344.Scp1344NetworkHandler.ClientProcessStatusMessage (InventorySystem.Items.Usables.Scp1344.Scp1344StatusMessage msg) [0x00009] in <2074319d08ae411499ec188b6bd916d5>:0 [2026-01-15 17:58:21.953 +03:00] [STDOUT] at (wrapper delegate-invoke) System.Action1[InventorySystem.Items.Usables.Scp1344.Scp1344StatusMessage].invoke_void_T(InventorySystem.Items.Usables.Scp1344.Scp1344StatusMessage)
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at Mirror.NetworkClient+<>c__DisplayClass56_01[T].<ReplaceHandler>b__0 (Mirror.NetworkConnection _, T value) [0x00000] in <8edc8ab9348e47b2ab7e66c903f2b942>:0 [2026-01-15 17:58:21.953 +03:00] [STDOUT] at Mirror.NetworkMessages+<>c__DisplayClass9_02[T,C].<WrapHandler>g__Wrapped|0 (C conn, T msg, System.Int32 _) [0x00000] in <8edc8ab9348e47b2ab7e66c903f2b942>:0
[2026-01-15 17:58:21.953 +03:00] [STDOUT] at Mirror.NetworkMessages+<>c__DisplayClass8_0`2[T,C].<WrapHandler>b__0 (Mirror.NetworkConnection conn, Mirror.NetworkReader reader, System.Int32 channelId) [0x0007a] in <8edc8ab9348e47b2ab7e66c903f2b942>:0
I found
Disconnecting connId=0...
Yeah this is exactly the problem
That means disconnecting the host
yup you killed kenny
Bug we have a developer
Maybe you could just... idk... post the whole log file?
But this is not a plugin error
I cant
Yes it is
You can drop the .txt file in here
There are IP addresses of players
This breaks the rules
There were 50 players on the server at that moment. There are a ton of IP logs there.

Disconnecting connId=0 to prevent exploits from an Exception in MessageHandler means that you did something to cause the host to disconnect and it led to a chain of errors
Good developer kill ConnId=0 first before doing anything in the server
CustomPlayerEffects.StatusEffectBase.CustomPlayerEffects.StatusEffectBase.ForceIntensity_Patch0
this is your patch stuff which causesd it
- You could use something like VS Code's regex find and replace to just find everyting that is num.num.num.num and replace it with a placeholder.
- I personally have a python script to clean up my logs and get rid of all the stuff I don't like
(just letting you know for future reference)
I don't remember making a patch for the effects
my ip is 172.0.0.1, join
u might have other plugins doing it
cedmod, eves secretapi, exiled
secretapi doesnt have a patch for it
Of all other plugins, I only have KnowYourCoroutines
sadge
Exiled
Exiled moment
ok then check exiled
What is the appeal of using Exiled in today's age
I have a lot of plugins that I wrote several years ago. I'm too lazy to rewrite them in LabApi
That's wild
exiled
:(
I got that too, reload it (I did Ctrl+Shift+R to reload css too)
pink fluffy unicorn
github might be down
it's not down fully, it is degraded tho
I mean it's not loading for me either
nvm
Github died 😭
xd
it was me
oh come on
who ate the cables
Crazy
It took me 5 hours to do it
@soft turtle if you wanna take a look and it still isn't loading for you
I'm not breaking the license right?
Okay. I think I should file a bug report at Sexiled
I don't think this is going to help them very much
But the effort is appreciated
they could maybe prefix patch the function and return false, but they would have to do their own implmentation of whatever EXILED is doing which you would need the code for.
we played rounds with goggles on the head and active / unactive and didnt happened these stuff
Yes but that also might not be the issue in the first place
fair enough, it doesn't hurt to send it tho
It's still appreciated
uhh is there a way to know if player and a projectile has collided?
I already tried with monobehaviour script but game only ever detects the floor
Vanilla Portal 2. No Source Code access. 2000+ lines of Rust code and a lot of math.
Introducing our custom PBS (Physically Based Shading) implementation for Project Capture. This system brings modern material properties to brushes without sacrificing performance or stability.
Everything you see is running on the standard game engine.
0:00 Gam...
someone forced source engine to render PBR, it looks good for me it looked like TF2 unity remake
Iirc someone in MER found a solution to this by parenting a invisible primitive to players
And checking the primitive instead of player
PlayerPrimitiveObject
well that could work I think, thanks
pluginning it
I'm pretty sure there's a way to do it but I'll have to get back to you once I refind it
Player and projectiles doesnt normally collide so you will have to enable collisions for that
fiber optic cable restaurants for sharks
source 1 from the csgo engine on has a lot of modern rendering techniques including csm, pbr and others
xengine (black mesa engine) has even more and it's based off the tf2 engine branch lol
Portal 2 mod engines (like statra) is looking good too
clustered rendering in strata looks really good when mixed with pbr
i can say i have first hand experience with it anyway as i have beta test access for p2ce
I only seen vids so
oh and i haven't even mentioned the titanfall engine branch which is derived from the portal 2 engine branch
But they look great tho
source engine engine branches are kinda ridiculous lol
and because alien swarm is the latest post orange box engine branch that's open source it's pretty much the hotspot for portal clones
Xd
Does anyone know about this? I am using RueI, but hints are not working for me. They are not displayed at all. Everything runs without errors, and my setup is 1:1 according to the documentation. Other plugins that also use RueI do not show hints either. This means the issue is with my server, but I don’t know how or why.
This happens if the player is being sent a hint from a different service or plugin feature
You can't use two hint frameworks at the same time, and you can't combine vanilla hints and a hint framework
I only have RueI Hint Framework, so just one.
If you have somewhere in the plugin where you're sending a hint to a player using vanilla options, it also won't work
Bro 💀
It doesn’t work for me.
I tested other plugins that support RueI, and they don’t work either.
I also don’t have normal hints.
So you're 100% confident that, in all the plugins you use on the server, none of them use a different hint framework nor send a vanilla hint at any point in time?
Have you tried confirming this by testing with just one plugin that sends a basic hint using RueI?
Yeah sure
Have you tried confirming this by testing with just one plugin that sends a basic hint using RueI?
Remove all your plugins, and test just 1 RueI plugin that is known to be working
It works now
Question
If you spawn a player in before the round starts, is it possible to get rid of the Waiting For Players screen stuff
I have an idea to test
yeah
I tried this but it didn't immediately work
Bro
i dont remmeber which one it is
Yeah that works too
SpawnMessage
Why is this a thing
Yeah
That'll sync for all players, for a sec I thought you wanted it for 1 player only
I do
i mean they prob do
but you can prob fake the network msg on it
Wait I get it
I hate that I get it
So when the round starts the game just shrinks the text and stuff down to nothing?
Is it better to do spawn message or fake scale
Or unless
Spawn message is just the way to sync scale?
Gg ez
Thank you :)
Np
exiled, secretapi, ass, ssmenu, the one that just dropped
so 5
maybe more
i feel like secretapi + one of the menu ones was all it needed
well id hope so
Does it handle nested settings properly?
the what
Menus
Should have their settings synced when the player joins.
Yeah I can't be bothered to investigate code (I'm in a math class) (idk what to expect from the code) (I could potentially crash tf out)
Real asf
well
theres a transpiler in there
/// Patch to avoid checking <see cref="ServerSpecificSettingsSync.DefinedSettings"/>.
/// </summary>
[HarmonyPatch(typeof(ServerSpecificSettingsSync), nameof(ServerSpecificSettingsSync.ServerPrevalidateClientResponse))]
internal class PrevalidateResponsePatch
{
private static bool Prefix(SSSClientResponse msg, ref bool __result)
{
__result = true;
return false;
}
}
o
they straight up remove validation
No way
Nvm
theres a bunch of transpilers
[HarmonyPatch(typeof(ServerSpecificSettingsSync), nameof(ServerSpecificSettingsSync.DefinedSettings), MethodType.Setter)]
internal static class Compatibilizer
{
private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
{
List<CodeInstruction> newInstructions = ListPool<CodeInstruction>.Shared.Rent();
newInstructions.InsertRange(0,
[
// Comptabilisater.Load(value);
new(OpCodes.Ldarg_0),
new(OpCodes.Call, Method(typeof(Compatibilizer), nameof(Load))),
new(OpCodes.Ret),
]);
foreach (CodeInstruction z in newInstructions)
yield return z;
ListPool<CodeInstruction>.Shared.Return(newInstructions);
}
not to be the one to like question it
but
why is this a transpiler and not a prefix
Transpilers ftw
yes but
when you are literally just
making a method call and a return;
and since its at the start...
basegame is replaced anyway
oh
cuz
interesting stuff
🗣️ 🗣️ 🗣️
I transpile that too
ofc u do
No params IEnumerable 
Maybe we should make an opt-in system to "judge my plugins publicly"
man i reallz wanna do such a thing but would be goated if zou can fake more stuff
English layout
no its us
Why is the SSKeyBind method called twice when I press it?
- Once when I press it
- Once when I release it
Is it possible to disable this, or do I need to check for it myself?
if (!IsPressed)
return;
r u using any SSSS wrappers
or just basegame
Basegame
ew....
but yeah
you can just check for whether its being pressed
if (!keybind.SyncIsPressed) return;
thats rly the way to do it
How?
I just made a cooldown now, but I don't think it's a good idea
Hm
yeah dont do cooldown
just use the sync value
There is no keybinding in ServerSpecificSettingBase
Oh
Ok
if (setting is SSKeybindSetting keybind && !keybind.SyncIsPressed)
yw
i would recommend using some sort of SSS wrapper though
just cuz basegame kinda sucks
but its not necessary, just a recommendation
erm actually
if (setting is SSKeybindSetting {SyncIsPressed: false})
Yes I wrote mine XD
i see
I use basegame
Okay so here's a kerfuffel I have ran into... Hallway indexing is randomizing on a forced seed on Entrance_Straight_Unnamed and the index randomly changes. There's no way to actually force it to a specific instance of smallrooms because I guess we just didn't readd that back
I use ASS 😎
From what I remember having the same seed always generated the same map, I’ll check myself though if hallways in entrance are truly random on the same seed when I get home today
Nice ASS
It’s very functional 😏
I wouldnt had reason to get into it
Only used server settings 1 time and hasn't been bothered to add or change anything on it
The server I dev for has a ton of server specific settings lol so it’s pretty important for me
gang why does this command in CASSIE in RA delay ALL words after the modifier when the docs clearly say it only affects the next work smh
Well thats not the case and it makes the smallrooms unusable
COUGH Northwood stop fucking up my room ID's
They should have kept those rooms separate from Entrance_Straight_Unnamed
I still dont really get what your issue is tbh lol
The serialization of the rooms used to be smallrooms and they keep modifying the parameters
Known issue
Wait a damn minute, I didn't even realized you made it
shameless plug
Gonna be so deadass, I just took all the harmony patches from the original plugin lmao
I also didn't realise that there were so many menu plugins, I just found SSMenuSystem first and I guess just used that one, and then the developer stopped, hence why I made my own based off of it, so I could continue to use the same code and continue to have something I am familiar with, pretty much I took SSMenuSystem, improved the code a shit ton, made it more to my liking and now I'm just sharing it with people
the javascript framework pipeline
?
a new solution must emerge every once in a while, including forks
Um okay, question, there a way to host discord bots in .net4 aka I wanna host discord bot within plugin?
iirc there arent any frameworks that work in .net anymore
iirc d.net just gives you an error
or just implement the gateway connecting yourself

DiscordLab
just make an addon
Danke
I 🐸 t
np
i forged what i was thinking
Happens
Made by you ey, how many things have you contributed to I swear I see you everywhere lmao
huh
I don't know, I swear I see you everywhere
Why do I see you everywhere then O.o
Oh, also might be becasue you northwood staff lol
westlog
eastree
Westoil
centraldiamond
🪵🪵🪵
🪵💠🪵➡️ 📻
🪵🪵🪵
wha
I'm gonna do unspeakable things
VoiceChatChannel.None things?
More like Exception: ConnId=0 disconnected
disconnected from where

Wow, that's like, a lot of dlls
I'd reather be served by the chef (aka you)
I want you to get the biggest spoon you can find and spoonfeed it all to me





