#plugins-dev-chat
1 messages · Page 10 of 1
Ahahha
thx
Oh that sounds good
Good morning
client can't be dedicated server..
Why would you do that
Is it possible to force-load SCP-1507 via Harmony?
I was trying to used this for april fools day
now..
what did you do...?
||뭘 하신거에요?||
No
okay..
Sorry...
get to work
Yo
Yo
Yo
Hi
Hello
Exiled is built on top of NWAPI right?
Afaik its basically a reskin
And it needs to be updated first LabAPI right
i think very little of EXILED is built from NWAPI (just some events are forwarded iirc)
and EXILED uses NWAPI to load
So how much of this is correct?
i would say thats pretty true atm, @thin shuttle could probably give a better answer
iirc EXILED existed before NWAPI was a thing
we already did the update
so don't worry

also no breaking change
except if your plugin use a field that was private and been put in public (by NW)
since they renamed them
if your plugin use Exiled and nothing from nw you are sure of no change
some people when NwAPI was out wanted us to use NWAPI event for our event thanks gods we never did these
i think they want you to use the ones from labapi now xD
yeah
and like i said
i will first continue on Transpiller
and after it's release
only if event break and transpiller take us too much time
will move to LabAPI event
fair enough
(and also than their no lost of information / modification)
not sure i understand
sure it's take me time to update all transpiller
but i have because of this learn a lot to fixing bug

When NW changes a parameter type but the IL still compiles and results in a weird rare bug
yeah
that most of time the big issue
but actually a lot more rare
and rarelly cause crash
that just fail and we get error but exiled still compile
thanks to our GlobalPatchProccessor

Not every time
it'd does
Sometimes it just results in weird behavior
that rare like i said
Yeah
@upper pike what do you think?
also
it's only happen if this event is used on the serveur
so it's do not affect all server
@upper pike can you ban yamato for me?
awww
not the real one
yeah he was renamed
It was a bit in #general-chat
!hubertping

