#plugins-dev-chat
1 messages Β· Page 8 of 1
How about a format property in each plugin's properties? Like IsEnabled
?
Oh wait that's not really gonna work with yaml serializers unless you create one per plugin
Nvm
hmmm are the leading - really necessary, i think each one implies an array member e.g.
class Color
{
float[] a = [1];
float[] r = [1];
float[] g = [1];
float[] b = [1];
}
did u do both vector2, 3 & 4
or just 3
just 3
maybe add the others, ppl might use em
Fineee ill make it work with Vector2
perhaps I could take a look at it tomorrow
I spent few hours trying to fix the yaml
only to find out I didnt replace which serializer/deserializer is being used xd
nah just kidding
anyone have maybe idea why this code:
public void CassieCustomMessage(CassieAnnouncingEventArgs ev)
{
Log.Info(ev.Words);
if (ev.Words.Contains("SCP") && ev.Words.Contains("1") && ev.Words.Contains("0") && ev.Words.Contains("6") && ev.Words.Contains("TERMINATED") && SCP457Main.Instance.DeadSCP457>=1)
{
SCP457Main.Instance.DeadSCP457--;
ev.IsAllowed = false;
}
}
still send Cassie Announcement but only without sound?
I need to clear 1 Announcement from Cassie and this is my problem bcs this what i got here only make the Announcement muted
I hate Firearm Module
especially Ammo Module
will LabAPI's FirearmItem save me?
False
so true
nv
nv its not working XD
Because the event doesn't seem to work properly for now
that's cursed but i love it
why
missing z value
what where?
yea
OHHHH
oka
y
i'm actually stupid
speaking of configs, are permission wildcards planned to be supported? in the current release they don't work
ur goated
Uhhhh i dont know anything about that
they do work
they should at least
the code doesn't indicate that
e.g. jail.* doesn't resolve to jail.jail and jail.data

the permission check doesn't look for occurrences of a wildcard though
wildcards should be processed here
yeah no I see, this for example won't work, but it will work the other way around
this sort of check needs to be there
server owners configuring every possible combination 
going where ax posted
i'll make an issue ig
jesus fix it now
This basically does this:
We have jail.test so it adds jail.*
to the permission superset, which basically makes it so when a plugin checks for jail.* it will give true 
I have never seen a plugin doing that
it is the other way around
I'm gonna fix it with my phone rn
I'm in a bus for 6 hours going back to madrid rn
yooo
6h bus ride 
good luck :3
i also detailed how the SpecialPermissionsSuperset could be reused
oh nice
actually thanks to the superset being smaller we may get an optimised result by using it here
ohhhh
otherwise it would have to check the contains in the full permission set


jesus r u evil
stop saying I'm evil
sometimes
Can we deport eve already?
NO

