#plugins-dev-chat

1 messages · Page 174 of 1

slate flume
#

Oh wait

#

I'm stupid

#

Visible flags

#

Duh

#

Ignore me

upper vapor
#

Just set the flag Kek

sinful bronze
#

Yeah

upper vapor
#

Also that might not work cuz the collider is recreated on Start

slate flume
#

Yeah I realized my line of thought as I was saying it

#

I forgot about PrimitiveObjectFlags

slate flume
#

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

slate flume
#

I walked into a corner and clipped through the map geometry

upper vapor
#

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 skullbutreal

spare zodiac
#

too much collisions = you go backrooms

upper vapor
#

Yep

#

Are you sure you changed the flags of the boxes?

slate flume
slate flume
upper vapor
#

Show code

spare zodiac
slate flume
upper vapor
#

Why not just

slate flume
upper vapor
#

&= ~PrimitiveFlags.Collidable

spare zodiac
slate flume
#

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

upper vapor
#

I saw "astra" and thought of something else skullbutreal

icy knoll
restive turret
#

Seems to be more error is you set as ntf

slate flume
slate flume
#

Well except it's flipped

wary gust
restive turret
#

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

restive turret
# wary gust 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.

wary gust
restive turret
#

Ye that's why i have zero clue rn

upper vapor
median edge
#

Is allowing player with perks change their nicknames against the csg?

median edge
upper pike
#

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

icy knoll
#

i forgot the class name

#

but you can do smth like

#

GetString("key", "default value")

#

hold on i may have the class name somewhere

restive turret
#

yml config or game config class?

upper pike
#

Yaml

restive turret
#

but this do for basegame

icy knoll
#

no

#

oh wait yaml config

#

ok

restive turret
#

wdym no

icy knoll
#

im thinking of smth else then

icy knoll
# upper pike Yaml

[YamlMember(DefaultValuesHandling = DefaultValuesHandling.OmitDefault)]

#

just add as an attribute to your property

restive turret
#

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

restive turret
#

didnt know that exists

icy knoll
#

it's so useful to have

#

lol

upper pike
icy knoll
#

yeah then use the attribute

#

that will override what labapi does natively

#

I use it in one of my plugins

upper pike
#

What dependency is YamlMember in? Nvm

icy knoll
#

lol

upper pike
#

Yeah, I probably should have looked before I asked

icy knoll
#

nah ur all good

lethal pebble
#

is anyone have plugin to wear schematic on player 😭

upper vapor
lethal pebble
upper vapor
#

Well

upper pike
#

Is there a way to omit the second offset information from the config file and use the default values

icy knoll
#

do attributes not work in structs? never really used em

upper pike
#

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

unique crane
#

Maybe

upper pike
#

I still want the ability to change the SecondPosition in the config file. But if its not included, then use the default value

unique crane
#

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

upper pike
#

Fair enough

upper vapor
#

All my homies hate snake case, make your own serializer and deserializer

upper pike
#

Damn right

#

Thanks for the help everyone

upper vapor
#

Np

slate flume
#

camelCase is so peak

upper vapor
#

It's also peak when you forget to specify the options that should be passed to JsonSerializer toomuchtrolling

slate flume
#

Bro harmony about to make me crash out

upper vapor
tulip kiln
slate flume
#

Empty prefix

upper vapor
#

Erm actually

slate flume
#

And doing that causes my postfix not to work

upper vapor
#

Return true

#

Or just transpile

#

Why do you new for tuples

slate flume
upper vapor
#

-# idk tbh I only have transpilers

slate flume
#

I've had the postfix for ages

#

I'm trying to introduce this prefix

slate flume
slate flume
#

I literally don't even have anything in my method body

slate flume
#

I don't know what this shit just chose to break

slate flume
# slate flume

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

upper pike
#

Is it because it has no parameters or something?

slate flume
#

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

slate flume
# slate flume

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

halcyon folio
halcyon folio
#

More advanced than Postfix/Prefix