!rename 1113231571642753065 impersonator Moszka
Done.
hmm
oooh
Hello,people
@thin shuttle can i close this https://github.com/northwood-studios/LabAPI/issues/28
I kinda disagree with it actually
For me it's just should call rpc denied no matter what if cancel
Because how user will differentiate than he hid desync so he can't interact and the generator explicitly saying to can't interact
Because you can cancel the opening door even if the genertor is unlocked
i understand that, im just saying to leave it up to the plugin dev to decide how they want to go about indicating that
i think it was implemented by @limber silo so ill see what he thinks
what are you talking abou specifically
currently when you deny the open/close generator events it does not play the denied permissions RPC, yamato wants to change is so it does and im saying we should keep it the same as theres are other ways to get it to play the sound if the dev specifically wants it too
oh back when I made that I was working alone in the api and was rushing events so may have not thought about it, I think we should allow both caes to happen
so devs can choose whether to play the sound or not
could adding a bool IsUnlocked to the argument, and possibly fire the opening/closing before the Unlock check in the code work
currently the events dont fire if the generator is locked
then I would add another event called OnUnlockingGenerator
yeah that event already exists
actually, we may want to make IsAllowed false not to play anything
And give a method inside the generator if it isnt already to play the sound
that way we have everything
I added that for the next update, although the issue is what if multiple plugins deny it(it might play twice)
right
what about a PlayDeniedAnimation boolean that is true by default
btw whatever we do here we should do it in every locker and door too, for consistency
yeah i will have a look at the others too
btw maybe it could be a door permission(for 14.1)
Yeah sure
why
Labbing the ipa
ipafa
what
yes
my SSSliderSetting.SyncDragging on ServerOnSettingValueReceived seems to always be false, anyone encountered the same problem?
are you using the original or the copy?
what are you referring to? original or copy
can i see your code
yes, moment
just need to register the ServerOnSettingValueReceived method? My code to register setting might be a bit complex... (multi page)
just show me the part where you deal with the slider
looks correct, so i would assume its a bug(or the setting was not apart of defined settings). btw copy would refer to setting or s and original you dont have there but was the one you had in defined settings.
Oh do they have to be part of DefinedSettings
I mean other than uhhh
Server side validating client responses
just to make sure, other properties like s.SyncIntValue or the other sync one work?
yeah otherwise you will have problems(or at least i did)
It works normally
if its just SyncDragging you can probably make an issue on the github so someone can have a look
Ik its needed for validating but that be patches to be fixed
But
I dont know where else its needwd
Needed*
and more log
are not most of the sync stuff validated? i thought only ones where is mentioned Raw were unvalidated
make an issue if you can
on SSSS? or LabAPI
LabAPI
ok
the SSSS repo is just to show it off, no one checks the issues for that as far as i know
even hubert?
btw can i close this https://github.com/northwood-studios/LabAPI/issues/41 i remember we talked about it and we dont even have SSS wrappers yet
i mean this is a suggestion for the wrappers
When theyre made
we could go a different direction without wrappers, im not saying we wont but nothing is confirmed to happen
personally i find the SSS system to be abit low level, and has alot of details that a person new to it will probably have a hard time
hmm, im looking again and i think generator is just a special case as its the only one which requires two steps to open, one to unlock and one to open/close. the other events use a CanOpen property which we cant do here(as we have a open/close event and unlocking event)
So i will just add the PlayDeniedAnimation property to the Open/Close events for the generator
sounds cool
Hello
DummyUtils.SpawnDummy
Wahhhh
a bit
WAKE UP
:(

legit any language?
huh
create a plugin instead
🤨

Vine boom sound effect
yes
english
so real
I seen written in russian too
Reminds me of "Te patkány!"
you gotta embrace the struggle
and make it easier for people to use if you're already suffering 
man
im writing it so you inherit my wrapper for it for the setting
instead of
weird stuff
but
i kinda need to create a new instance of the setting
for all players

how else would you approach it
i dont know
SettingBase<TValue>
SliderSetting : SettingBase<SliderValue>
the setting would contain the ID and the name while each TValue would be created per player
and then you either make a method or indexer to get values per player
quick brainstorm
make an interface
yeah that's good
ssssnake wrapper
Then you are doing a good job
real
At least that's how I program every time
If I'm confused I know I'm doing something right
i could simplify that linq query
ah yes
protected virtual bool CanView(Player player) => true;
what
i dont see an issue here 😭
bruh
how about an interface instead
💀
xd
potentionally
what does the protected keyword even do actually
but what does that mean?
hm
so i think this
IEnumerable<CustomSetting> hasAccess = CustomSettings.Where(s => s.CanView(player));
List<ServerSpecificSettingBase> ordered = [];
foreach (IGrouping<CustomHeader, CustomSetting> grouping in hasAccess.GroupBy(setting => setting.Header))
{
ordered.Add(grouping.Key.Base);
ordered.AddRange(grouping.Select(setting => setting.Base));
}
could be written as
CustomSettings.Where(s => s.CanView(player))
.GroupBy(s => s.Header)
.SelectMany(g => g.Select(s => s.Base).Prepend(g.Key.Base))
i love linqing
but sometimes i don't
i made it so its nice to read
right
does inheritdoc work with the new keyword? weird
CS1591: 🤓
thats all i care about rn
all my docs are like that ill let someone else fix it
but rn the priority is making the uh
SSSS work
like actually work
instead of breaking
how about you use a ConditionalWeakTable to reference the custom setting from each base setting
then you don't have to clear a dictionary nor worry about whether the GC deletes your instances
and if someone references the setting in an object that persists
well shit
right
make a PR into a PR
i can't stand the block-scoped namespaces though
i won't change it
just a personal preference
blink
the power of open source
aka "pls test"
hm ?
so they made a subclass for SSBase to handle all their custom stuff
does each uh
setting type have its own wrapper?
not wrapper but
adapter
huh
SSButton -> ExiledButton
i meant that ExiledButton extens SSButton
oh
which adapts to a separate class
idk
bruzhg
right
okay
then you have to create a parallel hierarchy
one for devs to inherit
one for SS stuff that wrap the dev stuff
soo
partial working
ok it works completely
they just fucked it
awesome sauce
well done eve
me when doesnt have 10 euros so have to wait twice as much time
:steamhyppas
me when no job

ok it
it doesnt sync anything
like i thought
bad testing moment
lmao
mee??
Hmm
SSSS is evil
fix whaat?
i nono can
i nono wanna
THIS SUCKS
WHO MADE THIS
oh right me
but SSSS 💔
L
I dont even know how to use it properly 😭
im trying to make it so
you inherit CustomSetting
create an instance of that custom class and register it
and then you just have all the overrides
and it hopefully works
it DOES work
just
it doesnt actually
sync
like the synced value isn't being sent?
it does
but
doesnt get applied
because
basegame creates a new setting for all players
(i dont do that)
(yet)
is it possible to patch that new setting when created then and make it so that the sync is based off of your setting instead? like:
public bool SyncIsPressed => CustomButton.IsPressed?
probably not, but worth asking
green = correct value
red = wrong value
except well
i need to patch the method that calls the event
so that i can get the NetworkReader
womp womp
UR DEAD

How do you want me to fix it if 98% of it is not how it works as I expect
i mightve cooked
Reflection my beloved
oof
actually
should I do the reflection route hoping everyone will include a proper constructor
or just
abstract method and expect people to just => new SomeSetting()
@restive turret @icy knoll @unique crane
all of u stink btw
i think removing reflection would be the best and idk how it took me this long to remember
Mods, send this person to distant island in middle of nowhere
im
killing you
now ANSWER
stolen
ok
wait
you literally took that from our dms that one time didnt you
or was it here
idk
What did you expect from meee.
I tried using sss and failed like 6 or more times
fair
i think i might have fixed it
(i said that before and i dont think i was right... 5 times)
but thats fine

i just wanted opinion on abstract method vs reflection
i went with abstract
||abstract on these aπ||
SHUT UP!
default constructor + internal setter?
to make sure the base is set
no i just went with the crazier route
shh let her trap inside her own creation 
aka just
Y'know you can just use IClonable
right

Ye and?
i cba to cast it!!!
cast these
DIE
Make us able to display images on players screens for custom overlays/effects and my life is yours 🙏🏻
give me your life and your life is mine
yes!
Why ping
Meow
wooo
Btw
@marble cobalt you didnt ping me and nameless correctly lol
thought youd modify to make it for disc tbh
PlayerInteractedScp330EventArgs
The Candy xml says Gets or Sets but it's a Getter only
were gaming
Woo
Let's go, W
execution
Not something I can afford doing in the long-run
fair enough
While I know most people on that changelog, there will be a time I won't know an @ or two
And I don't wanna be unfair to those people
Nor force myself to scour the internet to find the discord @ of someone 😭
valid
You have just given @marble cobalt a reputation point!
Hmm thinking of I should extend the basic stuff.
Like using getter/setters with .Base for it
huh
Like in exiled .
For example adding Energy get, set in microhid wrapper
No
But after it labAPI
btw stuff like this already done in labapi, just not out yet
While you are not , check for me what's actually in the new stuff
im in bed
so flip u
internal build moment
Die
hi miller

hru
Do one round
Then cry
And then never play again
(until you play again)
tbf I don't have any willpower to play r6 rn
Just say no then
yeaa
Not an option
Does yours?
I ain't bunny nobody
ur not bunny?
No
!rep @restive turret
You have just given @restive turret a reputation point!
You...
You need to wait 11 hours, 59 minutes, 47 seconds until you can give reputation again!
damn
12h
💔
I pay my plugin devs in SCP:SL Official Discord !Rep points
They call me the generous
so real
yea youve proven that already
Well my jokes better then fart jokes you stinky
Anyway in labapi beta it's 14.1 stuff or 14.0.3 still?
I guess still 14.0.3
add name and description properties to Items plz
wait for it to be approved
or go upvote the suggestion

we'll see
clever
me when the capibary has more weight
also sad that CustomDataStore doesnt have an IsContains or like that 
war, war never change
setting all gravity for everything to 0
14.1 contains labapi
yes
i have infinite PickupSpawning
what did u dooo
i got an error
[2025-04-05 15:59:35.563 +02:00] [STDOUT] NullReferenceException: Object reference not set to an instance of an object
[2025-04-05 15:59:35.563 +02:00] [STDOUT] at Exiled.API.Features.Lockers.Chamber..ctor (MapGeneration.Distributors.LockerChamber chamber, Exiled.API.Features.Lockers.Locker locker) [0x00014] in <4c6f482505a7469d99bfd911a2b9fc92>:0
[2025-04-05 15:59:35.564 +02:00] [STDOUT] at Exiled.API.Features.Lockers.Chamber.Get (MapGeneration.Distributors.LockerChamber chamber) [0x0003d] in <4c6f482505a7469d99bfd911a2b9fc92>:0
[2025-04-05 15:59:35.564 +02:00] [STDOUT] at Exiled.Events.EventArgs.Map.FillingLockerEventArgs..ctor (InventorySystem.Items.Pickups.ItemPickupBase pickupBase, MapGeneration.Distributors.LockerChamber lockerChamber) [0x00019] in <7289e55c9d144033ba5dba451c821921>:0
[2025-04-05 15:59:35.564 +02:00] [STDOUT] at (wrapper dynamic-method) MapGeneration.Distributors.LockerChamber.MapGeneration.Distributors.LockerChamber.SpawnItem_Patch0(MapGeneration.Distributors.LockerChamber,ItemType,int)
[2025-04-05 15:59:35.564 +02:00] [STDOUT] at InventorySystem.Items.MicroHID.MicroHIDPedestal.ServerFillChambers () [0x0001f] in <4962faac86aa41cdb937a94469cc30c4>:0
[2025-04-05 15:59:35.565 +02:00] [STDOUT] at MapGeneration.Distributors.Locker.Update () [0x00017] in <4962faac86aa41cdb937a94469cc30c4>:0
[2025-04-05 15:59:35.565 +02:00] [STDOUT] at InventorySystem.Items.MicroHID.MicroHIDPedestal.Update () [0x00000] in <4962faac86aa41cdb937a94469cc30c4>:0
[2025-04-05 15:59:35.565 +02:00] [STDOUT] MissingFieldException: Field not found: ServerConsole .ServerConsole.singleton Due to: Could not find field in class
[2025-04-05 15:59:35.566 +02:00] [STDOUT] at (wrapper dynamic-method) PlayerRoles.Voice.Intercom.PlayerRoles.Voice.Intercom.Update_Patch1(PlayerRoles.Voice.Intercom)
probably on my side :)
exiled my beloved
i thinks it's will all fix before the Beta release for patreon

