#plugins-dev-chat
1 messages ยท Page 47 of 1
ask chatgpt
My grandma can help better than chet gipiti
Aha so the ratio itself is NaN
i believe its a leftover from old sl
with unet you had to do it like that
iirc
and was just never changed with mirror
:D
maybe old mirror versions too cuz mirror was based on unet
Hmmm
That's means the deadamount returns nan
David fix david
As a IDA malware picture said in reverse:
While I sleep you work.
While your at it can you fix eve too?
slejm moment
No
Eve fix u
that'd be cool
So wait @unique crane your fixes would mean ServerSetRole would send the role sync info and then run PlayerChangedRole on the same frame right?
If so - that'd be sweet because I'm finding more and more of our plugins breaking in weird ways because of the delay now hah
made the assumption that ServerSetRole would run OnPlayerChangedRole a lot in our code
which is fine since that was the case but not anymore
is the scp blink black screen triggered by the server?
how i can check if the players already can join to the server?
like Round.WaitingOnPlayers or something
They'll be able to join then yes
?
It's called by the host player when its character class manager is initiated
That's around the time players will join
So you can just use WaitingForPlayers
Just witnessed a reverse NW moment
didn't think that bug would be fixed that fast
oh wtf? its policy to delay fixing bugs by atleast 3 months
ill report this, thanks for the report :D

Yes but again
Do not take this as confirmation of it being in the next update
Of course yeah
Fixed the bugs I had for now, but crossing my fingers that's the case 
I'm starting to be annoyed at myself for the patches
I'll add in another one to compensate
Sorry for fixing it