restive turret
#

it prob skips the postfix cus of the fucked up prefix

slate flume
#

I have like over a dozen handmade transpilers

#

I'm saying they don't fix anything in this use case

halcyon folio
#

cool

halcyon folio
#

okay

slate flume
#

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

halcyon folio
#

I mean sorry I don’t know who you are

slate flume
#

I apologize if I'm being rude just I'm genuinely so frustrated

halcyon folio
#

Or what you did prior

#

😒

restive turret
#

remove your code fixes the issue TrollDespair

slate flume
halcyon folio
#

Anyways, I won’t continue more

#

Pretend I’m not here

slate flume
upper pike
#

The postfix is skipped but the actual method still runs perfectly fine right?

slate flume
#

@restive turret I FUCKING LOVE YOU

slate flume
#

I needed to check declaring types to see if they were overriden

restive turret
#

Lmao

slate flume
#

This day has turned around quite swimmingly

restive turret
#

I also found continuation of your NRE issues

slate flume
#

The issue runs deep lmao

#

It's like one of the magician's scarf tricks

restive turret
#

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

slate flume
#

Yep

restive turret
#

Means it run like this

  • Destoy RefHub
  • Run action with refhub
  • oops nre
#

Hopefully guarding with null checks will fix it ClassDTrollHD

slate flume
#

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

restive turret
#

Had other issues tbh idk if you saw that but if you spawn it as one that has ammo it throws too

slate flume
#

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

restive turret
#

More like didn't expect to destroy the same frame (or next one) after created

slate flume
#

Yeah

#

I don't envy you right now lol

upper vapor
slate flume
#

I don't mean this in a mean way or anything that's just so funny

upper vapor
slate flume
#

Thank you

upper vapor
#

Java mentioned

#

Unsafe.getUnsafe()

#

Ahh

slate flume
#

Lmao real shit

#

You know I was disappointed to find out today that CollectionsMarshall doesn't exist in Framework 4.8

upper vapor
#

Yep

#

🥲

slate flume
#

Would've made all my dreams come true

upper vapor
#

Publicize mscorlib

#

Oh nvm is in System.Core

slate flume
upper vapor
#

i don't know which one hoenstly

slate flume
#

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

upper vapor
#

why does discord scroll up in the channel when i press up in the fav gifs selector

upper vapor
#

use arrays if possible

#

they're a tiny bit faster in .net framework

#

(compared to lists)

slate flume
upper vapor
#

oh

slate flume
#

It's cause I was lazy

upper vapor
#

ummmmmmmmmmm

#

uhhhh

#

ummmmmm

slate flume
#

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

restive turret
slate flume
#

I didn't know that

#

...

restive turret
sinful bronze
#

bug we have a developer

cyan crown
#

we a have bug developer

#

lmao

#

get good kid

#

@languid temple

#

remove this kid from here

#

yeah buddy i don't remember asking

#

!langru

regal lakeBOT
#