deport lumi
does this also work with just * too?
sacrifice the evil fiends
Yes
im taking pickles hostage
.* yes
Pickles is in protective custody
no, i mean just * which means all permissions, not .*
regex in configs 
let's see, * in permissions file will add * to the permissions, so if a plugin is checking for * it will work
but if a plugin is checking for .* it won't work if the user sets * to the file, so I'll add that just in case
yeah, because the owner of the server will put * in the owner role because they want permissions to do everything in every plugin
doing plugin.* for everything is not really the best idea lol
.* would be all plugins
well that is what everyone does
indeed exiled perms do that iirc by default on owner
if only we could optimize this with spans and HashSet.GetAlternateLookup :((
why not *
because thats not what exiled does
NWAPI used .* too
yes
*.*
Or just don't check permission 
PlayerSensitiveDataAccess and SetGroup for everyone 
Cant wait to see 127.0.0.1:34953 on ra
if you give everyone perms, you dont need to worry about permission checking
every mc permission manager used * for all permissions, and thatβs the standard for every other game that has community hosted servers except scpsl ig lol
you will not get that permission
if the example shows clearly how it should be its a user issue to fail it

in 3 years of exiled havent seen someone ask about the .*
why = false
default to false probably
false is the default though
9 extra characters!!1!1!!!
8**
To must be false no matter what

hi slej
Hi stoopid I'm SlejmUr
okay well what if microsoft tomorrow decides it to set it to true huh
You never know 
that would be wild 
How did you know what I write before I even sent it?
im better
Nah
fak u
dinner first!
I'm gonna make this a node tree istg
but well, the truth is, labapi was gonna be released without perms because they were not seen as a priority
make a custom collection thats super duper optimized
I didn't agree
permissions should exist in it yes
So I came up with the permissions provider and the default thing in a few hours
thank the jesus
Can't wait to see the next labapi push

you
nah
it pisses me off how microsoft did that
they really should've had an IAlternateLookup<T> interface with a like, GetHashCodeAs(T t) and EqualsAs(T t) or wtv
then you could have Dictionary<TKey, TValue>.AlternateGet<TAlternate>(TAlternate key) where TAlternate : IAlternateLookup<TKey>
Peak
restart fixed it
i thought it was because of the door not being open
but
door was wide open

so true
I did

Only that room
But same room worked fine next round sooo
idk
Unless it has to be the small door and not the gate
Please spawn more locker ther
i think it has to be the smol door
I always thought gate triggered it
Wtf
Since when
Ur getting cooked
Just cull the whole map
is labapi meant to replace nwapi all together or will nwapi be continued as a seperate thing?
NWAPI has been retired, you can obtain the new and improved LabAPI by clicking the reaction in #1333484143937458248
Did you add which door is the spawning of the locker triggered by?
I'm a very greedy person
Can we make Hint cover the entire screen?
unable to reach far right
but you can reach the far far left
max far left is <align=left><pos=-1198>
doesn't work
we already tried it :3
well not me
someone else did
wouldnt this be unity moment
its more TMP breaking, you shouldnt be able to go that far to the left to begin with
but it can 1198px to the far left
northwood studio acquisition unity, plz
try <width=500><space=500><alpha=#00>ttttttttt <alpha=#ff>hello world
i can try making it work for the other side later tn
Okay, is it just me or does this look wrong?
Like, isn't y Vertical and x Horizontal?
Or is it different because it's Vector2 to Vector3?
wait yeah that's the wrong way around
x is always side to side and y is always up and down
Thought so xD
this works for the right sside
decrease the pos to make it go to the right more
also works for the left side
Rotation is defined around the axis vector
With y going up then the rotation is around you horizontally
And X goes right so it's up and down
i think its better to explain it as pitch and yaw instead, as changing the y rot will mean different x and z rots for the pitch
nope
whats the best way to test plugins i write?
I use dedicated server from steam
Isnt that basically the only way
that's outside of the hint display im psure
play with the indent / pos a bit
the plugin manager is still in LA, will it be updated to support LabAPI?
@wicked cloak can we talk about this function?
I'm very curious about how this works
aye sure
so basically it just send a fake effect to you
if to be more precise, the server makes the spectator think that some player has the goggles effect
so it enables that effect for spectator, but not for the actual player
also i have released it tho
#1342807180478251129 message
#No Access
Lowkey forgot this existed
counter-terrorists win
So, LabAPI is lunch at 14.1?
yum, lunch
where is mine?
ask your manager
if everything goes swimmingly, yes
this will solve the issue with underpopulated sl servers
what will happen you will leave but server will take your soul
and you will never join again
what would actually happen tho
if that was possible simply server will don't destroy your player object and keep it
you will leave server and think you left but server still sees you that you are on server
normally its not possible to cancel player leaving because event is already executed when object is being destroyed
Cancelling on left event will make a dummy and unable to join ever again

hubert's basement belike:

Yo, I have a question,
I want a Scientist to do 2x damage to NTF and dont do any damage to Guards, how would be possible?
Well
OnTakingDamage or however is it called
I think you can get the damage handler from there
and set the damage
but is it getting called even if under same team?
but i dont want to enable ff serverwide
If ff isn't on Scientists wouldn't damage guards anyway 
Yeah its works in case damage is set to 0 even the hit mark not gonna show up
Its PlayerHurtingEvent, hmm I test it
btw i need to ask, does Firearms are currently limited? like i cant find method to set ammo in firearm
Um

This is fully possible
Get the magazine module
And there is property or method somewhere
hi eveee
Haiii
alright thanks for help
you when ur doing ur nerd stuff
False
There are spelling mistakes in the documentation, for example, instead of CustomEventsHandler there is CustomEventHandlers, likewise for CustomHandlersManager.RegisterEventsHandler<T>(T) there is CustomHandlersManager.RegisterEventHandlers<T>(T). It confused me for a moment.
https://github.com/northwood-studios/LabAPI/wiki/Using-Custom-Event-Handlers
i updated the doc page
there's still spelling error: CustomEventHandler instead of CustomEventsHandler
https://github.com/northwood-studios/LabAPI/blob/c740717904c97c24448e966db9e8d89f43558c11/LabApi/Events/CustomHandlers/CustomEventHandlers.cs#L10
updated it again 
same for register and unregister
https://github.com/northwood-studios/LabAPI/blob/c740717904c97c24448e966db9e8d89f43558c11/LabApi/Events/CustomHandlers/CustomHandlersManager.cs#L17
https://github.com/northwood-studios/LabAPI/blob/c740717904c97c24448e966db9e8d89f43558c11/LabApi/Events/CustomHandlers/CustomHandlersManager.cs#L29
should be all of them changed properly now then 
gonna move this here
can someone explain why the game makes every client execute all custom keybinds on spawn
What?
When i spawn, my client executes all server based settings. Its very annoyinng.
someone said that its probably to see what does what, etc
i mean i have an audio plugin that has 9 different categorys. Spawning and being jumpscared with all of them playing at once is not fun
Keybinds aren't assigned by default to prevent key logging
I mean mine are assigned and every single one assigned at the beginning
That shouldn't be the case
I just want to know if there is a way to prevent this or what
For me it's unset when I add a new setting
Lets say its the waiting for players screen. I assign them. When i spawn, all are executed
I guess you could track how long a player has been connected and suppress keybinds in the first x seconds
@ hubert 
!hubertping
So whats up this hubert thing? Who is hubert
if (Input.GetKeyDown(KeyCode.None))
Trigger();
hubert is the creator
he made the world
All hail hubert
and the universe
somes wrappers for AdminToys gonna be add soon to LabAPI ?
I hope so
Assembly-CSharp question
Can I know a Spectator is looking who without using a dictionary?
SpectatorRole.SyncSpectatedNetId
SpectatorRole has whos being spectated
There is property in Player?
yes
I think
π
100% there is who is the player spectating
well
at least its in SpectatorRole
Yea ofc
I tried SpectatorRole, but it confuses me
2sec

why does that use a list pool
π
rent and hope that the caller returns it
no indication
nvm
"Gets a pooled list"
is anybody gonna notice that though
Not my problem lol
in the end its performance related
creating a new list is bad
if you already have an empty one
Best I can do is create enumerator and yield return them
honestly
Thats also a possible solution
it shouldnt be list
there could be a method which takes in a list and adds the players to it
IEnumerable or something else readonly
you could just use linq 
true
maybe
Is it possible to apply for an API key for api.scpslgame.com?
1st is for the ENTIRE list
2nd is just !api in console
yea just make it an iterator lol
or wtv
hpw r u
im good
No u
Is there a way to set custom value for firearms stats like fire rate, Weight etc.?
Weight, yes
Rest no
Damn that kinda bad and disadvantage for making custom weapons
Firearm modding is planned
Lets go
Damage u can change by getting damage handler
Just what you can do base game
for firearms
Pentration i dont think so
That is calculated with damage
Is it possible to change fire rate. I think ive heard people do that before
Nope i already aks today xD
.
Like you can do that
but its going to be server-side only
so like clients still see the animation at normal fire rate
but it doesnt do any damage or cause bullet hole
Well worth knowing but still its sounds kinda impractical
Alright
You can also change accuracies by messing with attachment parameters
It's easy to make a 100% accurate gun, setting exact values is trickier
2039
~~demo
~~
A flipflop
@hearty shard https://github.com/northwood-studios/LabAPI/issues/41 whats a SSSS permissions?
the new settings menu
yeah i have used it, i never seen a permission setting tho
if you only want specific players to see you have to like .Where() and like .ToArray()
mb on the wording
referring to locking it behind a permission
and only showing the ones u have permissions for
uhh
base game does not join them, i guess it would be up to the developer to only send the ones needed
yeah
im asking for it to be easier
than .Where() with a dictionary of ids to the permission and then going back to an array
i mean we dont have a SSSS wrappers yet, i have some ideas but they are rather out there so i have not gone far with them
i mean a wrapper would probably be required
but yeah
i have no clue on how to handle it in a good way for labapi
also i would generalize the API so you are not forced to filter by permissions, but rather you provide a predicate instead
yea
also when are permissions synced compared to the Joined event ?
like the group being created
cuz exiled requires a delay to check perms on join
which event, is that happening in?
Verified
hmmm
there is group change event, but thats only for ppl getting a group
OnJoin should be the same as Verified as it happens on authentication
i dont like having a required delay on it
in the past with NwAPI i just delayed by one frame e.g. Timing.CallDelayed(0.0f, () => ...);
There was also the OnGroupSet event in NwAPI, i think thats still here?
but smth thats called when a group is given is only yk done on group given
which is fired when someones joins and they have a group
sometimes u need to check for empty group, but that requires a delay
i mean ig you could send all the SSSS that require no perms on Joined, and then if group is given do it again with the perm check
no clue
i would just use a delay xD not like other code depends on you sending the SSSS a frame earlier
How can I make an SCPs invisible?
ChangeAppearance to filmmaker is not work for SCPs (but it's useful for humans)
Like patch the VisibilityController?
but how
ChangeAppearance is the exiled method, but it doesn't work with SCPs (maybe it's an error after I ported it to LabAPI)
im saying exiled has IsInvisible
Oh
but i thought since u were asking in labapi you wanted labapi not exiled
its in FpcRole
I'll look for possible ways, thanks
if (player.Role is FpcRole fpc)
fpc.IsInvisible = true;
π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯
bro didn't wait
Cant you just give them invis effect
gives a stinky like purple effect
might not want that
u can just fake an effect i think
like
send the invisible effect to all players except the scp
Or be cool and change their appearance to spectator
Great! It was exactly what I needed
Labbing on the api
what the flip
Me on my way to do this base game
maybe
idk
sobbing
I just send fake messages to clients saying that the target scp is Spectator
works well
(Excluding spectators since they wouldn't be able to spectate otherwise)
yep, it's doable
what the f am I doing on Patch
Is there a labapi server branch and if yes, is it backwards compatible?
yes, no
Thx :)
why Generator.List is an empty list default?
I need to touch the generator then to find it in the List
did you waited the map to generate ?
shouldnt be empty, i cant replicate it either so it might be only broken in the current version
don't do that if it's already fixed.
at least in 14.0.3-labapi-publicbeta-5bf276ee, it was broken
a new update has not been released yet, it is fixed on the dev branch in github
ello
dead chat π
idk you made it beat for a moment
im gonna eat the chat
im not even surprised smh
guh
not rn
it will be implemented before the public release on the default branch
It's been implemented, we just don't have access to that build :(
Mods, push to public
Very unlikely
#plugins-dev-chat message
not everything is updated fully yet
LA likely will be fixed for it
delete labapi
Is it possible to get the server ID from LabAPI or NWAPI?
server id?
Yes, the id of a verified server
not sure what that is
if your talking about https://support.scpslgame.com/article/61, you wouldnt need it from a plugin since
technically it is possible to invoce the !id central server command from a plugin
but the sl server does not have the id naturally
why would one even want it

spying on your own server
ποΈ ποΈ
@hearty shard
You
finally
did it
im so happy
best dev 2025
can i see the new code or do i gotta wait 
yippie!
what about ShouldSever
Thats allowPunishment
does that work even if it wasnt originally intended to sever ?
eg making it max 1 candy
You can?
am i going insane
Or set allowPunishment to false/true
doesnt work for allowing only 1 candy before sever
you have to set the prevUses to 2 or more
Allow punishment just disables you getting killed if you picked more than 2
huh
yippe candy event
I also have the same issue now
Unable to compile LabAPI at all, lol
Changing it to net standard 2.1 and back to 48 doens't work for me
You compiled on netstandard ?
I think it did compile, ye
I'm trying to build through CLI but that kinda doesn't work
yea its not IDE issue doesnt seem
dotnet issue moment
also cant use Queue when using mscorlib so 
Just don't use unitys mscorelib
System.Reflection.Label also doesn't work
π
As much as I love spans, I can't use them in SL along with other stuff :(
Maybe if we replicate a Unity-generated (awful) csproj then it's possible
hmm i was able to use queue by adding <DisableImplicitFrameworkReferences>true<DisableImplicitFrameworkReferences/> to the csproj and adding references to the unity provided system dlls
oh
the above doesnt work for michal since for some reason the default mscorlib doesnt get removed while all other references do
Whar
typo i meant mscorlib doesnt get removed when it should
Maybe stripping the ymldotnets attribute stuff (or just setting that to public) should be good
Can we make ServerSpecificSettingsSync::ServerDeserializeClientResponse filter ReferenceHub::isLocalPlayer by default?
I'm working on a multi-page SpecificSetting, and I've found that if isLocalPlayer is not filtered, it corrupts the ServerOnSettingValueReceived for normal players
This question has been tormenting me for a long time
I really don't want to see other developers get bothered like that
Put this in #1274618202227216414 or github
Not gonna rememeber it otherwise
omg david
haiii
Added

just put your issues on the labapi github, its more likely to be seen there
ok
only thing that repo is for is examples
I already have a multi-page system if you want π
But yes i agree
i am curious how other people do their systems
How did you deal with IDs? Do you take the stable hash code of each setting wrapper's type?
i was thinking of doing something like that but realized trying to get a stable hash code of a type would be a bad idea
would have to rely on something like the name
Maybe I'm dumb but why would the hash code cause issues?
its just like
how would you reliably generate a stable hash code for a type
that persists across compilations
Well hash code is meant to be the same for same object
That's literally it's purpose
Mirror has an extension method that takes the full name of the type
That's also used in the base game, e.g. for damage handler (de)serialization
NetworkMessage IDs also depend on it
Imagine if the message IDs changed every time you rebuilt SL or every time someone opened the gamr
#1341884121667993630
Every menu have a hash by name
And i still need to fixs some things, but the first point or my plugin is to sync every SS system from other plugins into one multi page system
Wouldn't that cause conflicts?
You should put Scp330Candies.GetRandom() before the event in my opinion
idk
so i can update exiled with new event
not up to me
i know
#serverhost-suggestions do you have access to this chanel ?
ofc xd
you can also keep track of it because some people put good things than can be made client side but that required LabAPI dev if we don't want to wait 4 years
this two for example
Im gonna do just smaller scale changes right now
and start doing big refactors from June
Disarming would be good
Scale = new(2, 2, 2);
Disarm is good
Unless riptide of x3rt got time
please tell me than there no more Weapon change
Wdym
we get weapon update at every update
Yeaa I dont think weapon modding will make it in 14.1 xd
yes
i mean weapon getting changed
Apart from 127 I dont think there were any changes?
there no update of SCP:SL without an Weapon
dw it will be changed bc of the new scp weapon
i think the refactoring is referring to the labapi itself, its overdue for one
Slowly refactorying the whole game
also do u any of u know how to make ss settings save across multiple servers? we already have a database, so i was thinking of just setting the default value for the setting the value from the database (e.g. if player joins server A, sets the value of setting Q to something, when they join server B the default value of setting Q will be that something) but this neglects the problem where someone joins one server, updates a setting, joins a different server and updates that setting, and joins the original server (since it's going to use the client value so it'll prob ignore the default value)
currently you have to change the id to give a new default value
goddamnit
or +1 to the version override right
or not i might be crazy
that throws a wrench into my plans
never used it for that, i thought version was an internal thing. you can certainly try tho
well
hm
uhhh

server sends it to client too
so i assume client just tells server that it has the settings from X version
idk
yea i think so
fml
ig i need to send a fake id then
to force the default value to be used
does the client not send the value for all of the settings at once??
when they join
what
It might be because some other plugins using the same number for identifying a SSS stuff
no
they use only custom plugins at dr brights to my knowledge (except maybe MER)
but
yea
Look at what
the pr i made for my thing
SSSS wrapper
i need opinions on how im handling it
God, I wish I could make custom effects that modify a players movement speed -w-
you can (not)

guh
So does that mean you can or you can't?
you can (not)
you cant
sadly
do wish we could sync it a bit
but i understand why we cant
We can change the stamina, why can't we change the Movement Speed?
I don't understand
because basegame uses the effect and you might not want to reuse it
I want to be able to make a custom effect that has the same properties as Movement Boost
But I can't -w-
But can't you just use movement boost?
Why not
Overriden by Yellow candy and stuff like that
you also cant modify cola speeds well because its client sided so you have to mess with stuff like movementboost and slowness
^^
primary reason is movementboost is used by plugins for temp boosts usually
Candy adds movement boost
yes
Not overrides
Well, I tried setting the Speed multiplier to 1.05. It just made it desync
yes because its not synced
Yeah
Yea
you can make custom effects
just not synced
which is what i have asked for a while, but ofc its kinda difficult to do ig
Well, you can make one that modifiers a players stamina regen and usage
I've never looked or tried any custom effects
i have code for it
public
its a bit silly tho
Not really, just make a variable that the server checks or smth and then you can modify that
Same with ServerRegenRate and ServerUsageRate in FpcStateProcessor
What
I meant syncing the effects
Ive asked nw for ability to sync custom effects
Well that's hard, obviously
not for the ability to change stamina
I was talking about modifying Movement speed
which id prefer was done through effects
I could like idk
the weird part is just having client understand that the effect exists when only server has it and client cant (since no sending files)
So it's independent from the status effect
All you'd need to add is just a method the Server calls that modifies the Movement Speed variable
or checks it or smth
And then we can patch that or whatever ππ»
Idk why nw removed it tbh
I cant remember the reason
That one has the fpc motors and such
Just make that be run by the Server or smth, please ππ»
Then it's not fully client side :P
Well it surely is run by the server?
VelocityForState is only run client-side
movement speed is client
Yeah
(and server)
On
its a mix
Well, both of them use it, but you can't modify it for a player/client
both do speed checks so if you change server it will desync
i remember accidentally causing a desync when messing with stamina
I tried so many patches π’
Well it just doesn't get synced to the client
I had that happen before too xD
Got so bad that items duplicated in players inventories
what the flip
Because it's not a SyncVar π
Lmao
david make sl great again
Is there any syncvar in any status effect
no
We pray for Plugin Developer support ππ»
Ik
Only thing that's "synced" is the ServerSetState
and ServerChangeDuration
Whenever I play SL someone tells me to fix something ):
(it's plugin fault)
uhhh
is it
i dont think thats what effects use
Yea
xd
but yeah
David is there any way you could think of syncing a custom effect
I feel like its a no cuz client kinda needs it
yeah
Well
Man, for a second I thought it would sync all of it :/
Depends what you want to sync
Okay I'll do it with scale I guess