you fixed it? :O
nice
are you allowed to explain what was going on or nah
because i'm hella curious how something like that happens heh
was this due to division by zero?
Yep
:3333
Max health was 0 for 1 frame after role changed
well that's lovely, innit
Maybe when I get out of bed
So one thing I've noticed is that very occasionally, when a player jumps on the very edge of some kind of ledge, they continue make the jump client-side and keep going, but a couple seconds later lag-back to under the ledge as if they didn't make the jump
Is there a way I can fix that
nop
Whatever SL does for networked movement is very prone to disagreements between client and server
Yes there is slight issue with the movement system
especially if you have higher packet loss
and go around corners quickly
disable anticheat 
-# except it's against the VSR
No its not anticheat
Its that it takes last position from you
and moves you towards it
so if you stand behind a wall
go around
but in meantime you have packet loss
and then stop behind
the server will try to move you simply forward
colliding with the wall
Kinda feel like that's not really fixable without rewriting how movement is done in SL
Interesting
unless you just accept the client's request
Cheaters: haiiii
yeah
like yeah you can fix the rubberbanding by trusting clients blindly
pros: no more rubberbanding
cons:
i love that gif
SL's movement was like, my number one gripe with the game for a while
Instead of moving people to position sent by the client, why not use an input buffer that runs the inputs the player gave to verify movement?
especially old servers room
that's generally the way it's done for games like SL
but, it wasn't done that way
Can't since it'd need to be implemented on the client as well
Sadly yeah
So unless NW one day decides they wanna rewrite movement, no luck
๐คท๐ผ
Well the issue here is simply on the server
Guess I might just have to make the skill jumps I made a little easier
To compensate for server network lag
You just have to work with all the packets that arrive at once
cause its reliable ordered
Your desired position
From which the server moves towards to
and your desired rotation
and whetever you want to jump
Teleport :trol:
Only time when server fully trust your position input is when you have noclip enabled
which is like..
makes sense
I could maybe write code that does rudimentary pathfinding to determine obstructions and then use that to determine whether or not to accept the client position
But that sounds like a lot of work
open up applications so I can rewrite the entirety of the networked movement system, get it merged, and quit
๐
Open up application so Cyn find and fix bugs
Half the time I'm doing skill jumps I get rubberbanding
Also can we get rid of toilet light flickering
It's made playing SCPs like 3114 and 939 SO frustrating because when players are jumping around, you need precise input + movement
so he can make SLFine
Please, I want them GONE
-# OptiFine
Answer
don't want them to take fall damage after teleporting them
why isn't there a setting for that
Oh yeah
there's a method on the fpc motor
Is there a way to fix the Lantern flicker
kill
There are so many place where you can do settings
Or is that client-side
No
Shit
Dont use it
Had the same issue
Lantern
ResetFallDamageCooldown()?
Cant do shit with it ๐ญ
when you toggle it off
yes
FpcMotor.falldamageTime = float.NaN 
i'm mathing up some checks so that one of our SCPs that can teleport a player to the position of the ping doesn't push the player through the floor
(โฏยฐโกยฐ)โฏ๏ธต โปโโป
there's an accessibility setting for needles but not for flickering like ๐ญ๐ญ๐ญ
David, can you stay up late and fix every bug in the game? It'd be a huge help
it sucks
๐๐ผ
Inside the wall
it placed it above the room
which is better than falling to their death in the void but like
ehh
As happened one of the times for puppet in a video
the ping itself?
the player
Can you ping the Surface roof?
add the normal of the ping to the position
don't think so
Damn
already do
oh aight
doesn't fix it if I ping the wall close to the floor
- vector3.one
because yeah, you'll be away from the wall, but you'll be halfway inside the floor
If (pos == isFloor) break
or,
needs to be a little more solid than that
Vector3.one * player.transform.localScale.y
I love when my code has like 14 sanity checks just in case something breaks
I dont do checks cus nothing can break
I don't wanna place the player higher than it needs to be
the idea is that it places the player just high enough to touch the floor
or as close as possible to that
I've had to resort to using ReferenceEquals(x, null) on some items because the compiler bitches when I do something like ev.Player == null
only add vec3.one if the normal is up
or almost up
But sometimes the player actually is null lmao
Lmao
doesn't work well enough
Ye
Player can't be null though
Skill issue
ev.Player.ReferenceHub != null
how can the player be null ๐ญ
Only time it can is like
which event
Player.Get()
What I know is
I had events that were breaking
And then I started doing ReferenceEquals(ev.Player, null)
And it fixed
you can still check for null the normal way
what events
i guess this is easier to make the compiler stfu
๐ฆ
Me when I turn off Warn & Info in VS 
Pick-up being null
ev, ev.Pickup, and ev.Pickup.Serial are all non-nullable
what
Serial is int
*ushort
you stupid
how many NREs have you caused
What's nre
I no longer get NREs
0
Because I ReferenceEquals(ev.Pickup, null)
do you just put a null check everywhere
๐ญ
You have to check IsDestroyed on wrappers
Before accessing properties that read from Base
ArgumentNullException.ThrowIfNull
๐
Player can't be null
But
is that in .net standard?
ever
It was
I was getting NREs
Unless you patched something out
I added the check
Idk porb not
No more NREs
cuz we def have that in .net 8
I literally don't know what to tell you other than that check the player for null resolved all of my issues
I was getting NREs every round without it
Now I get none
I do have patches but they don't do anything that complicated
Silent patch making every .Get function returning null 
My guess was just that sometimes it calls OnPlayerChangedRole when a player leaves, so some aspect of ev.Player that I was checking was null
So when I check ev.Player for null, it also kind of "verifies" that
Yes that can happen
So yeah
Player is sometimes null
Just only when the player doesn't exist
So I use
ReferenceEquals
My king
Seems like missing null check in the attachments code
Did you fixed it david
fixed what
That'll fix it
im gonna go insane trying to figure out the correct way to find a valid spot for the player
Huh?
I'm teleporting a player where I ping with 079
Except if you ping a wall, but at floor level, the player just phases through the floor
our players are unhappy about it so I'm trying to handle most cases where that could happen