Привет, это англоязычный сервер. Вы можете присоединиться к [официальному](#partnered-servers message) или [локализированному](#partnered-servers message) русскоязычному серверу.

upper vapor
#

there's no night without midnight skullbutreal
night starts after 8pm and ends at 6am
so it will always have midnight (12 am)

#

what

upper vapor
#

how many more of these do you got

cyan crown
upper vapor
#

lmfao

#

never lose your crack

cyan crown
#

i bet some SL gamer slammed the shit out of this bot that's why he started using cheats

upper vapor
#

huh

cyan crown
#

this Spr1 guy

upper vapor
#

riiiight

#

moral of the story: don't install cheats

#

you'll get deported

upper vapor
#

if you really wanna modify the game, you gotta do that in offline mode and no AC and no server list

#

what plugin

subtle ravine
#

Could you show the code of the plugin?

upper vapor
#

😭

cyan crown
#

using chatgpt

#

☠️

subtle ravine
#

But something had to be made already no?
You can show part of the code

dreamy pumice
upper vapor
#

can you elaborate on the project

subtle ravine
#

What does it do then

upper vapor
#

what is blud yapping about

subtle ravine
#

But SL is at night

#

There's moon at the sky

#

And stars

#

So?

regal lakeBOT
#

Привет, это англоязычный сервер. Вы можете присоединиться к [официальному](#partnered-servers message) или [локализированному](#partnered-servers message) русскоязычному серверу.

upper vapor
#

so are you gonna make it with exiled or labapi

upper vapor
#

i love having to accept the unity eula every time i wanna launch the same editor

halcyon folio
#

You were in the Exiled discord at some point?

teal junco
#

Was axwabo in exiled?

#

Lowkey dont know

upper vapor
upper vapor
median edge
#

Would I be against the CSG if I conduct tests with a copy of Midnight?

hearty shard
#

so not verified

#

also

#

you have to run the game in offline mode

#

and even then you risk getting banned by AC

upper vapor
#

the EULA explains the requirements for running a modified client

#

and don't post a video of you cheating Clueless

median edge
#

🙃

sinful bronze
#

just say what it's RA update

restive turret
#

what

mild ice
# median edge Would I be against the CSG if I conduct tests with a copy of Midnight?
  1. 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
mild ice
#

Not recently kek

#

That has always been there

hearty shard
#

oh

hearty shard
#

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

mild ice
#

Using cheats in general is just a terrible idea

median edge
#

I wanted to make some kind of midnight detection

hearty shard
#

as in make the anti cheat

median edge
#

That was my doubt

#

Glad I asked

hearty shard
#

i rememebr it being said it was allowed on offline

#

but

#

i suppose not

glad pagoda
glad pagoda
#

and ofc wait for reply

charred sparrow
#

how to teleport to pocket when the player is first attack by 106

#

🤔

static meteor
#

Check the damage handler when the hurt event is triggered and see how players are teleported in 106's source

unique crane
#

the effect itself teleports the player

charred sparrow
#

hmmm
just like this?

unique crane
#

That should do the trick yea

charred sparrow
#

thanku❤

halcyon folio
barren pasture
#

Is there a way to reload the plugins of a server without restarting the server?

barren pasture
# charred sparrow hmmm just like this?

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)

barren pasture
#

Damn

true cedar
#

i dont know if sl has a base game thing for it

static meteor
#

You would need a plugin to do it

true cedar
#

but if u set up ur plugins correctly

#

yea

barren pasture
#

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?

slate flume
#

Guys I finally get to be a server host

#

I'm so excited

slate flume
#

Hey so what's up with 1509

#

I was experimenting with

upper vapor
slate flume
slate flume
slate flume
#

It does when it's not friendly fire

#

But when it is, it doesn't run

#

Unlike every other damage source

upper vapor
#

Would you be surprised if the attack check is client side

slate flume
#

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

upper vapor
#

I fucking hate gitlab sometimes

#

Oh 1509

#

Not flamingos

slate flume
#

Yeah

upper vapor
#

So if you look at MeleeAutosyncItem.ServerAttack

#

It reads a referencehub

#

So uh

#

It still checks for destructibles though

slate flume
#

What?

#

Why does that matter

#

The client sends a reference hub because it believes friendly fire is enabled

upper vapor
#

Does it send it?

#

Society if we had 1509ProcessingMessageEvent

slate flume
#

The only thing that doesn't work is the fact that the playerhurting events aren't running

upper vapor
#

It yeah

slate flume
#

The problem is somewhere along the way with the melee it tosses it out (on the server side)

upper vapor
#

I'm 99.9999% sure you haven't registered the handler

slate flume
#

What do you mean

upper vapor
#

The event should fire

#

Add some log statement

slate flume
#

The event doesn't fire

#

This produces no log

upper vapor
#

I'm looking at gitlab (pain) and the code path looks perfectly normal

upper vapor
#

Put it outside the if maybe?

slate flume
#

Sure

upper vapor
#

I can try to test this in like 20 minutes

slate flume
#

Still nothing

#

The event doesn't fire for melee weapons

slate flume
upper vapor
#

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

slate flume
#

🔥

#

Well I'll be around

#

Thank you

upper vapor
#

Np

upper vapor
#

I'm going to...

#

Okay

#

I was right

#

ClientTryAttack has an FF check

#

The charge attack is handled by the server though

restive turret
#

Boiiiing

upper vapor
#

Look at JailbirdItem.UpdateCharging

#

Like what am I reading

restive turret
#

Code

#

Obv

upper vapor
#

Even then, why does it detect an FF hit on the client

upper vapor
restive turret
#

Hi

#

I just woke up

upper vapor
#

Getting up is not stonks

restive turret
#

Going back to bed after i ate my breakfast

slate flume
#

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

hearty shard
#

Chat is this real

slate flume
#

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

upper vapor
#

Ain't no way boi

#

I'm gonna commit several ||lines of code||

slate flume
#

Fake sync friendly fire to the client and see if the hurting events run

upper vapor
slate flume
#

That's epic

slate flume
#

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

charred sparrow
#

how to check if a player is playing snake🤔

slate flume
charred sparrow
#

hmmm

#

public static bool IsInspectKeycard(Player player)
like this

slate flume
#

That's what I mean by "use case"

charred sparrow
#

prevent being kicked by afk check🤔

slate flume
charred sparrow
#

Cannot resolve symbol 'StartInspectTimes' :(

slate flume
charred sparrow
#

nope

slate flume
#

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);
}
charred sparrow
#