ServerConsole.singleton => ServerConsole.Singleton
now its big
lol
Please tell me they made the original obsolete
(If it's a field, that sucks)
the "obsoleting" is just removing it 

[Obsolete(error: true)]
yes but nw doesnt rly do that
Without runtime compatibility
not often at least
// !! REMOVE THIS!!
Yeah, doesn't really make sense for them to submit to base-game enthusiasts

@unique crane remember how you said i could just modify ev.Uses in candy event
yeah uh
it has no setter
😭
Huh
</3
Bruh
It least it's only labapi and not base game
literally just make ShouldSever 
https://github.com/northwood-studios/LabAPI/blob/f68187bfd2fa1f595bc9955baea3ad1a54d6ab48/LabApi/Events/Arguments/PlayerEvents/PlayerInteractedScp330EventArgs.cs#L52
Also here seems the 'or' is just been there
AllowPunishment ye
that doesnt allow forcing it tho
i have to change Uses = 2;
its just weirder
u r wierder
Yeah yeah I'll just fix that
Uses isnt settable so
in labapi 0.5.0.1
yeah thats fine
wait for next beta
with the pr remove the 'or' in there
ty
99% of plugin developers quit before they make it big
im gonna kill you
so are you the 1%?
How do i make a primitive with plugins and place it in a fixed spot in a certain room
find the offset of the room
then get the room type
get the Transform and call the uhhh i forgot what method
TransformPoint
spawn?
yeah
TransformPoint
i believe
and put offset in
and uhhh
to create the primitive
you need the primitive prefab (can be found in NetworkClient.prefabs)
Object.Instaniate it, then just NetworkServer.Spawn iirc
idk if you need to spawn it or if it will be by default
what if I want to use Advanceds cus i aint no primitive

then you get exiled
(exiled reference?!?!?!)
there is no reference I deleted them all
no
there nothing that put into Obsolete
what is this for ?
ExplosionGrenade.SetHostHitboxes
settubg hitbnxooses
it sets hitboxes clearly 🙄
it clearly set the hitboxes for the host
yeah but why ?
so can dmg itslef?
to enable self dmg
but why only Server.host
idk
NWAPI is already gone from the game in 14.1
ok
how much time will plugin maker have to make the final update with Skeleton and New Weapon ?
A minimum of a week, maybe more if time allows
i don't thinks is a simple no
there is a client branch that allows compat with the labapi server branch
dll isnt included on client
i don't ask if i can use LabAPI on client to load plugin
but reference of it
no
client have both client and server part
i am pretty sure it was not included tho
or you would never be able to host your own
Believe Yamato is asking if 14.1 clients will work with LabAPI server
Answer is yes
There isn't 2 versions of 14.1, only one that contains LabAPI
NWAPI has been entirely replaced
my question is more if the LabAPI reference are also on ClientSide
(not that it's can be used only if they exist in it)
No, same as NWAPI
@hearty shard fixed the 330 args
yippie
I love coming here and seeing things I don’t understand
same
how did u do that? :0
lightning or material properties?
or something else
Was there any change on UsableItemsController.ServerReceivedStatus ?
yes
or no no its not
its the same as before
why do i get a fucking crash with it on a transpiller that does the exact samething
last changed was 3 month ago
hello fellow pluginners, i totally make plugins and stuff aswell
"pluginners"
what are you testing now
doesnt work anymore
it used to
doesnt now
i dont know what update broke it
@unique crane what did you break
apparently you break everything to nameless smh
what has changed in SL the past 2 months that can cause the player prefab effects to not be able to be modified
which island? the one with the super dangerous tribe or the one with legit just penguins on it?
I dont think we changed anything regarding status effects
but it worked when i got your help on improving it
then change it back
gg
ik release is broken because my server has an effect that is not working
ik labapi is broken cuz i have a test plugin that im testing rn
with the updated code
like its doing the same tho ????
aaa
it hasnt changed
i blame you

oki

wait
david
when does GetComponentsInChildren<T>()
get all that have T
or just
idk
im confused
im confusing myself
it definitely has it
did you add it as a component tho
yes ?
how else am i meant to do it the same as basegame
am i stupid
should i just
.addcomponent

i swear
oh
I guess
could this work
instead of new GameObject
or am i losing it
yeah no
im just confused
cuz it worked before
it SHOULD still work
without patching
or anything
actually why is there multiple of each effect
well
not multiple of the effect but same name
xd
ok
so like
😭
wtf
@unique crane turns out its not copying the playerprefab ?
foreach (StatusEffectBase effect in NetworkManager.singleton.playerPrefab.GetComponent<PlayerEffectsController>().GetComponentsInChildren<StatusEffectBase>())
{
Logger.Error(effect.name);
}
this works fine
Ummm
im so confused now
omfg
your method calls that
well NW method
maybe thats it ?
yep
What did you broke now
ok this still doesnt
RAAAAAAAAAAAAAA
Yes that's the panel name
ill try this
No GravityChangerEffect
yea no work
I might need to just use the same stuff what labapi use but with different naming convention
I hate underscore ones
Ye cus it has to be in AllEffects
Foreach after spawned in alleffects
If you ain't see your effect add there
Guhhuhuhhhhh

this doesnt log
player has it
it just
doesnt do anything ?
or its never calling Spawned event
ok yeah it doesnt
wtf is the condition for that event
ok works now
Spawned event just doesnt work
@unique crane ^
although the command still doesnt work
but it at least enabled
Check how it works then?
oh its ToString() not .name
idk
OHHH
IK
Just not
change ToString() to .Name instead of FullName
Wdym
Ye ik
not cool
this also doesnt appear to work
Skill issue
Prob
yea
Cus client doesn't have that
I had kind of same issue with custom module for micro
Or maybe bc I set the module number to be same
wait
couldnt i
just
set their stamina to 0
like actual stamina
and disable the regen

yep works
Also I expected the CustomStore to can set but like not all players have it
Apparently they will have it so sadge moment
Cus creating and doing so seems like waste of resources
rawr
Clipped
guh
Hi :D


good
Didn't know lucid is a plugin dev
he is!


I haven't made any in ages because of school projects, but I dabble
I need to learn Lab API 
no you dont