What if you do a Raycast
Does SL have a way of determining if a point is inside a room?
To determine the floor
trying that atm, was doing capsule casts
Baller
Raycast towards ground
and if it hits, move it like 1f up
i'm using the controller's height & radius so I can be exact
there's no room in SL with holes in the ground right
like, floor that isn't fully solid
I don't think so but i'm wondering before I do raycasts
not talking about rooms with pits
mostly don't wanna cast to the floor and go through like a tiny hole or something (even though the player is standing on the floor)
but i don't think SL has any room like that
No i don't think there is such

Yeah, but Disconnect event isn't fired for Dummies
R u sur
No, i wanted to ask but forgot the ?
Is there not NullOrEmpty check ?
string.Is....
There is, just didn't use it
I'm paranoid from the NWPluginAPI days where the .Get always failed
Just wondering
is the 079 ping ratelimit clientside
or can I reset the ratelimit on the server
heh
Well can you show us server log..?
especially if ur given that kick reason on the client
local admin logs ?
show local admin log
check local admin logs
not server logs
doesn't happen to us
my guess is you have an exception in the event handler
that's called during the rpc handler
[2025-06-19 09:17:46.092 +00:00] Authentication token of player 76561198149956030@steam has been confirmed by central server.
[2025-06-19 09:18:52.543 +00:00] [STDOUT] NullReferenceException: Object reference not set to an instance of an object
[2025-06-19 09:18:52.544 +00:00] [STDOUT] at AlphaWarheadActivationPanel.Start () [0x00000] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] Disconnecting connId=2 to prevent exploits from an Exception in MessageHandler: NullReferenceException Object reference not set to an instance of an object
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at Mirror.NetworkBehaviour.get_isServer () [0x00006] in <ae599454e38d4008a675271403de09db>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at Mirror.NetworkBehaviour.SendRPCInternal (System.String functionFullName, System.Int32 functionHashCode, Mirror.NetworkWriter writer, System.Int32 channelId, System.Boolean includeOwner) [0x00023] in <ae599454e38d4008a675271403de09db>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at AlphaWarheadActivationPanel.RpcGranted () [0x00006] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at AlphaWarheadActivationPanel.set_IsUnlocked (System.Boolean value) [0x00021] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at AlphaWarheadActivationPanel.ServerInteractKeycard (ReferenceHub ply) [0x00038] in <d9731e675e55453197cf28cd60eed3f2>:0
[2025-06-19 09:18:56.577 +00:00] [STDOUT] at AlphaWarheadActivationPanel.ServerInteract (ReferenceHub ply, System.Byte colliderId)
thats a mirror error

ur serveer might be broken
this is erroring with null ref
so permsIndicator / nfcScanner
@full wedge Can you show us the code thats causing this?
As I do not see any labapi methods in the stack trace
Well then you might want to reinstall your server
well
your specific server
is having issue
i havent heard this
it has to be basegame
or... you issue
if you had a plugin fucking up i'd say yeah
but its weird
thought you said no plugins
i thought you said you had no plugins
I mean I can
@full wedge Can you confirm the issue on BLANK server
i have seen nuke go off without issue
No plugins
"no plugins"
yeah sure buddy
Whats this then?
Well can you remove the plugin
and replicate that issue
and send me that log?
No
Clean server
no plugins
Hm?
Well I dont see any exception in that log + there is still a plugin loaded
string.IsNullOrEmpty takes care of this
Oh eve had answered already
Rename the .config/LabAPI directory temporarily and see if it still happens
If it doesn't, test the occurrence per every separate plugin enabled, and go to its author
day 3 of waiting for scp proximity chat plugin :3
be the change you want to see
wouldn't be that hard
especially with custom keybinds to switch between scp chat and prox chat
what's the roadblock
some volume mishaps
I need to write docs
And hopefully NW fixes the speaker toy volume bug
I don't wanna amplify it on the server 
huh
i can help, you just have to link the repo ๐ญ
It took an hour to write it lol
ax i hate you
hey ax is awesome, dont diss them
then it shows on the side
smh
Uh
Nuh uh
Dependency on another repo I haven't released yet
Surprise
nw moment
I hate me too
it just checks if ur scp then shows u on side 
big nw moment
Just spawn multiple speakers with the same controller id to make them louder
ยฏ_(ใ)_/ยฏ
When we deporting eve?
True...
that's what we do
bruh, hopefully u got ur solution coming soon then as i trust ur code better than my own lol
works perfectly fine
It's gonna be big
woah woah woah
From Denmark? I support that
Not to Proximity chat
But the framework I'm using
XENOPHOBIA?!??!!
Countrism
With absolutely nothing in the labapi plugins directory?
i thought you were only gunna use secretapi ๐ญ
Yipeee I love dependencies
real
But its alright
It's useful though
And you don't need the dependency of the dependency if you only have proximity chat
we still arent on the javascript 500MB dependencies
Also I can just release pxc with a dependencies zip
ive gotta migrate all these to labapi (except some already have labapi versions im just lazy)
yes migrate exiled to labapi
Dam
shush
iphider
ignore the exiled specific plugins
lumi moment
what
I have that too
it's a useful plugin
Don't wanna expose my IP if I'm streaming LA
i dont wanna see ips
i dont do ip bans
i banned my staff from doing ip bans also
so