i see it

#

aha

#

ty❤

slate flume
#

Of course :)

slate flume
#

It's interesting that this case is considered different

restive turret
#

Tbh there is other type of check which check for FF (i think?)

#

Nvm you are wrong it checks for AllowFriendlyFire too

slate flume
#

What do you mean I'm wrong

restive turret
#

Go into that method

#

AllowFriendlyFire || IsEnemy(hub, victim)

slate flume
#

So?

restive turret
#

It checks for ff

slate flume
#

And?

restive turret
#

It fails on IsEnemy

slate flume
#

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

restive turret
#

Can you try FF enabled on both side and not faking it

restive turret
#

To check if it runs the damage stuff

slate flume
#

It does

#

I don't need to enable it to tell you that lol

restive turret
#

Then idk cant help you then

slate flume
#

"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

slate flume
#

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

restive turret
#

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

slate flume
#

I hope I'm not coming off as rude 😅 I'm just trying to bridge the gap here

restive turret
#

No, I can handle more rudeness idc about that

untold raft
#

Why movement boost effect not work if player hold micro hid?

restive turret
#

It limits the movement

untold raft
#

why item limits effect lol

#

Cola has different effect

slate flume
#

They placed a 5.4m/s movement speed limit

#

It happened some months ago

untold raft
#

Bruh

slate flume
#

.

#

No, it cannot be removed

#

I've been complaining about it since August last year

untold raft
#

Any plan to revert?

slate flume
#

Nope

#

Sorry to be the bearer of bad news

untold raft
#

someone in NW must hate sweaty players hahaha

slate flume
#

If you had any plans to increase a player's speed when they're holding Micro, you should scrap them

slate flume
untold raft
#

But there is no way to patch it XD

slate flume
#

It's completely client-side

#

Trust me I tried

untold raft
#

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.

slate flume
#

The exact argument I made 5 months ago

#

🗣️

restive turret
slate flume
#

It's a minor thing and something we can fix on the server-side with one patch

#

Prioritize the bigger stuff

sinful bronze
#

Copilot is code reviewer???

#

how to remove github

upper vapor
#

One method to rule them all

#

(Not exactly possible with just one method)

slate flume
#

Nah one method trust

#

Just give it like 50 parameters

upper vapor
#

Okay one method

#

2 records

slate flume
#

🔥

#

Also SCP-1509 range is so much larger than I thought