cedmod alt detection gets rid of the stragglers
:3
anyway
does anyone know if it's possible to like have 2 configurations set at the same time during building?
Wdym?
like my plugin timers has 2 configurations for ruei and hsm
(it can, SL does it)
but i also want exiled and labapi support
guh
so instead of
#if EXILED-RUEI || LABAPI-RUEI I can just do #if RUEI
and then have #if EXILED in the right places
idk if it's possible so
so I'd need a define constants with like exiled or labapi inside of it or smth before i build
<PropertyGroup Condition="$(DefineConstants.Contains('EXILED-RUEI')) or ...">
<DefineConstants>$(DefineConstants);RUEI</DefineConstants>
</PropertyGroup>
actually you can embed the defineconstants directive in another property group but then put the condition on it
wait so i make a build condition based on all of this and then just in the csproj, make it so it filters
hmm
good shout
yes
you just duplicated the constants lol
not rly because it checks the condition before it adds, no?
"if contains exiled, add exiled"
EXILED-RUEI, EXILED-HSM
if contains exiled in there
add EXILED specifically
wouldn't that work?
or is DefineConstants an array
that's what you're doing rn
i mean
yeah do it like that but don't put the same constant twice 
also you're missing a parenthesis at the end
yes i get that
but
i dont see the issue as it wont add it twice as i wont have a build condition named "EXILED" anyway
it will be exiled-ruei or exiled-hsm
ye
unless DefineConstants is an array, then id have to add those
there
is that optimal? :3
huh
...
second adds RUEI
what about Labapi hsm
look at it
okay uh
last line has EXILED-HSM and LabAPI-HSM
i thought it was an array ๐ญ
me when
just a gut feeling that you can add 2 at the same time
cba to test
but yk
me when it's not working i dont thin
yeah it's 100% not working ๐ญ
so confused now
that's the build configuration
you're choosing
check $(Configuration) instead of defineconstants
oh yeah true
also, consider using global usings :3333
idrk how they work ๐ญ
global using Name.Space
put it in whichever file
usually GlobalUsings.cs
Rider can do that for you btw
me when i dont know how to that either
how does your csproj look currently
uh
did i do smth wrong ๐ญ
did you save the csproj
autosave should be on
you need to press ctrl+s for csproj files to reload automatically
<Target Name="amogus" BeforeTargets="BeforeBuild">
<Warning Text="$(Configuration)"/>
<Target>
add this and build
check what it prints
oh
right
time to fuck around with the sln
sln looks fine??
why does it say im on the wrong configuration
oh gosh
Rider moment
fuck sake
bru
Visual Studio wins once again
david im not falling for ur propaganda smh
yeah the piece of microsoft that doesn't even let you change the language version
mhm
Your gonna install Microsoft Visual Studio 2022
they're trying to get people to move toVSC anyway
fuck i just realised i gotta learn base game ssss stuff because i use exiled's here ๐ญ
@unique crane when ssss v2?
127.0.0.1:5292
wat
what?
why
me when
U when
i know
secretapi...
but i cant use exiled on labapi
U when u relized noone using secretapi
and im not making people install a dependency ๐ญ
im firing slejm
U can't
hmm
ill make all my plugins require dependency now
Ur not my manager
yeah this is why david hates u smh
no this is why david loves me
I don't think so
if you don't set the IP in the config then it shows your external IP
for SSGroupHeader, do you just put it before ur setting in DefinedSettings and it will work fine?
there should be an hour long youtube documentary about you & david
what the fuck
Insane SCP SL drama
@hearty shard just make SSSS wrapper labapi pr
and everyone will have your dependency