upper vapor
#

record DamageContext
record InstantDamage(minecraft reference, ReferenceHub attacker) : DamageContext
record DelayedDamage(idk bruh) : DamageContext

#

-# it's instant harming but wtv

restive turret
#

dont harm yourself

slate flume
#

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

restive turret
#

@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.
slate flume
#

It shouldn't be rechecking HitboxIdentity.IsDamageable before running ApplyDamage, as that's already handled as part of ApplyDamage

#

You get what I mean

upper vapor
slate flume
#

I'll do it in a while

#

I've got a few things I'm making first

upper vapor
#

aight

slate flume
#

Base-game or labapi?

upper vapor
#

could be either ngl 😭

#

it might make more sense to report it on github cuz the event doesn't fire

slate flume
#

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

topaz yacht
#

Just checking, we can't change the fire rate of guns right?

static meteor
#

No it won't sync with clients

restive turret
#

As that ever could be done

slate flume
soft turtle
#

Does anyone know how to trigger this error?

restive turret
#

refhub being null??

soft turtle
restive turret
#

how would I know? what did u even do??

soft turtle
#

FacilitySoundtrack.AloneSoundtrack.UpdateVolume
Why is the sound check handled on the server?

slate flume
soft turtle
slate flume
#

Have you traced the call?

restive turret
#

one of your ReferenceHub is null

#

or its CurrentRole

#

or its roleManager

#

even in my NRE test i couldnt replicate it

soft turtle
slate flume
soft turtle
#

Although no. I don't know what the problem is

slate flume
restive turret
#

both of the role!

slate flume
#

Wait wait wait wait

slate flume
#

If TryGetLocalHub fails, then it tries to access it in IsEnemy

#

This is a NW bug

#

No?

restive turret
#

if TryGetLocalHub it fails before going to the loop

#

wait a second

slate flume
#

If TryGetLocalHub fails it goes to the else

#

Then the else assumes the hub exists

restive turret
#

null checks my ass

slate flume
#

This is so fire

restive turret
#

anyway gimme reproduction steps @soft turtle

slate flume
#

What is local player supposed to be from the perspective of the server

#

I'm a little lost

restive turret
#

well supposedly itself

#

the 0th or 1th ID

slate flume
#

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

unique crane
slate flume
#

Or actually

unique crane
#

Most issues come from that xd

restive turret
#

if this runds on server you doing something wrong

slate flume
#

It fails if there is no local player

unique crane
#

Showing more of your code would help

restive turret
#

we gonna steal all of them

slate flume
#

"Yeah if we can't get the local hub we'll just assume it exists"

#

Of course you NRE there man

soft turtle
#

I don't think that's the problem

unique crane
#

No not talking about that

slate flume
#

Every server has a host player

#

If you mess with it, things can go bad

unique crane
#

are you doing something like
foreach(Player player in Player.List)

soft turtle
#
        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);
                }
            });
        }
unique crane
#

?

soft turtle
#

OnChangedRole

restive turret
restive turret
slate flume
restive turret
#

can you show the start of your insane log file

restive turret
#

yup you killed localhub / server

slate flume
restive turret
#

or the player you wish to broadcast

soft turtle
restive turret
#

how would I know?

slate flume
restive turret
#

probably starting it makes server a NoneRole

slate flume
slate flume
slate flume
#

Then what you're looking for is a coroutine where you send a broadcast to players

soft turtle
#