im not happy w my wrapper yet
ig yes
yep
do you think it might be approved
but also
then whats the point of secretapi ๐
Its part of the not-so-secret plan to destroy it
me when probably bad solution
did not know there was spread things in c#
also if we had System.Index in .net frameowork
gotta switch to .net standard sometime
super dumb decision
"makes it easy for plugin devs to add settings", instantly chooses the hardest way to add items
I can change it to observable collection or something
And break every single SSS plugin
real...
DefinedSettings is aprop
so you could obsolete it and make another propery with a list
How so and why
why not
np
I hate Visual Studio c:
if I edit CSS or Ts file, it autoformats, but it doesn't know how to do it correctly so uses C# formatting, which is way different
YamlDotNet.Core.YamlException: (Line: 3, Col: 3, Idx: 54) - (Line: 3, Col: 3, Idx: 54): Exception during deserialization ---> System.Runtime.Serialization.SerializationException: Property 'normalized' not found on type 'UnityEngine.Vector3'.
what wrong
...
normalized didnt using
are you using the serializer provided by labapi?
no
then you should
because it has serializers for things like vector3 and color
how i can normalized it?
.normalized
to offset with zero rotation
it fix rotation to zero?
no?
then why you said use it
im know
a normalized vector is a unit vector, in the same direcition as the original but with a length of 1
me need calculate offset from object with zero rotation
because you wanted to normalize it
i wanna other
and then i realized why are you doing that
this code gives you exactly what you want
a local-space offset
you can transform that back with transformpoint
its incorrect
because room have rotation
and if she will be have other rotation it spawn in the void
then store the correct rotation too
me need calculate offset from ojbect with zero rotation
.
.
its already that
what wrong
roomType = Unnamed
bro starts deleting it
no
question is actual
why do you even have the second constructor
because i dont wanna use = new() { type = 3, offset = 2 }
just
make the offset not nullable and default instead of nul
zero is the default anyway
whats the issue
skull
YOu had 096 room there before?
this works perfectly
also, have you deleted the config to regenerate it?
Yeah try that
its new config
generated by it
yes
um
now it generated normal
what the shit
its 100% was last config
-_-
logic moment
system too said what it last
by creation date and time
mklink one love
magic command
๐
yoo, why does WaveTeamSelectingEventArgs only provide SpawnableWaveBase, but others such as WaveTeamSelectedEventArgs provide RespawnWave?
The Cubeโข
if I want to change MaxWaveSize, which event can I use? OnServerWaveTeamSelecting seems too late
if no more elegant workaround, I would try with OnPlayerJoin and OnPlayerLeft
patch WaveSpawner.SpawnWave
god
Yes, u called me
@icy knoll
-# excuse the hiccup caused by the restart after windows update
VOLUME WARNING
no way wtf
Epic
how
you streaming it
this is cool
I was thinking about plugin to stream voice from specific discord VC to in game broadcast or something
thank y'all
share code
if you create a bot that provides an endpoint for the plugin to connect to, it's certainly possible
although for linux you need to stream the raw samples

i had that dependency for 1 method 
also
you'll need dependencies anyway
so