[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...

slate flume
#

That means disconnecting the host

restive turret
#

yup you killed kenny

unique crane
#

Bug we have a developer

slate flume
soft turtle
slate flume
slate flume
soft turtle
#

There are IP addresses of players

soft turtle
slate flume
#

Ah

#

Usually I just delete the IPs and send it

soft turtle
#

There were 50 players on the server at that moment. There are a ton of IP logs there.

slate flume
#

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

restive turret
#

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

wary gust
soft turtle
hearty shard
restive turret
#

cedmod, eves secretapi, exiled

hearty shard
soft turtle
restive turret
#

sadge

soft turtle
slate flume
#

Exiled moment

hearty shard
slate flume
#

What is the appeal of using Exiled in today's age

soft turtle
slate flume
#

That's wild

upper vapor
#

exiled

upper vapor
wary gust
# soft turtle

I got that too, reload it (I did Ctrl+Shift+R to reload css too)

upper vapor
upper vapor
#

github might be down

soft turtle
upper vapor
#

oh i'm excited for the video from primeagen

#

and fireship

wary gust
upper vapor
#

partially down

#

party-ally

restive turret
#

loaded for me

#

seems to be skill issue on yo part

slate flume
#

I mean it's not loading for me either

restive turret
#

nvm

soft turtle
restive turret
#

i hit F5 and died

#

thank you omega for killing github

upper vapor
slate flume
sinful bronze
wary gust
upper vapor
sinful bronze
slate flume
sinful bronze
#

It took me 5 hours to do it

wary gust
#

@soft turtle if you wanna take a look and it still isn't loading for you

#

I'm not breaking the license right?

soft turtle
slate flume
#

But the effort is appreciated

wary gust
restive turret
#

we played rounds with goggles on the head and active / unactive and didnt happened these stuff

slate flume
wary gust
#

fair enough, it doesn't hurt to send it tho

slate flume
#

It's still appreciated

white badge
#

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

cyan crown
#

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...

▶ Play video
#

someone forced source engine to render PBR, it looks good for me it looked like TF2 unity remake

static meteor
#

And checking the primitive instead of player

restive turret
#

PlayerPrimitiveObject

white badge
tepid pivot
#

pluginning it

slate flume
unique crane
pulsar locust
pulsar locust
#

xengine (black mesa engine) has even more and it's based off the tf2 engine branch lol

restive turret
#

Portal 2 mod engines (like statra) is looking good too

pulsar locust
#

i can say i have first hand experience with it anyway as i have beta test access for p2ce

restive turret
#

I only seen vids so

pulsar locust
#

oh and i haven't even mentioned the titanfall engine branch which is derived from the portal 2 engine branch

restive turret
#

But they look great tho

pulsar locust
#

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

upper vapor
#

Xd

west tide
#

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.

slate flume
#

You can't use two hint frameworks at the same time, and you can't combine vanilla hints and a hint framework

west tide
slate flume
west tide
#

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.

slate flume
slate flume
# west tide 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

upper vapor
#

Yeah

#

Also make sure you've installed RueI as a plugin, not as a dependency

west tide
#

It works now

slate flume
#

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

slate flume
#

I tried this but it didn't immediately work

hearty shard
#

you need to change the gameobjects scale

#

RoundStart.singleton i think

slate flume
#

Bro

hearty shard
#

i dont remmeber which one it is

upper vapor
#

SpawnMessage

hearty shard
#

RoundStart.singleton.transform.localScale = new(0, 0, 0);

slate flume
#

Why is this a thing

upper vapor
#

Yeah

#

That'll sync for all players, for a sec I thought you wanted it for 1 player only

hearty shard
#

i mean they prob do

slate flume
#

1 player only

#

😁

hearty shard
#

but you can prob fake the network msg on it

slate flume
#

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?

upper vapor
#

Ah yeah then just SpawnMessage

#

Get inspired by SendSpawnMessage and create your own

slate flume
#

Is it better to do spawn message or fake scale

#

Or unless

#

Spawn message is just the way to sync scale?

slate flume
upper vapor
#

Np

slate flume
#

That's 4 now?

hearty shard
#

so 5

#

maybe more

slate flume
#

So fire

#

Can we get another half dozen

#

I wanna use every wrapper in one project

hearty shard
#

i feel like secretapi + one of the menu ones was all it needed

slate flume
#

I like SecretAPI

#

So fire

hearty shard
#

well id hope so

upper vapor
hearty shard
upper vapor
#

Menus

upper vapor
#

Should have their settings synced when the player joins.

upper vapor
hearty shard
#

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

upper vapor
#

No way

#

Nvm

#

I was life

#

Like

upper vapor
hearty shard
#

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

upper pike
#

Transpilers ftw

hearty shard
#

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

upper vapor
upper vapor
hearty shard
upper vapor
#

Maybe we should make an opt-in system to "judge my plugins publicly"

restive turret
# slate flume Gg ez

man i reallz wanna do such a thing but would be goated if zou can fake more stuff

upper vapor
#

English layout

restive turret
#

no its us

upper vapor
#

Still english

#

Among us

soft turtle
#

Why is the SSKeyBind method called twice when I press it?

  1. Once when I press it
  2. Once when I release it
    Is it possible to disable this, or do I need to check for it myself?
hearty shard
#

r u using any SSSS wrappers

#

or just basegame

soft turtle
hearty shard
#

ew....

#

but yeah

#

you can just check for whether its being pressed

#

if (!keybind.SyncIsPressed) return;

#

thats rly the way to do it

soft turtle
soft turtle
soft turtle
hearty shard
hearty shard
#

yw

#

i would recommend using some sort of SSS wrapper though

#

just cuz basegame kinda sucks

#

but its not necessary, just a recommendation

upper vapor
#

if (setting is SSKeybindSetting {SyncIsPressed: false})

hearty shard
#

true

#

but

#

flip u

soft turtle
hearty shard
#

i see

soft turtle
#

But it is very simple and is needed so that just a few plugins can use SS

restive turret
#

I use basegame

snow pulsar
#

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

soft depot
soft depot
restive turret
soft depot
#

It’s very functional 😏

restive turret
#

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

soft depot
#

The server I dev for has a ton of server specific settings lol so it’s pretty important for me

restive turret
#

We have like 3 ish

#

But if would be much i would look into it and stuff but nyeh

soft depot
#

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

snow pulsar
#

COUGH Northwood stop fucking up my room ID's

#

They should have kept those rooms separate from Entrance_Straight_Unnamed

soft depot
#

I still dont really get what your issue is tbh lol

snow pulsar
#

The serialization of the rooms used to be smallrooms and they keep modifying the parameters

restive turret
upper vapor
covert flame
#

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

upper vapor
#

the javascript framework pipeline

covert flame
#

?

upper vapor
#

a new solution must emerge every once in a while, including forks

covert flame
#

Um okay, question, there a way to host discord bots in .net4 aka I wanna host discord bot within plugin?

harsh thorn
#

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

harsh thorn
#

oh yeah that exists

#

i forgot

upper vapor
#

just make an addon

covert flame
restive turret
#

I 🐸 t

upper vapor
#

np

upper vapor
restive turret
#

Happens

covert flame
# upper vapor np

Made by you ey, how many things have you contributed to I swear I see you everywhere lmao

upper vapor
#

huh

covert flame
#

I don't know, I swear I see you everywhere

upper vapor
#

i have contributed 1 PR

#

to discordlab

covert flame
#

Why do I see you everywhere then O.o

upper vapor
#

yeah i have a few commonly used stuff

#

e.g. moderatortools

covert flame
#

Oh, also might be becasue you northwood staff lol

upper vapor
#

southiron

harsh thorn
#

westlog

upper vapor
#

eastree

unique crane
#

Westoil

restive turret
#

centraldiamond

upper vapor
unique crane
#

wha

upper vapor
#

jukebox crafting recipe

#

diamond in the center

restive turret
#

I'm gonna do unspeakable things

upper vapor
restive turret
#

More like Exception: ConnId=0 disconnected

upper vapor
#

disconnected from where

restive turret
covert flame
upper vapor
#

it's like a self-service restaurant

#

take what you want

covert flame
#

I'd reather be served by the chef (aka you)

upper vapor
#

download select * from discordlab

#

i don't actually use it

covert flame
#

I want you to get the biggest spoon you can find and spoonfeed it all to me