HOLY SHIT
I want this with music synced rave color change during MusicKillers World is Mine
imagine those colored light thingies but ingame 
with a bit of FFT magic it could be done
Cant wait to sync carameldancen to a rave color
Wait can you get the audio current volume? Like db
the sample providers give you samples (amplitude) and you can convert that to decibels
you can create a provider that also reads to a separate buffer
oooh with this mp3 can be played
The Mp3FileReader class uses the ACM MP3 codec that is present on almost all consumer versions of Windows. However, it is important to note that some versions of Windows Server do not have this codec installed without installing the "Desktop Experience" component. 
well that goes out the window
Oh I see
just found out about Directory.Build.props, lifesaver
Yipee
legit i was so fed up of going into each project, grabbing the dll from the bin and uploading it to github releases
so i did some research
found it
Is it possible to change player scale without effecting the hitbox?
set scale, send spawn message, reset scale
OH shit
You rightt
You right
So I can just set scale on the FpcScaleController and then send a spawn message resetting scale
that's what we want
Set scale -> sync -> set scale again
sendspawnmessage sends the scale
Change size -> sync -> reset scale
You can do:
transform scale -> spawn message -> transform scale
Or
FpcScaleController -> transformscale
Or am I wrong
I thought the scale controller at a base level does something to the effect of Transform Scale -> Spawn Message
Just in a wrapper
with fpcscale you get desync if their role changes
you also need to handle joining players

Wdym
Role change = reset scale
So no desync right?
Yes
But if I set transform scale to reset size
cuz the scale will be 1 anyway
Then no desync
My goal is to change player appearance but not hitbox
So I just use FpcScaleController -> Transform Scale
Then handle joining players
That's it
I believe
i mean
at that point you might as well just send an fpcscalemessage
or
scalesyncmessage
whatever it's called
Oh that exists?
Sick
That makes life 10x easier
I'm writing this down for later
You guys rock
bon appetit
is it possible manipulate shooting sounds and other?
there used to be a GunAudioMessage but now it's done with RPCs
so you need a firearm to play a gun sound
I want to create a +-large object, but the zones are always nearby. And the world is limited to -128, -128 and 128, 428, 128
no
i wanna so that this cannot be heard outside of schematics
guys help pls i am making a map on unity (sl-custom objects) i select compile all on shematics manager it not compile pls help guys
not to send to hubs outside
ask MER
they have discord
ask there
ok
you can just spawn doors to increase the area where players can move
-# relative positioning system
how?
more details big brain axwabo
where spawn?
spawn where you want more space
a door creates a cube with a "radius" of 128 around itself
its allow moving players?
yes
i can create door 500, 0, 500?
lol
you can put it anywhere
but why they add it?
To make elevators move without players falling through them
That's not really worth it if it was just for that
But yeah elevators I suppose
Granted there's less restricting and annoying ways to do so
But SL movement can't make use of those the way it's built
pl.Position = relative.Position I think
relative pos it local
It's not
Not SL's stuff
It's relative to a waypoint, the Position property returns the world space position
Heyo
Quick question about LabAPI, what's the latest version installed on the dedicated ? Because on the github the latest is the 1.0.2, and on my server it seems that i got the 1.1.0 ( at least it's what the files properties tells me )
new RelativePosition(original).Position
at berly has still not updated github smh
also network spawn it
with this code you're creating a door right above the lcz wc door though...
instantiate broke all doors

im know
i think i may kill someone

have you spawned it?
im trying to parse textmeshpro except i need to juggle maybe 500000 things
format items {0} noparse etc
paislee moment
im writing some of the worst code of my life
i would love to make a PR to ruei that uses spans
:3
i thought that was ruei 2
except
like
because i discovered that escape sequences
so like \u0057 or whatever it is
work for tags
MAGIC
Yipee
but where contains the code?
for add door in the list and other
me when not csharp
filter by name
?
I like the "TODO: fix"
i have to find out how i want to support animated values too my life SUCKS
what is a span, i only know span as the html element ๐ญ
but where it adding to the Door.List
While I sleep you work.






